Actualmente en todas las distribuciones de GNU/Linux permiten realizar todo tipo de acciones sin tener que tocar la terminal e interaccionar con la Shell de GNU. Aún así, un/una buen/a profesional no puede obviar el funcionamiento del intérprete de comandos y los principales comandos.

Existen muchos tipos de Shell en GNU/Linux, y cada uno tendrá su característica principal y su motivo para ser usado, aún que en este tutorial que vas a encontrar nos vamos a centrar en el shell por defecto: Bash (Bourne Again sh).

Línea de comandos

El shell espera entradas por el teclado en una línea llamada prompt. La línea prompt nos proporciona información en el terminal y su posición dentro del sistema de archivos:

t3rr0rz0n3@voidNull:~/Documents$

Aquí nos encontramos cuatro datos importantes:

t3rr0rz0n3 : Es el nombre de inicio de sesión del usuario actualmente conectado a la terminal.

: Es el nombre de inicio de sesión del usuario actualmente conectado a la terminal. voidnull : Es el nombre configurado en la maquina o servidor, básicamente nuestra el hostname.

: Es el nombre configurado en la maquina o servidor, básicamente nuestra el hostname. ~/Documents : Nos indica en que directorio del sistema de ficheros está.

: Nos indica en que directorio del sistema de ficheros está. $: Nos indica si el usuario tiene privilegios o no (en ocasiones también puede ser >).

De algún modo, esto se podría «traducir» en una frase concreta: El usuario t3rr0rz0n3 que se encuentra dentro de la maquina/servidor voidnull que está en la ruta /home/t3rr0z0n3/Documents y sin privilegios de usuario.

Además, el carácter de terminación, que en este caso es $, también puede ser:

$ : Indica que el usuario no tiene privilegios particulares como >.

: Indica que el usuario no tiene privilegios particulares como >. #: Indica que el usuario es el administrador root que tiene todos los privilegios.

Inclusive, existen diferentes modos de representar la ruta donde se encuentra el usuario:

~/: el carácter ~ indica que se encuentra el el directorio personal (dentro de /home).

~/Documents: al combinarse con ~ indica que se encuentra dentro de un directorio de su carpeta personal.

Introducción de datos

En la terminal, el teclado se utiliza para ingresar los comandos que vayamos a ejecutar, pero también hay métodos abreviados que pueden ser prácticos más allá de utilizar las flechas del teclado para moverse con el cursor:

[Ctrl] + A: Permite poner el cursor al principio de la línea.

[Ctrl] + E: Permite poner el cursor al final de la línea.

[Ctrl] + L: Permite borrar el contenido del terminal (es como ejecutar un clear).

[Ctrl] + U: Permite borrar el contenido que hay hacía atrás del cursor (todo lo que se encuentra a la izquierda).

[Ctrl] + K: Permite borrar el contenido que hay hacía adelante del cursor (todo lo que se encuentra a la derecha).

Una vez sabido esto, podemos empezar a ejecutar comandos en nuestra terminal. Lo primero que nos interesa saber, es un comando que nos permite saber donde nos encontramos, y creed, que puede ser muy útil. Este comando es pwd :

t3rr0rz0n3@voidNull:~/Documents$ pwd

/home/t3rr0rz0n3/Documents

Debéis saber, que todos los comandos tienen una sintaxis que permite ejecutar el comando con opciones muy interesantes y generalmente cumple con esta forma:

Comando [parámetros] [argumentos]

No todos los comandos tienen parámetros o argumentos, es posible que haya algún comando que tras ejecutarlo haga lo que tenga que hacer y listo. En caso de que los parámetros o argumentos sean obligatorios, se mostrará un mensaje de error.

Un parámetro es una opción del comando. Generalmente es una letra en mayúscula o en minúscula precedida de un guion: l , -p , -L , etc. Dependiendo el comando, estos parámetros u opciones se podrán ejecutar una detrás de la otra, es decir -lat o bien -l -t -a . En otras ocasiones, será necesario indicar primero el parámetro y luego un argumento ( -l archivo ).

Comandos internos y externos

Dentro de todos los comandos que podamos aprender, existen básicamente dos tipos de comandos:

Internos : Los comandos internos son del propio shell y se ejecutan en él. Estos comandos forman parte del programa shell, el bash. Por ejemplo, los comandos cd o pwd son dos ejemplos claros de comandos internos. Cuando se ejecutan, el shell ejecuta las funciones definidas en su interior que les corresponden.

: Los comandos internos son del propio shell y se ejecutan en él. Estos comandos forman parte del programa shell, el bash. Por ejemplo, los comandos o son dos ejemplos claros de comandos internos. Cuando se ejecutan, el shell ejecuta las funciones definidas en su interior que les corresponden. Externos: Los comandos externos son programas binarios presentes en el disco duro. Cuando se ejecuta el comando, éste se carga en memoria y se inicia como un proceso.

Aún así, también existen otro tipos de comandos llamados alias de comandos, que son atajos de comandos propios de shell. Por ejemplo, en algunas distribuciones de GNU/Linux existe un alias mu famoso que es ll que corresponde en realidad a ls -l .

t3rr0rz0n3@voidNull:~$ type

t3rr0rz0n3@voidNull:~$ type date

date es /bin/date

t3rr0rz0n3@voidNull:~$ type pwd

pwd és una orden interna

t3rr0rz0n3@voidNull:~$ type ll

ll es un alias de ‘ls -l’

El historial de comandos

En ocasiones vamos a tener que escribir comandos muy largos que tendremos que volver a ejecutar, en vez de escribirlo de nuevo, podemos utilizar las flechas hacia arriba y hacia abajo para ver los comandos que se han ejecutado anteriormente.

El shell conversa una gran cantidad de entradas, que se puede configurar, y que además se guarda en un archivo caché dentro de nuestro directorio personal llamado .bash_history . De igual modo, existe un comando llamado history que nos va a permitir ver todos los comandos ejecutados anteriormente:

t3rr0rz0n3@voidNull:~$

…

2003 pwd

2004 type

2005 type date

2006 type pwd

…

2011 history

El comando fc funciona como history cuando se utiliza con el parámetro -l. Por defecto muestra los 15 últimos comandos ejecutados, aunque también se puede pasar un argumento para mostrar el número de comandos que quieras:

t3rr0rz0n3@voidNull:~$ fc -l -8

2006 type pwd

2007 man pwd

2008 type freya

2009 cd

2010 sleep 20

2011 history

2012 fc -l

2013 fc -l -90

Como hemos podido observar en las dos ultimas salidas del comando history y fc al lado del comando ejecutado, hay un número que indica la posición de la linea que ocupa ese comando en el historial. Con fc también podemos hacer que se ejecute el comando que se encuentra en una línea determinada en nuestro history y se hace con el parámetro -s :