Wednesday, November 6, 2013

[Linux user] ¿Por qué usar el terminal?

¿Por qué usar el Terminal?

What is he talking about? English version

Este post está orientado para las personas que está comenzando a usar Linux, no creo que hable mucho de comandos complejos, ni mucha teoría sobre UNIX pero espero que esto les permita tener un mayor conocimiento de este sistema operativo.

Introducción


Seguramente si haz instalado Linux en tu computador o en una Máquina Virtual haz escuchado hablar del Terminal. Sino pues trataré de hacer una pequeña introducción sobre esta herramienta.

Históricamente un terminal era la interfaz material que le permitía a los usuarios utilizar una máquina. En otras palabras un terminal era el equivalente a un computador.
Pero este computador tenía recursos muy limitados entonces se utilizaban muchas veces para acceder a otros terminales con más recursos.

El terminal lo que va a mostrar es una consola. Y esta consola es lo que permite interactuar con el computador.
¿Por qué les cuento todo esto se preguntaran? Bueno, pueden ver que en toda distribución que instalen en su máquina siempre van a tener instalado un terminal, más precisamente un emulador de terminal, porque los terminales dejaron de existir hace algún tiempo :)

Si su distribución usa Gnome o Unity van a tener algo llamado gnome-terminal-emulator. Si usan KDE van a tener Konsole... y así sucesivamente.

Motivación e interés


¿Y por qué deberían interesarse en esto? Pues es muy simple, el terminal es una herramienta muy, muy poderosa que los puede sacar de aprietos muchas veces o que puede hacer que sus tareas diarias se vuelvan muy simples. En otras palabras les va a ahorrar mucho tiempo.

Un ejemplo muy común, que de vez en cuando me sucede y me pregunto lo que haría si no supiese utilizar un terminal, es cuando nuestro computador está muy lento. No sabemos muy bien qué es lo que está causando esto. Muchos escritorios tienen programas o herramientas gráficas que permiten monitorear  el consumo de CPU o de memoria de un programa. El problema es que hasta estas herramientas pueden bloquearse y hasta pueden bloquear el modo gráfico del computador. Más adelante cuando hable de comandos les diré como pueden hacer tratar de solucionar esto.

En Linux, cuando booteamos nuestro computador vamos a tener un modo gráfico que es el equivalente a una sesión. ¿Sabían uds que pueden crear más sesiones al mismo tiempo?

El ejemplo siguiente va a depender de su distribución.

Para Debian, Ubuntu y relacionados: utilicen <Ctrl + Alt + F1> y van a ver entrar en un verdadero emulador de terminar llamado tty1. Pueden usar la mismo combinación hasta F6 si no me equivoco y tendrán respectivamente tty2...tty6.
Si quieren volver al modo gráfico usen <Ctrl + Alt + F7>.
Bueno una vez que estén en uno de estos terminales pueden usar su login y clave para acceder a su sesión, todo esto al mismo tiempo que su sesión gráfica se sigue ejecutando.
tty2 en Arch Linux

Primeros pasos en el terminal


Lo primero que pueden hacer es lanzar un terminal el que su distribución tenga instalado o uno que uds hayan instalado. En mi caso yo uso Terminator.
Terminator un emulador de terminal
Se pueden dar cuenta que se parece mucho a ttyX en realidad. Rápidamente podemos ver que en la izquierda tenemos algunas informaciones del sistema (de nuevo esto depende de las distribuciones y de la configuración de nuestro shell, veremos esto más adelante).
Esta parte del terminal se llama Prompt. En mi caso tengo el nombre del usuario: "vov", el nombre de mi máquina o hostname: "Hubble", el lugar en el cual se encuentra el terminal: "~" que es mi HOME (el ~ significa HOME en shell).
Luego van a tener un cursor que les muestra desde donde van a comenzar a escribir.

El terminal utiliza un lenguaje de comandos muy particular llamado Shell. En la mayoría de distribuciones el Shell utilizado se llama Bash (GNU Bourne-Again SHell). En mi caso utilizo un Shell un poco más evolucionado que se llama Zsh (Z shell).
El Shell es el que se encarga de interpretar los comandos que vamos a escribir en nuestro emulador de Terminal. Si apenas están descubriendo el terminal les recomiendo quedarse con Bash por el momento.

Primeros comandos Shell


Bueno después de esta introducción, un poco larga, me imagino que están muy ansiosos por comenzar a usar su Terminal y sentir que están en la película Matrix.

No les puedo dejar toda una lista completa de comandos porque simplemente este post no terminaría nunca. He tenido al suerte de seguir una formación sobre esto y cada día descubro nuevos comandos o combinaciones de comandos que hacen que mi vida con Linux sea más práctica.

Los comandos de base son los siguientes:

ls  :  Este comando permite enlistar los elementos de la carpeta en la que se encuentran.
Cada comando suele tener varias opciones que se usan con guiones. Por ejemplo si quiero enlistar los archivos ocultos voy a usar :  ls -a
Y si quiero ver los detalles de cada archivo voy a usar:  ls -l
Así mismo puedo hacer una combinación de opciones: ls -l -a va a mostrar todos los archivos normales y ocultos, y sus detalles. Casi todos los comandos les permiten unir opciones con un solo guión: ls -l -a es equivalente a ls -la.

Nota importante:
¡Los comandos tienen que ser escritos respetando mayúsculas y minúsculas! ls -r no es lo mismo que ls -R

Aquí una lista de los comandos básicos que uso todos los días. Al final del post les dejaré algunos links para que puedan ver más ejemplos.

cd : como change directory les permite cambiar de carpeta.

Por ejemplo:
cd Documents : va a hacer que vayan a su carpeta Documents.
cd  : sin nada va a ser que vayan a su HOME es decir ~ .
cd /  : va a hacer que vayan a la raíz de su sistema.
cd .. : va a hacer que vayan a la carpeta por encima de la carpeta en la que están. cd Documents seguido de cd .. va a hacer que vaya Documents y luego vuelva a mi HOME.
cd . :no va a tener ningún efecto ya que . es la carpeta actual.

Entre los comandos de base más utilizados están mkdir, man, mv, cp...

Un poco de precisión sobre man

man es el comando que les permite consultar el manual de un comando o de un programa. Es, según mi punto de vista, el comando más importante de todo sistema tipo UNIX, es decir de un sistema como Linux. Si quieren saber como se usa un comando o un programa van a escribir en el terminal:

man <nombre programa o comando>

Y les mostrará un documentación para poder usar lo que necesitan. Encontrarán varios detalles y de vez en cuando ejemplos de utilización.
La página man del programa wget
Para solucionar algunos problemas de ambiguación el manual tiene secciones. Esto se da cuando un comando tiene significado para Shell y para otros lenguajes de programación. Por ejemplo la función kill que manda una señal a un proceso. La función kill en el lenguaje de programación C también manda una señal a un proceso pero es otro contexto y otro tipo de utilización.
Si quieren consultar el manual de kill para shell solo usen: man kill. Pero si quieren consultar el manual de kill de POSIX: man 2 kill.
Para jugar un poco pueden consultar el manual del manual con: man man.

Beneficios de usar el Terminal


Ahora que les mostré un poco las bases del Terminal volvamos al ejemplo del programa que consume muchos recursos y que no sabemos muy bien quién es.
El Terminal no consume muchos recursos, entonces es algo muy rápido, la mayoría de comandos se ejecutan instantáneamente (bueno a menos de que sean comandos que lean en archivos grandes o que recuperen datos de internet).
Abran un terminal y usen: top
top mostrando los programas que se ejecutan
Este comando les mostrará los procesos que se están ejecutando y los primeros van a ser los que consumen más recursos.
Si quieren eliminar uno aplasten la letra <K> e introducción el PID del programa que quieren que termine. Eso hará que el programa se termine. Tengan cuidado de saber qué es exactamente lo que están pidiendo que se termine.
Si su modo gráfico está bloqueado, no se apresuren a forzar el apagado de su máquina. Lancen un ttyX con <Crtl+Alt+FX> y usen top para eliminar lo que consume más su CPU que seguramente será lo que bloquea el modo gráfico.

Otro tipo de beneficio es el hecho de no pasar por una interfaz gráfica. Toma más tiempo, mover el mouse hasta el ícono del File Manager, abrir el programa, esperar a que se cargue, buscar la carpeta que queremos, darle doble clic, esperar a que se abra...
que abrir un terminal y usar cd para ir a la carpeta que queremos. Sobre todo porque en Shell hay una herramienta muy práctica que se llama autocompleción. Para activar la autocompleción usen la tecla <Tab> de tabulación (estará ilustrada por el símbolo ->| en el blog).

Por ejemplo quiero ir a mi carpeta Download, voy a escribir
cd Dow ->| ( en este momento puedo usar la autocompleción para que complete el nombre de mi carpeta )
Me completará el nombre de mi carpeta a:
cd Downloads
Nota: si hay los caracteres no permiten una autocompleción, la doble tabulación <Tab><Tab> va a mostrar las opciones que hay para completar el nombre que estamos escribiendo.

Conclusiones


Al principio no van a encontrar que el terminal sea muy práctico y van a preferir pasar por una interfaz gráfica. Pero créanme que si le ponen un poco de dedicación y de ganas, van a terminar siendo unos cracks del Terminal y la gente va a pensar que están en la Matrix!!
En la Matrix... tu argumento es inválido
Entre otros beneficios de utilizar esta herramienta es el hecho que pueden hacer básicamente todo desde ahí, desde instalar programas, buscar programas, solucionar problemas en su distribución, hacer loops, conectarse a otras computadoras a través de OpenSSH... entre miles de otras cosas...

Una lista de comandos que les recomiendo que vean y traten de familiarizarse con ellos:
kill, killall, top, ps, grep, find, chmod, echo, cat, ...

Links hacia otras páginas muy completas que les permitirán ser unos duro/as del Terminal.

http://mally.stanford.edu/~sr/computing/basic-unix.html

http://linuxcommand.org/lc3_learning_the_shell.php

Les gustó este post? No se olviden de agregarme a sus círculos en G+ o de seguirme en Twitter: @RobertoXMed

Si pueden y quieren no olviden hacer una Donación (por Paypal) para el blog chimbo así podré seguir haciendo gran contenido.

2 comments:

  1. cuando empiezas en la terminal, te quedas ahí para siempre, te simplifica mucho el trabajo al saltarse las ventanillas.

    Buen post. Saludos

    ReplyDelete