Ejercicio: Prueba de Bash
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.
Use el comando
ls
para enumerar todos los archivos y subdirectorios del directorio actual:ls
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.
Pero espere, ¿cuál es el directorio actual? Se usará el comando
pwd
para averiguarlo.pwd
significa "imprimir el directorio de trabajo". Imprime la ruta de acceso de forma larga a qué directorio está ahora.pwd
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.
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
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
¿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. Siempre que esté, si imprime todos los archivos y directorios ocultos, verá.
y..
imprimir..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 vemos más adelante, es útil..bash_logout
es otro archivo especial de Bash que se lee y ejecuta cada vez que existe un shell de inicio de sesión. 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
Intente escribir este comando que tiene un error tipográfico (
203?
en lugar de202?
):ls -a .azure/commands/203?*.log
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
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 un2
. Vuelva a presionar Entrar para enviar el comando corregido.Con la tecla de flecha arriba varias veces en una fila, se mueven varios comandos. Presione la tecla Flecha abajo para pasar a comandos posteriores.
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.
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
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?
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 seleccionar Pestaña dos veces para que Bash imprima todos los archivos y directorios de una ruta de acceso determinada que coincidan con las letras que ha escrito ya.
Reproduzca 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 qué letra quería escribir.
Use 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
.
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.
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 ...
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.
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í.
Use el comando
pwd
de nuevo para volver a comprobarlo:pwd
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.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$
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.