Bienvenido a nuestra guía definitiva sobre la Línea de Comandos de Linux. Este tutorial te mostrará algunas de las tecnologías claves de la Línea de Comandos de Linux y te presentará el lenguaje de scripting Bash.

¿Qué es bash?

Bash (abreviación de Bourne Again SHell) es una shell de Unix, y un intérprete de lenguaje de comandos. Una shell es simplemente un macroprocesador que ejecuta comandos. Es la shell más utilizada de forma predeterminada para la mayoría de distribuciones de Linux y es un sucesor de la shell Korn (ksh) y shell C (csh).

Muchas cosas que se pueden hacer en el sistema operativo Linux se pueden hacer  a través de la línea de comandos. Algunos ejemplos son…

  • Editar archivos
  • Ajustar el volumen del sistema operativo
  • Obtención de páginas web
  • Automatizar trabajo que realizas a diario

Usar bash en la línea de comandos (Linux, OS X)

Puedes comenzar a usar bash en la mayoría de los sistemas operativos Linux y OS X abriendo una terminal. Consideremos un ejemplo sencillo de "Hola Mundo!". Abre una terminal y escribe la siguiente línea (todo después del signo $):

zach@marigold:~$ echo "Hola Mundo!"
Hola Mundo!

Como puedes ver, usamos el comando echo para imprimir la cadena "Hola Mundo!" en la terminal.

Escribir un script de bash

También puedes poner un conjunto de comandos de bash en un archivo .sh y ejecutarlos desde la línea de comandos. Supongamos que tienes un script bash con el siguiente contenido:

#!/bin/bash
echo "Hola Mundo!"

Vale la pena señalar que la primera línea del script comienza con #!. Esta es una directiva especial que Unix trata de manera diferente.

¿Por qué usamos #!/bin/bash al principio de nuestro script?

Esto se debe a que es necesario permitir que el shell interactivo sepa qué tipo de intérprete ejecutar para el programa que contiene. La primera línea le dice a Unix que el archivo será ejecutado por /bin/bash.  Esta es la ubicación estándar del shell Bourne en casi todos los sistemas Unix. Al agregar #!/bin/bash como la primera línea de tu script, le indicas al sistema operativo que invoque el shell especificado para ejecutar los comandos que siguen en el script. #! a menudo se lo conoce como "hash-bang", "she-bang" o "sha-bang". Sin embargo, solo se ejecutará si llamas tu script como un ejecutable. Por ejemplo, cuando escribes ./nombre-del-scrip.extension, el sistema buscará en la línea superior del  archivo para determinar el intérprete, mientras que, al ejecutar el script como bash nombre_del_script.sh, la primera línea se ignorará.

Posteriormente, podrías ejecutar tu script de esta manera: Para hacer el archivo ejecutable,  deberás correr el siguiente comando acompañado de sudo chmod +x “nombre_del_archivo”.

zach@marigold:~$ ./miScriptBash.sh
Hola Mundo!

El script solo contiene dos líneas. La primera indica qué intérprete se debe usar para ejecutar el archivo (en este caso, bash.) La segunda línea es el comando el cual queremos usar, echo, seguido por lo que queramos imprimir, es decir "Hola Mundo!".

Algunas veces el script no se ejecutará, y el comando anterior nos va a retornar un error. Esto es debido a los permisos que están establecidos en el archivo. Usa el siguiente comando para evitarlo.  

zach@marigold:~$ chmod u+x miScriptBash.sh

Y después ejecuta el script.

Línea de Comandos de Linux: bash cat

Cat es uno de los comandos más usados frecuentemente en los sistemas operativos Unix.

Cat es usado para leer un archivo secuencial-mente e imprimirlo en la consola de manera estándar. Su nombre es derivado  de su función para concatenar archivos.

Uso

cat [opciones] [nombres_de_los_archivos]

Opciones más usadas:

  • -b, numera líneas con contenido  en la salida del comando
  • -n, numera todas las líneas en la salida del comando
  • -s, reduce múltiples líneas adyacentes sin contenido
  • -v,  muestra caracteres no imprimibles, excepto las pestañas y el carácter de final de línea

Ejemplo:

Imprime en la terminal en contenido del archivo.txt:

cat archivo.txt

Concatena el contenido de dos archivos y muestra su resultado en la terminal:

cat archivo1.txt archivo2.txt

Línea de Comandos de Linux: bash cd

Cambia Directorio a la ruta especificada, por ejemplo cd proyectos.

Hay unos pocos, pero realmente útiles argumentos que ayudan a su uso:

  • . hace referencia al directorio actual, tal como ./proyectos
  • .. puede ser usado para subir un directorio, usa cd ..,  y puede ser combinado para subir múltiples niveles  ../../mi_directorio
  • /  es el root o "raíz" de tu sistema el cual contiene directorios de importancia, tales como system, users, etc.
  • ~ es el directorio home,  usualmente ubicado en la ruta /users/nombre-de-usuario. Regresa a determinado directorio contenido en home, incluyendo al comienzo del comando, por ejemplo ~/proyectos.

Línea de Comandos de Linux: bash head

Head se utiliza para imprimir las primeras diez líneas (por defecto) o cualquier otra cantidad especificada de líneas de un archivo o archivos. Cat se utiliza para leer un archivo secuencial-mente e imprimirlo de manera estándar.

Es decir, imprime todo el contenido del archivo completo.- eso no siempre es necesario, tal vez solo quieras verificar el contenido de un archivo o para ver si es el correcto, o verificar que no esté vacío. El comando head te permite ver las primeras N líneas de un archivo.

Si se llama a más de un archivo, se muestran las primeras diez líneas de cada archivo, a menos que se especifique un número determinado de líneas. La elección de mostrar el encabezado del archivo es opcional usando la siguiente opción

Uso

head [opciones] [nombre-de-archivo(s)]

Opciones más utilizadas:

  • -n N, imprime las primeras N líneas de un archivo(s)
  • -q, no imprime los encabezados de los archivos
  • -v, siempre imprime los encabezados de los archivos

Ejemplo:

head file.txt

Imprime en la terminal las primeras diez líneas del archivo file.txt (por defecto)

head -n 7 file.txt

Imprime en la terminal las primeras siete líneas del archivo file.txt

head -q -n 5 file1.txt file2.txt

Imprime en la terminal las primeras 5 líneas de archivo file1.txt, seguidas de las primeras 5 líneas del archivo file2.txt

Línea de Comandos de Linux: bash ls

ls es un comando en sistemas operativos Unix para listar el contenido de un directorio, por ejemplo, nombres de carpetas y archivos.

Uso

ls [opciones] [nombre_de_los_archivos]

Opciones más usadas:

  • -a, despliega todos los archivos y carpetas, incluidos los que están ocultos y comienzan con un .
  • -l, despliega los archivos en formato de lista detallada
  • -G,  en un listado extenso, no imprime los nombre de los grupos

Ejemplo:

Listar los archivos contenidos en la ruta freeCodeCamp/guide/

ls                                                                ⚬ master
CODE_OF_CONDUCT.md bin                package.json       utils
CONTRIBUTING.md    gatsby-browser.js  plugins            yarn.lock
LICENSE.md         gatsby-config.js   src
README.md          gatsby-node.js     static
assets             gatsby-ssr.js      translations

Línea de Comandos de Linux: bash man

Man, o abreviación de manual, es un comando de bash usado para desplegar referencias de manuales en línea de determinado comando.

Man, muestra la página relativa de man (abreviatura de manual page) del comando dado.

Uso

man [opciones] [comando]

Opciones más utilizadas:

  • -f, imprime una breve descripción del comando dado
  • -a, muestra, en sucesión, todas las introducciones de  páginas de manuales disponibles del comando especificado.

Ejemplo:

Muestra el  manual de ls:

man ls

Línea de Comandos de Linux: bash mv

Mueve archivos y carpetas.

mv origen destino
mv origen ... directorio

El primer argumento es el archivo el cual quieres mover, y el segundo es la ubicación a ser movido.

Opciones usadas comúnmente:

  • -f para forzar mover y sobrescribir archivos sin confirmación del usuario.
  • -i para solicitar confirmación antes de sobrescribir archivos.

Eso es todo. ¡Ve adelante y usa Linux!

Traducido del artículo - The Ultimate Linux Command Line Guide - Full Bash Tutorial