P1. ¿Cuál de los tres métodos copiará el directorio llamado "photo dir" recursivamente desde el directorio de inicio del usuario a /backups?
cp -R "~/photo dir" /backups #method1
cp -R ~"/photo dir" /backups #method2
cp -R ~/"photo dir" /backups #method3
- Ninguno de los tres métodos se expandirá al directorio de inicio del usuario. Solo usando
"$HOME/photo dir"
tendrá éxito. - Sólo el método 1 se expandirá
"~/"
al directorio principal del usuario y, a continuación, agregue el nombre del directorio citado que incluye un espacio. - Sólo el método 2 se expandirá
"~/"
al directorio principal del usuario y, a continuación, agregue el nombre del directorio citado que incluye un espacio. - Sólo el método 3 se expandirá
"~/"
al directorio principal del usuario y, a continuación, agregue el nombre del directorio citado que incluye un espacio.
$ ls -1
Beach photo1.jpg
Photo1.jpg
Photo2.jpg
Script.sh
$ cat script.sh
for i in $(ls *.jpg); do
mv $i ${i}.bak
done
- ls: no se puede acceder a un archivo inexistentearchivo: No existe tal archivo o directorio
- El bucle for se dividirá en los límites de las palabras y beach photo1.jpg tiene un espacio en él.
- El comando mv fallará porque el corchete rizado es un carácter especial en Bash y no se puede usar en los nombres de los archivos.
- La ejecución de script.sh se realizará correctamente ya que el comando ls crea una lista de archivos en el directorio actual y para bucles a través de esa lista, cambie el nombre de los archivos con una extensión .bak.
-
( command )
-
sh command
-
{ command; }
-
(( command ))
echo "1 2 3" | awk '{for (i=1; i<=NF; i++) s=s+$i};END {print s}'
- 6
- 123
- 3
- 600
P5. El siguiente comando buscará en el sistema de archivos raíz los archivos llamados "finance.db". En este contexto, ¿qué información se envía a /dev/null?
find / -name "finance.db" 1>results.txt 2>/dev/null
- los nombres de los archivos que no coinciden con las finanzas.db
- información enviada al error estándar, por ejemplo, errores que el comando find muestra a medida que se ejecuta
- los nombres de los archivos que coinciden con las finanzas.db
- información enviada a la salida estándar, es decir, la ruta de acceso a los archivos que ha localizado el comando find
P6. Para eliminar permanentemente las líneas vacías de un archivo llamado textfile, ¿qué comando podría usar?
-
sed -i '/^$/d' textfile
-
sed '/^$/d' textfile
-
cat textfile | sed '/^$/d
-
sed -i 's/^$//' textfile
awk -F: '/user1/{print $1 "-" $3 "-" $6}' /etc/passwd
- Mostraría el nombre de usuario, el UID y el directorio de inicio del usuario1 separados por dos puntos.
- Imprimiría el UID, GID y el directorio de inicio del usuario1 separados por guiones.
- Imprimiría el UID, el comentario y el directorio de inicio del usuario1 separados por guiones.
- Mostraría el nombre de usuario, el UID y el directorio de inicio del usuario1 separados por guiones.
- Hará que Bash salga si una función o subshell devuelve un código de estado distinto de cero.
- Hará que Bash salga si un condicional devuelve un código de estado distinto de cero.
- Hará que Bash se cierre si las asignaciones locales, declaradas o tipográficas devuelven un código de estado distinto de cero.
- Hará que Bash salga si un comando, una lista de comandos, un comando compuesto o potencialmente una canalización devuelve un código de estado distinto de cero.
- obtener
- argumento
- leer
- entrada
mysql < file.sql > file.txt
- una copia del contenido del archivo.sql
- un error que indica que esta es una sintaxis no válida
- el resultado de error del comando MySQL
- la salida sin error del comando MySQL
Nota: consulte la siguiente pregunta para obtener una variante.
mysql < file.sql > out.txt
- La salida en la pantalla será idéntica a la salida.txt
- No habrá salida en la pantalla ya que se está redirigiendo a out.txt.
- La salida en la pantalla será idéntica a out.txt más números de línea.
- El archivo out.txt contendrá STDERR y STDOUT irá a la pantalla.
Nota: consulte la pregunta anterior para ver si hay una variante.
- Cuando el comando crea archivos, estos serán propiedad del propietario del grupo del comando.
- El bit SUID permite a cualquiera ejecutar el comando sin importar qué otros permisos se establezcan.
- Cuando se ejecuta el comando, sus privilegios de ejecución se elevan al usuario propietario del comando.
- Cuando se ejecuta el comando, sus privilegios de ejecución se elevan al propietario del grupo del comando.
-
cat {$1,textfile}
-
cat textfile | awk [print $1]
-
cat textfile | awk '{print $1}'
-
awk textfile {print $1}
P14. ¿Cuál es el método abreviado de teclado para llamar a la búsqueda del historial de Bash como se muestra a continuación?
(reverse-i-search)`':
- Esc + R
- Ctrl + H
- Ctrl + R
- Alt + R
-
var=$( expr 10 / 8 )
-
(( var= 10 /8 ))
-
var=$(( 10 / 8 ))
-
var=$(echo 'scale=2; 10 / 8' | bc)
txt=Penguins
[[ $txt =~ [a-z]{8} ]]; echo $?
- 0, que representa 'true', porque la variable "txt" contiene ocho letras
- 0, que representa 'verdadero', ¡porque todo el mundo ama a los pingüinos!
- 1, que representa 'false', porque la variable "txt" es más larga que ocho caracteres
- 1, que representa 'false', porque la variable "txt" no contiene ocho letras minúsculas entre a y z
HAL>
-
SHELL="HAL\>"
-
SHELL="HAL>"
-
export PS1="HAL>"
-
PS1="HAL\>"
VAR="/var/www/html/website.com/html/"
echo "${VAR#*/html}"
-
/website.com/html/
-
/html/website.com/html/
-
/var/www/html/website.com/
- Nada se hará eco en la pantalla.
P19. Si se le solicita texto en la entrada estándar, puede decirle al comando que ha terminado de ingresar texto con qué combinación de teclas.
- Ctrl + A (Windows) o Comando + A (Mac)
- Ctrl + E (Windows) o Comando + E (Mac)
- Ctrl + D (Windows) o Comando + D (Mac)
- Ctrl + Z (Windows) o Comando + Z (Mac)
P20. Para que un script Bash se ejecute como un comando del sistema operativo, debe comenzar con una línea shebang. ¿Cómo es esto?
-
#!/usr/bin/env bash
-
~/usr/bin/env bash
-
'$!/usr/bin/env bash
-
#/usr/bin/env bash
The date is: Sun Mar 24 12:30:06 CST 2019!
-
echo "The date is: !"
-
echo "The date is: date!"
-
echo "The date is: (date)!"
-
echo "The date is: $(date)!"
P22. Supongamos que su directorio de trabajo actual es su directorio de inicio. ¿Cómo podría ejecutar el script demo.sh que se encuentra en su directorio principal? Encuentra tres respuestas correctas.
A. /home/demo.sh
B. ./demo.sh
C. ~/demo.sh
D. bash /home/demo.sh
E. bash demo.sh
- B, C, E
- A, B, C
- C, D, E
- B, D, E
-
find . -type html
-
find . -name *.html
-
find *.html
-
find . -name \*.html -print
El segundo parece estar bien, pero expandirá el * si hay algún archivo de .html en su directorio de trabajo.
cat < in.txt > out.txt
- La salida de la línea de comandos. Por defecto, STDIN proviene del teclado.
- Nada porque no puede redirigir desde el archivo (in.txt) a otro archivo (out.txt). Solo puede redirigir desde un comando a un archivo.
- Sería el contenido de in.txt.
- Nada. La redirección creará un nuevo archivo vacío, pero no habrá ninguna salida del comando cat para redirigir.
(( $a == $b ))
echo $?
- Se repite entre los valores de
$a
y$b
. - Prueba si los valores de las variables
$a
y$b
son iguales. - Vuelve
$b
si es mayor que$a
. - Vuelve
$a
si es mayor que$b
.
P26. ¿Qué usas en una declaración de caso para decirle a Bash que has terminado con una prueba específica?
-
; ;
-
: :
-
done
-
$$
#!/usr/bin/env bash
case $num in
1)
echo "one"
;;
2)
echo "two"
;;
*)
echo "a mystery"
;;
esac
- un caso que coincide con cualquier valor, proporcionando una opción predeterminada si nada más captura ese valor
- un caso solo para lo que sucede cuando el carácter del asterisco se pasa al guión
- la acción de todos los demás asuntos combinados
- una acción que se realiza para cualquier entrada, incluso si coincide con una condición especificada
-
touch file{1+10}.txt
-
touch file{1-10}.txt
-
touch file{1..10}.txt
-
touch file(1..10).txt
-
$$
-
$?
-
$!
-
$@
#!/bin/bash
fname=john
john=thomas
echo ${!fname}
- juan
- tomás
- Error de sintaxis
- en blanco
Aquí hay una versión basada en texto de Q.30:
ll
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file1.txt
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file2.txt
..
ll | sed -e 's,file,text,g'
- A
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file1.file
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file2.file
..
- B
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file1.txt
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file2.txt
..
- C
-rw-r--r-- 1 frankmolev staff 68 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
- D
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 text1.txt
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 text.txt
..
#!/bin/bash
read -p "Enter your pet type." PET
if [ $PET = dog ] ;then
echo "You have a dog"
fi
- Si el valor de PET no coincide con dog, el script devolverá un código de estado distinto de cero.
- No hay nada de malo en ello. La condición comprueba perfectamente el valor del PET.
- Fallará si el usuario presiona la tecla Enter (Return) sin ingresar un nombre de mascota cuando se le solicite.
- La declaración de entonces debe estar en una línea separada.
- Simplemente funciona por defecto.
-
history --shared
-
history --combined
-
shopt -s histappend
-
$@
trata cada argumento citado como una entidad separada.$*
trata toda la cadena de argumentos como una entidad. -
$*
trata cada argumento citado como una entidad separada.$@
trata toda la cadena de argumentos como una entidad. -
$*
se utiliza para contar los argumentos pasados a un script,$@
proporciona todos los argumentos en una cadena. -
$*
es el comodín que incluye todos los argumentos con división de palabras,$@
contiene los mismos datos pero en una matriz.
if [ -f file.txt ]; then
echo "file.txt exists"
fi
-
/usr/bin/test
-
/usr/bin/[
-
the built-in [ command
-
/usr/bin/[[
#!/bin/bash
Linux=('Debian' 'Redhat' 'Ubuntu' 'Android' 'Fedora' 'Suse')
x=3
Linux=(${Linux[@]:0:$x} ${Linux[@]:$(($x + 1))})
echo "${Linux[@]}"
- Debian Redhat Ubuntu Android Fedora Suse
- Android
- Fedora Suse
- Debian Redhat Ubuntu Fedora Suse
-
/etc/bash.conf
-
~/.profile
-
/etc/bashprofile
-
~/profile
P38. Dados los permisos enumerados en los datos.txt ¿es posible que el usuario2 pueda tener permisos de lectura, escritura y ejecución en los datos.txt?
$ ls -l
total 0
-rwx------+ 1 user1 user1 0 Oct 27 10:54 data.txt
- No, está claro que user2 no tiene permisos de lectura, escritura y ejecución.
- Sí, el
+
al final de la cadena de permisos de 10 dígitos significa que hay una lista de control de acceso. Esto podría dar a user2 permisos no visibles porls -l
. - Es posible que SELinux proporcione permisos de lectura, escritura y ejecución para el usuario2 que no son visibles con
ls -l
. - Sí, el
+
al final de la cadena de permisos de 10 dígitos significa que hay un conjunto de atributos extendido. Esto podría otorgar a user2 permisos para leer, escribir y ejecutar datos.txt.
#!/bin/bash
declare -A ARRAY=([user1]=bob [user2]=ted [user3]=sally)
KEYS=(${!ARRAY[@]})
for (( i=0; $i < ${#ARRAY[@]}; i+=1 ));do
echo ${KEYS[$i]} - ${ARRAY[${KEYS[$i]}]}
done
- Ordena la matriz asociativa denominada ARRAY y almacena los resultados en una matriz indexada denominada KEYS. A continuación, utiliza esta matriz ordenada para recorrer la matriz asociativa ARRAY.
- Usando un estilo C para el bucle, recorre la matriz asociativa denominada ARRAY utilizando las claves de la matriz asociativa y genera tanto la clave como los valores de cada elemento.
- Crea una matriz indexada de la matriz asociativa denominada ARRAY. A continuación, utiliza un estilo C para el bucle y la matriz indexada para recorrer todos los elementos de la matriz asociativa, emitiendo la clave y el valor de cada elemento de la matriz utilizando el número de índice.
- Crea una matriz asociativa llamada ARRAY, que recorre utilizando un estilo C para bucle y los números de índice de cada elemento en las claves de la matriz asociativa, emitiendo el valor de cada elemento.
ls Hello[[.vertical-line.]]World
- Nada, este es un archivo glob no válido.
-
Hello.vertical-line.World
-
Hello[[.vertical-line.]]World
-
Hello|World
ls nonexistentfile | grep "No such file" > out.txt
- No existe tal archivo
- ls: no se puede acceder a un archivo inexistentearchivo: No existe tal archivo o directorio
- Nada, fuera.txt estará vacío.
- Será el contenido del archivo inexistente.
P42. Para que el script imprima "Es numérico" en la pantalla, ¿qué tendría que ingresar el usuario cuando se le solicite?
#!/bin/bash
read -p "Enter text " var
if [[ "$var" =~ "^[0-9]+$" ]];then
echo "Is numeric"
else
echo "Is not numeric"
fi
- Cualquier secuencia de caracteres que incluya un entero
- El usuario tendría que introducir la secuencia de caracteres de
^[0-9]]+$
Solo esto demostrará ser cierto y "Es numérico" se imprimirá en la pantalla debido a una sintaxis incorrecta. Al encapsular la expresión regular entre comillas dobles, todas las coincidencias fallarán, excepto la cadena de texto^[0-9]+$
- Uno o más caracteres que solo incluyen enteros
- Debido a un error de sintaxis es imposible conseguir que el script imprima "Es numérico"
El regex no debe ser cotizado para funcionar correctamente.
- historia | encontrar cp
- | de historia grep cp
- historia de grep cp
- historia de cp
P44. Para escribir un script que itera a través de los archivos en un directorio, ¿cuál de los siguientes podría usar?
-
bash for i in $(ls); do ... done
-
bash for $(ls); do ... done
-
bash for i in $ls; do ... done
-
bash for $ls; do ... done
P45. Al ejecutar un comando y pasar la salida de ese comando a otro comando, ¿qué carácter le permite encadenar estos comandos?
- |
- ->
- #
- @
#!/usr/bin/env bash
greeting="Hello"
echo $greeting, everybody!
- un comando
- un bucle
- un parámetro
- una variable
-
(( num -gt 5 ))
-
[[$num -lt 5]]
-
(( num > 5 ))
-
num > 5
$ ls -l
apple
banana
bananapple
banapple
pineapple
strawberry
$ shopt -s extglob
$ ls -l @(ba*(na)|a+(p)le)
- a
apple
banana
- b
apple
banana
bananapple
banapple
pineapple
strawberry
- c
apple
banana
bananappple
banapple
pineapple
- d
apple
banana
bananapple
banapple
pineapple
- $0
- $# // número de parámetros posicionales
- $$ // pid de la cáscara actual
- $@ // Construcción tipo matriz de todos los parámetros posicionales
Pregunta 50. ¿Qué significa el + al final de los permisos de archivo de 10 dígitos en los datos.txt?
ls -l
-rwx------+ 1 user1 u1 0 Oct 1 10:00 data.txt
- Existe un contexto de seguridad selinux
- El bit pegajoso está configurado y el archivo permanecerá en la RAM para mayor velocidad
- Hay una lista de control de acceso
- Hay un atributo extendido como conjunto inmutable
cd -
- Te mueve al directorio en el que estabas anteriormente.
- Lo mueve a su carpeta de inicio (sea cual sea su directorio de trabajo actual).
- Elimina el directorio actual
- Te mueve un directorio por encima de tu directorio de trabajo actual.
cat > notes -
- Acepta texto de entrada estándar y lo coloca en "notas"
- Crea "notas" y sale
- Genera el contenido de las notas y lo elimina
- Añade texto a las "notas" existentes
VAR="This old man came rolling"
echo "\${VAR//man/rolling}"
- Este viejo rollo vino rodando
- Este anciano vino hombre
- Este anciano vino rodando
- Este viejo vino
Pregunta 54. El shell examina el contenido de una variable en particular para identificar qué programas puede ejecutar. ¿Cuál es el nombre de esta variable?
- $INCLUDE
- $PATH
- $PROGRAM
- $PATHS
Shall we play a game? yes\no
-
echo "Shall we play a game? yes/\no"
-
echo "Shall we play a game\? yes\\no"
-
echo "Shall we play a game? yes\\no"
-
echo "Shall we play a game? yes\no"
Pregunta 56. Dado un directorio con estos siete archivos, ¿qué quedaría después de ejecutar estos comandos?
archive.tar
image1.gif
image1.jpg
image2.gif
image2.jpg
textfile1.txt
textfile2.txt
----------
`shopt -s extglob
rm !(*gif|*jpg)`
- a
archive.tar
image1.gif
image1.jpg
image2.gif
image2.jpg
textfile1.txt
textfile2.txt
- b
archive.tar
textfile1.txt
textfile2.txt
- c
Todos estos archivos serán eliminados
- d:
image1.gif
image1.jpg
image2.gif
image2.jpg
Pregunta 57. El código a continuación parece funcionar y genera "8 es mayor que 5". Sin embargo, ¿qué resultado inesperado le dirá que no está funcionando correctamente?
#!/bin/bash
var="8"
if [ $var > 5 ]; then
echo "$var is greater than 5"
fi
- No habrá resultados inesperados. Este script funciona tal cual y la salida será "8 es mayor que 5".
- La comparación no podrá manejar números de coma flotante, ya que Bash solo maneja enteros. Por lo tanto, este ejemplo generará un mensaje de error si el valor de $var se cambia a "8.8".
- Habrá un archivo en el directorio actual denominado 5.
- La variable $var no se cita, lo que conducirá a la división de palabras. Este script fallará con un mensaje de "operador unario esperado" si cambia el valor de
- Elimina el directorio 'foo' y los archivos contenidos en él.
- Elimina todos los archivos excepto los del directorio actual.
- Elimina todos los archivos del directorio actual.
- Elimina todos los archivos excepto los del directorio 'foo'.
- Las reglas de la política de SELinux se comprueban después de las reglas de DAC.
- Las reglas de la política de SELinux se comprueban antes de las reglas de DAC
- Las reglas de la política de SELinux nunca se comprueban después de las reglas de DAC.
- Ninguno de estos
w
- No muestra información sobre los usuarios actualmente en la máquina.
- Muestra información sobre los usuarios actualmente en la máquina.
- Muestra información sobre los usuarios actualmente en la otra máquina.
- Ninguno de estos
P61. ¿Qué opciones de sed debe usar para cambiar la penúltima instancia de la variable a rock para que diga:
Una constante es una variable que es una roca que no es variable
var="A constant is a variable that is a variable that isn't variable"
echo "$var" | sed _____
- s/(.*)variable(.*variable)/\1rock\2/'
- s/variable/roca/'
- s/variable/roca/g'
- s/(.*)variable(.*variable)/\1rock\2/'
- script.sh ejecutiva
- chmod +x script.sh
- bash script.sh
- fuente script.sh
- Pantalla [x]
- pantalla -X
- pantalla --compartida
- terminal -compartido
- ls < lista de archivos.txt
- ls ¦ lista de archivos.txt
- lista de archivos de > ls.txt
- ls - lista de archivos.txt
Pregunta 65. Al comparar los ítems con el caso, ¿qué afirmación indica el fin del bloque de evaluación?
- parada
- esac
- hecho
- salida
- comando sh1; comando2
- { comando1; comando2; }
- (( comando1; comando2 ))
- comando1; comando2
echo 'Hello, $(whoami)!'
- ¡Hola, $(jon)!
- ¡Hola, jon!
- ¡Hola, $(whoami)!
- ¡Hola, whoami!
- tar -ssh user@192.158.1.1 /bin/newfile
- tar cvzf - /wwwdata | ssh root@192.168.1.201 "dd of=/backup/wwwdata.tar.gz"
- No se puede comprimir la secuencia
- Directorio scp -r user@192.168.1.1:/tmp
Pregunta 69. Para asignar el comando ls -lah
al comando de acceso directo lh
, ¿qué comando debe usar?
- alias lh='ls -lah'
- enlace lh='ls -lah'
- alias 'ls -lah'=lh
- lh | ls -lah
Pregunta 70. ¿Qué instrucción imprimirá todos los archivos .cvs completos en el directorio principal o subdirectorios sin mostrar ningún error?
- buscar $USER_DIR -name "*.csv" 2>/dev/null
- buscar $HOME -name "*.csv" 1>/dev/null
- buscar $HOME -name "*.csv" 2>/dev/null
- encontrar HOME -name "*.csv" 1>/dev/null
- que el usuario está actuando como root
- que el directorio de trabajo actual es la raíz del sistema de archivos
- que hay actualizaciones disponibles para el sistema
- que el usuario no tiene privilegios
$ ls -l
file10.txt
file1.txt
fileabc.txt
filea.txt
fileb.txt
filec.txt
$ ls -l file[^abc]*.txt
- A
file1.txt
file10.txt
- B
file10.txt
file1.txt
fileabc.txt
filea.txt
fileb.txt
filec.txt
- C
fileabc.txt filea.txt fileb.txt filec.txt
- D
filea.txt
fileb.txt
filec.txt
El caret (^
) aquí niega las coincidencias dentro del corchete. Referencia
cat <<EOF
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------
EOF
- A
This is line 1.
This is line 2.
This is line 3.
- B
------------------------This is line 1.This is line 2.This is line 3.------------------------
- C
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------
- D
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------
#!/bin/bash
echo 123446789 > out.txt
exec 3<> out.txt
read -n 4 <&3
echo -n 5 >&3
exec 3>&-
- 123446789
- el símbolo de guión (-)
- 123456789
- el número 5, que se escribe en el archivo usando echo
Ver también: ¿Cuál es la diferencia entre "eco" y "eco -n"?
- $ID
- $ #
- $ @
- $$
Pregunta 76. Al combinar el globbing extendido y la expansión de parámetros, ¿cuál sería el valor del VAR?
#!/bin/bash
shopt -s extglob
VAR=' This is... a string of characters '
VAR=${VAR##+([[:space:]])}; VAR=${VAR%%+([[:space:]])};
echo "$VAR"
-
<pre> This is... a string of characters</pre>
-
<pre> This is...a string of characters</pre>
-
<pre>This is... a string of characters</pre>
-
<pre>This is...a string of characters</pre>
Referencias:
- ¿Cuál es el significado de la sintaxis ${0##...} con variable, llaves y carácter hash en bash?
- ¿Qué significa expandir una variable como "${var%%r*}" en bash?
- !
- &&
- y
- $