Linux Essentials, Capitulo 4, Practica
Linux Essentials, Capitulo 4, Practica
1 Introducción
Este es Lab 4: Los fundamentos de la Línea de Comandos. Mediante la
realización de esta práctica de laboratorio, los estudiantes aprenderán cómo
utilizar las funciones básicas del shell.
En este capítulo harás las siguientes tareas:
Explorar características Bash
Usar variables shell
Entender como usar globbing
Ser capaz de usar comillas
4.2 Los Archivos y los Directorios
En esta tarea vamos a acceder a la interfaz de línea de comandos (CLI) para
Linux para explorar cómo ejecutar los comandos básicos y ver como afecta la
forma en que se pueden ejecutar.
La mayoría de los usuarios probablemente están más familiarizados con cómo
se ejecutan los comandos utilizando una interfaz gráfica de usuario (GUI). Por
lo tanto, probablemente esta tarea presente algunos conceptos nuevos para ti,
si no habías trabajado previamente con una CLI. Para utilizar una CLI, tendrás
que introducir el comando que quieras ejecutar.
La ventana donde escribirás el comando se conoce como un emulador de la
terminal. Dentro de la ventana de la terminal, el sistema está mostrando un
prompt (símbolo), que actualmente contiene un prompt seguido por un cursor
parpadeante:
La salida del comando whoami visualiza el nombre del usuario actual. Aunque
en este caso el nombre de usuario se muestra en el prompt, este comando se
podría utilizar para obtener esta información en una situación en la que el
prompt no contuviera tal información.
4.2.2 Paso 2
El siguiente comando muestra información sobre el sistema actual. Para poder
ver el nombre del kernel que estás utilizando, introduce el siguiente comando
en la terminal:
uname
El resultado debe ser similar al siguiente:
Muchos de los comandos que se ejecutan producen salida de texto como ésta.
Puedes cambiar la salida producida con un comando mediante el uso de
las opciones después del nombre del comando.
Las opciones para un comando se pueden especificar de varias formas.
Tradicionalmente, en UNIX, las opciones se expresaban por un guión seguido
por otro carácter, por ejemplo: -n.
En Linux, las opciones pueden a veces también ser dadas por dos caracteres
de guión seguidos por una palabra o palabra con guión, por ejemplo: --
nodename.
Ejecuta el comando uname de nuevo dos veces en la terminal, una vez con la
opción -n y de nuevo con la opción --nodename. Esto mostrará el nombre del
host del nodo de la red, también visualizado en el prompt.
uname -n
uname --nodename
El resultado debe ser similar al siguiente:
4.2.3 Paso 3
El comando pwd se utiliza para mostrar tu «ubicación» actual o el directorio de
«trabajo» actual. Introduce el siguiente comando para visualizar el directorio
de trabajo:
pwd
El resultado debe ser similar al siguiente:
4.3.2 Paso 2
Introduce el siguiente comando para mostrar el valor de la variable PATH:
echo $PATH
El resultado debe ser similar al siguiente:
/home/
sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/
games
La variable PATH se visualiza mediante la colocación del carácter $ delante del
nombre de la variable.
Esta variable se utiliza para encontrar la ubicación de los comandos. Cada uno
de los directorios mencionados anteriormente se buscan cuando ejecutas un
comando. Por ejemplo, si intentas a ejecutar el comando date, el shell buscará
el comando primero en el directorio /home/sysadmin/bin, luego en el
directorio /usr/local/sbin y así sucesivamente. Una vez el shell encuentra el
comando date, «lo ejecuta».
4.3.3 Paso 3
Utiliza el comando which para determinar si existe un archivo ejecutable
llamado date ubicado en un directorio que aparece en el valor PATH:
which date
El resultado debe ser similar al siguiente:
La salida del comando which te dice que cuando ejecutas el comando date, el
sistema ejecutará el comando /bin/date. El comando which hace uso de la
variable PATH para determinar la ubicación del comando date.
4.4 Globbing
El uso de los caracteres glob en Linux es similar a lo que muchos sistemas
operativos se refieren como caracteres «wildcard». Utilizando los caracteres
glob haces coincidir los nombres de archivos usando patrones.
Los caracteres glob son una característica del shell, no es algo propio de algún
comando específico. Como resultado de ello, puedes utilizar los caracteres glob
con cualquier comando de Linux.
Cuando se utilizan los caracteres glob, el shell «expande» todo el patrón para
coincidir con todos los archivos en el directorio especificado que coincide con el
patrón.
A efectos de demostración, vamos a utilizar el comando echo para visualizar
este proceso de expansión.
4.4.1 Paso 1
Utiliza el siguiente comando echo para mostrar todos los nombres de archivo
en el directorio actual que coincide con el patrón global *:
echo *
El resultado debe ser similar al siguiente:
4.4.2 Paso 2
Los siguientes comandos mostrarán todos los archivos en el directorio actual
que comienzan con la letra D y la letra P:
echo D*
echo P*
El resultado debe ser similar al siguiente:
Piensa en el primer ejemplo, D*, como «coincidencia con todos los nombres de
archivo en el directorio actual que comienzan con la letra d en mayúscula y
tienen cero o más de cualquier otro carácter después de la letra D».
4.4.3 Paso 3
El asterisco * se puede utilizar en cualquier lugar de la cadena. El siguiente
comando mostrará todos los archivos en tu directorio actual que terminan en la
letra s:
echo *s
El resultado debe ser similar al siguiente:
4.4.4 Paso 4
Observa que el asterisco también puede aparecer varias veces o en medio de
varios caracteres:
echo D*n*s
El resultado debe ser similar al siguiente:
Importante:
Cada carácter ? debe coincidir exactamente con un carácter en un nombre de
archivo, ni más ni menos de un carácter.
4.4.6 Paso 6
Utilizando el signo de interrogación con otros caracteres se limitarán las
coincidencias. Escribe lo siguiente para mostrar los nombres de los archivos
que comienzan con la letra D y tienen exactamente nueve caracteres:
echo D????????
El resultado debe ser similar al siguiente:
4.4.7 Paso 7
Los comodines o caracteres glob pueden combinarse entre sí. El siguiente
comando mostrará los nombres de archivo que tienen al menos seis caracteres
y terminan en la letra s.
echo ?????*s
El resultado debe ser similar al siguiente:
Piensa en el patrón ?????*s en el sentido de «coincide con los nombres de
archivo que comienzan con cualquier cinco caracteres, y luego tenga cero o
más caracteres y luego termine con el carácter s».
4.4.8 Paso 8
El siguiente glob es similar al glob signo de interrogación para especificar un
carácter. Este glob utiliza un par de corchetes [ ] para especificar qué se le
permitirá a un carácter. Los caracteres permitidos se pueden especificar como
una serie, una lista, o por lo que se conoce como una clase de caracteres.
Los caracteres permitidos también pueden ser anulados con un signo de
exclamación !.
En el primer ejemplo, el primer carácter del nombre de archivo puede ser o
bien una D o una P. En el segundo ejemplo, el primer carácter puede ser
cualquier carácter excepto una D o P:
echo [DP]*
echo [!DP]*
El resultado debe ser similar al siguiente:
4.4.9 Paso 9
En estos siguientes ejemplos se especifica una serie de caracteres. En el
primer ejemplo, el primer carácter del nombre de archivo puede ser cualquier
carácter que comienze cualquier carácter entre la D y la P. En el segundo
ejemplo, este rango de caracteres es negado, lo que significa cualquier
carácter individual coincidirá, excepto si está entre la letra D y la P:
echo [D-P]*
echo [!D-P]*
El resultado debe ser similar al siguiente:
Te podrías preguntar «¿quién decide qué letras haya entre la D y la P? ». En
este caso la respuesta es bastante obvia (E, F, G, H, I, J, K, L, M, N y O), pero
¿qué tal que el rango fuese [1-A]?
Para determinar el rango de caracteres se utiliza la tabla de texto ASCII. Puedes
consultar esta tabla mediante su búsqueda en Internet o introduciendo el
comando siguiente, el comando ascii.
Por lo tanto, ¿con qué caracteres coincidirá el glob [1-A] ? De acuerdo con la
tabla de texto ASCII: 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ;, <, =, >, ?, @ y A.
4.5 Las Comillas
Hay tres tipos de comillas utilizadas por Shell Bash: comillas simples ('),
comillas dobles (") comilla invertida (`). Estas comillas tienen características
especiales dentro de shell bash tal como se describe a continuación.
Para entender las comillas simples y dobles, considera que a veces no quieres
que el shell trate algunos caracteres como «especiales». Por ejemplo, como
viste anteriormente en este laboratorio, el carácter * se utiliza como comodín.
¿Y que pasa si quieres que el carácter * signifique solamente un asterisco?
Las comillas simples evitan que el shell «interprete» o expanda todos los
caracteres especiales. A menudo, las comillas simples se utilizan para proteger
una cadena de ser cambiada por el shell, por lo que la cadena puede ser
interpretada por un comando como parámetro para afectar la forma en la cuál
se ejecuta el comando.
Las comillas dobles detienen la expansión de los caracteres glob como el
asterisco (*), signo de interrogación (?) y corchetes ( [ ] ). Las comillas dobles
no permiten que la expansión de las variables y la sustitución de los comandos
(ver comilla invertida) se lleve a cabo.
Las comillas invertidas causan «sustitución del comando», que permite que un
comando ejecute dentro de la línea de otro comando.
Al utilizar las comillas, se deben introducir en pares o de lo contrario el shell no
considerará el comando como completo.
Mientras que las comillas simples son útiles para que el shell no interprete uno
o más caracteres, el shell también proporciona una manera de bloquear la
interpretación de un solo carácter llamado «escaping». Para «evadir» el
significado especial de un metacarácter del shell, se utiliza la barra
invertida \ como un prefijo para ese único carácter.
4.5.1 Paso 1
Ejecuta el siguiente comando para usar las comillas invertidas ` para ejecutar
el comando date dentro de la línea del comando echo:
echo Today is `date`
El resultado debe ser similar al siguiente:
4.5.2 Paso 2
También puedes colocar un $ ( antes del y ) después del comando para llevar a
cabo la sustitución de comandos:
echo Today is $(date)
El resultado debe ser similar al siguiente:
4.5.4 Paso 4
Ten en cuenta que también puedes colocar una barra invertida delante de cada
comilla invertida. Ejecuta lo siguiente:
echo This is the command \`date\`
El resultado debe ser similar al siguiente:
4.5.5 Paso 5
Las comillas dobles no tienen ningún efecto sobre las comillas invertidas. El
shell las seguirá utilizando como una sustitución del comando. Ejecuta lo
siguiente para ver una demostración:
echo This is the command "`date`"
El resultado debe ser similar al siguiente:
4.5.6 Paso 6
Las comillas dobles tendrán efecto sobre los caracteres comodín de tal manera
que deshabilitan su significado especial. Ejecuta lo siguiente:
echo D*
echo "D*"
El resultado debe ser similar al siguiente:
Importante:
Las comillas pueden parecer triviales y raras en este momento, pero a medida
que adquieras más experiencia de trabajo en el shell de comandos, descubrirás
que entender bien cómo las diferentes comillas funcionan es fundamental para
el uso del shell.
4.6 Las Instrucciones de Control
Por lo general, introduces un solo comando y lo ejecutas presionando Entrar.
El shell Bash ofrece tres estados diferentes que se pueden utilizar para separar
varios comandos escritos juntos.
El separador más simple es el punto y coma (;). El uso de punto y coma entre
múltiples comandos les permite ejecutarse el uno tras el otro de forma
secuencial de la izquierda a la derecha.
Los caraceters && crean una lógica e instrucción. Los comandos separados
por && se ejecutan de manera condicional. Si el comando a la izquierda
de && tiene éxito, entonces el comando a la derecha de && también será
ejecutado. Si el comando a la izquierda de && falla, entonces el comando a la
derecha de la && no se ejecuta.
Los caracteres || crean una lógica o una instrucción que también causa una
ejecución condicional. Cuando los comandos están separados por ||, entonces
sólo si el comando a la izquierda falla, el comando a la derecha de || se ejecuta.
Si el comando a la izquierda de || tiene éxito, entonces el comando a la
derecha de la || no se ejecuta.
Para ver cómo funcionan instrucciones de control, podrás utilizar dos
ejecutables especiales: true y false. El ejecutable true siempre tiene éxito
cuando se ejecuta, mientras que, el ejecutable false siempre falla. Si bien esto
no te puede proporcionar ejemplos realistas acerca de cómo && y || funcionan,
proporciona un medio para demostrar cómo funcionan sin tener que introducir
nuevos comandos.
4.6.1 Paso 1
Ejecuta los tres siguientes comandos juntos separadas por punto y coma:
echo Hello; echo Linux; echo Student
Como puedes ver en la salida, los tres comandos se ejecutan de forma
secuencial:
4.6.2 Paso 2
Ahora, pon juntos los tres comandos separados por punto y coma, donde el
primer comando se ejecuta con un resultado de fallo:
false; echo Not; echo Conditional
El resultado debe ser similar al siguiente:
4.7.3 Paso 3
Para ejecutar un comando, introduce el signo de exclamación y el número de la
lista del historial. Por ejemplo, para ejecutar el comando número 94 en la lista
del historial, tienes que ejecutar lo siguiente:
!94
4.7.4 Paso 4
A continuación, experimenta con el acceso a tu historial utilizando las teclas
de flecha hacia arriba y teclas de flecha hacia abajo. Mantén presionada
la tecla de flecha arriba hasta encontrar un comando que quieras ejecutar. Si
fuera necesario, utiliza otras teclas para editar el comando y, a continuación,
presiona Entrar para ejecutar el comando.
Código: