Linux Unidad2
Linux Unidad2
Z shell (zsh)
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
current_directory
shell_type
$ 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.
$ 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.
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
$ type echo
$ 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:
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.
$ 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:
$ echo I am $USER
I am tom
I am $USER
$ echo I am $USER
I am tom
I am $USER
$ echo $USER
carol
$ echo \$USER
$USER
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:
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.
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.
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 =.
$ 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
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.
$ 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ó.
$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which nano
/usr/bin/nano
Ahora nuestro comando funciona de nuevo.
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.
laSección Descripción
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.
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.
~$ 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.
$ 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.
$ 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.
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.
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.
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:
/
└── 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.
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.
Directorios principales
$ 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.
$ 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.
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.
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.
$ 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.
$ less ~user/Documents/Reports/report2018.txt
Cualquier ruta de archivo que contenga el carácter ~ se llama ruta relative-to-home.
$ 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.
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”.
$ 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.
$ 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:
$ 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.
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.
$ 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:
$ 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:
$ 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:
Moviendo 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:
$ ls
dir1 dir2 file5
$ ls dir1
file1
$ mv dir1 dir3
$ ls
dir2 dir3 file5
$ ls dir3
file1
$ 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
$ 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.
$ 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
*
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 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*.
$ 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
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
Texto de la pregunta
Relaciona la columna de comandos con su resultado
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
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
Retroalimentación
La respuesta correcta es: Comando: → ls, Opción: → -l, Argumento: → /etc
Pregunta 4
Correcta
Puntúa 1 sobre 1
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
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
Retroalimentación
La respuesta correcta es: Comando: → cd, Opción: → N/A, Argumento: →
/home/user
Pregunta 6
Correcta
Puntúa 1 sobre 1
Texto de la pregunta
Relacione las columnas para indicar de que tipo son los siguientes comandos:
Retroalimentación
La respuesta correcta es: cd → Shell builtin, cat → Comando externo, exit → Shell
builtin
Pregunta 7
Correcta
Puntúa 1 sobre 1
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
Texto de la pregunta
Resuelva los siguientes comandos que usan comillas:
Retroalimentación
La respuesta correcta es: touch "$USER" → tom, touch 'touch' → Crea un archivo
llamado touch
Pregunta 9
Correcta
Puntúa 1 sobre 1
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.
Retroalimentación
La respuesta correcta es: Todas las anteriores son correctas
Pregunta 10
Correcta
Puntúa 1 sobre 1
Texto de la pregunta
¿Cómo eliminaría todos los archivos del directorio actual que comienzan con old?
Selecciona 1
a.
b.
c.
Usaría el glob old* con rm
d.
Retroalimentación
La respuesta correcta es: Usaría el glob old* con rm
Pregunta 11
Correcta
Puntúa 1 sobre 1
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.
b.
c.
d.
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
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
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
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
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
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.
c.
d.
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
Texto de la pregunta
¿Hay alguna forma de hacer que dos comandos interactúen entre sí? ¿Cuáles son?
Seleccione 2
a.
b.
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
Texto de la pregunta
¿Por qué los alias podrían ser útiles para un usuario? Selecciona 1
a.
b.
c.
Retroalimentación
La respuesta correcta es: Para abreviar comandos largos y complicados
Pregunta 19
Correcta
Puntúa 1 sobre 1
Texto de la pregunta
¿Qué hace el comando rmdir -p? Pruébelo y vea cómo difiere de rm -r. Selecciona 1
a.
b.
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.
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
a.
b.
c.
d.
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
Texto de la pregunta
¿Qué sucede cuando usa mv para mover un directorio dentro de sí mismo?
Selecciona 1
a.
c.
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
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.
c.
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
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.
b.
c.
d.
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
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.
d.
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
Texto de la pregunta
Escribe el resultado del siguiente comando tom@tom-pc$ touch ‘touch’ Selecciona
1
a.
b.
d.
Retroalimentación
La respuesta correcta es: Crea un archivo vacío llamado touch
Pregunta 27
Incorrecta
Puntúa 0 sobre 1
Texto de la pregunta
Explique el comando cp -u. Selecciona 1
a.
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.
d.
Pregunta 28
Incorrecta
Puntúa 0 sobre 1
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
Texto de la pregunta
NO EJECUTE ESTE COMANDO: ¿Qué cree que hará rm -ri /* ? Selecciona 1
a.
b.
c.
d.
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
Texto de la pregunta
Selecciona el resultado del siguiente comando tom@tom-pc$ touch “$USER”
Selecciona 1
a.
b.
c.
d.
Retroalimentación
La respuesta correcta es: Crea un archivo vacío llamado tom
Pregunta 31
Incorrecta
Puntúa 0 sobre 1
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.
b.
c.
d.
Retroalimentación
La respuesta correcta es: $ mkdir my\dir $ ls 'my\dir' $ rmdir 'my\dir'
Pregunta 32
Correcta
Puntúa 1 sobre 1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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