Terminal

En un principio, cuando alguien empieza a utilizar la terminal por primera vez, le puede resultar un tanto abrumador, sin embargo, existen algunas técnicas que pueden ayudar a utilizar la terminal sin perder la cabeza en el intento. En este post estaremos mostrando algunos tips que pueden ayudarte a mejorar tu productividad mientras estás trabajando con la terminal, sin importar el Shell que estés utilizando.

¿Qué es una Shell?

Una Shell, a grandes rasgos, es un interprete de comandos, estas existen en 3 tipos diferentes: Interfaz de Línea de Comandos (Command-Line-Interface o CLI), Interfaz Gráfica de Usuario (Graphical User Interface o GUI) e Interfaz Natural de Usuario (Natural User Interface o NUI). En este post nos vamos a enfocar en el uso de un Shell utilizado como CLI llamado Bash, sin embargo, muchas de las cosas mencionadas aquí también aplican para el Shell Zsh, ambos utilizados en sistemas basados en Unix como lo son Linux y macOS.

Generación de archivos

Generar archivos desde la terminal puede hacerse por medio del comando touch seguido del nombre del archivo que queremos generar, por lo tanto, para crear un archivo llamado styde.txt debemos teclear en la terminal touch styde.txt. Pero si queremos crear múltiples archivos con un prefijo o un sufijo podemos crear todos con un simple comando haciendo uso de la siguiente convención:

# Copiar el archivo 'styde' como 'styde.bak'
cp styde{,.bak}

# Crear los archivos
# styde1.txt, styde2.txt, styde3.txt
touch styde{1,2,3}.txt

# Crear los directorios
# dir1/subdir1, dir1/subdir2, 
# dir2/subdir1, dir2/subdir2, 
# dir3/subdir1 y dir3/subdir2
mkdir -p dir{1,2,3}/subdir{1,2}

Edición rápida

En ocasiones sucede que escribimos un comando, pero por error, puede que nos equivoquemos en un fragmento del comando; en lugar de volver a escribir todo el comando de nuevo podemos hacer uso del editado rápido, el cual sigue la siguiente sintaxis: ^original^remplazo^.

Esto reemplazará todo el texto que se encuentre en el lado izquierdo (original) por el contenido del lado derecho (remplazo) como podemos ver en este ejemplo:

# Supongamos que queremos usar el comando ls -lAh
# pero la letra "A" se indicó en minúscula
ls -lah
# Modificar la letra "a" del comando anterior
^a^A^
# Resultado
ls -lAh

En este ejemplo cambiamos una sola letra pero pueden cambiarse palabras completas.

Autocompletado

Esto no se refiere al autocompletado de nombres de archivos o comandos, se refiere al autocompletado de argumentos para una gran variedad de comandos. Esta característica es una de las favoritas por los usuarios del shell Zsh, sin embargo los usuarios del shell Bash también pueden utilizar esta característica tan útil. Sólo deben instalar el paquete bash_completion.

Una vez instalado podrás autocompletar los argumentos de varios comandos como rpm, apt, find o grep simplemente pulsando la tecla Tab de tu teclado después de indicar estos comandos. También puedes autocompletar hostnames para ssh y scp.

Secuencias especiales

Existen también una serie de combinaciones de caracteres especiales que pueden usarse en la terminal. Una de estas es !!, que devuelve el comando previamente ejecutado:

# Listar los archivos de un directorio
ls
# Agregar modo de lista
!! -l # Equivalente a ls -l
# Agregar opción para mostrar archivos ocultos
!!a # Equivalente a ls -la

La secuencia especial!$ devuelve el último parámetro utilizado en un comando previo:

# Crear un usuario styde
sudo useradd styde
sudo passwd !$
sudo chage -E 0 !$

En las últimas 2 líneas estamos utilizando la secuencia !$ para indicar el último argumento del comando utilizado anteriormente, el cuál es styde.

Aliases

También se tiene la posibilidad de crear aliases para cualquier comando que se pueda ejecutar desde la terminal. Esto es especialmente útil si se utiliza constantemente un comando, como puede ser phpunit o en dado caso algún comando extenso, lo único que se debe hacer para crear un alias de un comando es seguir la siguiente sintaxis: alias nombre_del_alias='comando'.

Un ejemplo comúnmente usado es el alias art para ejecutar instrucciones de Artisan en Laravel como se muestra a continuación:

# Crear un alias llamado "art" para artisan
alias art='php artisan'

Una vez creado el alias puede ser utilizado en la terminal tecleando art, lo que es equivalente a teclear php artisan.

Sustitución de comandos

Hay ocasiones en las que se requiere que ejecutemos un comando para conocer algún valor, por ejemplo, el comando whois devuelve el nombre de usuario que está activo. Una manera en la que podemos usar el valor del comando whois es indicándolo como propietario de un archivo (entre muchas otras cosas más), esto puede hacerse con la siguiente sintaxis: $(comando), el resultado obtenido podrá ser utilizado en otro comando, de esta manera no tenemos que copiar y pegar valores entre múltiples resultados.

El siguiente ejemplo supone que existe el archivo /usr/local/bin/composer y va a asignar al usuario actual como su propietario:

# Utilizar el nombre del usuario actual para indicarlo
# como propietario del archivo composer
sudo chown $(whois) /usr/local/bin/composer

Este tipo de sustitución es ampliamente utilizado en el Curso de Docker impartido para ti en Styde.

Listar archivos por extensión

Podemos utilizar el comando ls junto con grep para listar archivos con una determinada extensión:

ls -1 | grep "\.zip"

En este caso queremos listar solamente los archivos que tengan la extensión .zip.

También podemos listar múltiples extensiones al mismo tiempo:

ls *.{deb,zip}

En el ejemplo superior utilizamos ls para listar solo los archivos que tengan la extensión .deb o .zip.

Si quieres aprender más puedes hacerlo con nuestro Curso básico de terminal.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.