Flashcards: 103.1 - Linea De Comandos
41 tarjetas de repaso. Usa el sistema de repeticion espaciada para memorizar.
P: Un administrador necesita saber si el comando echo es un comando interno del shell o un programa externo. Cual de los siguientes comandos muestra esta informacion de forma mas completa?
R: C) type -a echo. type -a muestra todas las formas en que un comando puede ser encontrado: como builtin, alias, funcion o archivo externo. En el caso de echo, mostraria que es tanto un builtin como un archivo en /usr/bin/echo. which solo busca ejecutables en PATH y no reconoce builtins. whereis busca binarios, manuales y fuentes pero tampoco identifica builtins. find busca archivos en el sistema de archivos pero no conoce los builtins del shell.
P: Cual es la diferencia entre ejecutar env y set sin argumentos?
R: B) env muestra las variables de entorno y set muestra todas las variables (locales, de entorno y funciones). env sin argumentos lista unicamente las variables de entorno (las que han sido exportadas y estan disponibles para procesos hijos). set sin argumentos muestra todas las variables del shell, incluyendo las variables locales, las variables de entorno y las funciones definidas. Esta es una distincion importante para el examen LPIC-1.
P: Un usuario ejecuta los siguientes comandos: bash ANIMAL=gato export FRUTA=manzana bash echo $ANIMAL echo $FRUTA Que se mostrara en las dos ultimas lineas?
R: B) Una linea vacia y manzana. ANIMAL=gato crea una variable local que solo existe en el shell actual. export FRUTA=manzana crea una variable de entorno que se hereda a los procesos hijos. Al ejecutar bash, se abre un nuevo shell hijo. En este shell hijo, ANIMAL no existe (era local del padre), por lo que echo $ANIMAL muestra una linea vacia. FRUTA si fue exportada, por lo que echo $FRUTA muestra manzana.
P: Que comando buscaria en las descripciones de las paginas de manual todas las entradas relacionadas con “password”?
R: C) man -k password. man -k (equivalente a apropos) busca la palabra clave en las descripciones cortas de todas las paginas de manual del sistema y muestra las coincidencias. man -f (equivalente a whatis) solo muestra la descripcion de un comando exacto, no busca en las descripciones. man password intentaria abrir una pagina de manual llamada “password” (que podria no existir). info password abriria la pagina info de “password” si existiese.
P: Dado el siguiente comando: bash echo "El directorio home es $HOME y el usuario es $(whoami)" Que ocurre con las variables y la sustitucion de comando?
R: C) Se expande tanto $HOME como $(whoami) con sus valores reales. Las comillas dobles permiten la expansion de variables ($VARIABLE) y la sustitucion de comandos ($(comando) o `comando`). Solo las comillas simples evitan toda expansion. Por lo tanto, $HOME se reemplaza por el directorio home del usuario y $(whoami) se reemplaza por el nombre de usuario. La salida seria algo como: El directorio home es /home/sandra y el usuario es sandra.
P: Un usuario quiere crear los directorios proyecto/src, proyecto/bin y proyecto/doc con un solo comando. Cual de las siguientes opciones es correcta?
R: B) mkdir -p proyecto/{src,bin,doc}. La expansion de llaves {src,bin,doc} genera tres cadenas: proyecto/src, proyecto/bin y proyecto/doc. La opcion -p de mkdir crea los directorios padre si no existen (en este caso, proyecto/). La opcion A funcionaria solo si el directorio proyecto/ ya existiese. La opcion C usa globbing [] que solo coincide con un caracter, no con listas de palabras. La opcion D usa -r que no es una opcion valida de mkdir.
P: Cual es la diferencia entre los operadores && y ; en la linea de comandos?
R: B) && ejecuta el segundo comando solo si el primero tuvo exito, ; ejecuta ambos sin importar el resultado. El operador ; ejecuta los comandos secuencialmente sin importar el codigo de salida del comando anterior. El operador && (AND logico) solo ejecuta el siguiente comando si el anterior devolvio un codigo de salida 0 (exito). Ejemplo: cd /tmp && rm archivo.txt solo ejecutara rm si el cd fue exitoso, mientras que cd /tmp ; rm archivo.txt ejecutara rm independientemente de si el cd fallo o no (lo cual podria ser peligroso).
P: Un usuario ejecuta !grep en la linea de comandos. Que ocurre?
R: B) Se ejecuta el ultimo comando del historial que comienza con “grep”. El operador !cadena busca en el historial de comandos el ultimo comando que comienza con la cadena especificada y lo ejecuta. Por ejemplo, si anteriormente se ejecuto grep -r "error" /var/log/, al escribir !grep se volveria a ejecutar exactamente ese comando. Otros operadores utiles del historial son !! (repite el ultimo comando), !N (ejecuta el comando numero N) y !?cadena (busca comandos que contengan la cadena en cualquier posicion).
P: Que archivo de configuracion se ejecuta al iniciar un shell de login en bash, despues de /etc/profile?
R: b) El primero que exista de: ~/.bash_profile, ~/.bash_login, ~/.profile. En un shell de login, bash lee primero /etc/profile (configuracion global) y luego busca el primero que exista de estos tres archivos personales, en este orden: ~/.bash_profile, ~/.bash_login, ~/.profile. Solo lee el primero que encuentre. ~/.bashrc se lee en shells interactivos no-login (como abrir una terminal en el escritorio). Es comun que ~/.bash_profile incluya un source ~/.bashrc para compartir configuracion entre ambos tipos de shell.
P: Que variable de entorno determina en que directorios busca el shell los comandos ejecutables?
R: c) $PATH. La variable $PATH contiene una lista de directorios separados por dos puntos (:) donde el shell busca los comandos ejecutables cuando se escribe un comando sin ruta completa. Por ejemplo, PATH=/usr/local/bin:/usr/bin:/bin. El shell busca en cada directorio de izquierda a derecha y ejecuta el primer ejecutable que encuentre. $SHELL indica el shell de login del usuario, $HOME es el directorio personal y $TERM es el tipo de terminal.
P: Cual es la diferencia entre las comillas simples y las comillas dobles en bash?
R: c) Las comillas simples tratan todo como texto literal, las dobles permiten expansion de variables y sustitucion de comandos. Las comillas simples (' ') eliminan el significado especial de todos los caracteres dentro de ellas: echo '$HOME' muestra literalmente $HOME. Las comillas dobles (" ") permiten la expansion de variables ($VAR), la sustitucion de comandos ($(comando) y backticks), y la interpretacion de algunos caracteres especiales como $, `, \, ! y ". Ejemplo: echo "$HOME" muestra /home/usuario.
P: Que comando muestra la version del kernel de Linux que se esta ejecutando?
R: b) uname -r. uname -r muestra especificamente la version del kernel (release), por ejemplo 5.15.0-52-generic. uname -a muestra toda la informacion del sistema (kernel, hostname, version, arquitectura, etc.), no solo la version. uname -n muestra el nombre de red del equipo (hostname). uname -o muestra el nombre del sistema operativo (por ejemplo, GNU/Linux). Para el examen LPIC-1, uname -r es el mas preguntado.
P: Un usuario define una variable con EDITOR=vim. Que debe hacer para que esta variable este disponible en los procesos hijos?
R: b) Ejecutar export EDITOR. Las variables definidas sin export son variables locales del shell actual y no se heredan a los procesos hijos. Para convertir una variable local en variable de entorno (disponible para procesos hijos), se debe usar export. Se puede hacer en dos pasos (EDITOR=vim seguido de export EDITOR) o en un solo paso (export EDITOR=vim). El comando set sin argumentos lista todas las variables pero no exporta. Solo las variables exportadas aparecen en la salida de env.
P: Que hace el comando exec ls en un shell?
R: b) Reemplaza el shell actual por el comando ls; al terminar ls, el terminal se cierra. exec reemplaza el proceso del shell actual con el comando especificado. El shell deja de existir y es sustituido por el nuevo proceso. No se crea un proceso hijo. Cuando ls termina, como el shell ya no existe, el terminal se cierra. exec tambien se usa para redirigir descriptores de archivo para todo el script, por ejemplo: exec > salida.log redirige toda la salida del shell a un archivo.
P: Que comando permite cambiar el shell de login de un usuario de forma permanente?
R: c) chsh -s /bin/zsh. chsh -s /bin/zsh cambia el shell de login del usuario de forma permanente, modificando la entrada correspondiente en /etc/passwd. El nuevo shell debe estar listado en /etc/shells para ser aceptado. Simplemente escribir bash o zsh inicia una nueva instancia temporal del shell. Cambiar la variable $SHELL con export solo modifica la variable en la sesion actual sin efecto permanente. El archivo /etc/shells contiene la lista de shells validos del sistema.
P: Que variable de entorno controla que comandos se guardan en el historial de bash, permitiendo ignorar duplicados?
R: c) HISTCONTROL. HISTCONTROL controla que comandos se almacenan en el historial. Sus valores posibles son: ignoredups (ignora duplicados consecutivos), ignorespace (ignora comandos que empiezan con espacio), ignoreboth (combina los dos anteriores) y erasedups (elimina todas las entradas anteriores duplicadas). HISTFILE define la ruta del archivo de historial (por defecto ~/.bash_history). HISTSIZE es el numero maximo de comandos en memoria y HISTFILESIZE el numero maximo de lineas en el archivo.
P: Que hace el comando hash -r en bash?
R: c) Limpia completamente la tabla hash interna del shell. hash -r resetea (limpia) la tabla hash interna de bash. Esta tabla almacena las rutas de los comandos externos ya ejecutados para evitar buscar en todos los directorios de $PATH cada vez. Si se instala una nueva version de un programa en una ubicacion diferente, el shell podria seguir usando la ruta antigua. hash -r fuerza una nueva busqueda la proxima vez que se ejecute el comando. hash sin opciones muestra la tabla actual y hash -t comando muestra la ruta almacenada de un comando.
P: Que resultado produce el comando echo {A,B}{1,2}?
R: c) A1 A2 B1 B2. La expansion de llaves en bash genera todas las combinaciones posibles de los elementos. {A,B}{1,2} produce las combinaciones: A con 1, A con 2, B con 1 y B con 2, resultando en A1 A2 B1 B2. La expansion de llaves no depende de la existencia de archivos (a diferencia del globbing) y se evalua antes que otras expansiones. Es muy util para crear multiples archivos o directorios con un solo comando, por ejemplo: mkdir -p proyecto/{src,bin,doc}.
P: Que comando usarias para agregar el directorio /opt/bin al final de la variable PATH?
R: export PATH=PATHseguido de:y el nuevo directorio. Elexportes necesario para que la variable actualizada este disponible en los procesos hijos. Al anadir al final, los comandos en/opt/binsolo se encontraran si no existen versiones en los directorios anteriores. Para dar prioridad al nuevo directorio, se anaden al inicio:export PATH=/opt/bin:$PATH`.
P: Que comando usarias para cambiar el shell actual temporalmente a zsh?
R: zsh. Para cambiar de shell temporalmente, basta con escribir el nombre del shell deseado (zsh, bash, sh, etc.). Esto inicia una nueva instancia del shell como proceso hijo del shell actual. Al ejecutar exit o pulsar Ctrl+D, se vuelve al shell anterior. Para cambiar el shell de login de forma permanente, se usa chsh -s /bin/zsh. La lista de shells disponibles se puede consultar en /etc/shells.
P: Que comando muestra una descripcion breve de lo que hace el comando passwd? (equivalente a man -f)
R: whatis passwd. whatis muestra una descripcion de una linea para un comando, exactamente igual que man -f. Por ejemplo, whatis passwd mostraria: passwd (1) - update user's authentication tokens y passwd (5) - password file. El comando complementario apropos (equivalente a man -k) busca una palabra clave en las descripciones de todas las paginas de manual. Ambos dependen de la base de datos de man, que se actualiza con mandb.
P: Que comando muestra informacion de ayuda sobre el builtin cd de bash?
R: help cd. help es un comando builtin de bash que muestra informacion sobre los comandos internos del shell. Solo funciona con builtins como cd, export, alias, set, etc. man cd puede no existir en muchos sistemas porque cd no es un comando externo. help sin argumentos lista todos los builtins disponibles. help -s cd muestra solo la sintaxis (formato corto) y help -d cd muestra solo una descripcion breve.
P: Que comando usarias para eliminar el alias ll previamente definido?
R: unalias ll. unalias ll elimina el alias ll de la sesion actual. Para eliminar todos los alias de la sesion, se usa unalias -a. Los alias eliminados con unalias solo se eliminan de la sesion actual; si estan definidos en ~/.bashrc, volveran a cargarse al iniciar un nuevo shell. Para eliminar un alias permanentemente, se debe editar el archivo donde fue definido (~/.bashrc o ~/.bash_profile). Se pueden evadir alias temporalmente con \comando, command comando o usando la ruta completa.
P: Tip de examen: apropos = man -k (buscar). whatis = man -f (descripcion corta).
R: apropos = man -k (buscar). whatis = man -f (descripcion corta).
P: Tip de examen: man y info son para comandos externos. help es exclusivo para builtins de …
R: man y info son para comandos externos. help es exclusivo para builtins de bash. Por ejemplo, man cd puede no existir, pero help cd siempre funciona en bash.
P: Tip de examen: uname -r para version del kernel y uname -a para toda la informacion son los…
R: uname -r para version del kernel y uname -a para toda la informacion son los mas preguntados.
P: Tip de examen: Es muy comun que ~/.bash_profile contenga un source ~/.bashrc para reutiliza…
R: Es muy comun que ~/.bash_profile contenga un source ~/.bashrc para reutilizar la configuracion. Asi, los alias y funciones definidos en .bashrc tambien estan disponibles en shells de login.
P: Tip de examen: hash es un builtin de bash. La tabla hash se limpia automaticamente al iniciar…
R: hash es un builtin de bash. La tabla hash se limpia automaticamente al iniciar un nuevo shell. Se usa hash -r para resetear la tabla cuando se han movido o instalado nuevos ejecutables.
P: Que hace el comando sh?
R: Bourne Shell, el shell original de Unix. Mas limitado que bash
P: Que hace el comando zsh?
R: Z Shell, muy popular, con autocompletado avanzado y temas
P: Que hace el comando csh?
R: C Shell, con sintaxis similar al lenguaje C
P: Que hace el comando ksh?
R: Korn Shell, combina caracteristicas de sh y csh
P: Que hace el comando dash?
R: Debian Almquist Shell, ligero y rapido, usado para scripts del sistema
P: Que es/son 8. Paginas info?
R: El sistema info proporciona documentacion mas detallada que man, organizada en nodos con hiperenlaces (estilo hipertexto).
P: Que es/son 9. Alias?
R: Los alias permiten crear atajos para comandos largos o frecuentes.
P: Que es/son 10. Expansion de llaves?
R: La expansion de llaves genera cadenas arbitrarias. No depende de la existencia de archivos (a diferencia del globbing).
P: Que es/son 11. Globbing (comodines de archivos)?
R: El globbing permite hacer coincidir nombres de archivo usando patrones. A diferencia de la expansion de llaves, el globbing depende de los archivos que existan.
P: Que es/son 12. El comando exec?
R: exec reemplaza el shell actual con el comando especificado. El shell deja de existir y es sustituido por el nuevo proceso. No se crea proceso hijo.
P: Que es/son 13. El comando uname?
R: Muestra informacion del sistema:
P: Que es/son 15. El comando hash?
R: El shell bash mantiene una tabla hash interna que almacena las rutas de los comandos externos ya ejecutados. Esto evita que el shell tenga que buscar en todos los directorios de $PATH cada vez qu
P: Que es/son Trampas del examen?
R: > Errores comunes y distinciones criticas que LPI suele evaluar en este subtema: