Bienvenido(a) a Alcance Libre 06/09/2025, 00:59
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2012 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.
Este documento es la segunda parte en el documento titulado «Lección de mandatos básicos.»
La mayoría de los programas disponibles en la consola utilizan como norma ofrecer un desplegado de ayuda rápida ejecutando el programa con la opción --help. Como ejemplo ejecute:
ls --help |
Lo anterior mostrará la ayuda de ls. Pulse simultáneamente las teclas «SHIFT» y «Re Pág» y luego las teclas «SHIFT» y «Av Pág»; ésto permitirá avanzar o retroceder en la pantalla.
Pulse la tecla «ENTER» y ejecute lo siguiente:
man ls |
Lo anterior mostrará el manual en español —en caso de que esté disponible. Pulse las teclas «Av Pág» y «Re Pág» para avanzar o retroceder. Pulse la tecla /, ingrese la cadena de texto «director» y pulse la tecla «ENTER»:
/director |
Lo anterior habrá realizado una búsqueda en el manual de ls y resaltado las incidencias de la cadena de texto «director». Pulse la tecla q para salir.
Si necesita consultar otros manuales relacionados con ls, ejecute man con la opción -k y el nombre del programa a consultar como argumento:
man -k ls |
Lo anterior devolverá una extensa salida que consistirá en la lista de todas las páginas de manual que incluyen información relacionada con ls.
Para obtener una lista más específica, ejecute lo siguiente:
whatis ls |
Ejecute lo siguiente:
man -k crontab |
Lo anterior devolverá una salida similar a la siguiente, la cual indica que hay dos distintos manuales para crontab (1 y 5).
crontab (1) - maintains crontab files for individual users
crontab (5) - files used to schedule the execution of programs |
Las páginas de manual se organizan en las siguientes categorías:
Lo que significa que crontab(1) corresponde al manual del programa crontab y crontab(5) corresponde al manual del formato del archivo /etc/crontab. Para consultar éste último ejecute lo siguiente:
man 5 crontab |
Para salir, pulse la tecla q.
Ejecute lo siguiente:
info ls |
Lo anterior mostrará la página de información ls. Info se puede utilizar cuando se carece de páginas de manual. Para salir, pulse la tecla q.
Wc —word count— es un programa utilizado para contabilizar el número de líneas, palabras o caracteres de texto simple.
Regrese a su directorio de inicio ejecutando cd sin argumentos:
cd |
Ejecute wc con la opción -m y /etc/crontab como argumento:
wc -m /etc/crontab |
Lo anterior devolverá que el archivo /etc/crontab contiene cierto número de carácteres.
Ejecute wc con la opción -w y /etc/crontab como argumento:
wc -w /etc/crontab |
Lo anterior devolverá que el archivo /etc/crontab contiene cierto número de palabras.
Ejecute wc con la opción -l y /etc/crontab como argumento:
wc -l /etc/crontab |
Lo anterior devolverá que el archivo /etc/crontab contiene cierto número de líneas.
Ejecute wc con la opción -L y /etc/crontab como argumento:
wc -L /etc/crontab |
Lo anterior devolverá que la línea más larga del archivo /etc/crontab tiene cierto número de carácteres.
Ejecute wc con la opción -c y /etc/crontab como argumento:
wc -c /etc/crontab |
Lo anterior devolverá que el tamaño del archivo /etc/crontab es de cierto número de bytes.
Cat es un programa que sirve para mostrar los contenidos de archivos de texto y para concatenar archivos en general.
Ejecute cat para ver el contenido del archivo /etc/crontab:
cat /etc/crontab |
Lo anterior devolverá algo similar a lo siguiente:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
|
Ejecute lo siguiente para concatenar los contenidos de los contenidos de /etc/fstyab y /etc/crontab en un archivo denominado ~/concatenados.txt:
cat /etc/fstab /etc/crontab > ~/concatenados.txt |
Visualice el contenido del archivo ~/concatenados.txt para validar lo anterior:
cat ~/concatenados.txt |
La salida puede ser similar a la siguiente:
# # /etc/fstab # Created by anaconda on Wed Apr 15 19:14:49 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=857b05d8-2ac4-47b8-ba0e-4b9bd1fdde06 / xfs defaults 1 1 UUID=12c542d9-004e-4533-ba0e-728bb872551f /boot xfs defaults 1 2 UUID=3006a3c3-c643-47b8-ba0c-f2e6d27eff0a swap swap defaults 0 0 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed |
Grep es un programa que se utiliza para discriminar cadenas de texto o expresiones regulares.
Para mostrar sólo las lineas que contengan la cadena de carácteres root, ejecute grep con la expresión regular como primer argumento y /etc/crontab como segundo argumento:
grep root /etc/crontab |
Lo anterior devolverá algo similar a lo siguiente:
MAILTO=root |
Para hacer lo contrario y sólo visualizar las líneas que sin la cadena de carácteres root, ejecute grep con la opción -v, la expresión regular como primer argumento y /etc/crontab como segundo argumento:
grep -v root /etc/crontab |
Lo anterior devolverá una salida similar a la siguiente:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
|
Lo anterior incluye también las lineas vacías. Para mostrar el mismo resultado sin líneas vacías, ejecute los mismo pero utilizando como subrutina sed con la opción -e (ejecutar) y '/^$/d' como argumentos, donde sed es un editor para filtrado y transformación de texto y /^$/d se refiere a líneas vacías:
grep -v "root" /etc/crontab | sed -e '/^$/d' |
Lo anterior devolverá una salida similar a la siguiente:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed |
Head y tail son programas utilizados para mostrar u ocultar líneas al inicio o al final de un archivo de texto.
Ejecute head con la opción -3 y /etc/crontab como argumento:
head -3 /etc/crontab |
Head devolverá la siguiente salida, mostrando las 3 primeras líneas del archivo /etc/crontab.
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root |
Ejecute tail con la opción -3 y /etc/crontab como argumento:
tail -3 /etc/crontab |
Tail devolverá la siguiente salida, mostrando las 3 últimas líneas del archivo /etc/crontab.
# | | | | |
# * * * * * command to be executed
|
Es posible hacer un ordenamiento de las líneas de texto simple utilizando sort.
Ejecute sort con /etc/passwd como argumento con una subrutina que consiste en grep con 0 como argumento:
sort /etc/passwd |grep 0 |
Lo anterior devolverá como la salida el contenido del archivo /etc/passwd, ordenando las líneas por nombre, pero sólo mostrando aquellas líneas que incluyen el carácter 0.
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
fulano:x:500:500:Fulano de Tal:/home/fulano:/bin/bash
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin |
Ejecute sort con la opción -r, /etc/passwd como argumento y una subrutina que consiste en grep con 0 como argumento:
sort -r /etc/passwd |grep 0 |
Lo anterior devolverá como la salida el contenido del archivo /etc/passwd, ordenando las líneas por nombre, en orden inverso, pero sólo las líneas que incluyen el carácter 0.
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
fulano:x:500:500:Fulano de Tal:/home/fulano:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin |
Lo ejecutado anteriormente, observe que los datos de cada línea son delimitados por el carácter : (dos puntos).
Cut se utiliza para definir delimitadores de columnas en líneas de texto simple y mostrar ciertas columnas en particular.
Ejecute lo siguiente:
grep 0 /etc/passwd | cut -d ":" -f1 |
El contenido del archivo /etc/passwd es mostrado, pero sólo las líneas que incluyen el carácter 0 y mostrando sólo la primera columna de datos del archivo, definiendo el carácter : (dos puntos) como delimitador entre las columnas.
root sync shutdown halt uucp operator games gopher ftp avahi avahi-autoipd fulano |
Ejecute lo siguiente:
grep 0 /etc/passwd | cut -d ":" -f3 |
Se muestra el contenido del archivo /etc/passwd, pero sólo las líneas que incluyen el carácter 0 y sólo mostrando la tercera columna de datos del archivo, definiendo el carácter : (dos puntos) como delimitador entre las columnas.
0 5 6 7 10 11 12 13 14 70 170 500 |
Ejecute:
sort /etc/passwd | grep 0 | cut -d ":" -f1 |
Lo anterior muestra el contenido del archivo /etc/passwd, ordenando las líneas por nombre, pero sólo aquellas que contienen el carácter 0 y sólo mostrando la primera columna de datos, considerando que se utilizó el carácter : (dos puntos) como delimitador entre las columnas.
avahi-autoipd avahi ftp fulano games gopher halt operator root shutdown sync uucp |
Existen dos tipos de enlaces hacia archivos, los físicos (o duros) y los simbólicos (o blandos). Ambos permiten economizar espacio en el sistema de archivos cuando hay circunstancias en las cuales se necesita utilizar los mismos archivos o directorios en diversos lugares.
Los enlaces físicos sólo pueden apuntar hacia archivos dentro de una misma partición. Básicamente crean inodos que apuntan a un mismo archivo, es decir, se tiene un archivo con varios nombres. Sólo es posible ver hacia qué archivo apuntan consultando el número de inodo, ejecutando ls con la opción -i. Sólo se pueden crear enlaces físicos hacia archivos existentes. Si se borra el archivo original, éste prevalece gracias al enlace físico.
Los enlaces simbólicos pueden hacia archivos y directorios en cualquier parte del sistema de archivos, sin importar en qué partición se encuentren. Son archivos especiales con una ruta hacia un archivo o directorio. Ejecutar ls con la opción -l puede mostrar hacia dónde apunta un enlace simbólico en particular. Se pueden crear enlaces simbólicos que apunten hacia archivos o directorios inexistentes. Si se borra el archivo original, el enlace simbólico simplemente apuntará hacia un archivo o directorio inexistente.
Regrese al directorio de inicio.
cd |
Genere el directorio cd ~/pruebas-enlaces y cambia hacia éste.
mkdir ~/pruebas-enlaces ; cd ~/pruebas-enlaces |
Genere un enlace simbólico que apunte hacia el archivo/etc/group:
ln -s /etc/group . |
Visualice el resultado ejecutando ls con la opción -l:
ls -l |
La salida debe devolver algo similar a lo siguiente:
total 0
lrwxrwxrwx 1 fulano fulano 21 jun 21 18:10 group -> /etc/group |
Copie el archivo /etc/hosts dentro del directorio ~/pruebas-enlaces:
cp /etc/hosts . |
Genere un enlace físico denominado hosts2 que apunte hacia el archivo hosts, ejecutando lo siguiente:
ln hosts hosts2 |
Visualice el resultado ejecutando ls con la opción -l:
ls -l |
La salida debe devolver algo similar a lo siguiente:
total 8
lrwxrwxrwx 1 jbarrios jbarrios 21 jun 21 18:10 device.map -> /boot/grub/device.map
-rw-r--r-- 2 jbarrios jbarrios 115 jun 21 18:13 hosts
-rw-r--r-- 2 jbarrios jbarrios 115 jun 21 18:13 hosts2 |
Note que en la segunda columna, la correspondiente al número de inodos utilizados, hay un número 2 para los archivos hosts y hosts2.
Para cotejar que efectivamente los inodos correspondientes de los archivos hosts y hosts2 tienen el mismo número, ejecute ls con la opción -i:
ls -i |
La salida debe devolver algo similar a lo siguiente:
4980841 device.map 4980842 hosts 4980842 hosts2 |
Borre el archivo hosts.
rm hosts |
Verifique que el archivo hosts ha desaparecido y que el archivo hosts2 permanece intacto.
ls -l |
La salida debe devolver algo similar a lo siguiente:
total 4
lrwxrwxrwx 1 jbarrios jbarrios 21 jun 21 18:10 device.map -> /boot/grub/device.map
-rw-r--r-- 1 jbarrios jbarrios 115 jun 21 18:13 hosts2 |
También se pueden copiar junto con enlaces simbólicos ejecutando cp con la opción -s, del siguiente modo:
cp -s hosts2 hosts |
Visualice el resultado ejecutando ls con la opción -l:
ls -l |
La salida debe devolver algo similar a lo siguiente:
total 8
lrwxrwxrwx 1 jbarrios jbarrios 21 jun 21 18:10 device.map -> /boot/grub/device.map
lrwxrwxrwx 1 jbarrios jbarrios 6 jun 21 18:28 hosts -> hosts2
-rw-r--r-- 1 jbarrios jbarrios 115 jun 21 18:13 hosts2 |
Regrese al directorio de inicio.
cd |
Ejecute perl con la opción -e y el guión for($i=1;$i<10;$i++){print "$i\n";}, en el cual se genera la variable i que es igual a 1 y menor a 10 y a la cual se va sumando y devuelve una salida con el valor de i con retorno de carro.
perl -e 'for($i=1;$i<10;$i++){print "$i\n";}' |
Lo anterior devolverá una salida similar a la siguiente:
1 2 3 4 5 6 7 8 9 |
Modifique programa anterior y reemplace "$i\n" por "Número $i\n" del siguiente modo:
perl -e 'for($i=1;$i<10;$i++){print "Número $i\n";}' |
Lo anterior devolverá una salida similar a la siguiente:
Número 1 Número 2 Número 3 Número 4 Número 5 Número 6 Número 7 Número 8 Número 9 |
Para la salida en un archivo, añada a lo anterior >> ~/texto.txt, lo cual redirigirá la salida hacia el archivo ~/texto.txt:
perl -e 'for($i=1;$i<10;$i++){print "Número $i\n";}' >> ~/texto.txt |
Lo anterior sólo devolverá el símbolo de sistema. Ejecute cat para visualizar el contenido del archivo ~/texto.txt:
cat ~/texto.txt |
Lo anterior devolverá una salida similar a la siguiente y que corresponde al contenido del archivo ~/texto.txt:
Número 1 Número 2 Número 3 Número 4 Número 5 Número 6 Número 7 Número 8 Número 9 |
Para hacer lo mismo que hizo con perl, pero utilizando bash, ejecute lo siguiente:
for i in {1..9} do echo -e "Número $i" >> ~/texto-con-bash.txt done |
Lo anterior sólo regresa el símbolo de sistema. Ejecute cat para visualizar el contenido del archivo ~/texto-con-bash.txt, ejecute lo siguiente:
cat ~/texto-con-bash.txt |
Lo anterior devolverá una salida similar a la siguiente y que corresponde al contenido del archivo ~/texto-con-bash.txt:
Número 1 Número 2 Número 3 Número 4 Número 5 Número 6 Número 7 Número 8 Número 9 |
A continuación aprenderá a utilizar funciones más avanzadas. En el siguiente caso usted creará respaldos de un conjunto de archivos de imágenes, asignando a cada uno un nombre distinto al que tenían en su directorio de origen. Primero creará un nuevo directorio:
mkdir ~/respaldos |
Ejecute las siguientes seis líneas:
cd /usr/share/pixmaps/
for f in *.png
do
cp $f ~/respaldos/copia-$f
done
cd |
Lo anterior hará la copia en serie de los archivos dentro de /usr/share/pixmaps/ dentro de ~/respaldos/ anteponiendo en el nombre de las copias la palabra «copia». Para ver el contenido del directorio ~/respaldos/, ejecute lo siguiente:
ls ~/respaldos/ |
También es posible crear bucles leyendo datos a partir de archivos de texto simple. En el siguiente ejemplo se definirán dos variables ($hombre y $mujer), creando el archivo parejas.txt y usando los datos de éste y se ejecutará una rutina por cada conjunto de variables.
cd echo "Juan Ana" >> parejas.txt echo "Pedro Eva" >> parejas.txt echo "Pablo Gaby" >> parejas.txt echo "Jorge Bety" >> parejas.txt echo "Pepe Sara" >> parejas.txt while read hombre mujer do echo "$hombre es pareja de $mujer" echo "----------------------------------------" done < parejas.txt |
Regrese a su directorio de inicio.
cd |
Ejecute:
touch algo-nuevo.txt touch otro-nuevo.txt cp algo-nuevo.txt otro-nuevo.txt |
Lo anterior creo los archivos algo-nuevo.txt y otro-nuevo.txt y se creó una copia de algo-nuevo.txt, sobre escribiendo, sin diálogo para confirmar, al archivo otro-nuevo.txt.
Ejecute:
alias cp="cp -i" cp algo-nuevo.txt otro-nuevo.txt |
Lo anterior creó un alias denominado cp, el cual corresponde a eejcutar cp con la opción -i (cp en modo interactivo), lo cual hace que se muestre un diálogo de confirmación antes de sobre-escribir un archivo.
Para eliminar este alias, ejecute lo siguiente:
unalias cp |
Ejecute lo siguiente para crear alias personalizado, denominado aliaspersonal:
alias aliaspersonal="ls -l1rt /etc |less" |
Lo anterior crea un alias que consiste en ejecutar ls con la opciones -l1rt, sobre el directorio /etc y que además ejecutará como subrutina less. Ejecute aliaspersonal.
aliaspersonal |
Lo anterior debe haber mostrado el contenido del directorio /etc, utilizando less para poder desplazar la pantalla. Para salir de less, pulse la tecla q.
Los aliases creados perduran hasta que es cerrada la sesión del usuario. Para que cualquier alias sea permanente para un usuario en particular, hay que especificar éstos dentro del archivo ~/.bashrc (CentOS, Fedora y Red Hat Enterprise Linux) o bien dentro del archivo ~/.aliases (SUSE Linux Enterprise y openSUSE).
Para ver la lista de aliases predeterminados del sistema, sólo ejecute alias sin argumentos.
alias |
Puede omitir ejecutar los ejemplos de esta sección, salvo que quiera experimentar el apagado y reinicio del sistema.
Para que el sistema finalice apropiadamente todos los servicios en ejecución, guarde en el sistema de archivos las consignaciones pendientes y desmonte de forma segura todos los sistemas de archivos, puede ejecutar reboot o bien poweroff.
Puede ejecutar reboot para reiniciar el sistema de inmediato. Ejemplo:
reboot |
Reboot puede ser utilizado por usuarios regulares locales y su uso es controlado a través de PAM.
Si requiere hacer un reinicio del sistema, con un lapso y emitiendo un aviso a los usuarios que estén en otras consolas locales del sistema, puede ejecutar shutdown con la opción -r y el número de minutos que quiera dar de tiempo antes de comenzar el proceso de reinicio. En el siguiente ejemplo el proceso de reinicio del sistema se realizará dentro de 5 minutos:
shutdown -r 5 |
Si ejecuta shutdown con la opción -r, sin más argumentos, de modo predeterminado el sistema reiniciará en un minuto, enviando un mensaje de advertencia a todos los usuarios conectados al sistema.
Shutdown sólo puede ser utilizado por el usuario root.
Puede ejecute poweroff para apagar el sistema de inmediato. Ejemplo:
poweroff |
Al igual que reboot, poweroff puede ser utilizado por usuarios regulares y su uso es controlado a través de PAM.
Si requiere hacer un apagado del sistema, con un lapso de tiempo y un aviso a los usuarios que estén conectados al sistema, ejecute shutdown con la opción -h y el número de minutos que quiera dar de tiempo antes de realizar el proceso de apagado. En el siguiente ejemplo, el proceso de apagado del sistema se realizará dentro de 5 minutos:
shutdown -h 5 |
Si ejecuta shutdown con la opción -h, sin más argumentos, de modo predeterminado el sistema se apagará en un minuto, enviando un mensaje de advertencia a todos los usuarios conectados al sistema.
Puede ejecutar shutdown con la opción -c para cancelar el procesos de apagado o reinicio del sistema. Ejemplo:
shutdown -c |
Recuerde que shutdown sólo puede ser utilizado por el usuario root.
Continúe con el documento titulado «Compresión y descompresión de archivos.»
Última Edición: 14/09/2016, 09:23| Hits: 5,178