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.
P2. Si se ejecuta script.sh en el directorio actual, se producirá un error. ¿Por qué?
$ 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.
P3. Para ejecutar un comando copy en un subshell, ¿qué sintaxis usaría?
( command )
sh command
{ command; }
(( command ))
P4. Usando "awk", ¿cuál sería la salida de esta cadena de comandos?
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?
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.
P8. ¿Qué sucede si utiliza el "set -e" en un script Bash?
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.
P9. El _ keyword pausa el script para obtener entrada de la entrada estándar.
obtener
argumento
leer
entrada
P10. Si file.sql contiene instrucciones SQL para ser ejecutadas, ¿qué habrá en file.txt?
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.
P11. ¿Cuál será la diferencia entre la salida en pantalla y el contenido de out.txt
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.
P12. ¿Cómo afecta el SUID o setuid a los comandos ejecutables?
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.
P13. Para extraer texto de la primera columna del archivo llamada textfile, ¿qué comando usaría?
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
P15. ¿Qué expresión aritmética dará la respuesta más precisa?
var=$( expr 10 / 8 )
(( var= 10 /8 ))
var=$(( 10 / 8 ))
var=$(echo 'scale=2; 10 / 8' | bc)
P16. ¿Cuál es el resultado de este script?
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
P17. ¿Cómo cambiaría su mensaje de shell bash a lo siguiente?
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
P21. ¿Qué línea del script Bash probablemente produjo el resultado que se muestra a continuación?
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
P23. ¿Cómo podría obtener una lista de todos los archivos .html en su árbol?
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.
P24. ¿Qué habría fuera.txt?
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.
P25. ¿Qué hace esta declaración bash?
(( $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
$$
P27. ¿Qué representa el asterisco en esta declaración?
P37. ¿Qué archivo le permite guardar modificaciones en el entorno de shell en todas las sesiones?
/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 por ls -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.
P39. ¿Qué logra este script?
#!/bin/bashdeclare -A ARRAY=([user1]=bob [user2]=ted [user3]=sally)
KEYS=(${!ARRAY[@]})
for (( i=0; $i < ${#ARRAY[@]}; i+=1 ));doecho${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.
P40. ¿Qué archivo coincidiría con el código a continuación?
ls Hello[[.vertical-line.]]World
Nada, este es un archivo glob no válido.
Hello.vertical-line.World
Hello[[.vertical-line.]]World
Hello|World
P41. ¿Qué habrá fuera.txt?
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/bashread -p "Enter text " var
if [[ "$var" =~ "^[0-9]+$" ]];thenecho"Is numeric"elseecho"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.
P43. ¿Cómo encontraría el último comando de copia ejecutado en su historial?
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?
|
->
#
@
P46. En el script que se muestra a continuación, ¿qué es saludo?
Pregunta 49. Cuando se usa desde dentro de un script, ¿qué variable contiene el nombre del script?
$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
Pregunta 51. En Bash, ¿qué hace el comentario a continuación?
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.
P52. ¿Qué hace este comando?
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
Pregunta 53. ¿Cuál es el resultado de:
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
Pregunta 55. ¿Qué instrucción usarías para imprimir esto en la consola?
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?
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/bashvar="8"if [ $var > 5 ]; thenecho"$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
Pregunta 58. ¿Cuál es el resultado de este script?
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'.
Pregunta 59. ¿Cuál es la verdadera?
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.