Introducción
Contenido
Las interacciones más comunes con una computadora en la actualidad se realizan a través de un Interfaz gráfica del usuario (GUI). Antes de que existieran las GUI, los usuarios interactuaban con una computadora a través de programas de shell, un Interfaz de línea de comandos (CLI) para ejecutar otros programas. A pesar de la ubicuidad de las GUI, interactuar con una computadora a través de una CLI es extremadamente útil para los usuarios, especialmente para tareas administrativas y de programación.
Intento (Bourne Again SHell) es posiblemente el programa de shell más popular. Bash nos proporciona muchas herramientas y comandos que nos hacen más productivos mientras navegamos y usamos nuestra computadora.
Otro caso de uso popular de Bash es la creación de scripts. Los scripts de shell proporcionan una forma sencilla de automatizar tareas. Sin embargo, este artículo solo cubre cómo usar Bash de forma interactiva.
Instalación de Bash
Bash está disponible para todos los principales sistemas operativos (aunque con una solución alternativa para Windows). Si está trabajando en una computadora con Linux o macOS, Bash es probablemente su shell predeterminado.
Mac OS
Si está utilizando una Mac, también obtiene Bash de forma predeterminada. Es probable que la versión sea bastante antigua, por lo que se recomienda instalar Cerveza caseray luego use el siguiente comando para instalar una versión más reciente de Bash:
$ brew install bash
Por razones de seguridad, ahora deberá incluir en la lista blanca su shell recién instalado:
$ sudo vim /etc/shells
Nota: Se le debe solicitar su contraseña si no es el usuario root.
Asegurarse de que /usr/local/bin/bash
está en el archivo, si no, agréguelo al final.
Finalmente, cambie el shell predeterminado del sistema por el que tiene Homebrew instalado:
$ chsh -s /usr/local/bin/bash
Si vuelve a abrir su terminal, estaría usando la última versión de Bash.
Te puede interesar:Phaser 3 y Tiled: construyendo un juego de plataformasWindows 10
Obtener Bash en Windows 10 es bastante sencillo, dado que tiene un sistema de 64 bits (la función no funciona en máquinas de 32 bits) y tiene la Actualización Fall Creators (no es necesaria, pero sin ella debe activar el modo de desarrollador).
Necesita habilitar el Subsistema de Windows para Linux característica. Dirígete al Panel de control -> Programas -> Activar o desactivar las funciones de Windows. En la ventana emergente, seleccione la casilla de verificación del Subsistema de Windows para Linux y presione Aceptar. Se le pedirá que reinicie su computadora, si no lo estaba entonces debes reiniciar antes de continuar.
Ahora necesitas instalar Linux. Dirígete a Microsoft Store y busca Linux. En la parte superior de los resultados, suele haber un banner para instalar Linux. Haga clic en esa opción y se le presentarán algunas Distribuciones de Linux.
Puede leer sobre cada uno si está interesado, la mayoría de las personas encontrarán Ubuntu bastante accesible.
Una vez que su distribución de Linux esté instalada, puede buscarla en el menú Inicio, seleccionarla y ver una Terminal emergente en su pantalla con Bash habilitado por defecto.
pwd
Antes de comenzar a navegar por el sistema de archivos con Bash, es bueno saber en qué directorio se encuentra actualmente. En su Terminal, ingrese pwd
. Significa «imprimir directorio de trabajo» y le da la ruta completa de su directorio actual.
$ pwd
/home/marcus
ls
Si desea saber qué archivos y carpetas están presentes en su directorio actual, ingrese el ls
mando.
$ ls
Desktop Documents Downloads Music Pictures Projects Public Templates Videos
El contenido de su carpeta de inicio puede variar, pero eso no será un problema si sigue este artículo.
En el sistema de archivos Unix / Linux, cualquier archivo o carpeta que comience con «.» está oculto a la vista de forma predeterminada. Por ejemplo, si quiero configurar Bash de manera consistente cuando inicio sesión, entonces configuraría el .profile
o .bash_profile
archivos que residen en mi directorio personal.
Para enumerar todos los archivos y carpetas, incluidos los ocultos, podemos usar ls -a
:
$ ls -la
total 4096
drwxr-xr-x 3 marcus marcus 4096 Jul 20 23:34 .
drwxr-xr-x 18 marcus marcus 4096 Jul 10 21:04 ..
drwx------ 15 marcus marcus 4096 Jul 11 23:34 .cache
drwx------ 11 marcus marcus 4096 Jul 10 21:11 .config
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Desktop
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Documents
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Downloads
drwx------ 3 marcus marcus 4096 Jul 10 21:26 .gnupg
-rw------- 1 marcus marcus 2310 Jul 20 17:57 .ICEauthority
drwx------ 3 marcus marcus 4096 Jul 10 21:04 .local
drwx------ 5 marcus marcus 4096 Jul 10 21:25 .mozilla
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Music
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Pictures
-rw-r----- 1 marcus marcus 807 Jul 20 20:53 .profile
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Public
drwx------ 2 marcus marcus 442 Jul 10 21:26 .ssh
-rw-r----- 1 marcus marcus 0 Jul 20 17:57 .sudo_as_admin_successful
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Templates
-rw-r----- 1 marcus marcus 5 Jul 20 17:57 .vboxclient-clipboard.pid
-rw-r----- 1 marcus marcus 5 Jul 20 17:57 .vboxclient-display.pid
-rw-r----- 1 marcus marcus 5 Jul 20 17:57 .vboxclient-draganddrop.pid
-rw-r----- 1 marcus marcus 5 Jul 20 17:57 .vboxclient-seamless.pid
drwxr-xr-x 2 marcus marcus 4096 Jul 10 21:04 Videos
-rw------- 1 marcus marcus 765 Jul 11 23:26 .viminfo
hombre
Bash proporciona el man
comando, que muestra el manual del usuario para otros comandos.
En su Terminal, ingrese man ls
, y debería ver un resultado como este:
Siempre que encuentre un comando desconocido, use man
para ver cómo se usa. Puede desplazarse por el manual con las teclas Arriba y Abajo en su teclado. Para salir de la visualización de un manual, presione el q
llave.
mkdir
Utilizar el mkdir
comando para crear una nueva carpeta en su directorio actual. El comando «crear directorio» simplemente toma el nombre de la carpeta que desea crear como argumento. Entrar mkdir FirstFolder
en su Terminal. Puede confirmar que existe usando ls
después de crear una carpeta.
$ mkdir FirstFolder
$ ls
Desktop Documents Downloads FirstFolder Music Pictures Projects Public Templates Videos
Si desea crear una carpeta anidada, utilice mkdir
con el -p
bandera. Esto le dice al comando que cree todas las carpetas intermedias necesarias si aún no existen. Por ejemplo, mkdir -p SecondFolder/NestedFolder
produciría lo siguiente:
$ mkdir -p SecondFolder/NestedFolder
$ ls SecondFolder
NestedFolder
Aquí puede ver que tanto el SecondFolder
y NestedFolder
fueron creados con un comando.
discos compactos
Puede pasar de una carpeta a otra con el cd
mando. El comando «cambiar directorio» toma la ruta absoluta o relativa de la carpeta de destino. Entrar cd SecondFolder/NestedFolder/
en su Terminal. Su directorio actual cambió de su directorio personal a NestedFolder
. Siempre puedes confirmar con pwd
:
$ cd SecondFolder/NestedFolder/
$ pwd
/home/marcus/SecondFolder/NestedFolder
Para navegar al directorio anterior ingrese cd ..
. En sistemas de archivos Unix / Linux, ..
usado en una ruta se refiere al directorio «arriba» del actual. Por ejemplo, SecondFolder
está arriba» NestedFolder
. Cuando .
se usa en una ruta, se refiere al directorio actual.
Entonces, por ejemplo, el siguiente comando le enviará «arriba» dos directorios:
$ cd ../..
$ pwd
/home/marcus
toque
La forma más sencilla de crear un archivo con Bash es a través del touch
mando. Vuelve al NestedFolder
directorio y entrar touch first-file.txt
en su Terminal para crear su primer archivo con Bash:
$ cd SecondFolder/NestedFolder/
$ ls -la
total 12
drwxr-xr-x 3 marcus marcus 4096 Jul 21 16:45 .
drwxr-xr-x 18 marcus marcus 4096 Jul 21 16:45 ..
drwxr-xr-x 2 marcus marcus 4096 Jul 21 16:58 NestedFolder
$ touch first-file.txt
$ ls -la
total 12
drwxr-xr-x 3 marcus marcus 4096 Jul 21 16:59 .
drwxr-xr-x 18 marcus marcus 4096 Jul 21 16:45 ..
-rw-r--r-- 1 marcus marcus 0 Jul 21 16:59 first-file.txt
drwxr-xr-x 2 marcus marcus 4096 Jul 21 16:58 NestedFolder
Ahora entra touch first-file.txt
nuevamente en su Terminal, y luego ingrese ls -la
de nuevo también. Su salida debería ser similar a esta:
$ ls -la
total 12
drwxr-xr-x 3 marcus marcus 4096 Jul 21 16:59 .
drwxr-xr-x 18 marcus marcus 4096 Jul 21 16:45 ..
-rw-r--r-- 1 marcus marcus 0 Jul 21 16:59 first-file.txt
drwxr-xr-x 2 marcus marcus 4096 Jul 21 16:58 NestedFolder
$ touch first-file.txt
$ ls -la
total 12
drwxr-xr-x 3 marcus marcus 4096 Jul 21 16:59 .
drwxr-xr-x 18 marcus marcus 4096 Jul 21 16:45 ..
-rw-r--r-- 1 marcus marcus 0 Jul 21 17:00 first-file.txt
drwxr-xr-x 2 marcus marcus 4096 Jul 21 16:58 NestedFolder
Notarás que la hora próxima a first-file.txt
se actualizó después de ejecutar touch
de nuevo. Mientras que la touch
El comando puede crear archivos vacíos muy rápidamente, su función principal es actualizar las marcas de tiempo de los archivos.
cp
Para copiar un archivo puede utilizar el cp
comando, proporcionándole la ruta del archivo fuente, seguida de la ruta del archivo recién copiado.
Si quisieras copiar first-file.txt
dentro NestedFolder
como second-file.txt
, entrarías cp first-file.txt NestedFolder/second-file.txt
. Si entras ls NestedFolder/
tu verias second-file.txt
:
$ ls NestedFolder/
$ cp first-file.txt ./NestedFolder/second-file.txt
$ ls NestedFolder/
second-file.txt
Para copiar carpetas, junto con su contenido, use el mismo comando que los archivos pero pase el -r
(recursivo) bandera. Vamos a copiar NestedFolder
dentro FirstFolder
que reside en nuestro directorio de inicio:
$ cp -r NestedFolder/ ../FirstFolder/
$ ls ../FirstFolder/
$ cp -r NestedFolder/ ../FirstFolder/
$ ls ../FirstFolder/
NestedFolder
$ ls ../FirstFolder/NestedFolder/
second-file.txt
Has copiado NestedFolder
y todo su contenido en FirstFolder
.
Nota: Alternativamente, si ingresó cp -r NestedFolder/ ~/FirstFolder/
en la Terminal habrías obtenido el mismo resultado. Cuando ~
se utiliza en una ruta, se refiere al directorio de inicio.
rm
Para eliminar un archivo simplemente use rm
y la ruta del archivo. Por ejemplo, rm first-file.txt
eliminaría ese archivo.
$ ls
first-file.txt NestedFolder
$ rm first-file.txt
$ ls
NestedFolder
Puede eliminar una carpeta utilizando el -r
bandera. Entonces, rm -r NestedFolder/
elimina la carpeta y todo su contenido.
$ ls
NestedFolder
$ rm -r NestedFolder/
$ ls
$
Nota: Elementos que eliminas con rm
no vaya a la Papelera de reciclaje, en ninguno de los principales sistemas operativos. Se eliminan de forma permanente. ¡Tenga mucho cuidado al eliminar archivos y carpetas!
mv
Para mover un archivo o carpeta de un directorio a otro, use el mv
comando junto con la ruta del archivo / carpeta de origen y la ruta de destino. El comando «mover» se puede utilizar para mover archivos / carpetas a diferentes directorios y para cambiar el nombre de archivos / carpetas.
En su Terminal, ingrese los siguientes comandos:
$ ls
$ mv ~/FirstFolder/NestedFolder/second-file.txt .
$ ls
second-file.txt
$ mv second-file.txt hello-world.txt
$ ls
hello-world.txt
Si la ruta de destino es una carpeta, entonces se mueve el archivo / carpeta de origen. Si la ruta de destino es un archivo, se cambia el nombre del archivo / carpeta de origen.
Redireccionamientos
Supongamos que desea enumerar todos los directorios en la ruta de inicio, pero almacenar esa salida en un archivo en lugar de verla en la pantalla. Bash permite esto con el operador de redireccionamiento: >
– toma el resultado de un comando y lo «redirige» a una ubicación diferente, normalmente un archivo:
$ ls ~ > file-list.txt
En este caso, no verá ninguna salida en la Terminal. Leamos nuestro archivo recién creado ingresando less file-list.txt
. los less
El comando se usa para leer archivos.
Entrar q
salir less
.
los >
El operador sobrescribe los archivos con la salida del comando. A adjuntar la salida de un comando al final del archivo, podemos usar >>
. Agregue la salida de ls
en nuestro directorio actual a nuestro archivo de texto, ingrese:
$ ls >> file-list.txt
Si leemos el archivo con less
una vez más mostramos ver nuestros dos archivos de texto:
Tubería
Si quisiera usar la salida de un comando como entrada para otro comando, usaría una tubería: |
.
Imagine que su directorio actual tiene cientos de archivos. Mecanografía ls
por sí solo puede no ser muy útil si desea saber si hello-world.txt
está en esa carpeta. En lugar de buscar manualmente a través de la salida de ls
puede canalizar la salida a un próximo comando Bash que realiza búsquedas, como grep
.
Para saber si tiene un archivo llamado que contiene hello
en su nombre en una carpeta, ingrese:
$ ls | grep hello
La salida debe ser:
$ ls | grep hello
hello-world.txt
Estos tubos son como redireccionamientos en el sentido de que envían la salida del comando al grep
función de utilidad, que luego busca y devuelve cualquier línea que contenga «hola».
cabeza y cola
Hay ocasiones en las que desea leer solo el principio o el final de un archivo para un procesamiento rápido. los head
El comando lee las primeras 10 líneas de un archivo y el tail
comando lee las últimas 10 líneas de un archivo. Cada comando toma el nombre del archivo como argumento, por ejemplo, head file-list.txt
muestra las primeras 10 líneas:
$ head file-list.txt
Desktop
Documents
Downloads
FirstFolder
Music
Pictures
Public
SecondFolder
Templates
Videos
tail file-list.txt
muestra las últimas 10 líneas de un archivo:
$ tail file-list.txt
Downloads
FirstFolder
Music
Pictures
Public
SecondFolder
Templates
Videos
file-list.txt
hello-world.txt
Si desea ver los primeros 5 en lugar de 10, entonces debe usar el -5
marcar y entrar head -5 file-list.txt
.
$ head -5 file-list.txt
Desktop
Documents
Downloads
FirstFolder
Music
La bandera numérica funciona de manera similar con tail
, si desea ver las últimas 3 líneas de un archivo, debe ingresar tail -3 file-list.txt
.
$ tail -3 file-list.txt
Videos
file-list.txt
hello-world.txt
Conclusión
Bash es un programa CLI multiplataforma que proporciona muchos comandos útiles para que podamos realizar tareas de manera eficaz en las computadoras. Sin usar una GUI, ahora puede hacer lo siguiente con Bash:
- Navegue y acceda al sistema de archivos con
pwd
,ls
ycd
- Crea nuevas carpetas con
mkdir
y nuevos archivos contouch
- Modificar archivos con
cp
,rm
ymv
- Redirigir la salida de comandos a archivos con
>
y use la salida como entrada en un siguiente comando con|
- Leer archivos con
less
,head
ytail
- Obtenga el manual del usuario para un comando con
man
Hay muchos más comandos disponibles en Bash y capacidades de lenguaje de programación versátiles para que podamos programar tareas comunes. Dedicar algo de tiempo a aprenderlos sería invaluable para su productividad y habilidades como desarrollador o administrador.
Te puede interesar:Instalación de TensorFlow en Windows