Ejercicio: Prueba de Bash

Completado

En un equipo Linux propio, puede ejecutar comandos de Bash de forma local. Si tiene acceso a los servidores Linux, puede acceder a ellos de forma remota y ejecutar comandos de Bash allí. Pero nadie quiere experimentar en un sistema de producción activo, especialmente en su primer día en Northwind.

En esta unidad, usará Azure Cloud Shell a la derecha como terminal de Linux. Azure Cloud Shell es un shell al que puede acceder mediante Azure Portal o desde https://shell.azure.com. Para usarlo no es necesario instalar nada en el PC o el portátil.

Familiarizarse con Cloud Shell

En primer lugar, se explorará el contenido de Cloud Shell mediante los comandos de Bash que se han aprendido.

  1. Use el comando ls para enumerar todos los archivos y subdirectorios del directorio actual:

    ls
    
  2. Debería ver una salida similar a esta:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive es un subdirectorio del directorio actual. Se trata de un recurso compartido de archivos montado que persiste si usa Cloud Shell en una cuenta propia. Ahora lo usa en el espacio aislado de Microsoft Learn.

  3. Pero espere, ¿cuál es el directorio actual? Vamos a usar el comando pwd para averiguarlo. pwd significa "imprimir directorio de trabajo". Imprime la ruta larga del directorio en el que se encuentra.

    pwd
    
  4. La salida debe ser parecida a la siguiente:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Esta salida significa que se encuentra en un directorio denominado yourname dentro de un directorio llamado home, en la raíz del sistema de archivos de Linux.

  5. Parece que en el directorio actual no hay gran cosa. Se usará una marca de Bash para imprimir todos los archivos y directorios ocultos con el fin de comprobar que es correcto.

    ls -a
    
  6. Vaya. En esa salida se muestra que este directorio tiene mucho más contenido del que se pensaba inicialmente.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. ¿Qué son todos esos archivos y subdirectorios? Algunos son archivos en segundo plano para que Cloud Shell funcione. Ahora se analizarán algunos de los otros.

    • . hace referencia al directorio actual y .. al directorio principal. Con independencia de dónde se encuentre, si imprime todos los archivos y directorios ocultos, verá que se imprimen . y ...
    • .bash_history es un archivo especial de Bash en el que se almacenan todos los comandos que se escriben en el shell. Bash recuerda el historial de comandos que, como verá más adelante, es muy útil.
    • .bash_logout es otro archivo especial de Bash que se lee y ejecuta cada vez que se sale de un inicio de sesión del shell. Los superusuarios de Linux pueden modificarlo para personalizar el entorno.
    • .bashrc es un archivo de configuración de Bash importante que se ejecuta cada vez que se inicia un shell nuevo. Si decide abrir este archivo para consultarlo, tenga cuidado al realizar cambios, ya que pueden tener consecuencias imprevistas.

Recuperación de los comandos de historial y autocompletar

Cuando se escriben comandos complicados como este, es fácil cometer un error:

ls -a .azure/commands/202?*.log

Afortunadamente, Bash ofrece un par de funcionalidades para ayudarle.

Recuperación de comandos anteriores

  1. Intente escribir este comando que tiene un error tipográfico (203? en lugar de 202?):

    ls -a .azure/commands/203?*.log
    
  2. Debería ver que esta salida le indica que no había archivos que coincidan con ese patrón:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. En lugar de volverlo a escribir todo para corregir el error, puede recuperar comandos que ha escrito antes mediante las teclas Flecha arriba y Flecha abajo. Pruebe a usar la tecla Flecha arriba para recuperar el comando incorrecto. Después, presione la tecla Flecha izquierda para corregirlo y reemplazar el 3 final por un 2. Vuelva a presionar Entrar para enviar el comando corregido.

    Si presiona repetidamente la tecla Flecha arriba, retrocederá varios comandos. Presione la tecla Flecha abajo para pasar a comandos posteriores.

  4. Ahora debería ver algo similar a la salida siguiente. Le indica que el comando ha funcionado correctamente y ha enumerado los archivos que coincidían con el patrón especificado.

    .azure/commands/2020-01-29.21-56-35.login.103.log
    .azure/commands/2020-01-29.21-56-38.account_set.112.log
    

Autocompletar

Imagine que quiere leer el contenido de uno de los archivos que acaba de encontrar. Puede usar el comando cat (abreviatura de "catenate" (encadenar)) para imprimir el contenido de un archivo en la pantalla.

  1. Para usar este comando, podría usar el nombre de archivo completo, como:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Pero eso es escribir mucho y muy propenso a errores. En su lugar, puede usar la rudimentaria función de autocompletar de Bash para realizar la mayor parte del trabajo. Pruebe a escribir:

    cat .a
    

    Después, presione la tecla Tab. ¿Qué sucede?

  3. Debería ver que el resto de la palabra "azure/" aparece en el comando:

    cat .azure/
    

    Siga escribiendo el principio de las palabras y presione Tab para autocompletar. Tenga en cuenta que si hay una ambigüedad, Bash no rellenará nada. Puede presionar Tab dos veces para que Bash imprima todos los archivos y directorios de una ruta de acceso determinada que coincidan con las letras que ya ha escrito.

  4. Experimente hasta que llegue a un archivo .log real en el directorio de comandos. Después, presione Entrar para usar el comando cat e imprimir su contenido en la pantalla. Es posible que tenga un aspecto similar a este:

    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity
    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
    

    Tenga en cuenta que si ya ha escrito una letra incorrecta, Bash no podrá adivinar correctamente la letra que pretendía escribir.

Uso de man

Acaba de usar el comando cat, pero no tiene demasiada información sobre él. Practique con man para obtener más información sobre el comando cat.

  1. Escriba el comando siguiente para comprender mejor qué es cat y cómo usarlo:

    man cat
    

    Sí, ha escrito "man cat" en el shell. Los comandos de Bash pueden ser crípticos y divertidos a la vez.

  2. La salida debe ser parecida a la siguiente:

    CAT(1)                                       User Commands                                       CAT(1)
    
    NAME
           cat - concatenate files and print on the standard output
    
    SYNOPSIS
           cat [OPTION]... [FILE]...
    
    DESCRIPTION
           Concatenate FILE(s) to standard output.
    
           With no FILE, or when FILE is -, read standard input.
    
           -A, --show-all
                  equivalent to -vET
    
           -b, --number-nonblank
                  number nonempty output lines, overrides -n
    
           -e     equivalent to -vE
    
    ...
    
  3. Presione las teclas Flecha arriba y Flecha abajo para desplazarse por la página del manual y escriba q para salir.

Cambio de directorios

A hora se practicará con un comando de Bash más básico: cd.

Mientras usa el shell, siempre está dentro de un directorio, como una carpeta del PC o Mac. Para cambiar de carpeta, use el comando cd (cambiar directorio).

Es sencillo, pero vamos a practicar.

  1. En primer lugar, escriba este comando para asegurarse de que se encuentra en el lugar correcto:

    cd ~
    

    Este comando le ha devuelto al directorio home especial en el shell, en caso de que no estuviera allí.

  2. Use el comando pwd de nuevo para volver a comprobarlo:

    pwd
    
  3. La salida debe ser parecida a la siguiente:

    /home/yourname
    

    ~ es otro carácter especial de Bash que hace referencia a este directorio particular. Puede usar ~ para hacer referencia a la ubicación /home/yourname con independencia de su ubicación en el shell.

  4. Ahora se cambiará al directorio que contiene los archivos de registro (donde estaba antes):

    cd .azure/commands/
    

    Puede escribir personalmente el comando completo, o bien usar Tab para autocompletar.

    Ahora debería ver que la línea donde escribe los comandos tiene un aspecto diferente, y muestra dónde se encuentra en el shell:

    yourname@Azure:~/.azure/commands$
    
  5. Pruebe a usar la sintaxis .. especial para ascender un directorio:

    cd ..
    

    Ahora debería estar en un nivel superior de la estructura de directorios y la línea de comandos debería tener este aspecto:

    yourname@Azure:~/.azure$
    

Excelente trabajo. Ha dado los primeros pasos para convertirse en un experto en Bash. Vamos a seguir aprendiendo.

Comprobación de conocimientos

1.

¿A qué directorio cambiaría si ha escrito cd . como un comando de Bash?