Introducci贸n a Bash

    Introducci贸n

    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.

    Windows 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 y cd
    • Crea nuevas carpetas con mkdir y nuevos archivos con touch
    • Modificar archivos con cp, rm y mv
    • Redirigir la salida de comandos a archivos con > y use la salida como entrada en un siguiente comando con |
    • Leer archivos con less, head y tail
    • 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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *