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, usacd ..
, 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 comosystem
,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