0% encontró este documento útil (0 votos)
95 vistas75 páginas

Linux Unidad2

Este documento explica conceptos básicos de la línea de comandos en Linux. Describe los diferentes tipos de shells como Bash y csh, y explica la estructura básica de un comando, incluyendo el comando, opciones, parámetros y argumentos. También cubre temas como tipos de comandos, el uso de comillas para manejar nombres de archivos con espacios, y ejercicios para dividir comandos en sus componentes.

Cargado por

Yurii Velazquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
95 vistas75 páginas

Linux Unidad2

Este documento explica conceptos básicos de la línea de comandos en Linux. Describe los diferentes tipos de shells como Bash y csh, y explica la estructura básica de un comando, incluyendo el comando, opciones, parámetros y argumentos. También cubre temas como tipos de comandos, el uso de comillas para manejar nombres de archivos con espacios, y ejercicios para dividir comandos en sus componentes.

Cargado por

Yurii Velazquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 75

[TÍTULO DEL DOCUMENTO]

[Subtítulo del documento]


2.1 Conceptos básicos de la línea de
comandos 1
Introducción
Las distribuciones modernas de Linux tienen una amplia gama de interfaces gráficas
de usuario, un administrador siempre necesitará saber cómo trabajar con la línea de
comandos o shell (como se le llama). Shell es un programa que permite la
comunicación basada en texto entre el sistema operativo y el usuario. Por lo
general, es un programa en modo de texto que lee la entrada del usuario y la
interpreta como comandos para el sistema.

Tenemos diferentes shells en Linux, estos son algunos ejemplos:

 Bourne-again shell (Bash)

 C shell (csh or tcsh, the enhanced csh)

 Korn shell (ksh)

 Z shell (zsh)

En Linux, el más común es el Bash Shell. Este se utilizará en diferentes ejemplos o


ejercicios que veremos durante la lectura.

Cuando se utiliza un shell interactivo, el usuario ingresa comandos en un indicador


llamado (prompt). En cada distribución de Linux, el indicador predeterminado
podría verse un poco diferente, pero generalmente sigue esta estructura:

username@hostname current_directory shell_type


En Ubuntu o Debian GNU/Linux, la solicitud para un usuario normal probablemente
se verá así:

carol@mycomputer:~$
El indicador del superusuario se verá así:

root@mycomputer:~#
En CentOS o Red Hat Linux, el mensaje para un usuario normal se vea así:

[dave@mycomputer ~]$
Y el indicador(prompt) del superusuario se verá así:

[root@mycomputer ~]#
Vamos a explicar cada componente de la estructura:

username
Nombre del usuario que ejecuta la shell.

hostname

Nombre del host donde se ejecuta el shell. También hay un


comando hostname, con el cual puede mostrar o configurar el nombre de
host del sistema.

current_directory

Es el directorio en el que se encuentra actualmente el shell. El


caracter ~ significa que la shell está en el directorio principal (home) del
usuario.

shell_type

$ indica que el shell lo ejecuta un usuario normal.

# indica que el shell es ejecutado por el superusuario root.

Como no necesitamos ningún privilegio especial, utilizaremos una solicitud sin


privilegios en los siguientes ejemplos. Por brevedad, solo usaremos el $ (signo de
dólar) como indicador.

Estructura de la línea de comandos

La mayoría de los comandos siguen la misma estructura básica:

comando [opción(es)/párametro(s)...] [argumento(s)...]


Tome el siguiente comando como ejemplo:

$ ls -l /home
Expliquemos el propósito de cada componente:

Comando
Programa que el usuario ejecutó - ls en el ejemplo anterior.

Opción(es)/Parámetro(s)
Un “switch” modifica el comportamiento del comando de alguna manera,
como es el caso de -l (ejemplo anterior). Se puede acceder a las opciones
en forma corta y larga. Por ejemplo, -l es idéntico a --format=long.

También se pueden combinar varias opciones, las letras generalmente se


pueden escribir juntas haciendolo de forma abreviada. Por ejemplo, los
siguientes comandos hacen lo mismo:

$ ls -al
$ ls -a -l
$ ls --all --format=long

Argumento(s)
Datos adicionales que requiere el programa, como un nombre de archivo o
ruta, como /home en el ejemplo anterior.

La única parte obligatoria de esta estructura es el comando. En general, todos los


demás elementos son opcionales, pero un programa puede requerir que se
especifiquen ciertas opciones, parámetros o argumentos.

La mayoría de los comandos muestran un breve resumen de las opciones


Not
disponibles cuando se ejecutan con el parámetro --help. Pronto conoceremos otras
a
formas de aprender más sobre los comandos de Linux.

Tipos de comportamiento de los comando

Shell admite dos tipos de comandos:

Interno

Estos comandos son parte del propio shell y no son programas separados. Hay
alrededor de 30 de estos comandos, y su principal objetivo es ejecutar tareas
dentro del shell (por ejemplo, cd, set, export).

Externo

Estos comandos residen en archivos individuales; suelen ser programas binarios o


scripts. Cuando se ejecuta un comando que no es un shell incorporado, el shell
utiliza la variable PATH para buscar un archivo ejecutable con el mismo nombre del
comando. Además de los programas que se instalan con el administrador de
paquetes de la distribución, los usuarios también pueden crear sus propios
comandos externos.

El comando type nos dice que tipo de comando es

$ type echo

echo is a shell builtin

$ type man

man is /usr/bin/man
Comillas (Quoting)
Como usuario de Linux, deberá crear o manipular archivos o variables de diferentes
maneras. Esto es fácil cuando se trabaja con nombres de archivo cortos y valores
únicos, pero se vuelve más complicado cuando, por ejemplo, hay espacios
involucrados, caracteres especiales y variables. Las shells proporcionan una
característica llamada comillas que encapsula los datos usando varios tipos de
comillas (" ", ' '). En Bash, hay tres tipos de comillas:

 Comillas dobles (Double quotes)

 Comillas simples (Single quotes)

 Caracteres de Escape (Escape characters)

Por ejemplo, los siguientes comandos no actúan de la misma manera debido a las
comillas:

NOTA: para crear una variable bash se definen como NOMBRE=valor (sin
espacios antes o despues del símbolo ‘=') y su valor se usa, poniendo el
símbolo ‘$’ delante del nombre de la variable, $NOMBRE.

$ TWOWORDS="two words"
$ touch $TWOWORDS
$ ls -l
-rw-r--r-- 1 carol carol 0 Mar 10 14:56 two
-rw-r--r-- 1 carol carol 0 Mar 10 14:56 words
$ touch "$TWOWORDS"
$ ls -l
-rw-r--r-- 1 carol carol 0 Mar 10 14:56 two
-rw-r--r-- 1 carol carol 0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol 0 Mar 10 14:56 words
$ touch '$TWOWORDS'
$ ls -l
-rw-r--r-- 1 carol carol 0 Mar 10 15:00 '$TWOWORDS'
-rw-r--r-- 1 carol carol 0 Mar 10 14:56 two
-rw-r--r-- 1 carol carol 0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol 0 Mar 10 14:56 words
La línea con TWOWORDS= es una variable Bash que nosotros mismos creamos.
Nota Introduciremos variables más tarde. El objetivo de esta es mostrarle como las
comillas afectan el resultado de las variables.

Comillas dobles (Double Quotes)


Las comillas dobles le dicen al shell que interprete el texto entre comillas ("...")
como caracteres regulares. Todos los caracteres especiales pierden su significado,
excepto el $ (signo de dólar), \ (barra invertida) y ` (comilla invertida). Esto significa
que las variables, la sustitución de comandos y las funciones aritméticas todavía se
pueden usar.

Por ejemplo, la sustitución de la variable $USER no se ve afectada por las comillas


dobles:

$ echo I am $USER
I am tom
$ echo "I am $USER"
I am tom
Por otro lado, un carácter de espacio pierde su significado como separador de
argumentos:

$ touch new file


$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 file
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 new
$ touch "new file"
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:19 new file
En el primer ejemplo, el comando touch crea dos archivos individuales, el comando
interpreta las dos cadenas como argumentos individuales. En el segundo ejemplo,
el comando interpreta ambas cadenas como un argumento, por lo tanto, solo crea
un archivo. Sin embargo, es una buena práctica evitar el carácter de espacio en los
nombres de archivo. En su lugar podría usar un guión bajo (_) o un punto (.).

Comillas simples (Single Quotes)


Las comillas simples no tienen la excepción de las comillas dobles. Estos revocan
cualquier significado especial de cada caracter. Tomemos uno de los primeros
ejemplos de arriba:

$ echo I am $USER

I am tom

Al aplicar las comillas simples, verá un resultado diferente:

$ echo 'I am $USER'

I am $USER

El comando ahora muestra la cadena exacta sin sustituir la variable.

Comillas simples (Single Quotes)


Las comillas simples no tienen la excepción de las comillas dobles. Estos revocan
cualquier significado especial de cada caracter. Tomemos uno de los primeros
ejemplos de arriba:

$ echo I am $USER
I am tom

Al aplicar las comillas simples, verá un resultado diferente:

$ echo 'I am $USER'

I am $USER

El comando ahora muestra la cadena exacta sin sustituir la variable.

MECaracteres de Escape (Escape characters)


Podemos usar caracteres de escape para eliminar significados especiales de los
caracteres de Bash. Volvamos a la variable de entorno $USER:

$ echo $USER

carol

Vemos que por defecto, el contenido de la variable se muestra en la terminal. Sin


embargo, si precedemos el signo de dólar con un carácter de barra diagonal
inversa (\), negará su significado especial. Esto provocara que Bash no expanda el
valor de la variable al nombre de usuario de la persona que ejecuta el comando,
sino que literalmente interpretará el nombre de la variable:

$ echo \$USER

$USER

Si recuerdas, podemos obtener resultados similares a estos usando la comilla


simple, que imprime el contenido literal de lo que esté entre ellas. Sin embargo, el
carácter de escape funciona de manera diferente al indicarle a Bash que ignore
cualquier significado especial que pueda tener el personaje que precede
Ejercicios guiados
Divida las líneas a continuación en comando, opción(s)/parámetro(s) y
argumento(s):

 Ejemplo: cat -n /etc/passwd

Comando: cat
Opción: -n
Argumento /etc/passwd
:
 ls -l /etc

Comando:

Opción:
Argumento
:
 ls -l -a

Comando:

Opción:
Argumento
:
 cd /home/user

Comando:

Opción:
Argumento
:

Su respuesta :
 ls -l /etc

Comando: ls
Opción: -l
Argumento: /etc
 ls -l -a

Comando: ls
Opción: -l -a

Argumento:
 cd /home/user

Comando: cd
Opción:
Argumento /home/user
:

=1

 ls -l /etc

Comando: -l
Opción: ls
Argumento: /etc
 ls -l -a

Comando: ls
Opción:
Argumento -l -a
:
 cd /home/user

Comando: /home/user
Opción: cd

Argumento:

=2
 ls -l /etc

Comando: /etc
Opción: ls
Argumento -l
:
 ls -l -a

Comando: -l
Opción: -a

Argumento: ls
 cd /home/user

Comando: cd
Opción: /home/user

Argumento
:
=3

NOTAS EXTRA:

Comandos, opciones y argumentos


en la consola GNU/Linux
Posted on 13 de enero de 2021
Vamos a repasar los conceptos de comando, opciones y argumentos mientras continuamos
gestionando archivos. Si tienes claro estos conceptos avanzarás más rápido en tu dominio
de la consola.
¿Qué es un comando? es una orden que se ejecuta en el terminal y que ejecuta un programa
con una funcionalidad determinada. Por ejemplo, la orden ls ejecuta el programa ls que lista
por pantalla los archivos de un directorio.
¿Qué es una opción? es una indicación, que se pone a continuación del comando, para el
programa que se ejecuta para que haga o muestre algo diferente. Generalmente, en su forma
corta es una letra precedida por un guion, por ejemplo -l. En el comando ls, la opción -l lista
los archivos en forma de lista con sus permisos, usuario, grupo, tamaño, fecha de creación y
nombre. De esta forma, si queremos visualizar los archivos de esta forma, debemos añadir
la opción -l a la orden ls: ls -l. Algunas opciones pueden tener un formato largo que es una
palabra, precedida por dos guiones, ej. – -help. La opción – -help en la mayoría de los
comandos imprime una ayuda básica con las opciones disponibles.
¿Qué es un argumento? es de nuevo una indicación, que generalmente se pone a
continuación del comando y las opciones, sobre qué directorio o archivo hay que ejecutar el
programa indicado. Por ejemplo, si queremos listar los archivos de un directorio concreto,
lo tenemos que indicar al final de la orden. ls -l /home/usuario/directorio listará en forma
de lista, los archivos del directorio /home/usuario/directorio.
2.1 Conceptos básicos de la línea de
comandos 2
Introducción
Todas las shells administran información del estado de sus sesiones. La información
del tiempo de ejecución(runtime) puede cambiar durante la sesión e influir en el
comportamiento del shell. Estos datos también son utilizados por los programas
para determinar aspectos de la configuración del sistema. La mayoría de estos
datos se almacenan en las denominadas variables, las cuales cubriremos en esta
lección.

Variables
Las variables son elementos de almacenamiento de datos, como texto o números.
Una vez establecida, se puede acceder al valor de una variable en un momento
posterior. Las variables tienen un nombre que permite acceder a un dato específico,
incluso cuando el contenido de la variable cambia. Son una herramienta muy
común en la mayoría de los lenguajes de programación.

En la mayoría de las shells de Linux, hay dos tipos de variables:

Variables locales

Estas variables están disponibles solo para el proceso de shell actual. Si crea
una variable local y luego inicia otro programa desde la misma shell, la
variable ya no estará disponible para ese programa, debido a que no son
heredadas por subprocesos. Este tipo de variables se denominan variables
locales.

Variables de entorno (Environment)

Estas variables están disponibles tanto en una sesión de shell específica


como en subprocesos generados a partir de esa misma sesión. Estas
variables se pueden usar para pasar datos de configuración a comandos
cuando se ejecuten. Debido a que estos programas pueden acceder a estas
variables, se denominan variables de entorno. La mayoría de estas variables
están en mayúsculas (por ejemplo, PATH, DATE, USER). Algunas variables de
entorno proporcionan información como el directorio de inicio del usuario o
el tipo de terminal. En ocasiones, el conjunto completo de todas las variables
de entorno se conoce como environment.

Estos tipos de variables también se conocen como variables de ámbito (variable


scope).

Las variables no son persistentes. Cuando se cierra la shell donde se establecieron,


se pierden todas las variables y su contenido. La mayoría de las shells
Nota proporcionan archivos de configuración que contienen variables que se establecen
cada vez que se inicia una nueva shell. Las variables que deben establecerse
permanentemente, deben agregarse a uno de estos archivos de configuración.

Manipulando Variables
Como administrador del sistema, deberá crear, modificar o eliminar variables
locales y de entorno.
Trabajando con variables locales
Puede configurar una variable local utilizando el operador = (igual). Está asignación
simple creará una variable local:

$ greeting=hello
Note No agregue ningún espacio antes o después del operador =.

Puede mostrar cualquier variable usando el comando echo. El comando


generalmente muestra el texto en la sección de argumentos:

$ echo greeting
greeting
Para acceder al valor de la variable, deberá usar $ (signo de dólar) antes del
nombre de la variable.

$ echo $greeting
hello
Como puede ver, la variable ha sido creada. Ahora abra otro shell e intente mostrar
el contenido de esa variable.

$ echo $greeting
No se muestra nada. Esto significa que las variables siempre existen en una sola
shell específica.

Para verificar que la variable es en realidad una variable local, intente generar un
nuevo proceso y verifique si este proceso puede acceder a esa variable. Podemos
hacerlo iniciando otra shell y dejar que este ejecute el comando echo. Como la
nueva shell se ejecuta en un nuevo proceso, no heredará variables locales de su
proceso padre:

$ echo $greeting world


hello world
$ bash -c 'echo $greeting world'
world
Note Como en el ejemplo anterior, asegúrese de usar comillas simples.

Para eliminar una variable, deberá usar el comando unset:

$ echo $greeting
hey
$ unset greeting
$ echo $greeting
unset requiere el nombre de la variable como argumento. Por lo tanto, no puede
Nota agregar $ al nombre, ya que pasaría el valor de la variable a unset en lugar del
nombre de la variable.

Trabajando con variables globales


Para que una variable esté disponible para los subprocesos, tiene que
convertir una variable local a una variable de entorno. Esto se hace con el
comando export. Cuando se invoca con el nombre de la variable, esta se agrega al
entorno de shell:

$ greeting=hello
$ export greeting
Note Asegúrese de no usar $ cuando ejecute export, ya que lo que se debe pasar es el
nombre de la variable y no su contenido.
Una forma más fácil de crear la variable de entorno es combinar ambos métodos
anteriores, asignando el valor de la variable en el argumento del comando.

$ export greeting=hey
Verifiquemos nuevamente si la variable es accesible para los subprocesos:

$ export greeting=hey
$ echo $greeting world
hey world
$ bash -c 'echo $greeting world'
hey world
Otra forma de usar variables de entorno es mediante los comandos. Podemos
probar esto con la variable de entorno TZ que contiene la zona horaria. El
comando date usa esta variable para determinar la hora de la zona horaria que se
mostrará:

$ TZ=EST date
Thu 31 Jan 10:07:35 EST 2019
$ TZ=GMT date
Thu 31 Jan 15:07:35 GMT 2019
Puede mostrar todas las variables de entorno utilizando el comando env.

La variable PATH
La variable PATH es una de las variables de entorno más importantes en un sistema
Linux. Almacena una lista de directorios separados por dos puntos que contienen
programas ejecutables elegibles como comandos de la shell de Linux.

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/
bin:/usr/games
Para agregar un nuevo directorio a la variable deberá usar el signo de dos puntos
(:).

$ PATH=$PATH:new_directory
Aquí un ejemplo:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=$PATH:/home/user/bin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin
Como puede observar, $PATH se ve como nuevo valor asignado a PATH. Esta variable
se resuelve durante la ejecución del comando y se asegura de que se conserve el
contenido original de la variable. Por supuesto, en la asignación también puede
usar otras variables:

$ mybin=/opt/bin
$ PATH=$PATH:$mybin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/
bin:/opt/bin
La variable PATH debe manejarse con precaución, ya que es crucial para trabajar en
línea de comandos. Consideremos la siguiente variable PATH:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Para descubrir cómo el shell invoca un comando específico, puede utilizar el
comando which con el nombre del comando como argumento. Por ejemplo,
podemos tratar de averiguar dónde se almacena nano:

$ which nano
/usr/bin/nano
Como podemos observar, el ejecutable nano se encuentra dentro del
directorio /usr/bin. Eliminemos el directorio de la variable y verifiquemos si el
comando aún funciona:

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games
Busquemos el comando nano nuevamente:

$ which nano
which: no nano in
(/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games)
Como podemos observar, el comando no se encuentra, por lo tanto, no se ejecuta.
El mensaje de error también explica la razón por la cual no se encontró y en qué
ubicaciones se buscó.

Volvamos a agregar los directorios e intentemos ejecutar el comando nuevamente.

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which nano
/usr/bin/nano
Ahora nuestro comando funciona de nuevo.

Ti El orden de los elementos en PATH también define el orden de búsqueda. Se ejecuta


p el primer ejecutable coincidente encontrado al recorrer las rutas.

2.2 Usando la línea de comandos


para obtener ayuda
Introducción
La línea de comandos es una herramienta muy compleja. Cada comando tiene sus
propias opciones únicas, por lo tanto, la documentación es clave cuando se trabaja
con un sistema Linux. Además del directorio /usr/share/doc/ que almacena la
mayor parte de la documentación, existen otras herramientas también
proporcionan información sobre el uso de comandos. Este capítulo se centra en los
métodos para acceder a esa documentación, con el fin de obtener ayuda.

Hay una multitud de métodos para obtener ayuda dentro de la línea de


comandos. man, help e info son solo algunos de ellos. Para Linux Essentials, nos
centraremos en man e info, ya que son las herramientas más utilizadas para obtener
ayuda.
Otro tema de este capítulo será localizar archivos. Trabajaremos principalmente con
el comando locate.

Ayuda incorporada
Cuando se comienza con el parámetro  --help, la mayoría de los comandos
muestran algunas instrucciones breves sobre su uso. Aunque no todos los
comandos proporcionan está opción, es un buen primer intento para aprender
más sobre sus parámetros. Tenga en cuenta que las instrucciones de  --help  a
menudo son muy breves en comparación con las otras fuentes de documentación
que discutiremos en el resto de esta lección.

Páginas Man
La mayoría de los comandos proporcionan una página de manual o una página
"man". Esta documentación generalmente se instala con el software y se puede
acceder con el comando man. Cuando deseé ver la página del manual de un
comando, debe agregar el comando man como argumento:

$ man mkdir
Este comando abre la página del manual para mkdir. Puede usar las teclas de flecha
arriba y abajo o la barra espaciadora para navegar por la página del manual. Para
salir de la página del manual, presione Q.

Cada página de man está dividida en un máximo de 11 secciones, aunque muchas


de estas secciones son opcionales:

laSección Descripción

NAME Nombre del comando y breve descripción


SYNOPSIS Descripción de la sintaxis del comando
DESCRIPTION Descripción de los efectos del comando
OPTIONS Opciones disponibles
ARGUMENTS Argumentos disponibles
FILES Archivos auxiliares
EXAMPLES Una muestra de la línea de comando
SEE ALSO Referencias cruzadas a los temas relacionados
DIAGNOSTICS Mensajes de advertencia y error
COPYRIGHT Autor (es) del comando
BUGS Cualquier limitación conocida del comando
En la práctica, la mayoría de las páginas man no contienen todas estas partes.

Las páginas man están organizadas en ocho categorías, numeradas del 1 al 8:


Categorí
Descripción
a

1 Comando del usuario


2 Llamadas del sistema
3 Funciones de la biblioteca C
4 Controladores y archivos de dispositivo
5 Archivos de configuración y formatos de archivo
6 Juegos
7 Miscellaneous
8 Comandos del administrador del sistema
9 Funciones del núcleo (no estándar)
Cada página de manual pertenece exactamente a una categoría. Sin embargo,
varias categorías pueden contener páginas de manual con el mismo nombre.
Tomemos como ejemplo el comando passwd. Este comando puede ser usado para
cambiar la contraseña de un usuario. Como passwd es un comando de usuario, su
página man reside en la categoría 1. Además del comando passwd, el archivo de
base de datos de contraseñas /etc/passwd también tiene una página man que se
llama passwd. Como este archivo es un archivo de configuración, pertenece a la
categoría 5. Cuando se hace referencia a una página de manual, a menudo se
añade la categoría al nombre de la página de manual, como
en passwd(1) o passwd(5) para identificar la página de manual respectiva.

Por defecto, man passwd muestra la primera página man disponible, en este


caso passwd(1). La categoría de la página man deseada se puede especificar en un
comando como man 1 passwd o man 5 passwd.

Ya hemos visto cómo navegar a través de una página man y cómo volver a la línea
de comando. Internamente, man usa el comando less para mostrar el contenido de
la página. less le permite buscar texto dentro de una página man. Para encontrar la
palabra linux puede usar /linux para buscar hacia adelante desde el punto en el
que se encuentra en la página o ?Linux para iniciar una búsqueda hacia atrás. Esta
acción resalta todos los resultados coincidentes y mueve la página a la primera
coincidencia resaltada. En ambos casos, puede escribir N para saltar a la siguiente
coincidencia. Para encontrar más información sobre estas características
adicionales, presione H y se mostrará un menú con toda la información.
Páginas de información (Info Pages)
Otra herramienta que le ayudará mientras trabaja con el sistema Linux son las
páginas de información(info pages). Las páginas info suelen ser más detalladas
que las páginas de manual y están formateadas en hipertexto, similar a las
páginas web en Internet.
Las páginas info se pueden mostrar así:

$ info mkdir

Para cada página de información, info lee un archivo que está estructurado en
nodos individuales dentro de un árbol. Cada nodo contiene un tema simple y el
comando info contiene hipervínculos que pueden ayudarlo a moverse de uno a
otro. Puede acceder al enlace presionando "enter" mientras coloca el cursor en uno
de los asteriscos principales.

Similar a man, la herramienta info también tiene comandos de navegación de


página. Puede obtener más información sobre estos comandos presionando ?
mientras se encuentra en la página de info. Estas herramientas lo ayudarán a
navegar por la página más fácilmente, así como a comprender cómo acceder a los
nodos y moverse dentro del árbol.

El directorio /usr/share/doc/
Como se mencionó anteriormente, el
directorio  /usr/share/doc/  almacena la mayoría de la documentación
de cada comando que utilice el sistema. Este directorio contiene una carpeta para
la mayoría de los paquetes instalados; el nombre del directorio suele ser el
nombre del paquete y en ocasiones incluye su versión. Estos directorios incluyen
un archivo  README  o  readme.txt  que contiene la documentación básica
del paquete, junto con el archivo  README. La carpeta también puede contener
otros archivos de documentación, como el registro de cambios que incluye el
historial del programa en detalle o ejemplos de archivos de configuración para el
paquete específico.
La información dentro del archivo README varía de un paquete a otro. Todos los
archivos están escritos en texto plano, por lo tanto, se pueden leer con cualquier
editor de texto preferido. El número exacto y los tipos de archivos dependen del
paquete. Consulte algunos de los directorios para obtener una descripción
general de sus contenidos.

El comando locate
Un sistema Linux está construido a partir de numerosos directorios y archivos. Linux tiene
muchas herramientas para ubicar un archivo en particular dentro de un sistema. El más
rápido es el comando  locate.
locate busca dentro de una base de datos y luego genera cada nombre que
coincida con la cadena brindada:

$ locate note
/lib/udev/keymaps/zepto-znote
/usr/bin/zipnote
/usr/share/doc/initramfs-tools/maintainer-notes.html
/usr/share/man/man1/zipnote.1.gz
El comando locate también admite el uso de comodines y expresiones regulares,
por lo tanto, la cadena de búsqueda no tiene que coincidir con el nombre completo
del archivo deseado. Aprenderá más sobre las expresiones regulares en un capítulo
posterior.

Por defecto, locate se comporta como si el patrón estuviera rodeado de asteriscos,


por lo que locate PATTERN es lo mismo que locate *PATTERN*. Esto le permite
simplemente proporcionar subcadenas en lugar del nombre del archivo exacto.
Puede modificar este comportamiento con las diferentes opciones que puede
encontrar explicadas en la página del comando man locate.

Debido a que locate está leyendo desde una base de datos, es posible que no


encuentre un archivo que haya creado recientemente. La base de datos es
administrada por un programa llamado updatedb. Por lo general, se ejecuta
periódicamente, pero si tiene privilegios de root y necesita que la base de datos se
actualice de inmediato, puede ejecutar el comando updatedb en cualquier
momento.
El comando find
find  es otra herramienta muy popular que se utiliza para buscar archivos. Este
comando tiene un enfoque diferente, en comparación con el comando  locate. El
comando  find  busca un árbol de directorios de forma recursiva, incluidos sus
subdirectorios.  find  realiza dicha búsqueda en cada invocación y no mantiene una
base de datos como  locate. Al igual que  locate,  find  también admite
comodines y expresiones regulares.
find requiere al menos la ruta que debe buscar. Además, se pueden agregar las
llamadas expresiones para proporcionar criterios de filtro para indicar que archivos
mostrar. Un ejemplo es la expresión -name que busca archivos con un nombre
específico:

~$ cd Downloads
~/Downloads
$ find . -name thesis.pdf
./thesis.pdf
~/Downloads
$ or
/home/carol/Downloads/thesis.pdf
El primer comando find busca el archivo dentro del directorio actual de Downloads,
mientras que el segundo busca el archivo en el directorio de inicio del usuario.

El comando find es muy complejo, por lo tanto no será cubierto en el examen de


Linux Essentials. Sin embargo, es una herramienta poderosa que es particularmente
útil en la práctica.

2.3 Usando directorios y listando


archivos 1
Archivos y Directorios
El sistema de archivos Linux es similar a otros sistemas de archivos de otros
sistemas operativos, ya que contiene ficheros y directorios. Los ficheros almacenan
datos como texto (legible por el ser humano), programas ejecutables o datos
binarios que son interpretados por el computador. Mientras que los directorios se
utilizan para crear una organización dentro del sistema de archivos. Los directorios
pueden contener archivos y otros directorios.

$ tree

Documents
├── Mission-Statement.txt
└── Reports
└── report2018.txt
1 directory, 2 files
En este ejemplo, Documents es un directorio que contiene un archivo (Mission-
Statement.txt) y un subdirectorio (Reports) El directorio Reports a su vez contiene
un archivo llamado report2018.txt. El directorio Documents se dice que es
el padre del directorio Reports.

Si el comando tree no está disponible en su sistema, instálelo usando el gestor de


Tip paquetes de su distribución Linux. Consulte la lección sobre gestión de paquetes
para aprender a como realizarlo.

Nombres de archivos y directorios

Los nombres de archivos y directorios en Linux pueden contener letras minúsculas y


mayúsculas, números, espacios y caracteres especiales; sin embargo, dado que
muchos caracteres especiales tienen un significado diferente en el intérprete de
comandos de Linux, es una buena práctica no utilizar espacios o caracteres
especiales cuando se nombran archivos o directorios. Un ejemplo de esto son los
espacios, ya que necesitan que el carácter escape (escape character) \ sea
introducido correctamente:

$ cd Mission\ Statements
También observemos el nombre del archivo report2018.txt. Los nombres de
archivos pueden contener un sufijo que se encuentra después del punto (.). A
diferencia de Windows, este sufijo no tiene un significado especial en Linux; solo
está ahí para la comprensión humana. En nuestro ejemplo, el .txt nos indica que se
trata de un archivo de texto plano, aunque técnicamente podría contener cualquier
tipo de dato.

Obteniendo la ubicación actual


Dado que los shells de Linux como Bash están basados en texto, es importante
recordar la ubicación actual cuando se navega por el sistema de archivos,
el command prompt puede proporcionar esta información:

user@hostname ~/Documents/Reports $
Tenga en cuenta que información como usuario y nombre de host se cubrirá en
futuras secciones. Desde el prompt, ahora sabemos que nuestra ubicación actual se
encuentra en el directorio Reports. De forma similar, el comando pwd imprimirá el
directorio de trabajo (working directory):
user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
La relación de directorios se representa con una barra oblicua ( /). Sabemos
que Reports es un subdirectorio de Documents y este es un subdirectorio de user,
que se encuentra en un directorio llamado home. El directorio home no parece tener
un directorio padre, pero esto no es cierto en lo absoluto; el padre de home se
llama root, y está representado por la primera barra oblicua ( /) que discutiremos en
una sección posterior.

Note que la salida del comando pwd difiere ligeramente de la ruta dada por el


command prompt. En lugar de /home/user contiene una tilde (~). La tilde es un
carácter especial que representa el directorio home del usuario. Esto será cubierto
con más detalle en la siguiente lección.

Listando el contenido de los directorios

El contenido del directorio actual se lista con el comando ls:

user@hostname ~/Documents/Reports $ ls
report2018.txt
Tenga en cuenta que ls no proporciona información sobre el directorio padre. Por
defecto ls no muestra ninguna información sobre el contenido de los
subdirectorios. El comando ls sólo puede “ver” lo que hay en el directorio actual.

Cambiando al directorio actual

La navegación en Linux se hace principalmente con el comando cd. Esto cambia el


directorio. Usando el comando pwd de antes, sabemos que nuestro directorio actual
es /home/user/Documents/Reports. Podemos cambiar nuestro directorio actual
introduciendo una nueva ruta:

user@hostname ~ $ cd /home/user/Documents
user@hostname ~/Documents $ pwd
/home/user/Documents
user@hostname ~/Documents $ ls
Mission-Statement.txt Reports
Desde nuestra nueva ubicación, podemos “ver” Mission-Statement.txt y nuestro
subdirectorio Reports, pero no el contenido de nuestro subdirectorio:

user@hostname ~/Documents $ cd Reports


user@hostname ~/Documents/Reports $ pwd
/home/user/Documents/Reports
user@hostname ~/Documents/Reports $ ls
report2018.txt
Ahora estamos de vuelta donde empezamos.
Rutas Absolutas y Relativas

El comando pwd siempre imprime una ruta absoluta. Esto significa que la ruta


contiene cada paso de la ruta, desde la parte superior del sistema de ficheros ( /)
hasta la parte inferior (Reports). Las rutas absolutas siempre comienzan con un /.

/
└── home
└── user
└── Documents
└── Reports
La ruta absoluta contiene toda la información necesaria para llegar a Reports desde
cualquier parte del sistema de ficheros, el inconveniente es que es tedioso de
escribir.

El segundo ejemplo (cd Reports) era mucho más fácil de escribir, este es un
ejemplo de una ruta relativa. Las rutas relativas son más cortas, pero sólo tienen
significado en relación a tu ubicación actual. Considera esta analogía: te estoy
visitando en tu casa y me dices que tu amigo vive en la casa de al lado, entenderé
esa ubicación porque es relativa a mi ubicación actual, pero si me dices esto por
teléfono, no podré encontrar la casa de tu amigo, necesitarás darme la dirección
completa de la calle.

Rutas Relativas Especiales

Para revelar las primeras rutas especiales, entramos en el comando ls con la


bandera -a. Esta bandera modifica el comando ls para que se listen todos los
archivos y directorios all, incluyendo los archivos y directorios ocultos:

user@hostname ~/Documents/Reports $ ls -a
.
..
report2018.txt
Nota  Puedes consultar la página de man para ls entender
lo que -a está haciendo aquí.
Este comando ha revelado dos resultados adicionales: Estas son rutas especiales, no
representan nuevos archivos o directorios, sino que representan directorios que
usted ya conoce:

.
Indica la ubicación actual (en este caso, Reports).

..
Indica el directorio padre (en este caso, Documents).

Por lo general, no es necesario usar una ruta relativa especial para la ubicación
actual. Es más fácil y comprensible escribir report2018.txt que ./report2018.txt,
pero el . tiene usos que aprenderá en futuras secciones. Por ahora, nos
centraremos en la ruta relativa para el directorio padre:

user@hostname ~/Documents/Reports $ cd ..
user@hostname ~/Documents $ pwd
/home/user/Documents
El ejemplo de cd es mucho más fácil cuando se usa .. en lugar de la ruta absoluta,
además, podemos combinar este patrón para navegar por el árbol de archivos muy
rápidamente.

user@hostname ~/Documents $ cd ../..


$ pwd
/home

2.3 Usando directorios y listando


archivos
Introducción
El sistema operativo Unix se diseñó originalmente para computadoras mainframe a
mediados de la década de 1960. Estas computadoras fueron compartidas entre muchos
usuarios quienes accedieron a los recursos del sistema a través de terminales. Estas
ideas se transmiten hoy en día a los sistemas Linux donde todavía se habla sobre el uso
de “terminales” para ingresar comandos en el shell y donde cada sistema Linux está
organizado de tal manera que es fácil crear varios usuarios en un solo sistema.

Directorios principales

Este es un ejemplo de un sistema de archivos normal en Linux:

$ tree -L 1 /
/
├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var
La mayoría de estos directorios son consistentes en todos los sistemas Linux desde
pequeños sistemas embebidos, servidores y hasta supercomputadoras. Un usuario
experimentado de Linux puede estar seguro de que puede encontrar el
comando ls dentro de /bin, puede cambiar la configuración del sistema
modificando archivos en /etc, y leer los registros del sistema /var. La ubicación de
estos archivos y directorios está definido por el Estándar de jerarquía del sistema de
archivos (FHS), el cual se discutirá en una lección posterior. Aprenderá más sobre el
contenido de estos directorios a medida que continúe aprendiendo más sobre
Linux, pero por el momento, sepa que:

 Los cambios que realice en el sistema de archivos raíz afectarán a todos los
usuarios.
 Cambiar archivos en el sistema de archivos raíz requerirá permisos de
administrador.

Esto significa que los usuarios normales tendrán prohibido modificar estos archivos,
y también se les puede prohibir incluso leerlos. Cubriremos el tema de los permisos
en una sección posterior.

Ahora, nos centraremos en el directorio /home que debería ser algo familiar en este


punto:

$ tree -L 1 /home
/home
├── user
├── michael
└── lara
En el ejemplo nuestro sistema tiene tres usuarios normales y cada uno tiene su
propia ubicación donde pueden crear y modificar archivos y directorios sin afectar a
su vecino. Por ejemplo, en la lección anterior estábamos trabajando con la siguiente
estructura de archivos:

$ tree /home/user
user
└── Documents
├── Mission-Statement
└── Reports
└── report2018.txt
En realidad, el sistema de archivos real puede verse así:

$ tree /home
/home
├── user
│   └── Documents
│   ├── Mission-Statement
│   └── Reports
│   └── report2018.txt
├── michael
│   ├── Documents
│   │   └── presentation-for-clients.odp
│   └── Music
…y así sucesivamente para lara.

En Linux, /home es similar a un edificio de departamentos. Muchos usuarios pueden


tener su espacio separados en departamentos dedicados. Las utilidades y el
mantenimiento del edificio en sí son responsabilidad del superintendente (usuario
root).

La ruta relativa especial para home

Cuando inicia una nueva sesión de terminal en Linux, ve un símbolo del sistema
similar a este:

user@hostname ~ $
La tilde (~) aquí representa nuestro directorio home . Si ejecuta el comando ls verá
algunos resultados familiares:

$ cd ~
$ ls
Documents
Compare esto con el sistema de archivos anterior para verificar su comprensión.

Considere ahora lo que sabemos sobre Linux: es similar a un edificio de


departamentos con muchos usuarios que residen en /home. Por lo tanto, el home
del user será diferente al home del usuario michael. Para demostrar esto, usaremos
el comando su para cambiar de usuario.

user@hostname ~ $ pwd
/home/user
user@hostname ~ $ su - michael
Password:
michael@hostname ~ $ pwd
/home/michael
El significado de ~ cambia dependiendo de quién sea el usuario. Para michael, la
ruta absoluta de ~ es /home/michael. Para lara, la ruta absoluta de ~ es /home/lara, y
así sucesivamente.

Rutas relativas a los archivos de inicio (relative-to-home)


Es muy útil usar ~ siempre que no cambie de usuario. Consideraremos el siguiente
ejemplo para user que ha comenzado una nueva sesión:

$ ls
Documents
$ cd Documents
$ ls
Mission-Statement
Reports
$ cd Reports
$ ls
report2018.txt
$ cd ~
$ ls
Documents
Tenga en cuenta que los usuarios siempre comenzarán una nueva sesión en su
directorio de inicio (home). En este ejemplo, user ha navegado a su
subdirectorio Documents/Reports y con el comando cd ~ ha regresado a donde
comenzó. Puede realizar la misma acción utilizando el comando cd sin argumentos:

$ cd Documents/Reports
$ pwd
/home/user/Documents/Reports
$ cd
$ pwd
/home/user
Como último punto a tener en cuenta: podemos especificar los directorios de inicio
de otros usuarios especificando el nombre después de la tilde. Por ejemplo:

$ ls ~michael
Documents
Music
Tenga en cuenta que esto solo funcionará si michael nos ha dado permiso para ver
el contenido de su directorio de inicio.

Consideremos una situación en la que michael quisiera ver el


archivo report2018.txt en el directorio de inicio de user. Suponiendo
que michael tiene permiso para hacerlo, puede usar el comando less.

$ less ~user/Documents/Reports/report2018.txt
Cualquier ruta de archivo que contenga el carácter ~ se llama ruta relative-to-home.

Archivos y directorios ocultos

En la lección anterior, presentamos la opción -a para el comando ls. Utilizamos ls


-a para introducir a las rutas relativas especiales: . y ... La opción -
a enumerará todos los archivos y directorios incluidos los ocultos.

$ ls -a ~
.
..
.bash_history
.bash_logout
.bash-profile
.bashrc
Documents
Los archivos y directorios ocultos siempre comenzarán con un punto (.). Por
defecto, el directorio de inicio(home) de un usuario incluirá muchos archivos
ocultos que a menudo se usan para establecer configuraciones específicas del
usuario. Estas configuraciones solo deben ser modificadas por un usuario
experimentado.

La opción de listado largo (long list)


El comando ls tiene muchas opciones para cambiar su comportamiento. Revisemos
una de las más comunes: $ ls -l -rw-r--r-- 1 user staff 3606 Jan 13 2017
report2018.txt El argumento -l crea un listado largo de detalles (long list). Cada
archivo y directorio ocuparán una línea, pero se mostrará información adicional
sobre cada uno de ellos. -rw-r—r-- Tipo de archivo y permisos del archivo. Tenga
en cuenta que un archivo normal comenzará con guión y un directorio comenzará
con d. 1 Número de enlaces al archivo. user staff Especifica la propiedad del
archivo, user es el propietario del archivo el cual también está asociado al grupo
staff. 3606 Tamaño del archivo en bytes. Jan 13 2017 Fecha de la última
modificación del archivo. report2018.txt Nombre del archivo. Temas como
propietarios, permisos y enlaces serán cubiertos en secciones futuras. Como puede
observar, a menudo el formato de listado largo de ls es preferible que el
predeterminado.

Opciones adicionales del comando ls


A continuación, presentamos algunas de las formas más comunes al usar el
comando ls. Como podrá observar, el usuario puede combinar muchas opciones
para obtener el resultado deseado.

ls -lh
La combinación de long list con human readable nos dará el tamaño de los
archivos con sufijos útiles como M para megabytes o K para kilobytes.

ls -d */
La opción -d enumerará los directorios pero no sus contenidos. La
combinación con */ mostrará solo subdirectorios y ningún archivo.

ls -lt
Combinar long list con la opción de ordenar por modification time. Los
archivos con los cambios más recientes estarán en la parte superior y los
archivos con los cambios más antiguos estarán en la parte inferior, pero este
orden se puede revertir con:

ls -lrt
Combinar long list con sort by (modification) time, combinado con -
r que invierte el orden. Ahora los archivos con los cambios más recientes se
encuentran al final de la lista. Además de ordenar por modification time, los
archivos también se pueden ordenar por access time o por status time.
ls -lX
Combinar long list con la opción de ordenar por file eXtension. Esto agrupará
todos los archivos que terminen con .txt, todos los que terminen con .jpg y
así sucesivamente.

ls -S
El -S se ordena por archivo size de forma muy similar a -t y -X, tiempo y
extensión respectivamente. Los archivos más grandes estarán primero y los
más pequeños al final. Tenga en cuenta que el contenido de los
subdirectorios no se incluye en el orden.

ls -R
La opción -R modificará el comando ls para mostrar una lista recursiva.
¿Qué significa esto?

Recursión en Bash
La recursión se refiere a una situación en la que “algo se define en términos de sí
mismo”. La recursión es un concepto muy importante en la informática, pero aquí
su significado es mucho más simple. Consideremos nuestro ejemplo de antes:

$ ls ~
Documents
Sabemos desde antes que user tiene un directorio personal, y en este directorio
hay un subdirectorio. Hasta ahora ls sólo nos ha mostrado los ficheros y
subdirectorios de una ubicación, pero no puede decirnos el contenido de estos
subdirectorios. En estas lecciones, hemos utilizado el comando tree cuando
queríamos mostrar el contenido de muchos directorios.
Desafortunadamente, tree no es una de las utilidades principales de Linux y por lo
tanto no está siempre disponible. Compare la salida de tree con la salida de ls -
R en los siguientes ejemplos:

$ tree /home/user
user
└── Documents
├── Mission-Statement
└── Reports
└── report2018.txt

$ ls -R ~
/home/user/:
Documents

/home/user/Documents:
Mission-Statement
Reports

/home/user/Documents/Reports:
report2018.txt
Como puede observar, con la opción recursiva obtenemos una lista mucho más
larga de archivos. De hecho, es como si ejecutáramos el comando ls en el
directorio de inicio de user y encontráramos un subdirectorio, luego entramos en
ese subdirectorio y ejecutamos el comando ls nuevamente donde encontramos el
archivo Mission-Statement y otro subdirectorio llamado Reports, y nuevamente,
ingresamos al subdirectorio y ejecutamos el comando ls. Prácticamente, ejecutar ls
-R es como decirle a Bash: “Ejecute ls aquí y repita el comando en cada
subdirectorio que encuentre”.

La recursión es particularmente importante en los comandos de modificación de


archivos, como copiar o eliminar directorios. Por ejemplo, si desea copiar el
subdirectorio Documents, necesitara especificar una copia recursiva para extender
este comando a todos los subdirectorios.

2.4 Creando, moviendo y borrando


archivos
Introducción

Esta lección cubrirá la administración de archivos y directorios en Linux usando


herramientas de línea de comandos.

Un archivo es una colección de datos con un nombre y un conjunto de atributos. Si


por ejemplo, usted tuviera que transferir algunas fotos desde su teléfono a una
computadora y darles nombres un descriptivo; llegaría a tener varios archivos de
imágenes con atributos como la hora la cual accedió por última vez o se modificó.

Un directorio es un tipo especial de archivo utilizado para organizar otros archivos.


Una buena manera de pensar en los directorios es como las carpetas que se usan
para organizar papeles en un organizador de archivos, a diferencia de las carpetas
de archivos de papel, usted puede mover fácilmente directorios dentro de otros
directorios.

La línea de comandos es la forma más efectiva de administrar archivos en un


sistema Linux, ya que la shell y las herramientas de línea de comandos tienen
características que hacen que su uso sea más rápido y fácil que el de un
administrador gráfico de archivos.

En esta sección usted usará los


comandos ls, mv, cp, pwd, find, touch, rm, rmdir, echo, cat, y mkdir para administrar y
organizar archivos así como directorios.
ls: listará todos los archivos situados en la posición actual. Si introduce el comando ls
con un nombre de archivo determinado, listará sólo dicho archivo, si es que existe.

mv: para mover archivos y directorios de un directorio a otro o para renombrar un


archivo o directorio.
Cp: copia un archivo a otro
Pwd : imprimir el nombre del directorio actual en una sesión de comandos bajo
un sistema operativo Unix o derivado.

Find: encontrar archivos y directorios.

Touch: crear archivos vacíos y cambiar marcas de tiempo de archivos o


carpetas.

Rm: elimina las entradas para un archivo, grupo de archivos o archivos


seleccionados determinados que se han especificado de una lista de un
directorio.

Rmdir: Elimina un árbol de directorios.

Echo: repite lo que se le encarga que repita.


Cat: emitir el contenido de un archivo en la línea de comandos

Mkdir: Crea un directorio o subdirectorio.

Sensibilidad a las mayúsculas y minúsculas


A diferencia de Microsoft Windows, los nombres de archivos y directorios en
sistemas Linux se distinguen entre mayúsculas y minúsculas; lo que significa que los
nombres /etc/ y /ETC/ son directorios diferentes:

$ cd /
$ ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
$ cd ETC
bash: cd: ETC: No such file or directory
$ pwd
/
$ cd etc
$ pwd
/etc
El pwd muestra el directorio en el que se encuentra actualmente, como puede
observar, el cambio a /ETC no funcionó, ya que dicho directorio no existe, sin
embargo el cambio al directorio /etc que sí existe tuvo éxito.

Creación de directorios
El comando mkdir se usa para crear directorios.

Vamos a crear un nuevo directorio dentro de nuestro directorio home:


$ cd ~
$ pwd
/home/user
$ ls
Desktop Documents Downloads
$ mkdir linux_essentials-2.4
$ ls
Desktop Documents Downloads linux_essentials-2.4
$ cd linux_essentials-2.4
$ pwd
/home/emma/linux_essentials-2.4
Durante de esta lección, todos los comandos tendrán lugar dentro de este
directorio o en uno de sus subdirectorios.

Para volver fácilmente al directorio de la lección desde cualquier otra ubicación


puede usar el comando:

$ cd ~/linux_essentials-2.4
El shell interpreta el carácter ~ como su directorio raíz.

Cuando esté en el directorio de la lección, cree más directorios que usaremos para
los ejercicios, usted puede crear todos los nombres de los directorios separados
por espacios con el comando mkdir:

$ mkdir creating moving copying/files copying/directories


deleting/directories deleting/files globs
mkdir: cannot create directory ‘copying/files’: No such file or directory
mkdir: cannot create directory ‘copying/directories’: No such file or
directory
mkdir: cannot create directory ‘deleting/directories’: No such file or
directory
mkdir: cannot create directory ‘deleting/files’: No such file or directory
$ ls
creating globs moving
Observe el mensaje de error y notará que sólo se crearon moving, globs, y creating.
Los directorios copying y deleting no existen todavía. Por defecto, el
comando mkdir, no creará un directorio dentro de un directorio que no existe. La
opción -p o --parents ordena a mkdir crear directorios padre si no existen. Intente
nuevamente usar el comando mkdir, pero con la opción -p:

$ mkdir -p creating moving copying/files copying/directories


deleting/directories deleting/files globs
Ahora no recibirás ningún mensaje de error. Veamos qué directorios existen ahora:

$ find
.
./creating
./moving
./globs
./copying
./copying/files
./copying/directories
./deleting
./deleting/directories
./deleting/files
El comando find se utiliza generalmente para buscar archivos y directorios, pero sin
opciones. Su resultado mostrará un listado de todos los archivos, directorios y
subdirectorios de su directorio actual.

Al listar el contenido de un directorio con ls, las opciones -t y -r son


particularmente útiles. Clasifican la salida por tiempo (-t) e invierten su orden (-r).
Tip
En este caso los archivos más recientes estarán en la parte inferior de la salida de
comandos.

Creación de archivos
Típicamente, los archivos son creados por los programas que trabajan con los datos
guardados en ellos, un archivo vacío puede ser creado usando el comando touch. Si
ejecuta touch en un archivo existente, el contenido del archivo no será cambiado,
pero la fecha y hora de modificación de los archivos será actualizada.

Ejecute el siguiente comando para crear algunos archivos para la lección de


globbing:

$ touch globs/question1 globs/question2012 globs/question23 globs/question13


globs/question14
$ touch globs/star10 globs/star1100 globs/star2002 globs/star2013
Ahora vamos a verificar que todos los archivos existen en el directorio globs:

$ cd globs
$ ls
question1 question14 question23 star1100 star2013
question13 question2012 star10 star2002
Puedes revisar el contenido de un archivo de texto con el comando cat, pruébelo
en uno de los archivos que acabas de crear:

$ cat question14
Dado que touch crea archivos vacíos no debería obtener ninguna salida. Puede
usar echo con > para crear archivos de texto simples. Intento esto:

$ echo hello > question15


$ cat question15
hello
echo muestra el texto en la línea de comandos. El carácter > instruye al shell a
escribir la salida de un comando en el archivo especificado en lugar de su terminal.
En este caso, la salida de echo, escribe la palabra hello en el archivo question15.
Esto no es específico de echo, puede ser usado con cualquier comando.

Tenga cuidado al usar > si el archivo nombrado ya existe, será sobreescrito!


Cambiando el nombre de los archivos
Los archivos se pueden mover o renombran con el comando mv.

Establezca su directorio de trabajo en el directorio moving:

$ cd ~/linux_essentials-2.4/moving
Cree algunos archivos con los que pueda practicar, ya a este punto debería estar
familiarizado con estos comandos:

$ touch file1 file22


$ echo file3 > file3
$ echo file4 > file4
$ ls
file1 file22 file3 file4
Supongamos que file22 es un error tipográfico y debería ser file2. Arréglalo con
el comando mv. Al renombrar un archivo, el primer argumento es el nombre actual,
el segundo es el nuevo nombre:

$ mv file22 file2
$ ls
file1 file2 file3 file4
Tenga cuidado con el comando mv. Si cambia el nombre de un archivo al nombre
de un archivo existente, se sobrescribirá:

$ cat file3
file3
$ cat file4
file4
$ mv file4 file3
$ cat file3
file4
$ ls
file1 file2 file3
Observe como el contenido de file3 es ahora file4. Use la opción -i para hacer
que mv le pregunte si está a punto de sobreescribir un archivo existente:

$ touch file4 file5


$ mv -i file4 file3
mv: overwrite ‘file3’? y

Moviendo archivos

Los archivos se mueven de un directorio a otro con el comando mv.

Cree unos cuantos directorios para mover algunos archivos:

$ cd ~/linux_essentials-2.4/moving
$ mkdir dir1 dir2
$ ls
dir1 dir2 file1 file2 file3 file5
Mover file1 a dir1:

$ mv file1 dir1
$ ls
dir1 dir2 file2 file3 file5
$ ls dir1
file1
Observe como el último argumento de mv es el directorio destino. Cuando el último
argumento de mv es un directorio, los archivos son movidos dentro de este; se
puede especificar múltiples archivos en un solo comando mv:

$ mv file2 file3 dir2


$ ls
dir1 dir2 file5
$ ls dir2
file2 file3
También es posible usar mv para mover y renombrar directorios.
Renombre dir1 a dir3:

$ ls
dir1 dir2 file5
$ ls dir1
file1
$ mv dir1 dir3
$ ls
dir2 dir3 file5
$ ls dir3
file1

Eliminando archivos y directorios

El comando rm puede eliminar archivos y directorios. Mientras que el


comando rmdir sólo puede eliminar directorios:

$ cd ~/linux_essentials-2.4/moving
$ ls
dir2 dir3 file5
$ rmdir file5
rmdir: failed to remove ‘file5’: Not a directory
$ rm file5
$ ls
dir2 dir3
Por defecto rmdir sólo puede borrar directorios vacíos, por lo tanto tuvimos que
usar rm para borrar un archivo regular:

$ cd ~/linux_essentials-2.4/
$ ls
copying creating deleting globs moving
$ rmdir deleting
rmdir: failed to remove ‘deleting’: Directory not empty
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 files
Por defecto, rmdir no elimina un directorio que no esté vacío, utilice rmdir para
eliminar uno de los subdirectorios vacíos del directorio deleting:

$ ls -a deleting/files
. ..
$ rmdir deleting/files
$ ls -l deleting
directories
Eliminar grandes cantidades de archivos o estructuras de directorios con muchos
subdirectorios puede parecer tedioso, pero en realidad es fácil. Por defecto, el
comando rm sólo funciona con archivos normales, la opción -r se utiliza para anular
este comportamiento, pero ¡Cuidado, rm -r podría darte un mal día! Cuando uses
la opción -r, rm no sólo borrará todos los directorios, sino también todo lo que
haya dentro de ese directorio, incluyendo los subdirectorios y sus contenidos:

$ ls
copying creating deleting globs moving
$ rm deleting
rm: cannot remove ‘deleting’: Is a directory
$ ls -l deleting
total 0
drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories
$ rm -r deleting
$ ls
copying creating globs moving
Observe como deleting ha desaparecido, a pesar de que no estaba vacío? Al igual
que mv, rm tiene una opción -i para avisar antes de hacer algo. Use rm -ri para
eliminar directorios de la sección moving que ya no son necesarios:

$ find
.
./creating
./moving
./moving/dir2
./moving/dir2/file2
./moving/dir2/file3
./moving/dir3
./moving/dir3/file1
./globs
./globs/question1
./globs/question2012
./globs/question23
./globs/question13
./globs/question14
./globs/star10
./globs/star1100
./globs/star2002
./globs/star2013
./globs/question15
./copying
./copying/files
./copying/directories
$ rm -ri moving
rm: descend into directory ‘moving’? y
rm: descend into directory ‘moving/dir2’? y
rm: remove regular empty file ‘moving/dir2/file2’? y
rm: remove regular empty file ‘moving/dir2/file3’? y
rm: remove directory ‘moving/dir2’? y
rm: descend into directory ‘moving/dir3’? y
rm: remove regular empty file ‘moving/dir3/file1’? y
rm: remove directory ‘moving/dir3’? y
rm: remove directory ‘moving’? y

Copiando archivos y directorios


El comando cp se utiliza para copiar archivos y directorios. Copie algunos archivos
en el directorio copying:

$ cd ~/linux_essentials-2.4/copying
$ ls
directories files
$ cp /etc/nsswitch.conf files/nsswitch.conf
$ cp /etc/issue /etc/hostname files
Si el último argumento es un directorio, cp creará una copia de los argumentos
anteriores dentro de ese directorio. Al igual que mv, se puede especificar múltiples
archivos a la vez siempre y cuando el objetivo sea un directorio.

Cuando ambos operandos de cp son archivos y existen ambos


archivos, cp sobrescribe el segundo archivo con una copia del primero:

$ cd ~/linux_essentials-2.4/copying/files
$ ls
hostname issue nsswitch.conf
$ cat hostname
mycomputer
$ cat issue
Debian GNU/Linux 9 \n \l

$ cp hostname issue
$ cat issue
mycomputer
Ahora vamos a intentar crear una copia del directorio files dentro del
directorio directories:

$ cd ~/linux_essentials-2.4/copying
$ cp files directories
cp: omitting directory ‘files’
Como puede observar, cp por defecto sólo funciona en archivos individuales, para
copiar un directorio utilice la opción -r. Tenga en cuenta que la opción -r hará
que cp también copie el contenido del directorio que está copiando:
$ cp -r files directories
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
Observe cómo un directorio existente fue usado como destino. El comando cp crea
una copia del directorio fuente dentro de él? Si el destino no existe, lo creará con el
contenido del directorio fuente:

$ cp -r files files2
$ find
.
./files
./files/nsswitch.conf
./files/fstab
./files/hostname
./directories
./directories/files
./directories/files/nsswitch.conf
./directories/files/fstab
./directories/files/hostname
./files2
./files2/nsswitch.conf
./files2/fstab
./files2/hostname

NOTA: el comando cat sirve para emitir el contenido de un archivo en la línea de comandos.

Globbing

Lo que comúnmente se conoce como globbing hace referencia a un lenguaje


simple de coincidencia de patrones. Los shells utilizan este lenguaje para referirse a
grupos de archivos cuyos nombres coinciden con un patrón específico. POSIX.1-
2017 especifica los siguientes caracteres que coinciden con un patrón:

*
Coincide con cualquier número de caracteres, incluyendo los no caracteres.

?
Coincide con cualquier carácter.

[]
Corresponde a una clase de caracteres.
En español, esto significa que puede decirle a su shell que coincida con un patrón
en lugar de una cadena literal de texto. Los usuarios de Linux suelen especificar
varios archivos con un “glob” en lugar de escribir el nombre de cada archivo:

$ cd ~/linux_essentials-2.4/globs
$ ls
question1 question14 question2012 star10 star2002
question13 question15 question23 star1100 star2013
$ ls star1*
star10 star1100
$ ls star*
star10 star1100 star2002 star2013
$ ls star2*
star2002 star2013
$ ls star2*2
star2002
$ ls star2013*
star2013
Shell expande * a cualquier número de caracteres, por tanto interpreta
que star* significa cualquier nombre (archivo o directorio) que coincidan(al inicio)
con esos caracteres. Cuando ejecutas el comando ls star*, shell no ejecuta el
programa ls con un argumento de star*, sino que busca archivos en el directorio
actual que concuerden con el patrón star (incluyendo sólo star). Además convierte
cada archivo que coincida con el patrón en un argumento de ls:

$ ls star*
En lo que al comando ls se refiere, esto es equivalente a:

$ ls star10 star1100 star2002 star2013


El carácter * no significa nada para ls. Para probar esto ejecute el siguiente
comando:

$ ls star\*
ls: cannot access star*: No such file or directory
Cuando se precede un carácter con un \, estás instruyendo a su shell para que no lo
interprete. En este caso, usted desea que ls tenga un argumento de star*.

El carácter ? se expande a cualquier personaje, pruebe los siguientes comandos:

$ ls
question1 question14 question2012 star10 star2002
question13 question15 question23 star1100 star2013
$ ls question?
question1
$ ls question1?
question13 question14 question15
$ ls question?3
question13 question23
$ ls question13?
ls: cannot access question13?: No such file or directory
Los corchetes [] se usan para igualar rangos o clases de caracteres. Estos funcionan
como lo hacen en las expresiones regulares POSIX, excepto que con globs se
usa ^ en lugar de !.
Cree algunos archivos para experimentar:

$ mkdir brackets
$ cd brackets
$ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7
Los rangos entre [] corchetes se expresan mediante un -:

$ ls
file1 file2 file3 file4 file5 file6 file7 filea fileb filec
$ ls file[1-2]
file1 file2
$ ls file[1-3]
file1 file2 file3
Se pueden especificar varios rangos:

$ ls file[1-25-7]
file1 file2 file5 file6 file7
$ ls file[1-35-6a-c]
file1 file2 file3 file5 file6 filea fileb filec
Los corchetes también se pueden utilizar para hacer coincidir un conjunto
específico de caracteres.

$ ls file[1a5]
file1 file5 filea
También puede utilizar el carácter ^ como primer carácter para que coincida con
todo, excepto con ciertos caracteres.

$ ls file[^a]
file1 file2 file3 file4 file5 file6 file7 fileb filec
Lo último que cubriremos en esta lección son las clases de caracteres. Para que
coincidan con una clase de caracteres, use [:classname:]. Por ejemplo, para usar la
clase de dígitos que coincida con los números, debes hacer algo como esto:

$ ls file[[:digit:]]
file1 file2 file3 file4 file5 file6 file7
$ touch file1a file11
$ ls file[[:digit:]a]
file1 file2 file3 file4 file5 file6 file7 filea
$ ls file[[:digit:]]a
file1a
El glob file[[:digit:]a], coincide con file seguido de un dígito o a.

POSIX requiere las siguientes clases de caracteres para todas las localizaciones:

[:alnum:]
Letras y números.

[:alpha:]
Letras mayúsculas o minúsculas.

[:blank:]
Espacios y tabulaciones.
[:cntrl:]
Caracteres de control, por ejemplo, backspace, bell, NAK, escape.

[:digit:]
Números (012345456789).

[:graph:]
Caracteres gráficos (todos los caracteres excepto ctrl y el carácter de
espacio)

[:lower:]
Letras minúsculas (a-z).

[:print:]
Caracteres imprimibles (alnum, punct y el carácter del espacio).

[:punct:]
Caracteres de puntuación, es decir !, &, ".

[:space:]
Caracteres de espacio en blanco, por ejemplo, tabulaciones, espacios, líneas
nuevas.

[:upper:]
Letras mayúsculas (A-Z).

[:xdigit:]
Números hexadecimales (normalmente 0123456789abcdefABCDEF).
Relaciona la columna de comandos con la función que cumplen

ls: Muestra el contenido de un dire ctorio.


Respuesta 1  

cat: Concatena o ve archivos de texto.


Respuesta 2  

cd: Cambia a un directorio diferente .


Respuesta 3  

cp: Copia un archivo.


Respuesta 4  

mkdir Crea un nuevo directorio.


: Respuesta 5  

Retroalimentación
La respuesta correcta es: ls: → Muestra el contenido de un directorio., cat: →
Concatena o ve archivos de texto., cd: → Cambia a un directorio diferente., cp: →
Copia un archivo., mkdir: → Crea un nuevo directorio.

Pregunta 2
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Relaciona la columna de comandos con su resultado

$ echo number Respuesta 1 number


 

$ echo ORDER ORDER


Respuesta 2  

$ echo $number Respuesta 3 5


 
$ echo $ORDER Respuesta 4 desc
 

Retroalimentación
La respuesta correcta es: $ echo number → number, $ echo ORDER → ORDER, $
echo $number → 5, $ echo $ORDER → desc

Pregunta 3
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Relacione las columnas de manera que se indique que parte es un comando,
parámetro o argumentos en la siguiente instrucción: ls -l /etc

Comando: Respuesta 1 ls
 

Opción: -l
Respuesta 2  

Argumento: Respuesta 3 / etc


 

Retroalimentación
La respuesta correcta es: Comando: → ls, Opción: → -l, Argumento: → /etc

Pregunta 4
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Relacione las columnas de manera que se indique que parte es un comando,
parámetro o argumentos en la siguiente instrucción: ls -l -a

Comando: Respuesta 1 ls
 

Opción: -l -a
Respuesta 2  

Argumento: Respuesta 3 N/ A
 

Retroalimentación
La respuesta correcta es: Comando: → ls, Opción: → -l -a, Argumento: → N/A

Pregunta 5
Correcta
Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Relacione las columnas de manera que se indique que parte es un comando,
parámetro o argumentos en la siguiente instrucción: cd /home/user

Comando: Respuesta 1 cd
 

Opción: N/ A
Respuesta 2  

Argumento / home/ user


: Respuesta 3  

Retroalimentación
La respuesta correcta es: Comando: → cd, Opción: → N/A, Argumento: →
/home/user

Pregunta 6
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Relacione las columnas para indicar de que tipo son los siguientes comandos:

cd Respuesta 1 Shell builtin


 

cat Respuesta 2 Comando exte rno


 

exi Shell builtin


t Respuesta 3  

Retroalimentación
La respuesta correcta es: cd → Shell builtin, cat → Comando externo, exit → Shell
builtin

Pregunta 7
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Relacione las siguientes columnas para indicar si la ruta es relativa o absoluta
/home/user/ absoluta
Downloads Respuesta 1  

~/reports relativa
Respuesta 2  

/var absoluta
Respuesta 3  

docs relativa
Respuesta 4  

/ absoluta
Respuesta 5  

Retroalimentación
La respuesta correcta es: /home/user/Downloads → absoluta, ~/reports →
relativa, /var → absoluta, docs → relativa, / → absoluta

Pregunta 8
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Resuelva los siguientes comandos que usan comillas:

touch Crea un archivo llamado touc h


"$USER" Respuesta 1  

touch 'touch' Respuesta 2 tom


 

Retroalimentación
La respuesta correcta es: touch "$USER" → tom, touch 'touch' → Crea un archivo
llamado touch

Pregunta 9
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cómo crearía algunos globs para que coincidan con la siguiente lista de nombres
de archivo: doc100 doc200 doc301 doc401 ? Selecciona 1

a.

doc*
b.

doc[1-4]*

c.

doc?0?

d.

Doc[1-4]0?

e.

Todas las anteriores son correctas

Retroalimentación
La respuesta correcta es: Todas las anteriores son correctas

Pregunta 10
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cómo eliminaría todos los archivos del directorio actual que comienzan con old?
Selecciona 1

a.

Usaría el glob old* con ls

b.

Usaría el glob old* con mv

c.
Usaría el glob old* con rm

d.

Usaría el glob old con rm

Retroalimentación
La respuesta correcta es: Usaría el glob old* con rm

Pregunta 11
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cuál de las siguientes es una posible consecuencia si accidentalmente intentas
copiar tres archivos en la misma línea de comando a un archivo que ya existe en
lugar de un directorio usando cp? Selecciona 1

a.

Los tres archivos se combinarán y se copiarán en el archivo de destino.

b.

cp pedirá confirmación antes de sobrescribir el archivo de destino.

c.

cp sobrescribirá el archivo de destino sin previo aviso.

d.

cp se negará a realizar la operación y generará un mensaje de error.

Retroalimentación
La respuesta correcta es: cp se negará a realizar la operación y generará un mensaje
de error.
Pregunta 12
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cuál de los siguientes archivos log_[a-z]_201?_*_01.txt coinciden? Selecciona 1

a.

log_3_2017_Jan_01.txt

b.

log_+_2017_Feb_01.txt

c.

log_b_2007_Mar_01.txt

d.

log_f_201A_Wednesday_01.txt

Retroalimentación
La respuesta correcta es: log_f_201A_Wednesday_01.txt

Pregunta 13
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cuál de los siguientes comandos no tiene una página man?

a.

cd
b.

ls

c.

cp

d.

rm

Retroalimentación
La respuesta correcta es: cd

Pregunta 14
Parcialmente correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cuál es el comando correcto para crear una variable llamada "today" y asignarle la
fecha para una de las zonas horarias? Selecciona 2

a.

today=$(TZ=GMT date)

b.

today=$(TZ=EST date)

c.

today=$(TZ=PST date)

d.
today=$(TZ=JST date)

Retroalimentación
Las respuestas correctas son: today=$(TZ=GMT date), today=$(TZ=EST date)

Pregunta 15
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cuál es el comando correcto para crear una variable llamada "today1" y asignarle
la fecha del sistema en la zona horaria actual? Selecciona 1

a.

today1=$(date)

b.

today1=$(TZ=GMT date)

c.

today1=$(TZ=EST date)

d.

today1=$(TZ=PST date)

Retroalimentación
La respuesta correcta es: today1=$(date)

Pregunta 16
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Cuál es el resultado que proporciona el comando "du -h"? Selecciona 1
a.

Genera una lista de todos los archivos y directorios en una ubicación específica.

b.

Indica el tamaño de cada archivo y directorio en una ubicación específica.

c.

Muestra el tamaño de todos los archivos, directorios y subdirectorios en una


ubicación específica.

d.

Ordena los archivos y directorios en una ubicación específica por tamaño.

Retroalimentación
La respuesta correcta es: Indica el tamaño de cada archivo y directorio en una
ubicación específica.

Pregunta 17
Parcialmente correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Hay alguna forma de hacer que dos comandos interactúen entre sí? ¿Cuáles son?
Seleccione 2

a.

Sí, mediante el uso de un archivo de configuración compartido entre los comandos.

b.

Sí, a través del uso de variables globales.


c.

Sí, al utilizar el mismo argumento para ambos comandos.

d.

Sí, mediante la escritura de datos en un archivo para ser procesado por otro
comando.

e.

Sí, con el uso de "piping" para enviar la salida de un comando como entrada para
otro.

Retroalimentación
Las respuestas correctas son: Sí, mediante la escritura de datos en un archivo para
ser procesado por otro comando., Sí, con el uso de "piping" para enviar la salida de
un comando como entrada para otro.

Pregunta 18
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Por qué los alias podrían ser útiles para un usuario? Selecciona 1

a.

Para abreviar comandos largos y complicados

b.

Para crear comandos nuevos

c.

Para ejecutar comandos de forma remota


d.

Para verificar la documentación del comando

Retroalimentación
La respuesta correcta es: Para abreviar comandos largos y complicados

Pregunta 19
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Qué hace el comando rmdir -p? Pruébelo y vea cómo difiere de rm -r. Selecciona 1

a.

Crea un directorio si no existe, y su árbol de padres si es necesario.

b.

Elimina un directorio y su contenido de manera recursiva.

c.

Hace que rmdir se comporte de manera similar a mkdir -p. Si pasa un árbol de
directorios vacíos, los eliminará a todos.

d.

Crea un directorio vacío.

Retroalimentación
La respuesta correcta es: Hace que rmdir se comporte de manera similar a mkdir -p.
Si pasa un árbol de directorios vacíos, los eliminará a todos.

Pregunta 20
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta


Texto de la pregunta
¿Qué hace la opción -v en los comandos mkdir, rm y cp en Linux? Selecciona 1

a.

Activa la opción de verificación para asegurarse de que la operación se haya


completado correctamente.

b.

Activa la salida detallada para mostrar lo que el comando está haciendo.

c.

Realiza una copia de seguridad de los archivos antes de ejecutar la operación.

d.

Crea una lista de los archivos afectados por la operación.

Retroalimentación
La respuesta correcta es: Activa la salida detallada para mostrar lo que el comando
está haciendo.

Pregunta 21
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
¿Qué sucede cuando usa mv para mover un directorio dentro de sí mismo?
Selecciona 1

a.

El directorio se mueve sin problemas.


b.

Recibirá un mensaje de error que indica que mv no podrá hacer eso.

c.

El directorio se copia en sí mismo.

d.

El directorio se borra.

Retroalimentación
La respuesta correcta es: Recibirá un mensaje de error que indica que mv no podrá
hacer eso.

Pregunta 22
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Considere la siguiente salida de ls -lh. Tenga en cuenta que los directorios se
indican con una d al comienzo de la línea.
drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg
-rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg
-rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg
-rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg
-rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png
-rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png
-rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png
-rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg
drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg
-rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg
-rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg
drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
Cuando ejecutas el comando ls -lrS. ¿Qué pasará y qué archivo estará al principio?
Selecciona 1

a.

Las tres carpetas son todas de 4.0K, que es el tamaño de archivo más pequeño.
Luego el comando ls ordenará por defecto los directorios alfabéticamente. El
primer archivo que se mostrará es scary.jpg.

b.

Se mostraran los archivos de tamaño mayor. Luego el comando ls ordenará por


defecto los directorios alfabéticamente. El primer archivo que se mostrará es
img_0075.jpg

c.

Se mostraran los archivos de tamaño mayor. Luego el comando ls ordenará por


fecha de creación. El primer archivo que se mostrará es img_0075.jpg

d.

Las tres carpetas son todas de 4.0K, que es el tamaño de archivo más pequeño.
Luego el comando ls ordenará por defecto los directorios alfabéticamente. El
primer archivo que se mostrará es tobermory.jpg

Retroalimentación
La respuesta correcta es: Las tres carpetas son todas de 4.0K, que es el tamaño de
archivo más pequeño. Luego el comando ls ordenará por defecto los directorios
alfabéticamente. El primer archivo que se mostrará es scary.jpg.

Pregunta 23
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Considere la siguiente salida de ls -lh para responder las siguiente pregunta. Tenga
en cuenta que los directorios se indican con una d al comienzo de la línea.
drwxrwxrwx 5 eric eric 4.0K Apr 26 2011 China/
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0066.jpg
-rwxrwxrwx 1 eric eric 1.5M Jul 18 2011 img_0067.jpg
-rwxrwxrwx 1 eric eric 1.6M Jul 18 2011 img_0074.jpg
-rwxrwxrwx 1 eric eric 1.8M Jul 18 2011 img_0075.jpg
-rwxrwxrwx 1 eric eric 46K Jul 18 2011 scary.jpg
-rwxrwxrwx 1 eric eric 469K Jan 29 2018 Screenshot from 2017-08-13 21-22-24.png
-rwxrwxrwx 1 eric eric 498K Jan 29 2018 Screenshot from 2017-08-14 21-18-07.png
-rwxrwxrwx 1 eric eric 211K Jan 29 2018 Screenshot from 2018-01-06 23-29-30.png
-rwxrwxrwx 1 eric eric 150K Jul 18 2011 tobermory.jpg
drwxrwxrwx 6 eric eric 4.0K Apr 26 2011 Tokyo/
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 081.jpg
-rwxrwxrwx 1 eric eric 1.4M Jul 18 2011 Toronto 085.jpg
-rwxrwxrwx 1 eric eric 944K Jul 18 2011 Toronto 152.jpg
-rwxrwxrwx 1 eric eric 728K Jul 18 2011 Toronto 173.jpg
drwxrwxrwx 2 eric eric 4.0K Jun 5 2016 Wallpapers/
Describa lo que espera ver al ejecutar ls -ad */.

a.

Este comando mostrará todos los subdirectorios incluidos los ocultos.

b.

Este comando mostrará todo menos los archivos ocultos

c.

Este comando mostrará unicamente los archivos

d.

Este comando mostrará unicamente los directorios

Retroalimentación
La respuesta correcta es: Este comando mostrará todos los subdirectorios incluidos
los ocultos.

Pregunta 24
Correcta

Puntúa 1 sobre 1
Señalar con bandera la pregunta

Texto de la pregunta
De acuerdo a lo que dice el manual del comando cp (man cp) ¿Qué opción usaría
para hacer una copia de un archivo y hacer que los permisos y la hora de
modificación coincidan con el original?

a.

cp -p [nombre de archivo]

b.

cp -n [nombre de archivo]

c.

cp -l [nombre de archivo]

d.

cp -s [nombre de archivo]

Retroalimentación
La respuesta correcta es: cp -p [nombre de archivo]

Pregunta 25
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Ejecute el comando ls -lh en un directorio que contenga subdirectorios. Tenga en
cuenta el tamaño indicado de estos directorios. ¿Te parecen correctos estos
tamaños de archivo? ¿Representan con precisión el contenido de todos los archivos
dentro de ese directorio? Selecciona 1

a.
Sí, los tamaños de archivo de los directorios son correctos y representan con
precisión el contenido de todos los archivos dentro del directorio.

b.

No, los tamaños de archivo de los directorios no son correctos, pero representan
con precisión el contenido de todos los archivos dentro del directorio.

c.

No, los tamaños de archivo de los directorios no son correctos y no representan


con precisión el contenido de todos los archivos dentro del directorio.

d.

No se puede determinar si los tamaños de archivo de los directorios son correctos


o no.

Retroalimentación
La respuesta correcta es: No, los tamaños de archivo de los directorios no son
correctos y no representan con precisión el contenido de todos los archivos dentro
del directorio.

Pregunta 26
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el resultado del siguiente comando tom@tom-pc$ touch ‘touch’ Selecciona
1

a.

Crea un archivo vacío llamado touch

b.

Crea un archivo vacío llamado ‘touch’


c.

Crea un archivo vacío llamado touch.txt

d.

Crea un archivo vacío llamado ‘touch’.txt

Retroalimentación
La respuesta correcta es: Crea un archivo vacío llamado touch

Pregunta 27
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Explique el comando cp -u. Selecciona 1

a.

La opción -u hace que cp sólo copie un archivo si el destino no existe o es más


antiguo que el archivo de origen.

b.

La opción -u hace que cp sólo copie un archivo si el destino existe y es más antiguo
que el archivo de origen.

c.

La opción -u hace que cp sólo copie un archivo si el destino no existe o es más


reciente que el archivo de origen.

d.

La opción -u hace que cp sólo copie un archivo si el destino existe o es más


reciente que el archivo de origen.
Retroalimentación
La respuesta correcta es: La opción -u hace que cp sólo copie un archivo si el
destino no existe o es más antiguo que el archivo de origen.

Pregunta 28
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
La siguiente estructura de arbol es el resultado del comando $ sudo tree -F
/etc/udev Nota: Los directorios terminan con una barra con diagonal (/).
//
├── etc/
│ ├── network/
│ │ └── interfaces
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d/
│ └── udev.conf
└── home/
├── lost+found/
└── user/
└── Documents/
12 directorios, 5 archivos
¿Cuál será la salida del comando ls -a si se ejecuta después del comando $ cd
/etc/udev? Selecciona 1

a.

. .. rules.d udev.conf

b.

. .. interfaces
c.

. .. documents

d.

. .. lost+found udev.conf

Retroalimentación
La respuesta correcta es: . .. rules.d udev.conf

Pregunta 29
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
NO EJECUTE ESTE COMANDO: ¿Qué cree que hará rm -ri /* ? Selecciona 1

a.

Eliminará todos los archivos en el directorio actual.

b.

Eliminará todos los archivos y directorios en el directorio raíz del sistema.

c.

Creará un nuevo archivo llamado "-ri".

d.

Cambiará el nombre del archivo /*.

Retroalimentación
La respuesta correcta es: Eliminará todos los archivos y directorios en el directorio
raíz del sistema.
Pregunta 30
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Selecciona el resultado del siguiente comando tom@tom-pc$ touch “$USER”
Selecciona 1

a.

Crea un archivo vacío llamado tom

b.

Crea un archivo vacío llamado $USER

c.

Crea un archivo vacío llamado $USER.txt

d.

Crea un archivo vacío llamado tom.txt

Retroalimentación
La respuesta correcta es: Crea un archivo vacío llamado tom

Pregunta 31
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Seleccione la opción correcta en la que se crea un directorio con / en su nombre, se
consulta y se elimina Selecciona 1
a.

$ mkdir my\dir $ ls 'my\dir' $ rmdir 'my\dir'

b.

$ mkdir my\dir $ ls my\dir $ rmdir 'my\dir'

c.

$ mkdir my\dir $ ls 'my\dir' $ rmdir my\dir

d.

$ mkdir my\dir $ ls my\dir $ rmdir my\dir

Retroalimentación
La respuesta correcta es: $ mkdir my\dir $ ls 'my\dir' $ rmdir 'my\dir'

Pregunta 32
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Seleccione los directorios que podría crear el comando mkdir -p
/tmp/outfiles/text/today /tmp/infiles/text/today /tmp Selecciona 2

a.

/tmp/outfiles

b.

/tmp/outfiles/text

c.
/tmp/outfiles/text/today

d.

/tmp/infiles

e.

/tmp/infiles/text

f.

/tmp/infiles/text/today

Retroalimentación
Las respuestas correctas son: /tmp/outfiles/text/today, /tmp/infiles/text/today

Pregunta 33
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Suponiendo que usted ha ejecutado el comando $ cd “this is a test”. ¿Qué sucede
cuando se escribe el siguiente texto “cd this” seguido de la tecla TAB? Selecciona 1

a.

Se entra al archivo

b.

Se entra al directorio

c.

Se borra el directorio
d.

Se auto completa

Retroalimentación
La respuesta correcta es: Se auto completa

Pregunta 34
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Agregue el valor de la variable HOME a ME usando el delimitador : Luego muestre
el contenido de la variable ME. Separe las instrucciones usando un guión (-)
ME
Respuesta: 

Retroalimentación
La respuesta correcta es: ME=$ME:$HOME – echo $ME

Pregunta 35
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Con un comando y usando brace expansion en Bash (revise la página del manual
para Bash), cree 5 archivos numerados del 1 al 5 con el prefijo game (game1,
game2, …).
touch game{1..5
Respuesta: 

Retroalimentación
La respuesta correcta es: touch game{1..5}

Pregunta 36
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escriba el comando para eliminar los directorios Documents, Downloads y Test
suponiendo que se encuentra en el directorio home
rm -r Documents Downloads Test
Respuesta: 

Retroalimentación
La respuesta correcta es: rm -r Documents Downloads Test

Pregunta 37
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escriba el comando para mostar el contenido del directorio actual y de todos sus
sub directorios
ls -R
Respuesta: 

Retroalimentación
La respuesta correcta es: ls -R

Pregunta 38
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el comando de terminal para crear una variable de entorno llamada ORDER
export ORDER
Respuesta: 

Retroalimentación
La respuesta correcta es: export ORDER=desc

Pregunta 39
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el comando para crear una variable local llamada nr_files y asignele como
contenido el número de líneas encontradas en el archivo /etc/passwd. Sugerencia:
mire el comando wc y la sustitución de comandos, tampoco se olvide de las
comillas.
nr_files
Respuesta: 

Retroalimentación
La respuesta correcta es: nr_files=’wc -l /etc/passwd’

Pregunta 40
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el comando para crear una variable de entorno llamada ME y asignale el
valor de la variable USER.
ME=USER
Respuesta: 

Retroalimentación
La respuesta correcta es: export ME=$USER

Pregunta 41
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el comando para crear una variable local llamada number asignándole el
valor 5
NUMBER=5
Respuesta: 

Retroalimentación
La respuesta correcta es: number=5

Pregunta 42
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el comando para localizar el archivo README del sistema. La salida
esperada es: /etc/alternatives/README /etc/init.d/README /etc/rc0.d/README
find
Respuesta: 
Retroalimentación
La respuesta correcta es: locate -l 3 README

Pregunta 43
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Escribe el comando que se tiene que ejecutar entre la creación de un archivo y la
ejecución del comando locate para que este detecte el nuevo archivo.
.
Respuesta: 

Retroalimentación
La respuesta correcta es: sudo updatedb

Pregunta 44
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Si su ubicación actual es el directorio root (/) el comando más corto para llegar a
/home/lost+found sería: $ cd home/lost+found Su ubicación actual es root (/).
Ingrese el comando más corto para navegar al directorio llamado /etc/network/
.
Respuesta: 

Retroalimentación
La respuesta correcta es: cd etc/network

Pregunta 45
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Si su ubicación actual es el directorio root (/) el comando más corto para llegar a
/home/lost+found sería: $ cd home/lost+found Su ubicación actual es
/home/user/Documents/. Navegue al directorio llamado /etc/
.
Respuesta: 
Retroalimentación
La respuesta correcta es: cd /etc

Pregunta 46
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Si su ubicación actual es el directorio root (/) el comando más corto para llegar a
/home/lost+found sería: $ cd home/lost+found Su ubicación actual es
/etc/systemd/system/. Navegue al directorio llamado /home/user/.
.
Respuesta: 

Retroalimentación
La respuesta correcta es: cd /home/user

Pregunta 47
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Supongamos que un usuario ha ingresado los siguientes comandos: $ mkdir "this is
a test" ¿Qué comando cd le permitiría ingresar a este directorio?
..
Respuesta: 

Retroalimentación
La respuesta correcta es: cd ‘this is a test’

Pregunta 48
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Suponiendo que ha creado un archivo llamado testlpi con el comando touch en el
directorio de inicio. Escriba el comando locate, busque ese archivo y haga que
devuelva la siguiente salida /home/user/testlpi
.
Respuesta: 
Retroalimentación
La respuesta correcta es: touch test $ locate test /home/user/testlpi

Pregunta 49
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Suponiendo que ha creado un archivo llamado testlpi. Escriba el comando
completo para buscar dicho archivo con ayuda del comando find usando una ruta
absoluta para un usuario llamado user
,
Respuesta: 

Retroalimentación
La respuesta correcta es: find /home/user/ -name testlpi

Pregunta 50
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Suponiendo que tiene los siguientes 5 archivos game1, game2, game3, game4,
game5. Elimine los 5 archivos con un solo comando, utilizando un carácter especial
diferente (revise Pathname Expansion en las páginas del manual de Bash).
...
Respuesta: 

Retroalimentación
La respuesta correcta es: rm game?

Pregunta 51
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Usando el comando find escriba la instrucción para encontrar todos los archivos
que terminan con numero en el directorio de inicio usando una ruta relativa.
.
Respuesta: 

Retroalimentación
La respuesta correcta es: find ~ -name " [0-9]"

Pregunta 52
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Usando el comando locate escriba la instrucción para encontrar todos los archivos
que terminan con numero en el directorio de inicio usando una ruta relativa.
.
Respuesta: 

Retroalimentación
La respuesta correcta es: locate ~/ [0-9]

Pregunta 53
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Use la siguiente estructura de archivos para responder las siguientes tres preguntas:
/ ├── etc/
│ ├── network/
│ │ └── interfaces/
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d
│ └── udev.conf
└── home/
├── lost+found/
├── user/
│ └── Documents/
└── michael/
└── Music/
¿Qué comando navegará en el directorio network independientemente de su
ubicación actual?
.
Respuesta: 

Retroalimentación
La respuesta correcta es: cd /etc/network

Pregunta 54
Incorrecta

Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Use la siguiente estructura de archivos para responder las siguientes tres preguntas:
/ ├── etc/
│ ├── network/
│ │ └── interfaces/
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d
│ └── udev.conf
└── home/
├── lost+found/
├── user/
│ └── Documents/
└── michael/
└── Music/
¿Qué comando puede ingresar user para navegar en su directorio Documents
desde /etc/udev? Use una ruta relativa.
.
Respuesta: 

Retroalimentación
La respuesta correcta es: cd ~/Documents

Pregunta 55
Incorrecta
Puntúa 0 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Use la siguiente estructura de archivos para responder las siguientes tres preguntas:
/ ├── etc/
│ ├── network/
│ │ └── interfaces/
│ ├── systemd/
│ │ ├── resolved.conf
│ │ ├── system/
│ │ ├── system.conf
│ │ ├── user/
│ │ └── user.conf
│ └── udev/
│ ├── rules.d
│ └── udev.conf
└── home/
├── lost+found/
├── user/
│ └── Documents/
└── michael/
└── Music/
¿Qué comando puede ingresar user para navegar en el directorio Music de
michael? Use una ruta relativa
.
Respuesta: 

Retroalimentación
La respuesta correcta es: cd ~michael/Music

Pregunta 56
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
Además de usar -i. ¿Es posible evitar que mv sobrescriba los archivos de destino?

Verdadero 

Falso
Retroalimentación
La respuesta apropiada es 'Verdadero

Pregunta 57
Correcta

Puntúa 1 sobre 1

Señalar con bandera la pregunta

Texto de la pregunta
El comando cd no tiene una página man porque es un comando interno de Shell

Verdadero 

Falso

Retroalimentación
La respuesta apropiada es 'Verdadero

También podría gustarte