Patrones básicos

Section header image

Patrones básicos 14.2

Las expresiones regulares son patrones que sólo ciertos comandos pueden interpretar. Las expresiones regulares se pueden expandir para que coincidan con ciertas secuencias de caracteres en el texto. Los ejemplos que se muestran en esta página harán uso de expresiones regulares para demostrar su potencia cuando se utilizan con el comando grep. Además, estos ejemplos proporcionan una demostración muy visual de cómo funcionan las expresiones regulares, el texto que resulta de estas expresiones se mostrará en color rojo en el resultado (output).

Siga leyendo

Utilice el siguiente comando cd para cambiar al directorio Documents.

sysadmin@localhost:~$ cd ~/Documents

La más simple de todas las expresiones regulares solo usa caracteres de significado literal, como el ejemplo de la página anterior:

sysadmin@localhost:~/Documents$ grep sysadmin passwd                               
sysadmin:x:1001:1001:System Administrator,,,,:/home/sysadmin:/bin/bash

Caracteres de anclaje

Los caracteres de anclaje son una de las formas con que se pueden utilizar expresiones regulares para limitar los resultados de una búsqueda. Por ejemplo, el patrón root aparece muchas veces en el archivo /etc/passwd:

sysadmin@localhost:~/Documents$ grep 'root' passwd
root:x:0:0:root:/root:/bin/bash                                                 
operator:x:1000:37::/root:

Para evitar que el shell los malinterprete como caracteres especiales del shell, estos patrones deben escribirse protegidos por comillas sólidas, lo que simplemente significa colocarlos entre comillas.

El primer carácter de anclaje ^ se utiliza para indicar que el patrón debe aparecer al principio de la línea. Por ejemplo, para encontrar todas las líneas en /etc/passwd que comienzan con root use el patrón ^root. Tenga en cuenta que ^ debe ser el primer carácter del patrón para ser efectivo.

sysadmin@localhost:~/Documents$ grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash

Para el siguiente ejemplo, examine primero el archivo alpha-first.txt. El comando cat se puede utilizar para mostrar el contenido del archivo:

sysadmin@localhost:~/Documents$ cat alpha-first.txt                             
A is for Animal                                                                 
B is for Bear                                                                   
C is for Cat                                                                    
D is for Dog                                                                    
E is for Elephant                                                               
F is for Flower

El segundo carácter de anclaje $ se puede utilizar para indicar que el patrón debe aparecer al final de la línea, reduciendo eficazmente los resultados de la búsqueda. Para encontrar las líneas que terminan con una r en el archivo alpha-first.txt, utilice el patrón r$:

sysadmin@localhost:~/Documents$ grep 'r$' alpha-first.txt
B is for Bear
F is for Flower

Una vez más, la posición de este carácter es importante; el $ debe ser el último carácter en el patrón para ser eficaz como anclaje.

Encontrar caracteres coincidentes usando .

Los siguientes ejemplos usan el archivo red.txt:

sysadmin@localhost:~/Documents$ cat red.txt
Red
Reef
Rot
Reeed
Rd
Rod
Roof
Reed
Root
reel
read

Una de las expresiones más útiles es el carácter . (punto). Representa cualquier carácter excepto el carácter de nueva línea. El patrón r..f encontrará cualquier línea que contenga la letra r seguida de exactamente dos caracteres (que pueden ser cualquier carácter excepto el de nueva línea) y luego la letra f:

sysadmin@localhost:~/Documents$ grep 'r..f' red.txt
reef
roof

El mismo concepto se puede repetir usando otras combinaciones. El comando en el ejemplo siguiente encontrará palabras de cuatro letras que comienzan con r y acaban con d:

sysadmin@localhost:~/Documents$ grep 'r..d' red.txt
reed
read

Este carácter se puede utilizar tantas veces como se desee. Para encontrar todas las palabras de al menos cuatro caracteres se puede utilizar el siguiente patrón:

sysadmin@localhost:~/Documents$ grep '....' red.txt                             
reef
reeed
roof                                                                            
reed
root
reel
read

La línea no tiene que coincidir exactamente, simplemente debe contener el patrón, como se ve a continuación cuando se busca r..t en el archivo /etc/passwd:

sysadmin@localhost:~/Documents$ grep 'r..t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:1000:37::/root:  

Encontrar un carácter único usando []

Los corchetes [ ] se utilizan para indicar caracteres únicos o rangos de caracteres posibles en una lista.

Por ejemplo, dado el archivo profile.txt:

sysadmin@localhost:~/Documents$ cat profile.txt
Hello my name is Joe.
I am 37 years old.
3121991
My favorite food is avocados.
I have 2 dogs.
123456789101112

Para encontrar todas las líneas en el archivo profile.txt que contienen un número, utilice el patrón [0123456789] o [0-9]:

sysadmin@localhost:~/Documents$ grep '[0-9]' profile.txt
I am 37 years old.
3121991
I have 2 dogs.
123456789101112

Por otro lado, para encontrar todas las líneas que contienen caracteres no numéricos, inserte un ^ como primer carácter dentro de los corchetes. Este carácter niega los caracteres que lo siguen:

sysadmin@localhost:~/Documents$ grep '[^0-9]' profile.txt
Hello my name is Joe.
I am 37 years old.
My favorite food is avocados.
I have 2 dogs.

Nota

No confunda el resultado de [^ 0-9] con las líneas que no contienen números. En realidad, esta expresión se refiere a líneas que contienen no-números (caracteres no numéricos). Examine el archivo original para ver la diferencia. Las líneas tercera y sexta sólo contienen números, no contienen caracteres no numéricos, y por lo tanto no han sido incluidas en este último resultado.

Cuando otros caracteres de expresión regular se colocan dentro de corchetes, se tratan como caracteres literales. Por ejemplo, el carácter . normalmente indica cualquier carácter. Pero si se coloca dentro de corchetes simplemente se referirá al carácter . (punto). En el siguiente ejemplo, sólo las líneas que contienen el carácter . se mostrarán en el resultado.

sysadmin@localhost:~/Documents$ grep '[.]' profile.txt
Hello my name is Joe.
I am 37 years old.
My favorite food is avocados.
I have 2 dogs.

Indicar un carácter o patrón repetido utilizando el *

El carácter de expresión regular * se utiliza para indicar la ausencia o la presencia una o más veces del carácter o patrón que lo precede. Por ejemplo, e* indicaría la ausencia (cero) o la presencia, una o más veces, de la letra e:

sysadmin@localhost:~/Documents$ cat red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read
sysadmin@localhost:~/Documents$ grep 're*d' red.txt
red
reeed
rd
reed

También es posible indicar la ausencia o presencia una o más veces de una lista de caracteres utilizando los corchetes. El patrón [oe]* utilizado en el siguiente ejemplo se refiere a líneas con ausencia o presencia una o más veces del carácter o o del carácter e:

sysadmin@localhost:~/Documents$ grep 'r[oe]*d' red.txt
red
reeed
rd
rod
reed

Cuando se usa con un solo carácter, * no resulta muy útil. Note que cualquiera de los siguientes patrones coincide con cada una de las líneas (string) del archivo: .* e* b* z*.

sysadmin@localhost:~/Documents$ grep 'z*' red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read
sysadmin@localhost:~/Documents$ grep 'e*' red.txt
red
reef
rot
reeed
rd
rod
roof
reed
root
reel
read

Esto se debe a que * puede indicar cero ocurrencias de un patrón. Para que el * sea útil, es necesario crear un patrón que incluya algo más que el carácter que precede al *. Por ejemplo, los resultados anteriores se pueden refinar agregando otra e para hacer que el patrón ee* coincida efectivamente con cada línea que contenga al menos una e.

sysadmin@localhost:~/Documents$ grep 'ee*' red.txt
red
reef
reeed
reed
reel
read

Entrada estándar

Si no se proporciona un nombre de archivo, el comando grep actuará sobre la entrada estándar, que normalmente proviene del teclado y de la entrada proporcionada por el usuario que está ejecutando el comando. Esto permite que el uso de grep se convierta en una experiencia interactiva donde el usuario escribe y grep filtra la entrada a medida que avanza. Pruébelo. Simplemente presione Ctrl+D cuando esté listo para volver al intérprete de comandos (prompt).

Siga leyendo

Utilice el siguiente comando cd para volver al directorio principal:

sysadmin@localhost:~/Documents$ cd ~
Linux is Open Source which makes it extremely versatile! Internet of Things, Big Data, Cloud Computing, Cyber Security, Networking and more.

«Linux es open source. ¡Esto lo hace extremadamente versátil!»

Administración de paquetes

Section header image

Administración de paquetes 18

La administración de paquetes es un sistema mediante el cual un software puede ser instalado, actualizado, consultado o eliminado de un sistema de archivos. En Linux, hay muchos sistemas de gestión de paquetes de software diferentes, pero los dos más populares son Debian y Red Hat. Las máquinas virtuales de este curso utilizan Ubuntu, un derivado de Debian.

En el nivel más bajo del sistema de administración de paquetes Debian se encuentra el comando dpkg. Este comando puede ser complicado para los usuarios más nuevos a Linux. La herramienta Advanced Package Tool, apt-get, un programa front-end para la herramienta dpkg, facilita la gestión de paquetes.

Nota:

Un programa front-end es un programa que los usuarios pueden ver y con el que pueden interactuar.

Siga leyendo

Muchos de los comandos de administración de paquetes requieren acceso administrativo, por lo que se precederán del comando sudo. Use netlab123 como contraseña cuando se le solicite.

Instalación de paquetes

Los paquetes de archivos normalmente se instalan por descarga directa desde repositorios ubicados en servidores de Internet. Los repositorios Debian contienen más de 65.000 paquetes de software diferentes. Antes de instalar un paquete, es recomendable actualizar la lista de paquetes disponibles usando el comando apt-get update.

Los siguientes comandos pueden tardar unos minutos en ejecutarse.
sudo apt-get update
sysadmin@localhost:~$ sudo apt-get update                                       
[sudo] password for sysadmin:                                                   
Ign file: amd64/ InRelease                                                      
Ign file: amd64/ Release.gpg                                                    
Ign file: amd64/ Release                                                        
Reading package lists... Done

Para buscar palabras clave (keyword) dentro de estos paquetes, puede utilizar el comando apt-cache search.

apt-cache search [keyword]

La palabra clave que se utiliza debe coincidir con parte del nombre o descripción del paquete que se intenta localizar. Se pueden usar varias palabras clave para especificar aún más la búsqueda; por ejemplo, el término de búsqueda web server proporcionará mejores resultados que web o server.

Para buscar paquetes asociados con la palabra clave cow:

sysadmin@localhost:~$ apt-cache search cow                                      
cowsay - configurable talking cow

Una vez encontrado el paquete (package) que desea instalar, puede utilizar el comando apt-get install para instalarlo:

sudo apt-get install [package]
sysadmin@localhost:~$ sudo apt-get install cowsay                               
[sudo] password for sysadmin:                                                   
Reading package lists... Done                                                   
Building dependency tree                                                        
Reading state information... Done                                               
Suggested packages:                                                             
  filters                                                                       
The following NEW packages will be installed:                                   
  cowsay                                                                        
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.                  
Need to get 0 B/18.5 kB of archives.                                            
After this operation, 90.1 kB of additional disk space will be used.            
                                                                                
Selecting previously unselected package cowsay.                                 
(Reading database ... 24313 files and directories currently installed.)         
Preparing to unpack .../cowsay_3.03+dfsg1-6_all.deb ...                         
Unpacking cowsay (3.03+dfsg1-6) ...                                             
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...                           
Setting up cowsay (3.03+dfsg1-6) ...

A tener en cuenta

¡El comando cowsay es una vaca parlante configurable! Use una palabra o frase como argumento:

sysadmin@localhost:~$ cowsay 'NDG Linux Unhatched'                              
 _____________________                                                          
< NDG Linux Unhatched >                                                         
 ---------------------                                                          
        \   ^__^                                                                
         \  (oo)\_______                                                        
            (__)\       )\/\                                                    
                ||----w |                                                       
                ||     ||

Recomendamos incluir el argumento entre comillas simples para evitar que el shell interprete caracteres especiales.

Actualización de paquetes

El comando apt-get install también puede actualizar un paquete, si ese paquete ya está instalado y existe una versión más reciente disponible. Si el paquete aún no está en el sistema, se instalará; si está en el sistema, se actualizará.

La actualización de todos los paquetes del sistema debe realizarse en dos pasos. Primero, actualice la caché de todos los paquetes disponibles utilizando apt-get update. En segundo lugar, ejecute el comando apt-get upgrade para actualizar todos los paquetes y sus dependencias.

apt-get update
apt-get upgrade
sysadmin@localhost:~$ sudo apt-get update                                       
[sudo] password for sysadmin:                                                   
Ign file: amd64/ InRelease                                                      
Ign file: amd64/ Release.gpg                                                    
Ign file: amd64/ Release                                                        
Reading package lists... Done                                                   
sysadmin@localhost:~$ sudo apt-get upgrade                                      
Reading package lists... Done                                                   
Building dependency tree                                                        
Reading state information... Done                                               
Calculating upgrade... Done                                                     
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Eliminación de paquetes

El comando apt-get puede eliminar o purgar un paquete. La diferencia entre los dos es que purgar suprime todos los archivos del paquete, mientras que eliminar suprime todos los archivos del paquete, excepto los archivos de configuración.

Un administrador puede ejecutar el comando apt-get remove para eliminar un paquete o el comando apt-get purge para purgar un paquete completamente del sistema.

apt-get remove [package]
apt-get purge [package]

Por ejemplo, para purgar cowsay por completo, ejecute el siguiente comando. Escriba Y cuando se le solicite:

sysadmin@localhost:~$ sudo apt-get purge cowsay                                 
Reading package lists... Done                                                   
Building dependency tree                                                        
Reading state information... Done                                               
The following packages will be REMOVED:                                         
  cowsay*                                                                       
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.                  
After this operation, 90.1 kB disk space will be freed.                         
Do you want to continue? [Y/n] y                                                
(Reading database ... 24377 files and directories currently installed.)         
Removing cowsay (3.03+dfsg1-6) ...                                              
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
 
 

Actualización de contraseñas de usuario

Section header image

Actualización de contraseñas de usuario 19

El comando passwd se utiliza para actualizar la contraseña de un usuario. Los usuarios solo pueden cambiar sus propias contraseñas, mientras que el usuario root puede actualizar la contraseña para cualquier usuario.

passwd [OPCIONES] [USUARIO]

Por ejemplo, ya que hemos iniciado sesión como usuario sysadmin, podemos cambiar la contraseña de esa cuenta. Ejecute el comando passwd. Se le pedirá que introduzca la contraseña actual una vez y la contraseña nueva dos veces. Por razones de seguridad, no se muestra ningún resultado mientras se está escribiendo la contraseña. La salida se muestra de la siguiente manera:

sysadmin@localhost:~$ passwd                                                    
Changing password for sysadmin.                                                 
(current) UNIX password: netlab123                                                       
Enter new UNIX password:                                                       
Retype new UNIX password:                                                       
passwd: password updated successfully

Si el usuario desea ver información sobre su contraseña, puede utilizar la opción -S:

sysadmin@localhost:~$ passwd -S sysadmin                                        
sysadmin P 12/20/2017 0 99999 7 -1

Los campos de salida se explican a continuación:

Campo Ejemplo Significado
Nombre del usuario sysadmin El nombre del usuario.
Estado de la contraseña P

P indica que es una contraseña utilizable.

L indica que la contraseña está bloqueada.

NP indica que no hay contraseña.

Fecha de actualización 03/01/2015 La fecha en la que la contraseña fue actualizada por última vez.
Mínimo 0 El número mínimo de días que deben pasar antes de que el usuario pueda cambiar la contraseña actual.
Máximo 99999 El máximo número de días que restan hasta que expire la contraseña.
Aviso 7 El número de días precedentes a la expiración de la contraseña para que el usuario reciba el aviso.
Inactividad -1 El número de días después de la expiración de la contraseña que la cuenta del usuario se mantendrá activa.

Siga leyendo

Cambie a la cuenta root mediante el siguiente comando:

sysadmin@localhost:~$ su root                                                   
Password:                                                                       
root@localhost:~#

Use netlab123 como contraseña.

El usuario root puede cambiar la contraseña de cualquier usuario. Si el usuario root desea cambiar la contraseña de sysadmin, ejecutará el siguiente comando:

root@localhost:~# passwd sysadmin                                               
Enter new UNIX password:                                                        
Retype new UNIX password:                                                       
passwd: password updated successfully

Siga leyendo

Salga de la cuenta root mediante el comando exit:

root@localhost:~# exit                                                        
exit
 
 

Copiar archivos

Section header image

Copiar archivos 11.1

El comando dd se utiliza para copiar archivos o particiones enteras al nivel de bits.

dd [OPCIONES] OPERANDO

Este comando tiene varias características útiles, entre las que se incluyen:

  • Se puede usar para clonar o eliminar (wipe) discos o particiones enteras.
  • Se puede usar para copiar datos no procesados (raw) a dispositivos extraíbles como dispositivos USB o CD ROMS.
  • Se puede usar para realizar una copia de reserva (backup) y restituir el MBR (Master Boot Record).
  • Se puede usar para crear un archivo de un tamaño específico lleno de ceros binarios, el cual puede utilizarse como archivo de intercambio (swap file) (memoria virtual).

Examinemos el siguiente ejemplo. El comando dd creará un archivo denominado /tmp/swapex con 50 bloques de ceros de un megabyte de tamaño:

Siga leyendo

Utilice el siguiente comando cd para volver al directorio principal:

sysadmin@localhost:~/Documents$ cd ~
sysadmin@localhost:~$ dd if=/dev/zero of=/tmp/swapex bs=1M count=50 
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.825745 s, 635 MB/s

El comando dd utiliza argumentos especiales para especificar cómo funcionará. A continuación se muestran algunos de los argumentos más utilizados:

Argumento Descripción
if

Archivo de entrada (Input File): El archivo de entrada que se va a leer.

dd if=/dev/zero of=/tmp/swapex bs=1M count=50

El ejemplo lee el archivo /dev/zero, un archivo especial que contiene un número ilimitado de ceros.

of

Archivo de salida (Output File): El archivo de salida que se va a escribir.

dd if=/dev/zero of=/tmp/swapex bs=1M count=50
bs

Tamaño de bloque (Block Size): El tamaño de bloque que se va a utilizar. De forma predeterminada, el valor se presenta en bytes. Utilice los sufijos siguientes para especificar otras unidades: KMG y T para kilobytes, megabytes, gigabytes y terabytes respectivamente.

dd if=/dev/zero of=/tmp/swapex bs=1M count=50

En el ejemplo se utiliza un tamaño de bloque de un megabyte.

count

Recuento: El número de bloques que se van a leer desde el archivo de entrada.

dd if=/dev/zero of=/tmp/swapex bs=1M count=50

En este ejemplo se leen 50 bloques.

A tener en cuenta

No es necesario especificar el tamaño de bloque ni el recuento al copiar dispositivos enteros. Por ejemplo, para clonar de un disco duro (/dev/sda) a otro (/dev/sdb) ejecute el siguiente comando:

dd if=/dev/sda of=/dev/sdb
 
 

Mover archivos

Section header image

Mover archivos 12

El comando mv se utiliza para mover un archivo de una ubicación en el sistema de archivos a otra.

mv ORIGEN DESTINO

El comando mv requiere dos argumentos como mínimo. El primer argumento es la fuente u origen, la ruta al archivo que va a ser movido. El segundo argumento es el destino, la ruta al lugar donde se moverá el archivo. Generalmente, los archivos que se van a mover se denominan origen, y el lugar donde se van a colocar se denomina destino.

Siga leyendo

Utilice el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

Para mover el archivo people.csv al directorio Work, utilice el nombre del archivo como origen y el nombre del directorio como destino:

sysadmin@localhost:~/Documents$ mv people.csv Work

Si un archivo se mueve de un directorio a otro sin especificar un nuevo nombre para el archivo, éste conservará su nombre original. El movimiento anterior se puede confirmar mediante el comando ls en el directorio Work:

sysadmin@localhost:~/Documents$ ls Work                                         
people.csv

El comando mv puede utilizarse para mover varios archivos, siempre y cuando el argumento final proporcionado al comando sea el destino. Por ejemplo, para mover tres archivos al directorio School:

sysadmin@localhost:~/Documents$ mv numbers.txt letters.txt alpha.txt School        
sysadmin@localhost:~/Documents$ ls School                                       
Art  Engineering  Math  alpha.txt  letters.txt  numbers.txt 

Mover un archivo dentro del mismo directorio es una forma eficaz de cambiarlo de nombre. Por ejemplo, en el ejemplo siguiente, el archivo animals.txt recibe un nuevo nombre zoo.txt:

mv animals.txt zoo.txt
sysadmin@localhost:~/Documents$ ls                                              
School           alpha-second.txt  hello.sh      newhome.txt  red.txt           
Work             alpha-third.txt   hidden.txt    os.csv                         
adjectives.txt   animals.txt       linux.txt     passwd                         
alpha-first.txt  food.txt          longfile.txt  profile.txt 
sysadmin@localhost:~/Documents$ mv animals.txt zoo.txt                          
sysadmin@localhost:~/Documents$ ls                                              
School           alpha-second.txt  hidden.txt    os.csv       zoo.txt           
Work             alpha-third.txt   linux.txt     passwd                         
adjectives.txt   food.txt          longfile.txt  profile.txt                    
alpha-first.txt  hello.sh          newhome.txt   red.txt   

A tener en cuenta

Los permisos pueden afectar comandos de administración de archivos, incluyendo el comando mv. Mover un archivo requiere tener permisos de escritura y ejecución tanto en los directorios de origen como de destino.

Penguins in Space! Nasa Uses Linux. International Space Station runs on Linux. Curiosity the Mars Rover. We migrated key functions from Windows to Linux because we needed an operating system that was stable and reliable.

«¡Pingüinos en el espacio! NASA utiliza Linux. La Estación Espacial Internacional funciona con Linux. “Migramos funciones esenciales de Windows a Linux porque necesitábamos un sistema operativo más estable y fiable.” Keith Chuvala, manager de Operaciones Informáticas Espaciales de NASA. Curiosity, el Rover en Marte.»

 
 

Eliminar archivos

Section header image

Eliminar archivos 13

El comando rm (remove) se utiliza para eliminar archivos y directorios. Es importante tener en cuenta que los archivos y directorios eliminados no aparecen en una “papelera” como ocurre con los sistemas operativos orientados a escritorio. Cuando un archivo se elimina con el comando rm, generalmente siempre desaparece de manera permanente.

rm [OPCIONES] ARCHIVO

Siga leyendo

Utilice el siguiente comando para cambiar al directorio Documents:

sysadmin@localhost:~$ cd ~/Documents

Sin ninguna opción, el comando rm normalmente se utiliza para eliminar archivos ordinarios:

sysadmin@localhost:~/Documents$ rm linux.txt
sysadmin@localhost:~/Documents$ ls linux.txt
ls: cannot access linux.txt: No such file or directory

El comando rm ignorará los directorios que se le pida eliminar. Para eliminar un directorio, utilice una opción recursiva, por ejemplo, las opciones -r o -R. Tenga cuidado ya que estas opciones son “recursivas”, y eliminarán todos los archivos y todos los subdirectorio:

sysadmin@localhost:~/Documents$ rm Work
rm: cannot remove 'Work': Is a directory
sysadmin@localhost:~/Documents$ rm -r Work
sysadmin@localhost:~/Documents$ ls Work                                         
ls: cannot access Work: No such file or directory

Advertencia

El comando rm elimina los archivos de forma permanente. Para repetir los ejemplos anteriores, restablezca el terminal usando el botón de reinicio.

A tener el cuenta

Los permisos pueden afectar a los comandos de administración de archivos, como el comando rm.

Para eliminar un archivo dentro de un directorio, el usuario debe tener permiso de escritura y ejecución en ese directorio. Normalmente, los usuarios ordinarios solo tienen este tipo de permiso en su directorio principal y subdirectorios correspondientes.

Listados de archivos

Section header image

Listados de archivos 5

El comando ls se utiliza para enumerar el contenido de un directorio. Ha visto cómo se utiliza en varios ejemplos anteriores. Esta página le ayudará a sentirse más cómodo con su uso.

ls [OPCIONES] [ARCHIVO]

De forma predeterminada, el comando ls usado sin opciones o argumentos mostrará los archivos contenidos en el directorio actual:

sysadmin@localhost:~$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates Videos

Para obtener información detallada sobre los archivos, como el tipo de archivo, los permisos, las propiedades o el sello horario, ejecute una lista larga utilizando la opción -l con el comando ls. En el ejemplo siguiente, se utiliza una lista del directorio /var/log, ya que proporciona una variedad de resultados:

sysadmin@localhost:~$ ls -l /var/log/
total 844                                                                       
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
-rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log                           
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp                               
-rw-r----- 1 syslog adm     547 Oct  2 22:17 cron.log                           
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log                           
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog                             
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart                            
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp 

Cada línea corresponde a un archivo contenido en el directorio. La información sobre cada archivo se puede dividir en campos separados por espacios. Los campos son los siguientes:

  1. Tipo de archivo

    -rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log       
                
    drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2  
    

    El primer campo contiene en realidad diez caracteres. El primer carácter indica el tipo de archivo y los nueve siguientes especifican permisos. Los tipos de archivo son:

    Símbolo Tipo de archivo Descripción
    d directorio Un archivo usado para contener otros archivos.
    - archivo ordinario Incluye archivos leíbles, imágenes, archivos binarios, y archivos comprimidos.
    l enlaces simbólicos Apunta a otro archivo.
    s socket Permite la comunicación entre procesos.
    p tubería (pipe) Permite la comunicación entre procesos.
    b archivo bloque Usado para comunicaciones con el equipo (hardware).
    c archivo carácter Usado para comunicaciones con el equipo (hardware).

    El primer archivo alternatives.log es un archivo normal -, mientras que el segundo archivo apache2 es un directorio d.

  2. Permisos

    drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart

    Los permisos indican cómo determinados usuarios pueden acceder a un archivo. Siga leyendo para obtener más información sobre los permisos.

  3. Número de enlaces directos

    -rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log

    Este número indica cuántos enlaces directos apuntan a este archivo. Los enlaces directos están fuera del alcance de este módulo, pero están cubiertos en el curso NDG Linux Essentials.

  4. Propietario del archivo

    -rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log

    El usuario syslog posee este archivo. Cada vez que se crea un archivo, la propiedad se asigna automáticamente al usuario que lo creó.

  5. Grupo propietario del archivo

    -rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog

    Indica qué grupo posee este archivo.

  6. Tamaño del archivo

    -rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog

    Los directorios y archivos más grandes pueden mostrarse en kilobytes ya que mostrar su tamaño en bytes resultaría en un número demasiado grande. Por lo tanto, en el caso de un directorio, este número podría ser un múltiplo del tamaño de bloque utilizado por el sistema de archivos. El tamaño de bloque es el tamaño de una serie de datos almacenados en el sistema de archivos.

  7. Sello horario o de tiempo

    drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck

    Indica la fecha y hora en que el contenido del archivo se modificó por última vez.

  8. Nombre del archivo

    -rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log

    El campo final contiene el nombre del archivo o directorio.

  9. A tener en cuenta

    En el caso de enlaces simbólicos, un archivo que apunta a otro archivo, el nombre del enlace se mostrará junto a una flecha y el nombre de la ruta del archivo original.

    lrwxrwxrwx. 1 root root 22 Nov 6 2012 /etc/grub.conf -> ../boot/grub/grub.conf

    Los enlaces simbólicos están fuera del alcance de este módulo, pero están cubiertos en el curso NDG Linux Essentials.

Ordenar archivos

Por defecto, el resultado del comando ls está ordenado alfabéticamente según el nombre del archivo. Pero también se puede ordenar usando otros método.

Siga leyendo

Las opciones en los siguientes ejemplos se combinarán con la opción -l para mostrar los detalles relevantes de cada archivo. Preste atención a los campos correspondientes a la opción de búsqueda.

La opción -t ordenará los archivos por su sello de tiempo (timestamp):

sysadmin@localhost:~$ ls -lt /var/log                                           
total 844                                                                       
-rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog                             
-rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log                           
-rw-r----- 1 syslog adm     547 Oct  2 22:17 cron.log                           
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log                           
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp                               
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart              

La opción -S (size) ordenará los archivos por tamaño de archivo:

sysadmin@localhost:~$ ls -l -S /var/log                                         
total 844                                                                       
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log                           
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
-rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog                             
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart                            
-rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log                           
-rw-r----- 1 syslog adm     547 Oct  2 22:17 cron.log                           
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp

La opción -r (reverse) invertirá el orden de cualquier tipo de ordenación. Observe la diferencia cuando se agrega al ejemplo anterior:

sysadmin@localhost:~$ ls -lSr /var/log
total 844                                                                       
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp                               
-rw-r----- 1 syslog adm     654 Oct  2 23:17 cron.log                           
-rw-r----- 1 syslog adm    1669 Oct  2 23:17 auth.log                           
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart                            
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
-rw-r----- 1 syslog adm   19680 Oct  2 23:17 syslog                             
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log        

Los números en el campo del tamaño de archivo cambian de descendente a ascendente.

Utilizando solo la opción -r con la lista de los archivos en orden alfabético inverso:

sysadmin@localhost:~$ ls -r /var/log                                            
wtmp     lastlog   faillog   cron.log       auth.log  alternatives.log
upstart  kern.log  dpkg.log  btmp           apt
syslog   fsck      dmesg     bootstrap.log  apache2
Did you know you can find Linux in: Facebook, Amazon, Google, McDonald's, NASA, BMW, Tesla, Wikipedia, United States Postal Service, Tesla.

Actualización de contraseñas de usuario 18/05/2021

Section header image

Actualización de contraseñas de usuario

El comando passwd se utiliza para actualizar la contraseña de un usuario. Los usuarios solo pueden cambiar sus propias contraseñas, mientras que el usuario root puede actualizar la contraseña para cualquier usuario.

passwd [OPCIONES] [USUARIO]

Por ejemplo, ya que hemos iniciado sesión como usuario sysadmin, podemos cambiar la contraseña de esa cuenta. Ejecute el comando passwd. Se le pedirá que introduzca la contraseña actual una vez y la contraseña nueva dos veces. Por razones de seguridad, no se muestra ningún resultado mientras se está escribiendo la contraseña. La salida se muestra de la siguiente manera:

sysadmin@localhost:~$ passwd                                                    
Changing password for sysadmin.                                                 
(current) UNIX password: netlab123                                                       
Enter new UNIX password:                                                       
Retype new UNIX password:                                                       
passwd: password updated successfully

Si el usuario desea ver información sobre su contraseña, puede utilizar la opción -S:

sysadmin@localhost:~$ passwd -S sysadmin                                        
sysadmin P 12/20/2017 0 99999 7 -1

Los campos de salida se explican a continuación:

Campo Ejemplo Significado
Nombre del usuario sysadmin El nombre del usuario.
Estado de la contraseña P

P indica que es una contraseña utilizable.

L indica que la contraseña está bloqueada.

NP indica que no hay contraseña.

Fecha de actualización 03/01/2015 La fecha en la que la contraseña fue actualizada por última vez.
Mínimo 0 El número mínimo de días que deben pasar antes de que el usuario pueda cambiar la contraseña actual.
Máximo 99999 El máximo número de días que restan hasta que expire la contraseña.
Aviso 7 El número de días precedentes a la expiración de la contraseña para que el usuario reciba el aviso.
Inactividad -1 El número de días después de la expiración de la contraseña que la cuenta del usuario se mantendrá activa.

Siga leyendo

Cambie a la cuenta root mediante el siguiente comando:

sysadmin@localhost:~$ su root                                                   
Password:                                                                       
root@localhost:~#

Use netlab123 como contraseña.

El usuario root puede cambiar la contraseña de cualquier usuario. Si el usuario root desea cambiar la contraseña de sysadmin, ejecutará el siguiente comando:

root@localhost:~# passwd sysadmin                                               
Enter new UNIX password:                                                        
Retype new UNIX password:                                                       
passwd: password updated successfully

Siga leyendo

Salga de la cuenta root mediante el comando exit:

root@localhost:~# exit                                                        
exit

Configuración de redes 11/05/2021

Section header image

Configuración de redes

El comando ifconfig significa “configuración de interfaz” (interface configuration) y se utiliza para mostrar información sobre la configuración de red.

ifconfig [OPCIONES] 

Nota

El comando iwconfig es similar al comando ifconfig, pero se refiere a interfaces de redes inalámbricas (wireless).

No todas las configuraciones de red son importantes para este módulo, pero en el siguiente ejemplo es importante tener en cuenta que la dirección IPv4 del dispositivo de red principal eth0 es 192.168.1.2 y que el dispositivo está activo actualmente (UP):

root@localhost:~# ifconfig                                     
eth0      Link encap:Ethernet  HWaddr 02:42:c0:a8:01:02                         
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0        
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1                    
          RX packets:59 errors:0 dropped:0 overruns:0 frame:0                   
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0                 
          collisions:0 txqueuelen:1000                                          
          RX bytes:4346 (4.3 KB)  TX bytes:5602 (5.6 KB)                        
                                                                                
lo        Link encap:Local Loopback                                             
          inet addr:127.0.0.1  Mask:255.0.0.0                                   
          UP LOOPBACK RUNNING  MTU:65536  Metric:1                              
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0                    
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0                  
          collisions:0 txqueuelen:1000                                          
          RX bytes:100 (100.0 B)  TX bytes:100 (100.0 B)           

Piense sobre lo siguiente

El dispositivo lo se conoce como dispositivo de loopback. Es un dispositivo de red especial utilizado por el sistema cuando envía datos basados en red a sí mismo.

El comando ifconfig también se puede utilizar para modificar temporalmente la configuración de red. Normalmente, estos cambios deben ser permanentes, por lo que raramente se usa el comando ifconfig para realizar dichos cambios.

El comando ping se utiliza para verificar la conectividad entre dos equipos. Para hacer esto, envía paquetes a otra máquina a través de la red. Que el remitente reciba una respuesta indica que es posible conectarse a esa máquina.

La información se envía mediante “paquetes”; que es la unidad encapsulada de datos enviada a través de una red. Para que los paquetes encuentren la otra computadora, necesitan una dirección. El comando ping utiliza direcciones IP para identificar un equipo en la red al que desea conectarse.

De forma predeterminada, el comando ping continuará enviando paquetes hasta que se introduzca el comando break (CTL +C) en la consola. Para limitar el número de pings que se envían, utilice la opción -c seguida del número de pings que desea enviar. El siguiente ejemplo muestra un ping limitado a 4 iteraciones usando -c 4.

Si el comando ping funciona, obtendrá un resultado como el siguiente:

root@localhost:~# ping -c 4 192.168.1.2                                       
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.                          
64 bytes from 192.168.1.2: icmp_req=1 ttl=64 time=0.051 ms                    
64 bytes from 192.168.1.2: icmp_req=2 ttl=64 time=0.064 ms                    
64 bytes from 192.168.1.2: icmp_req=3 ttl=64 time=0.050 ms                    
64 bytes from 192.168.1.2: icmp_req=4 ttl=64 time=0.043 ms                    
                                                                              
--- 192.168.1.2 ping statistics ---                                           
4 packets transmitted, 4 received, 0% packet loss, time 2999ms                
rtt min/avg/max/mdev = 0.043/0.052/0.064/0.007 ms                             
root@localhost:~#

Si el comando ping falla, recibirá un mensaje indicando que no se encontró el ordenador de destino o máquina remota (Destination Host Unreachable):

root@localhost:~# ping -c 4 192.168.1.3                                       
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.                            
From 192.168.1.2 icmp_seq=1 Destination Host Unreachable                        
From 192.168.1.2 icmp_seq=2 Destination Host Unreachable                        
From 192.168.1.2 icmp_seq=3 Destination Host Unreachable                        
From 192.168.1.2 icmp_seq=4 Destination Host Unreachable                        
                                                                                
--- 192.168.1.3 ping statistics ---                                             
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3065ms     
pipe 4  
root@localhost:~#

El comando ping puede fallar aunque la máquina remota esté conectada a la red. Esto se debe a que, como medida de seguridad, algunos administradores configuran sus equipos, o incluso redes enteras, para que no respondan a solicitudes ping. El comando ping también funciona con un nombre de host, o con un nombre de dominio como yahoo.com. Usar ésto primero puede ahorrar tiempo, ya que si ese comando ping tiene éxito, indica que hay una resolución de nombre adecuada Y que la dirección IP también funciona correctamente.

Siga leyendo

Salga de la cuenta root mediante el comando exit:

root@localhost:~# exit                                                        
logout