4.
1 Introducción
Si eres como la mayoría de las personas, probablemente estés familiarizado con el uso de
la Interfaz Gráfica de Usuario (o GUI «Graphical User Interface») para controlar tu
computadora. Fue introducida a las masas por Apple en la computadora Macintosh y
popularizado por Microsoft. La GUI proporciona una forma fácil de descubrir y administrar
tu sistema. Sin una GUI, algunas herramientas para gráficos y video no serían prácticas.
Antes de la popularidad de la GUI, la Interfaz de Línea de Comandos (o CLI «Command
Line Interface») era la forma preferida para controlar una computadora. La CLI se
basa únicamente en la entrada por teclado. Todo lo que quieres que tu computadora
haga, se retransmite escribiendo comandos en lugar de ir haciendo clics en los
iconos.
Si nunca has usado una CLI, al principio puede resultar difícil porque requiere de
memorizar comandos y sus opciones. Sin embargo, la CLI proporciona un control
más preciso, una mayor velocidad y capacidad para automatizar fácilmente las
tareas a través del scripting (ver barra lateral). Aunque Linux tiene muchos entornos
GUI, podrás controlar Linux mucho más eficazmente mediante la Interfaz de Línea
de Comandos.
¿Por qué conocer la línea de comando es importante? ¡Flexibilidad y
Movilidad! Mediante la comprensión de los fundamentos de Linux , tienes la capacidad de
trabajar en CUALQUIER distribución de Linux. Esto podría significar una compañía con
ambiente mixto o una nueva empresa con una distribución Linux diferente.
4.2 Interfaz de Línea de Comandos (CLI)
La Interfaz de Línea de Comandos (CLI), es una interfaz basada en texto para la
computadora, donde el usuario introduce un comando y la computadora lo ejecuta. El
entorno de la CLI es proporcionado por una aplicación en la computadora conocida como
un terminal.
El terminal acepta lo que el usuario escribe y lo pasa a un shell. El shell interpreta lo que el
usuario ha introducido en las instrucciones que se pueden ejecutar con el sistema
operativo. Si el comando produce una salida, entonces se muestra este texto en el
terminal. Si surgen problemas con el comando, se muestra un mensaje de error.
4.3 Acceso a la Terminal
Hay muchas maneras de acceder a la ventana de la terminal. Algunos sistemas arrancarán
directamente a la terminal. Este suele ser el caso de los servidores, ya que una interfaz
gráfica de usuario (GUI) puede requerir muchos recursos que no son necesarios para
realizar operaciones basadas en servidores.
Un buen ejemplo de un servidor que no requiere una GUI es un servidor web. Los
servidores web deben correr tan rápido como sea posible y una GUI sólo haría lento el
sistema.
En los sistemas que arrancan con una GUI, hay comúnmente dos formas de acceder a
una terminal, una terminal basado en GUI y un terminal virtual:
Una terminal de GUI es un programa dentro del entorno de una GUI que emula la
ventana de la terminal. Las terminales de la GUI pueden accederse a través del
sistema de menú. Por ejemplo, en una máquina CentOS, puedes hacer clic
en Applications (o «Aplicaciones» en español) en la barra de menús, luego
en System Tools > (o «Herramientas de Sistema») y, finalmente, en Terminal:
Una terminal virtual puede ejecutarse al mismo tiempo que una GUI, pero requiere
que el usuario se conecte o inicie sesión a través de la terminal virtual antes de
que pueda ejecutar los comandos (como lo haría antes de acceder a la interfaz
GUI). La mayoría de los sistemas tienen múltiples terminales virtuales que se
pueden acceder pulsando una combinación de teclas, por ejemplo: Ctrl-Alt-F1
Nota: En las máquinas virtuales puede que las terminales virtuales no estén disponibles.
La ventana del terminal muestra un prompt (o «símbolo o aviso» en español); el prompt
aparece cuando no se ejecutan ningún comando y cuando la salida completa del comando
se ha desplegado en la pantalla. El prompt está diseñado para decirle al usuario que
introduzca un comando.
La estructura del prompt puede variar entre las distribuciones, pero por lo general contiene
información sobre el usuario y el sistema. A continuación te mostramos una estructura
común de un prompt:
sysadmin@localhost:~$
El prompt anterior proporciona el nombre del usuario registrado en (sysadmin), el nombre
del sistema (localhost) y el directorio actual (~). El símbolo ~ se utiliza como
abreviación para el directorio principal del usuario (el directorio principal del usuario viene
bajo el directorio /home (o «inicio» en español) y con el nombre de la cuenta de usuario,
por ejemplo: /home/sysadmin).
4.3.1 Prompt
Una ventana del terminal muestra un prompt (o «símbolo o aviso» en español); el prompt
aparece cuando no se ejecutan ningún comando y cuando la salida completa del comando
se ha desplegado en la pantalla. El prompt está diseñado para decirle al usuario que
introduzca un comando.
La estructura del prompt puede variar entre las distribuciones, pero por lo general contiene
información sobre el usuario y el sistema. A continuación te mostramos una estructura
común de un prompt:
sysadmin@localhost:~$
El prompt anterior proporciona el nombre del usuario registrado en (sysadmin), el nombre
del sistema (localhost) y el directorio actual (~). El símbolo ~ se utiliza como
abreviación para el directorio principal del usuario (el directorio principal del usuario viene
bajo el directorio /home (o «inicio» en español) y con el nombre de la cuenta de usuario,
por ejemplo: /home/sysadmin).
Previous
Next
4.3.2 El Shell
Un shell es el intérprete que traduce los comandos introducidos por un usuario en acciones
a realizar por el sistema operativo. El entorno Linux proporciona muchos tipos diferentes
de shells, algunos de los cuales han existido por muchos años.
El shell más comúnmente utilizado para las distribuciones de Linux se llama el BASH shell.
Es un shell que ofrece muchas funciones avanzadas, tales como el historial de comandos,
que te permite fácilmente volver a ejecutar comandos previamente ejecutados.
El BASH shell tiene también otras funciones populares:
Scripting: La capacidad de colocar los comandos en un archivo y ejecutar
el archivo, resultando en todos los comandos siendo ejecutados. Esta
función también tiene algunas características de programación, tales como
las instrucciones condicionales y la habilidad de crear funciones (AKA,
subrutinas).
Los Alias: La habilidad de crear "nicknames" (o «sobrenombres» en
español) cortos para más comandos más largos.
Las Variables: Las Variables se utilizan para almacenar información para
el BASH shell. Estas variables pueden utilizarse para modificar cómo las
funciones y los comandos trabajan y proporcionan información vital sobre
el sistema.
Nota: La lista anterior es sólo un breve resumen de algunas de las muchas funciones
proporcionadas por el BASH shell.
Previous
Next
4.3.3 Los Comandos de Formato
Muchos comandos se pueden utilizar por sí mismos sin más entradas. Algunos comandos
requieren entradas adicionales para funcionar correctamente. Esta entrada adicional viene
en dos formas: opciones y argumentos.
El formato típico de un comando es el siguiente:
comando [opciones] [argumentos]
Las opciones se utilizan para modificar el comportamiento básico de un comando y los
argumentos se utilizan para proporcionar información adicional (tal como un nombre de
archivo o un nombre de usuario). Cada opción y argumento vienen normalmente
separados por un espacio, aunque las opciones pueden a menudo ser combinadas.
Recuerda que Linux es sensible a mayúsculas y minúsculas. Comandos, opciones,
argumentos, variables y nombres de archivos deben introducirse exactamente como se
muestra.
El comando ls proporciona ejemplos útiles. Por sí mismo, el comando ls listará los
archivos y directorios contenidos en el directorio de trabajo actual:
sysadmin@localhost:~$ ls
Desktop Documents Downloads Music Pictures Public Templates
Videos
sysadmin@localhost:~$
Sobre el comando ls hablaremos en detalle en un capítulo posterior. El propósito de
introducir este comando ahora, es demostrar cómo los argumentos y las opciones
funcionan. En este punto no te debes preocupar de lo que es la salida del comando, más
bien centrarte en comprender en qué es un argumento y una opción.
Un argumento lo puedes pasar también al comando ls para especificar contenido de qué
directorio hay que listar. Por ejemplo, el comando ls /etc/ppp listará el contenido del
directorio /etc/ppp en lugar del directorio actual:
sysadmin@localhost:~$ ls /etc/ppp
ip-down.d ip-up.d
sysadmin@localhost:~$
Puesto que el comando ls acepta múltiples argumentos, puede listar el contenido de
varios directorios a la vez, introduciendo el comando ls /etc/ppp /etc/ssh:
sysadmin@localhost:~$ ls /etc/ppp /etc/ssh
/etc/ppp:
ip-down.d ip-up.d
/etc/ssh:
moduli ssh_host_dsa_key.pub ssh_host_rsa_key
sshd_configssh_config
ssh_host_ecdsa_key ssh_host_rsa_key.pub
ssh_host_dsa_key ssh_host_ecdsa_key.pub ssh_import_id
sysadmin@localhost:~$
Previous
Next
4.3.4 Trabajando con las Opciones
Las opciones pueden utilizarse con comandos para ampliar o modificar el comportamiento
de un comando. Las opciones son a menudo de una letra; sin embargo, a veces serán
"palabras". Por lo general, los comandos viejos utilizan una letra, mientras los comandos
nuevos utilizan palabras completas para las opciones. Opciones de una letra son
precedidas por un único guión -. Opciones de palabra completa son precedidas por dos
guiones --.
Por ejemplo, puedes utilizar la opción -l con el comando ls para ver más información
sobre los archivos que se listan. El comando ls -l lista los archivos contenidos dentro del
directorio actual y proporciona información adicional, tal como los permisos, el tamaño del
archivo y otra información:
sysadmin@localhost:~$ ls -l
total 0
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Desktop
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Documents
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Downloads
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Music
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Pictures
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Public
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Templates
drwxr-xr-x 1 sysadmin sysadmin 0 Jan 29 2015 Videos
sysadmin@localhost:~$
En la mayoría de los casos, las opciones pueden utilizarse conjuntamente con otras
opciones. Por ejemplo, los comandos ls -l -h o ls -lh listarán los archivos con sus
detalles, pero se mostrará el tamaño de los archivos en formato de legibilidad humana en
lugar del valor predeterminado (bytes):
sysadmin@localhost:~$ ls -l /usr/bin/perl
-rwxr-xr-x 2 root root 10376 Feb 4 2014 /usr/bin/perl
sysadmin@localhost:~$ ls -lh /usr/bin/perl
-rwxr-xr-x 2 root root 11K Feb 4 2014 /usr/bin/perl
sysadmin@localhost:~$
Nota que el ejemplo anterior también demostró cómo se pueden combinar opciones de
una letra: -lh . El orden de las opciones combinadas no es importante.
La opción -h también tiene la forma de una palabra completa: --human-readable (--
legibilidad-humana).
Las opciones a menudo pueden utilizarse con un argumento. De hecho, algunas de las
opciones requieren sus propios argumentos. Puedes utilizar los argumentos y las opciones
con el comando ls para listar el contenido de otro directorio al ejecutar el comando ls -
l/etc/ppp:
sysadmin@localhost:~$ ls -l /etc/ppp
total 0
drwxr-xr-x 1 root root 10 Jan 29 2015 ip-down.d
drwxr-xr-x 1 root root 10 Jan 29 2015 ip-up.d
sysadmin@localhost:~$
Previous
Next
4.4 Historial de los Comandos
Al ejecutar un comando en una terminal, el comando se almacena en "history list" (o «lista
de historial» en español). Esto está diseñado para que más adelante puedas ejecutar el
mismo comando más fácilmente puesto que no necesitarás volver a introducir el comando
entero.
Para ver la lista de historial de una terminal, utiliza el comando history (o «historial» en
español):
sysadmin@localhost:~$ date
Sun Nov 1 00:40:28 UTC 2015
sysadmin@localhost:~$ ls
Desktop Documents Downloads Music Pictures Public Templates
Videos
sysadmin@localhost:~$ cal 5 2015
May 2015
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
sysadmin@localhost:~$ history
1 date
2 ls
3 cal 5 2015
4 history
sysadmin@localhost:~$
Pulsando la tecla de Flecha Hacia Arriba ↑ se mostrará el comando anterior en tu línea de
prompt. Puedes presionar arriba repetidas veces para moverte a través del historial de
comandos que hayas ejecutado. Presionando la tecla Entrar se ejecutará de nuevo el
comando visualizado.
Cuando encuentres el comando que quieres ejecutar, puedes utilizar las teclas de Flecha
Hacia Izquierda ← y Flecha Hacia Derecha → para colocar el cursor para edición. Otras
teclas útiles para edición incluyen Inicio, Fin, Retroceso y Suprimir.
Si ves un comando que quieres ejecutar en la lista que haya generado el
comando history, puedes ejecutar este comando introduciendo el signo de exclamación y
luego el número al lado del comando, por ejemplo:
!3
sysadmin@localhost:~$ history
1 date
2 ls
3 cal 5 2015
4 history
sysadmin@localhost:~$ !3
cal 5 2015
May 2015
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
sysadmin@localhost:~$
Algunos ejemplos adicionales del history:
Ejemplo Significado
history Muestra los últimos cinco comandos de la lista del historial
5
!! Ejecuta el último comando otra vez
!-5 Ejecuta el quinto comando desde la parte inferior de la lista de
historial
!ls Ejecuta el comando ls más reciente
Previous
Next
4.5 Introduciendo las variables del BASH shell
Una variable del shell BASH es una función que te permite a ti o al shell almacenar los
datos. Esta información puede utilizarse para proporcionar información crítica del sistema o
para cambiar el comportamiento del funcionamiento del shell BASH (u otros comandos).
Las variables reciben nombres y se almacenan temporalmente en la memoria. Al cerrar
una ventana de la terminal o shell, todas las variables se pierden. Sin embargo, el sistema
automáticamente recrea muchas de estas variables cuando se abre un nuevo shell.
Para mostrar el valor de una variable, puedes utilizar el comando echo (o «eco» en
español). El comando echo se utiliza para mostrar la salida en la terminal; en el ejemplo
siguiente, el comando mostrará el valor de la variable HISTSIZE:
sysadmin@localhost:~$ echo $HISTSIZE
1000
sysadmin@localhost:~$
La variable HISTSIZE define cuántos comandos anteriores se pueden almacenar en la
lista del historial. Para mostrar el valor de la variable debes utilizar un carácter del signo de
dólar $ antes del nombre de la variable. Para modificar el valor de la variable, no se utiliza
el carácter $:
sysadmin@localhost:~$ HISTSIZE=500
sysadmin@localhost:~$ echo $HISTSIZE
500
sysadmin@localhost:~$
Hay muchas variables del shell que están disponibles para el shell BASH, así como las
variables que afectarán a los diferentes comandos de Linux. No todas las variables del
shell están cubiertas por este capítulo, sin embargo, conforme vaya avanzando este curso
hablaremos de más variables del shell.
Previous
Next
4.6 La Variable PATH
Una de las variables del shell BASH más importante que hay que entender es la
variable PATH.
El término path (o «ruta» en español) se refiere a una lista que define en qué directorios el
shell buscará los comandos. Si introduces un comando y recibes el error "command not
found" (o «comando no encontrado» en español), es porque el shell BASH no pudo
localizar un comando por ese nombre en cualquiera de los directorios en la ruta. El
comando siguiente muestra la ruta del shell actual:
sysadmin@localhost:~$ echo $PATH
/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:
/usr/games
sysadmin@localhost:~$
Basado en la anterior salida, cuando intentas ejecutar un comando, el shell primero busca
el comando en el directorio /home/sysadmin/bin. Si el comando se encuentra en ese
directorio, entonces se ejecuta. Si no es encontrado, el shell buscará en el
directorio /usr/local/sbin.
Si el comando no se encuentra en ningún directorio listado en la variable PATH, entonces
recibirás un error, command not found:
sysadmin@localhost:~$ zed
-bash: zed: command not found
sysadmin@localhost:~$
Si en tu sistema tienes instalado un software personalizado, puede que necesites modificar
la ruta PATH para que sea más fácil ejecutar estos comandos. Por ejemplo, el siguiente
comando agregará el directorio /usr/bin/custom a la variable PATH:
sysadmin@localhost:~$ PATH=/usr/bin/custom:$PATH
sysadmin@localhost:~$ echo $PATH
/usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/
usr/sbin:/usr/bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$
Previous
Next
4.7 Comando export
Hay dos tipos de variables utilizadas en el shell BASH, la local y la de entorno. Las
variables de entorno, como PATH y HOME, las utiliza el BASH al interpretar los comandos y
realizar las tareas. Las variables locales son a menudo asociadas con las tareas del
usuario y son minúsculas por convención. Para crear una variable local, simplemente
introduce:
H6bsysadmin@localhost:~$ echo $variable1
Something
Para ver las variables de entorno, utiliza el comando env (la búsqueda a través de la salida
usando grep, tal como se muestra aquí, se tratará en los capítulos posteriores). En este
caso, la búsqueda para variable1 en las variables de entorno resultará en una salida
nula:
sysadmin@localhost:~$ env | grep variable1
sysadmin@localhost:~$
Después de exportar variable1 llegará a ser una variable de entorno. Observa que esta
vez, se encuentra en la búsqueda a través de las variables de entorno:
sysadmin@localhost:~$ export variable1
sysadmin@localhost:~$ env | grep variable1
variable1=Something
El comando export también puede utilizarse para hacer una variable de entorno en el
momento de su creación:
sysadmin@localhost:~$ export variable2='Else'
sysadmin@localhost:~$ env | grep variable2
variable2=Else
Para cambiar el valor de una variable de entorno, simplemente omite el $ al hacer
referencia a tal valor:
sysadmin@localhost:~$ variable1=$variable1' '$variable2
sysadmin@localhost:~$ echo $variable1
Something Else
Las variables exportadas pueden eliminarse con el comando unset:
sysadmin@localhost:~$ unset variable2
4.8 Comando which
Puede haber situaciones donde diferentes versiones del mismo comando se instalan en un
sistema o donde los comandos son accesibles para algunos usuarios y a otros no. Si un
comando no se comporta como se esperaba o si un comando no está accesible pero
debería estarlo, puede ser beneficioso saber donde el shell encuentra tal comando o que
versión está utilizando.
Sería tedioso tener que buscar manualmente en cada directorio que se muestra en la
variable PATH. En su lugar, puedes utilizar el comando which (o «cuál» en español) para
mostrar la ruta completa del comando en cuestión:
sysadmin@localhost:~$ which date
/bin/date
sysadmin@localhost:~$ which cal
/usr/bin/cal
sysadmin@localhost:~$
El comando which busca la ubicación de un comando buscando en la variable PATH.
Previous
Next
4.9 Comando type
El comando type puede utilizarse para determinar la información acerca de varios
comandos. Algunos comandos se originan de un archivo específico:
sysadmin@localhost:~$ type which
which is hashed (/usr/bin/which)
Esta salida sería similar a la salida del comando which (tal como se explica en el apartado
anterior, que muestra la ruta completa del comando):
sysadmin@localhost:~$ which which
/usr/bin/which
El comando type también puede identificar comandos integrados en el bash (u otro) shell:
sysadmin@localhost:~$ type echo
echo is a shell builtin
En este caso, la salida es significativamente diferente de la salida del comando which:
sysadmin@localhost:~$ which echo
/bin/echo
Usando la opción -a, el comando type también puede revelar la ruta de otro comando:
sysadmin@localhost:~$ type -a echo
echo is a shell builtin
echo is /bin/echo
El comando type también puede identificar a los aliases para otros comandos:
sysadmin@localhost:~$ type ll
ll is aliased to `ls -alF'
sysadmin@localhost:~$ type ls
ls is aliased to `ls --color=auto'
La salida de estos comandos indican que ll es un alias para ls - alF, incluso ls es un
alias para ls --color=auto. Una vez más, la salida es significativamente diferente del
comando which:
sysadmin@localhost:~$ which ll
sysadmin@localhost:~$ which ls
/bin/ls
El comando type soporta otras opciones y puede buscar varios comandos al mismo
tiempo. Para mostrar sólo una sola palabra que describe al echo, ll, y a los
comandos which, utiliza la opción -t:
sysadmin@localhost:~$ type -t echo ll which
builtin
alias
file
4.10 Los Alias
Un alias puede utilizarse para asignar comandos más largos a secuencias más cortas.
Cuando el shell ve un alias ejecutado, sustituye la secuencia más larga antes de proceder
a interpretar los comandos.
Por ejemplo, el comando ls -l comúnmente tiene un alias l o ll. Ya que estos
comandos más pequeñas son más fáciles de introducir, también es más rápido ejecutar la
línea de comandos ls -l.
Puedes determinar qué alias se definen en el shell con el comando alias:
sysadmin@localhost:~$ alias
alias alert='notify-send —urgency=low -i "$([ $? = 0 ] && echo
terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\
s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
Los alias que ves en los ejemplos anteriores fueron creados por los archivos de
inicialización. Estos archivos están diseñados para hacer automático el proceso de
creación de los alias. Hablaremos sobre ellos con más detalle en un capítulo posterior.
Los nuevos alias se pueden crear introduciendo alias name=command (o «alias
nombre=comando» en español), donde nombre es el nombre que quieres dar a el alias y
comando es el comando que quieres que se ejecute cuando se ejecuta el alias.
Por ejemplo, puedes crear un alias de tal manera que lh muestre una lista larga de
archivos, ordenados por tamaño con un tamaño "human friendly" (o «amigable para el
usuario» en español) con el comando alias lh='ls -Shl'. Introduciendo lh debe ahora
dar lugar a la misma salida que introduciendo el comando ls -Shl:
sysadmin@localhost:~$ alias lh='ls -Shl'
sysadmin@localhost:~$ lh /etc/ppp
total 0
drwxr-xr-x 1 root root 10 Jan 29 2015 ip-down.d
drwxr-xr-x 1 root root 10 Jan 29 2015 ip-up.d
Los alias creados de esta manera sólo persistirán mientras el shell esté abierto. Una vez
que el shell es cerrado, los nuevos alias que hayas creado, se perderán. Además, cada
shell posee sus propios alias, así que si creas un alias en un shell y luego lo abres en otro
shell, no verás el alias en el nuevo shell.
Previous
Next
4.11 Globbing
Los caracteres de globbing se denominan a menudo como "comodines". Estos son
símbolos que tienen un significado especial para el shell.
A diferencia de los comandos que ejecutará el shell, u opciones y argumentos que el shell
pasará a los comandos, los comodines son interpretados por el mismo shell antes de que
intente ejecutar cualquier comando. Esto significa que los comodines pueden utilizarse con
cualquier comando.
Los comodines son poderosos porque permiten especificar patrones que coinciden con los
nombres de archivo en un directorio, así que en lugar de manipular un solo archivo a la
vez, puedes fácilmente ejecutar comandos que afectarán a muchos archivos. Por ejemplo,
utilizando comodines es posible manipular todos los archivos con una cierta extensión o
con una longitud de nombre de archivo determinado.
Ten en cuenta que estos comodines pueden utilizarse con cualquier comando, ya que es
el shell, no el comando que se expande con los comodines a la coincidencia de nombres
de archivo. Los ejemplos proporcionados en este capítulo utilizan el comando echo para
demostración.
4.11.1 Asterisco (*)
El asterisco se utiliza para representar cero o más de cualquier carácter en un nombre de
archivo. Por ejemplo, supongamos que quieres visualizar todos los archivos en el
directorio /etc que empiecen con la letra t:
sysadmin@localhost:~$ echo /etc/t*
/etc/terminfo /etc/timezone
sysadmin@localhost:~$
El patrón t* significa "cualquier archivo que comienza con el carácter t y tiene cero o más
de cualquier carácter después de la letra t".
Puedes usar el asterisco en cualquier lugar dentro del patrón del nombre de archivo. El
siguiente ejemplo coincidirá con cualquier nombre de archivo en el directorio /etc que
termina con .d:
sysadmin@localhost:~$ echo /etc/*.d
/etc/apparmor.d /etc/bash_completion.d /etc/cron.d /etc/depmod.d
/etc/fstab.d /etc/init.d /etc/insserv.conf.d /etc/ld.so.conf.d
/etc/logrotate.d /etc/modprobe.d /etc/pam.d /etc/profile.d
/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d
/etc/rc6.d /etc/rcS.d /etc/rsyslog.d /etc/sudoers.d /etc/sysctl.d
/etc/update-motd.d
En el ejemplo siguiente se mostrarán todos los archivos en el directorio /etc que
comienzan con la letra r y terminan con .conf:
sysadmin@localhost:~$ echo /etc/r*.conf
/etc/resolv.conf /etc/rsyslog.conf
Previous
Next
4.11.2 Signo de Interrogación (?)
El signo de interrogación representa cualquier carácter único. Cada carácter de signo de
interrogación coincide con exactamente un carácter, nada más y nada menos.
Supongamos que quieres visualizar todos los archivos en el directorio /etc que
comienzan con la letra t y que tienen exactamente 7 caracteres después del carácter
de t:
sysadmin@localhost:~$ echo /etc/t???????
/etc/terminfo /etc/timezone
sysadmin@localhost:~$
Los comodines pueden utilizarse juntos para encontrar patrones más complejos. El
comando echo /etc/*???????????????????? imprimirá sólo los archivos del
directorio /etc con veinte o más caracteres en el nombre del archivo:
sysadmin@localhost:~$ echo /etc/*????????????????????
/etc/bindresvport.blacklist /etc/ca-certificates.conf
sysadmin@localhost:~$
El asterisco y el signo de interrogación también podrían usarse juntos para buscar archivos
con extensiones de tres letras ejecutando el comando echo /etc/*.???:
sysadmin@localhost:~$ echo /etc/*.???
/etc/blkid.tab /etc/issue.net
sysadmin@localhost:~$
Previous
Next
4.11.3 Corchetes [ ]
Los corchetes se utilizan para coincidir con un carácter único representando un intervalo
de caracteres que pueden coincidir con los caracteres. Por ejemplo, echo
/etc/[gu]* imprimirá cualquier archivo que comienza con el carácter g o u y contiene
cero o más caracteres adicionales:
sysadmin@localhost:~$ echo /etc/[gu]*
/etc/gai.conf /etc/groff /etc/group /etc/group- /etc/gshadow
/etc/gshadow- /etc/ucf.conf /etc/udev /etc/ufw /etc/update-motd.d
/etc/updatedb.conf
sysadmin@localhost:~$
Los corchetes también pueden ser utilizados para representar un intervalo de caracteres.
Por ejemplo, el comando echo /etc/[a-d]* mostrará todos los archivos que comiencen
con cualquier letra entre e incluyendo a y d:
sysadmin@localhost:~$ echo /etc/[a-d]*
/etc/adduser.conf /etc/adjtime /etc/alternatives /etc/apparmor.d
/etc/apt /etc/bash.bashrc /etc/bash_completion.d /etc/bind
/etc/bindresvport.blacklist /etc/blkid.conf /etc/blkid.tab /etc/ca-
certificates /etc/ca-certificates.conf /etc/calendar /etc/cron.d
/etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
/etc/crontab /etc/dbus-1 /etc/debconf.conf /etc/debian_version
/etc/default
/etc/deluser.conf /etc/depmod.d /etc/dpkg
sysadmin@localhost:~$
El comando echo /etc/*[0-9]* mostrará todos los archivos que contienen al menos un
número:
sysadmin@localhost:~$ echo /etc/*[0-9]*
/etc/dbus-1 /etc/iproute2 /etc/mke2fs.conf /etc/python2.7 /etc/rc0.d
/etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d
sysadmin@localhost:~$
El intervalo se basa en el cuadro de texto de ASCII. Esta tabla define una lista de
caracteres disponiéndolos en un orden estándar específico. Si proporcionas un orden
inválido, no se registrará ninguna coincidencia:
sysadmin@localhost:~$ echo /etc/*[9-0]*
/etc/*[9-0]*
sysadmin@localhost:~$
Previous
Next
4.11.4 Signo de Exclamación (!)
El signo de exclamación se utiliza en conjunto con los corchetes para negar un intervalo.
Por ejemplo, el comando echo [!DP]* mostrará cualquier archivo que no comienza
con D o P.
Previous
Next
4.12 Las Comillas
Hay tres tipos de comillas que tienen significado especial para el shell Bash: comillas
dobles ", comillas simples ' y comilla invertida `. Cada conjunto de comillas indica al shell
que debe tratar el texto dentro de las comillas de una manera distinta a la normal.
Previous
Next
4.12.1 Comillas Dobles
Las comillas dobles detendrán al shell de la interpretación de algunos metacaracteres,
incluyendo los comodines. Dentro de las comillas dobles, el asterisco es sólo un asterisco,
un signo de interrogación es sólo un signo de interrogación y así sucesivamente. Esto
significa que cuando se utiliza el segundo comando echo más abajo, el shell BASH no
convierte el patrón de globbing en nombres de archivos que coinciden con el patrón:
sysadmin@localhost:~$ echo /etc/[DP]*
/etc/DIR_COLORS /etc/DIR_COLORS.256color
/etc/DIR_COLORS.lightbgcolor /etc/PackageKit
sysadmin@localhost:~$ echo "/etc/[DP]*"
/etc/[DP]*
sysadmin@localhost:~$
Esto es útil cuando quieres mostrar algo en la pantalla, lo que suele ser un carácter
especial para el shell:
sysadmin@localhost:~$ echo "The glob characters are *, ? and [ ]"
The glob characters are *, ? and [ ]
sysadmin@localhost:~$
Las comillas dobles todavía permiten la sustitución de comando (se tratará más adelante
en este capítulo), sustitución de variable y permiten algunos metacaracteres de shell sobre
los que aún no hemos hablado. Por ejemplo, en la siguiente demostración, notarás que el
valor de la variable PATH es desplegada:
sysadmin@localhost:~$ echo "The path is $PATH"
The path is
/usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/
usr/sbin:/usr/bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$
Previous
Next
4.12.2 Comillas Simples
Las comillas simples evitan que el shell interprete algunos caracteres especiales. Esto
incluye comodines, variables, sustitución de comando y otro metacarácter que aún no
hemos visto.
Por ejemplo, si quieres que el carácter $ simplemente signifique un $, en lugar de actuar
como un indicador del shell para buscar el valor de una variable, puedes ejecutar el
segundo comando que se muestra a continuación:
sysadmin@localhost:~$ echo The car costs $100
The car costs 00
sysadmin@localhost:~$ echo 'The car costs $100'
The car costs $100
sysadmin@localhost:~$
Previous
Next
4.12.3 Barra Diagonal Inversa (\)
Puedes utilizar una técnica alternativa para citar un carácter con comillas simples. Por
ejemplo, supón que quieres imprimir lo siguiente: “The services costs $100 and
the path is $PATH". Si pones esto entre las comillas dobles, $1 y $PATH se
consideran variables. Si pones esto entre las comillas simples, $1 y $PATH no son
variables. Pero ¿qué pasa si quieres tener $PATH tratado como una variable y no a $1?
Si colocas una barra diagonal invertida \ antes del otro carácter, tratará al otro carácter
como un carácter de "comillas simples". El tercer comando más abajo muestra cómo
utilizar el carácter \, mientras que los otros dos muestran cómo las variables serían
tratadas si las pones entre las comillas dobles y simples:
sysadmin@localhost:~$ echo "The service costs $100 and the path is
$PATH"
The service costs 00 and the path is
/usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/
usr/sbin:/usr/bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$ echo 'The service costs $100 and the path is
$PATH'
The service costs $100 and the path is $PATH
sysadmin@localhost:~$ echo The service costs \$100 and the path is
$PATH
The service costs $100 and the path is
/usr/bin/custom:/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/
usr/sbin:/usr/bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$
Previous
Next
4.12.4 Comilla Invertida
Las comillas invertidas se utilizan para especificar un comando dentro de un comando, un
proceso de sustitución del comando. Esto permite un uso muy potente y sofisticado de los
comandos.
Aunque puede sonar confuso, un ejemplo debe hacer las cosas más claras. Para empezar,
fíjate en la salida del comando date:
sysadmin@localhost:~$ date
Mon Nov 2 03:35:50 UTC 2015
Ahora fíjate en la salida de la línea de comandos echo Today is date (o «eco La fecha
de hoy es» en español):
sysadmin@localhost:~$ echo Today is date
Today is date
sysadmin@localhost:~$
En el comando anterior la palabra date (o «fecha» en español) es tratada como texto
normal y el shell simplemente pasa date al comando echo. Pero, probablemente quieras
ejecutar el comando date y tener la salida de ese comando enviado al comando echo.
Para lograr esto, deberás ejecutar la línea de comandos echo Today is `date`:
sysadmin@localhost:~$ echo Today is `date`
Today is Mon Nov 2 03:40:04 UTC 2015
sysadmin@localhost:~$
Previous
Next
4.13 Instrucciones de Control
Las instrucciones de control te permiten utilizar varios comandos a la vez o ejecutar
comandos adicionales, dependiendo del éxito de un comando anterior. Normalmente estas
instrucciones de control se utilizan en scripts o secuencias de comandos, pero también
pueden ser utilizadas en la línea de comandos.
4.13 Instrucciones de Control
Las instrucciones de control te permiten utilizar varios comandos a la vez o ejecutar
comandos adicionales, dependiendo del éxito de un comando anterior. Normalmente estas
instrucciones de control se utilizan en scripts o secuencias de comandos, pero también
pueden ser utilizadas en la línea de comandos.
4.13.1 Punto y Coma
El punto y coma puede utilizarse para ejecutar varios comandos, uno tras otro. Cada
comando se ejecuta de forma independiente y consecutiva; no importa el resultado del
primer comando, el segundo comando se ejecutará una vez que el primero haya
terminado, luego el tercero y así sucesivamente.
Por ejemplo, si quieres imprimir los meses de enero, febrero y marzo de 2015, puedes
ejecutar cal 1 2015; cal 2 2015; cal 3 2015 en la línea de comandos:
sysadmin@localhost:~$ cal 1 2015; cal 2 2015; cal 3 2015
January 2015
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
February 2015
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
March 2015
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Previous
Next
4.13.2 Ampersand Doble (&&)
El símbolo de ampersand doble && actúa como un operador "y" lógico. Si el primer
comando tiene éxito, entonces el segundo comando (a la derecha de la &&) también se
ejecutará. Si el primer comando falla, entonces el segundo comando no se ejecutará.
Para entender mejor como funciona esto, consideremos primero el concepto de fracaso y
éxito para los comandos. Los comandos tienen éxito cuando algo funciona bien y fallan
cuando algo sale mal. Por ejemplo, considera la línea de comandos ls /etc/xml. El
comando tendrá éxito si el directorio /etc/xml es accesible y fallará cuando no es
accesible.
Por ejemplo, el primer comando tendrá éxito porque el directorio /etc/xml existe y es
accesible mientras que el segundo comando fallará porque no hay un directorio /junk:
sysadmin@localhost:~$ ls /etc/xml
catalog catalog.old xml-core.xml xml-core.xml.old
sysadmin@localhost:~$ ls /etc/junk
ls: cannot access /etc/junk: No such file or directory
sysadmin@localhost:~$
La manera en que usarías el éxito o fracaso del comando ls junto con && sería ejecutando
una línea de comandos como la siguiente:
sysadmin@localhost:~$ ls /etc/xml && echo success
catalog catalog.old xml-core.xml xml-core.xml.old
success
sysadmin@localhost:~$ ls /etc/junk && echo success
ls: cannot access /etc/junk: No such file or directory
sysadmin@localhost:~$
En el primer ejemplo arriba, el comando echo fue ejecutado, porque tuvo éxito el
comando ls. En el segundo ejemplo, el comando echo no fue ejecutado debido a que el
comando ls falló.
Previous
Next
4.13.3 Línea Vertical Doble
La línea vertical doble || es un operador lógico "o". Funciona de manera similar a &&;
dependiendo del resultado del primer comando, el segundo comando se ejecutará o será
omitido.
Con la línea vertical doble, si el primer comando se ejecuta con éxito, el segundo comando
es omitido. Si el primer comando falla, entonces se ejecutará el segundo comando. En
otras palabras, esencialmente estás diciendo al shell, "O bien ejecuta este primer comando
o bien el segundo".
En el ejemplo siguiente, el comando echo se ejecutará sólo si falla el comando ls:
sysadmin@localhost:~$ ls /etc/xml || echo failed
catalog catalog.old xml-core.xml xml-core.xml.old
sysadmin@localhost:~$ ls /etc/junk || echo failed
ls: cannot access /etc/junk: No such file or directory
failed
sysadmin@localhost:~$
Previous
Next
PRACTICA 4
4.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:
sysadmin@localhost:~$
Recuerda: Es posible que tengas que presionar Entrar en la ventana para visualizar la
línea.
El promt te dice que eres un usuario sysadmin; el host o la computadora que estás
utilizando: localhost; y el directorio en el que te encuentras: ~, lo cuál representa el
directorio inicial.
Cuando introduces un comando, éste aparecerá en el cursor de texto. Puedes utilizar las
teclas como inicio, fin, retroceso, y teclas de flecha para la editar el comando que estás
introduciendo.
Una vez que hayas introducido el comando correctamente, presiona Entrar para
ejecutarlo.
Previous
Next
4.2.1 Paso 1
El siguiente comando mostrará la misma información que ves en la primera parte del
prompt. Asegúrate de que hayas seleccionado (hecho clic) la primera ventana de
la Terminal e introducido el siguiente comando seguido por la tecla Entrar:
whoami
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ whoami
sysadmin
sysadmin@localhost:~$
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:
sysadmin@localhost:~$ uname
Linux
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:
sysadmin@localhost:~$ uname -n
localhost
sysadmin@localhost:~$ uname --nodename
localhost
Previous
Next
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:
sysadmin@localhost:~$ pwd
/home/sysadmin
sysadmin@localhost:~$
El directorio actual en el ejemplo anterior es /home/sysadmin. Esto también se conoce
como tu directorio home , una ubicación especial en la que controlas los archivos y al que
los otros usuarios normalmente no tienen acceso. De forma predeterminada, este
directorio tiene el mismo nombre que tu nombre de usuario y se encuentra bajo el
directorio /home.
Como puedes ver en la salida del comando, /home/sysadmin, Linux utiliza la barra
diagonal / para separar los directorios para crear lo que se denomina ruta. La barra
diagonal inicial representa el directorio de nivel superior, conocido como el directorio root .
Más información sobre los archivos, directorios y caminos se presentará en los laboratorios
posteriores.
El tilde ~ que ves en el prompt también está indicando cuál es el directorio actual. Este
carácter es una forma de «acceso directo» para representar tu home.
Considera Esto
El comando pwd significa «imprimir el directorio de trabajo». A pesar de que las versiones
modernas en realidad no «imprimen», las máquinas UNIX más antiguas no tenían
monitores y la salida de los comandos iban a una impresora, de ahí el nombre divertido
de pwd.
Previous
Next
4.3 Variables del Shell
Las variables del Shell se utilizan para almacenar los datos en Linux. Estos datos los utiliza
el propio shell, los programas y los usuarios.
El enfoque de esta sección es aprender cómo mostrar los valores de las variables del
Shell.
Previous
Next
4.3.1 Paso 1
El comando echo se puede utilizar para imprimir el texto, el valor de una variable y mostrar
cómo el entorno del shell expande los metacaracteres (más detailles sobre los
metacaracteres más adelante en este laboratorio). Introduce el siguiente comando para
que de salida a texto literal:
echo Hello Student
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Hello Student
Hello Student
sysadmin@localhost:~$
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:
sysadmin@localhost:~$ echo $PATH
/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/usr/games
sysadmin@localhost:~$
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».
Previous
Next
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:
sysadmin@localhost:~$ which date
/bin/date
sysadmin@localhost:~$
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.
Previous
Next
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.
Previous
Next
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:
sysadmin@localhost:~$ echo *
Desktop Documents Downloads Music Pictures Public Templates Videos
sysadmin@localhost:~$
El asterisco * busca «cero o más» coincidencias de caracteres en un nombre de archivo.
En el ejemplo anterior, esto se traduce en la adecuación de todos los nombres del archivo
en el directorio actual.
El comando echo, a su vez, muestra los nombres del archivo que fueron agrupados.
Previous
Next
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:
sysadmin@localhost:~$ echo D*
Desktop Documents Downloads
sysadmin@localhost:~$ echo P*
Pictures Public
sysadmin@localhost:~$
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:
sysadmin@localhost:~$ echo *s
Documents Downloads Pictures Templates Videos
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo D*n*s
Documents Downloads
sysadmin@localhost:~$
El siguiente metacarácter glob que vamos a examinar es el signo de interrogación ?. El
signo de interrogación coincide exactamente con un carácter. Este único carácter puede
ser cualquier carácter posible.
Al igual que el asterisco, se puede utilizar en cualquier lugar de una cadena y puede
aparecer varias veces.
Previous
Next
4.4.5 Paso 5
Dado que cada signo de interrogación coincide con un carácter desconocido, introduciendo
seis de ellos coincidirán con los nombres de archivo de seis caracteres. Introduce lo
siguiente para mostrar los nombres de los archivos que tienen exactamente seis
caracteres:
echo ??????
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo ??????
Public Videos
sysadmin@localhost:~$
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.
Previous
Next
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:
sysadmin@localhost:~$ echo D????????
Documents Downloads
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo ?????*s
Documents Downloads Pictures Templates Videos
sysadmin@localhost:~$
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».
Previous
Next
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:
sysadmin@localhost:~$ echo [DP]*
Desktop Documents Downloads Pictures Public
sysadmin@localhost:~$ echo [!DP]*
Music Templates Videos
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo [D-P]*
Desktop Documents Downloads Music Pictures Public
sysadmin@localhost:~$ echo [!D-P]*
Templates Videos
sysadmin@localhost:~$
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.
Previous
Next
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.
Previous
Next
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:
sysadmin@localhost:~$ echo Today is `date`
Today is Tue Jan 19 15:48:57 UTC 2016
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo Today is $(date)
Today is Tue Jan 19 15:51:09 UTC 2016
sysadmin@localhost:~$
¿Por qué dos métodos diferentes pueden lograr lo mismo? Las comillas invertidas se
parecen mucho a las comillas simples, por lo que es más difícil «ver» lo que un comando
debería hacer. Originalmente los shell utilizaban las comillas invertidas; el formato $
(comando) se añadió en una versión posterior del shell bash para que la instrucción
fuera visualmente más clara.
Previous
4.5.3 Paso 3
Si no quieres que se usen las comillas invertidas para ejecutar un comando, coloca
alrededor de ellas las comillas simples. Ejecuta lo siguiente:
echo This is the command '`date`'
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo This is the command '`date`'
This is the command `date`
sysadmin@localhost:~$
Previous
Next
Next
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:
sysadmin@localhost:~$ echo This is the command \`date\`
This is the command `date`
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo This is the command "`date`"
This is the command Tue Jan 19 16:05:41 UTC 2016
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo D*
Desktop Documents Downloads
sysadmin@localhost:~$ echo "D*"
D*
sysadmin@localhost:~$
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.
Previous
Next
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.
Previous
Next
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:
sysadmin@localhost:~$ echo Hello; echo Linux; echo Student
Hello
Linux
Student
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ false; echo Not; echo Conditional
Not
Conditional
sysadmin@localhost:~$
Ten en cuenta que en el ejemplo anterior, los tres comandos se ejecutan a pesar de que el
primero falle. Aunque no lo puedes ver en la salida del comando false, éste se ejecutó.
Sin embargo, cuando los comandos están separadas por el carácter ;, son completamente
independientes entre sí.
Previous
Next
4.6.3 Paso 3
A continuación, utiliza «logical and» («y» lógico) y para separar los comandos:
echo Start && echo Going && echo Gone
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Start && echo Going && echo Gone
Start
Going
Gone
sysadmin@localhost:~$
Debido a que cada instrucción echo se ejecuta correctamente, se proporciona un valor de
retorno de éxito, permitiendo que la siguiente instrucción también se ejecute.
Previous
Next
4.6.4 Paso 4
Usa «y lógico» con un comando que falla como se muestra a continuación:
echo Success && false && echo Bye
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Success && false && echo Bye
Success
sysadmin@localhost:~$
El primer comando echo se ejecuta correctamente y vemos su salida. El
comando false se ejecuta con un resultado de fallo, por lo que el último
comando echo no se ejecuta.
Previous
Next
4.6.5 Paso 5
Los carácteres or que separan los siguientes comandos muestra cómo el fracaso antes de
la instrucción or provoca que el siguiente comando sea ejecutado; sin embargo, la primera
instrucción exitosa hace que el comando no se ejecute:
false || echo Fail Or
true || echo Nothing to see here
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ false || echo Fail Or
Fail Or
sysadmin@localhost:~$ true || echo Nothing to see here
sysadmin@localhost:~$
Previous
Next
4.7 Historia del Shell
El shell bash mantiene un historial de los comandos que introduces. Los comandos
anteriores son fácilmente accesibles en esta historia de varias maneras.
La primera y más fácil manera de llamar o recordar un comando anterior es el uso de
la tecla de flecha arriba. Cada presión de la tecla de flecha arriba va hacia atrás un
comando a través del historial. Si accidentalmente vas atrás demasiado, entonces la tecla
de flecha abajo irá hacia delante a través del historial de los comandos.
Cuando encuentres el comando que quieres ejecutar, puedes utilizar las teclas de flecha
hacia izquierda y flecha hacia derecha para colocar el cursor para edición. Otras teclas
útiles para edición incluyen Inicio, Fin, Retroceso y Suprimir.
Otra forma de utilizar el historial de comandos es ejecutar el comando history para poder
ver una lista numerada del historial. El número que aparece a la izquierda del comando
se puede utilizar para ejecutar el comando de nuevo. El comando history también tiene
una serie de opciones y argumentos que pueden manipular cuáles de los comando se
almacenarán o se mostrarán.
Previous
Next
4.7.1 Paso 1
Ejecuta algunos comandos y luego ejecuta el comando history:
date
clear
echo Hi
history
Recuerda: El comando date imprimirá la fecha y la hora en el sistema. El
comando clear borra la pantalla.
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Hi
Hi
sysadmin@localhost:~$ history
1 date
2 clear
3 echo Hi
4 history
sysadmin@localhost:~$
Tus números de comando probablemente serán diferentes de los proporcionados
anteriormente. Esto se debe a que es probable que hayas ejecutado un número diferente
de comandos.
Previous
Next
4.7.2 Paso 2
Para ver un número limitado de comandos, el comando history puede tomar un número
como un parámetro para mostrar exactamente ese número de entradas recientes.
Introduce el siguiente comando para mostrar los últimos cinco comandos de tu historial:
history 5
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ history 5
185 false || Fail Or
186 false || echo Fail Or
187 true || echo Nothing to see here
188 history
189 history 5
sysadmin@localhost:~$
Previous
Next
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
Previous
Next
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.
Previous
Next
4.4.5 Paso 5
Dado que cada signo de interrogación coincide con un carácter desconocido, introduciendo
seis de ellos coincidirán con los nombres de archivo de seis caracteres. Introduce lo
siguiente para mostrar los nombres de los archivos que tienen exactamente seis
caracteres:
echo ??????
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo ??????
Public Videos
sysadmin@localhost:~$
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.
Previous
Next
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:
sysadmin@localhost:~$ echo D????????
Documents Downloads
sysadmin@localhost:~$
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:
sysadmin@localhost:~$ echo ?????*s
Documents Downloads Pictures Templates Videos
sysadmin@localhost:~$
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:
sysadmin@localhost:~$ echo [DP]*
Desktop Documents Downloads Pictures Public
sysadmin@localhost:~$ echo [!DP]*
Music Templates Videos
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo [D-P]*
Desktop Documents Downloads Music Pictures Public
sysadmin@localhost:~$ echo [!D-P]*
Templates Videos
sysadmin@localhost:~$
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.
Previous
Next
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:
sysadmin@localhost:~$ echo Today is `date`
Today is Tue Jan 19 15:48:57 UTC 2016
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo Today is $(date)
Today is Tue Jan 19 15:51:09 UTC 2016
sysadmin@localhost:~$
¿Por qué dos métodos diferentes pueden lograr lo mismo? Las comillas invertidas se
parecen mucho a las comillas simples, por lo que es más difícil «ver» lo que un comando
debería hacer. Originalmente los shell utilizaban las comillas invertidas; el formato $
(comando) se añadió en una versión posterior del shell bash para que la instrucción
fuera visualmente más clara.
Previous
Next
4.5.3 Paso 3
Si no quieres que se usen las comillas invertidas para ejecutar un comando, coloca
alrededor de ellas las comillas simples. Ejecuta lo siguiente:
echo This is the command '`date`'
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo This is the command '`date`'
This is the command `date`
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo This is the command \`date\`
This is the command `date`
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo This is the command "`date`"
This is the command Tue Jan 19 16:05:41 UTC 2016
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ echo D*
Desktop Documents Downloads
sysadmin@localhost:~$ echo "D*"
D*
sysadmin@localhost:~$
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.
Previous
Next
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.
Previous
Next
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:
sysadmin@localhost:~$ echo Hello; echo Linux; echo Student
Hello
Linux
Student
sysadmin@localhost:~$
Previous
Next
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:
sysadmin@localhost:~$ false; echo Not; echo Conditional
Not
Conditional
sysadmin@localhost:~$
Ten en cuenta que en el ejemplo anterior, los tres comandos se ejecutan a pesar de que el
primero falle. Aunque no lo puedes ver en la salida del comando false, éste se ejecutó.
Sin embargo, cuando los comandos están separadas por el carácter ;, son completamente
independientes entre sí.
Previous
Next
4.6.3 Paso 3
A continuación, utiliza «logical and» («y» lógico) y para separar los comandos:
echo Start && echo Going && echo Gone
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Start && echo Going && echo Gone
Start
Going
Gone
sysadmin@localhost:~$
Debido a que cada instrucción echo se ejecuta correctamente, se proporciona un valor de
retorno de éxito, permitiendo que la siguiente instrucción también se ejecute.
Previous
Next
4.6.4 Paso 4
Usa «y lógico» con un comando que falla como se muestra a continuación:
echo Success && false && echo Bye
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Success && false && echo Bye
Success
sysadmin@localhost:~$
El primer comando echo se ejecuta correctamente y vemos su salida. El
comando false se ejecuta con un resultado de fallo, por lo que el último
comando echo no se ejecuta.
Previous
Next
4.6.5 Paso 5
Los carácteres or que separan los siguientes comandos muestra cómo el fracaso antes de
la instrucción or provoca que el siguiente comando sea ejecutado; sin embargo, la primera
instrucción exitosa hace que el comando no se ejecute:
false || echo Fail Or
true || echo Nothing to see here
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ false || echo Fail Or
Fail Or
sysadmin@localhost:~$ true || echo Nothing to see here
sysadmin@localhost:~$
Previous
Next
4.7 Historia del Shell
El shell bash mantiene un historial de los comandos que introduces. Los comandos
anteriores son fácilmente accesibles en esta historia de varias maneras.
La primera y más fácil manera de llamar o recordar un comando anterior es el uso de
la tecla de flecha arriba. Cada presión de la tecla de flecha arriba va hacia atrás un
comando a través del historial. Si accidentalmente vas atrás demasiado, entonces la tecla
de flecha abajo irá hacia delante a través del historial de los comandos.
Cuando encuentres el comando que quieres ejecutar, puedes utilizar las teclas de flecha
hacia izquierda y flecha hacia derecha para colocar el cursor para edición. Otras teclas
útiles para edición incluyen Inicio, Fin, Retroceso y Suprimir.
Otra forma de utilizar el historial de comandos es ejecutar el comando history para poder
ver una lista numerada del historial. El número que aparece a la izquierda del comando
se puede utilizar para ejecutar el comando de nuevo. El comando history también tiene
una serie de opciones y argumentos que pueden manipular cuáles de los comando se
almacenarán o se mostrarán.
Previous
Next
4.7.1 Paso 1
Ejecuta algunos comandos y luego ejecuta el comando history:
date
clear
echo Hi
history
Recuerda: El comando date imprimirá la fecha y la hora en el sistema. El
comando clear borra la pantalla.
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ echo Hi
Hi
sysadmin@localhost:~$ history
1 date
2 clear
3 echo Hi
4 history
sysadmin@localhost:~$
Tus números de comando probablemente serán diferentes de los proporcionados
anteriormente. Esto se debe a que es probable que hayas ejecutado un número diferente
de comandos.
Previous
Next
4.7.2 Paso 2
Para ver un número limitado de comandos, el comando history puede tomar un número
como un parámetro para mostrar exactamente ese número de entradas recientes.
Introduce el siguiente comando para mostrar los últimos cinco comandos de tu historial:
history 5
El resultado debe ser similar al siguiente:
sysadmin@localhost:~$ history 5
185 false || Fail Or
186 false || echo Fail Or
187 true || echo Nothing to see here
188 history
189 history 5
sysadmin@localhost:~$
Previous
Next
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
Previous
Next
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.
Previous
Next
EXAMEN UNIDAD 4
CORRECT - See Section 4.6
¿Qué variables de entorno contiene una lista de directorios en la que se buscan los
comandos que quieras ejecutar?
✔ PATH
CORRECT - See Section 4.8
Selecciona el comando que puede reportar la ubicación de un comando:
✔ which
CORRECT - See Section 4.12.2
Un par de comillas simples (') evitará que el shell interprete cualquier metacarácter.
¿Verdadero o falso?
✔ Verdadero
CORRECT - See Section 4.12.1
Un par de dobles comillas (") impedirá que el shell interprete cualquier metacarácter.
¿Verdadero o falso?
✔ Falso
CORRECT - See Section 4.12.4
El uso de un par de comillas invertidas (`) evitará que el shell ejecute texto entre comillas
invertidas como un comando y sustituirá la nueva salida al comando original. ¿Verdadero o
falso?
✔ Falso
CORRECT - See Section 4.13.1
El punto y coma ";" se puede usar para separar varios comandos para que se ejecuten en
orden. ¿Verdadero o falso?
✔ Verdadero
CORRECT - See Section 4.11
¿Cuál de los siguientes no es el caracteres glob?
✔ El carácter de guión "-"
CORRECT - See Section 4.13.2
El carácter de ampersand doble (&&) se utiliza para separar los comandos para
que se ejecuten de forma condicional, en la que si el comando a la izquierda de los
símbolos de ampersand falla, entonces se ejecutará el comando a la derecha de los
símbolos de ampersand. ¿Verdadero o falso?
✔ Falso
WRONG - See Section 4.5
Para poder ver los mensajes de salida en la pantalla, utilizamos el comando _______:
✗ display
CORRECT - See Section 4.4
El comando _______ imprimirá una lista de comandos que hayas ejecutado previamente.
✔ history