100 Ejercicios de Consola Unix#

Aquí tienes 100 ejercicios básicos para aprender a manejar una consola Unix (Repaso de Consola Unix). Lo ideal es que trates de resolver la pregunta sin ver la respuesta. Ya sé que te da pereza, pero si quieres aprender inténtalo. Te darn una idea de tu nivel de usuario básico. Deberías tener al menos 85 bien. Si me invitas a un café quizá me de para hacer 100 más.

También puedes ver un documento en PDF . Muchas preguntas en el documento son diferentes a las de aquí y no publico las respuestas que para aprender hay que trabajar.

Buscar en la página

Si usas la búsqueda en tu navegador, por ejemplo con Ctrl+F o Alt+F, va directamente a lo que estás buscando en la página. Por ejemplo, busca con el navegador en qué pregunta aparece el comando ps (te saldrán varias).


¿Cómo se le llama al intérprete de comandos?
Hay diferentes intérpretes, que según esté configurado para cada usuario, se lanza al entrar en el terminal (proceso de login). El más habitual es bash.

Revisa bash

En consola, ¿cómo puedo autocompletar?
Pulsando dos veces el tabulador (TAB). Se usa sobre todo para comandos, pero vale también para usar el sistema de archivos.
En consola, ¿puedo moverme por lo que escribo?
, hay varias opciones por ejemplo ir a principio de línea (Ctl + A), o ir al final (Ctl + E), o borrar una palabra (Alt+D) o una línea (Ctl+K). Hay muchos

Atajos de teclado usando bash

¿Cómo veo los archivos en el directorio actual?
ls (o ls ./ también vale)

Revisa ls

¿Cómo hago para ver los archivos del directorio anterior?
ls ../
¿Cómo hago para ver los archivos del directorio raíz?
ls /
¿Cómo puedo crear archivos en Unix?
touch

Revisa touch

¿Cómo salgo de la consola?
exit

Revisa exit

¿Cómo puedo crear uno o varios directorios?
Con el comando mkdir seguido del nombre o nombres, separados por espacio, de los directorios que quiero crear.

Revisa mkdir

¿En que directorios se guardan generalmente los programas?
Generalmente en /bin /sbin y /usr/sbin, aunque depende también de la distribución.
¿Cómo denomina Unix a los disco duros IDE?
Los denomina como hd (de Hard Disk). Canal Primario: hda (Maestro) y hdb (Esclavo) Canal Secundario: hdc (Maestro) y hdd (Secundario)
¿Cómo puedo obtener un listado de los procesos que tengo en ejecución?
Con el comando ps y varias opciones (por ejemplo -axf). También, de forma interactiva con el comando top o htop

Revisa ps

¿De qué forma puedo averiguar el uso de memoria que consume mi ordenador?
Comando free.

Revisa free

¿Cómo se cambia al propietario de un fichero?
Con el comando chown

Revisa chown

¿Cómo puedo saber el orden de ejecución de mis procesos?
Mediante el comando ps y observando el  que aparece al lado del proceso (PID)
¿Con qué comando se monitorea la memoria?
Comando top o htop (porque monitorea periódicamente)

Revisa top

¿Cómo puedo ver el contenido de un archivo sin abrirlo?
Utilizando el comando cat (o también con more o less)

Revisa cat / more / less

¿ Cuál es el comando para saber donde estás?
pwd

Revisa pwd

¿Cómo se qué usuario soy?
whoami

Revisa whoami

¿Puedo tener más de una consola abierta?
. Y se puede alternar entre ellas con el atajo de teclado alt +f1, f2, f3 según a la consola que queramos cambiar
Y también se pueden tener consolas remotas, o consolas virtuales (dentro de un editor de texto por ejemplo).
¿Existen físicamente todos los dispositivos que hay en /dev?
No
¿Cómo asignar una IP a mi ordenador?
ip addr add IP/MASK dev INTERFACE

Antes con ifconfig, en la actulidad mejor revisa ip addr add

¿ Qué comando reinicia el equipo?
shutdown -r (y tiene otras opciones interesantes)

Revisa shutdown

¿Qué comando me sirve para apagar mi ordenador?
shutdown -h
¿Cómo borro la pantalla?
Con el comando clear

Revisa clear

¿Con qué comando puedo empaquetar y desempaquetar un conjunto de archivos o directorios?
Con el comando tar (y sus múltiples opciones)

Revisa tar

¿Con qué comando genérico de UNIX puedo comprimir y descomprimir archivos y directorios?
Con el comando gzip (y sus múltiples opciones).

En realidad, cada algoritmo de compresión tiene sus comandos (bziz, rar, etc)

Revisa gzip

¿Cómo sé los usuarios conectados a mi máquina?
who

Revisa who

¿Cómo puedo obtener información detallada de un comando?
Hay varias opciones, de la más rápida a la más lenta:

#. Usar la opción -h o --help del comando. Por ejemplo: ls -h o ls --help
#. Usar el comando man
#. Usar el comando info (en algunos casos)

Revisa man

¿ Donde se escriben los comandos?
 En el intérprete de comandos, por ejemplo sh bash. Se muestra el prompt y a continuación el intérprete queda a la espera de comandos.

`prompt`_
¿Cómo un archivo sin posibilidad de recuperación?
shred (otra opción es sobreescribir con ceros)

Revisa shred

¿Cómo creo un enlace?
Con ln. Hay diferentes tipos de enlaces (duros y simbólicos). Lo habitual es usar ln -s archivo enlace

Revisa ln

¿Cómo borrar directorios con todos sus archivos dentro?
Con las opciones r y f del comando rm. rm -rf directorio.

Revisa rm

¿Cómo averiguar la cantidad de disco utilizado?
En realidad el comando du en realidad muestra el uso de diferentes fuentes de almacenamiento, no sólo los discos

Revisa du

¿Cómo se le llaman a los drivers en UNIX?
Depende del sistema pero en general los drivers son los módulos del kernel.
¿Cómo puedo matar un proceso?
En realidad más que matar, implica enviarle una señal a un proceso. Típicamente kill -15 PID (usando la señal de código 15)

Revisa kill

¿Cómo se que versión del kernel tengo?
Con uname -r. Todos los valores del sistema sería con uname -a

Revisa uname

Dónde se guardan los archivos de configuración del sistema?
Depende de la distribución concreta, pero lo más habitual es en /etc
¿Cómo diferencio entre ruta absoluta y ruta relativa?
Con el carácter / delante de la ruta (absoluta). Por ejemplo ls /home/user . Si no tiene / o hay un ./, sería una ruta relativa al directorio actual (que se obtiene con pwd). Por ejemplo ls user/ejemplo1/archivo.txt o ls ./user/ejemplo1/archivo.txt
¿Dónde se guardan los archivos de usuario?
Depende de la distribución pero generalmente en /home hay un subdirectorio por cada usuario (activo). No todos los usuarios tienen un subdirectorio home. La variable de entorno HOME guarda la carpeta de referencia del usuario, y se puede ver con echo "$HOME"
¿Cómo puedo ver los detalles de un archivo?
Con la opción -l del comando ls. Es decir ls -l
¿Cómo ejecuto un proceso en 2º plano?
Con el comando bg

Revisa bg

¿Cómo veo los procesos que se están ejecutando en 2º plano y en ese termianl?
Con el comando jobs

Revisa jobs

¿Cómo traer un proceso en 2º plano al 1º?
Con el comando fg

Revisa fg

¿Cómo puedo saber en qué directorio está un comando determinado?
Con el comando whereis

Revisa whereis

¿Puede haber 2 archivos o más con la misma ruta absoluta?
No. En el caso de los enlaces, puede ser el mismo archivo, pero las rutas absolutas son diferentes.
¿Cómo visualizo la fecha y hora del sistema?
Con el uso del comando date

Revisa date

¿Puedo ver la fecha en un formato determinado?
, el comando date tiene diferentes opciones y posibilidades.

Uso de formato con comando date.

¿Qué letra significa permiso de ejecución?
  En el sistema de permisos UGO la x indica permiso de ejecución

`Permisos UGO`_
¿A que se refiere cuando se dice que los entornos Unix son CASE SENSITIVE?
Pues que distingue entre mayúsculas y minúsculas
¿Cómo puedo ver más allá de la pantalla?
Shift+Av Pág, para avanzar Shift+Re Pág, para retroceder
¿Cómo consulto el historial de comandos?
Con el comando history

Revisa history

¿Cómo accedo a la consola desde el modo gráfico?
Pues puedo abrir un emulador de terminal (una aplicación) o ir a una de las consolas (con Alt + Fn en algunos casos).
¿Cómo se los grupos a los que pertenezco?
Con el comando groups. Sirve también para conocer los grupos a los que pertenece un usuario

Revisa groups

¿Qué hace el comando echo?
Pues enviar a la salida estándar, los argumentos que se le pasan. Por ejemplo >echo "hola"

Revisa echo

¿Cómo puedo saber en que consola me encuentro?
Con el comando tty, y te indicará el dispositivo en el que te encuentras. Por ejemplo /dev/ttys001

Revisa tty

¿Cómo hago un enlace en el directorio dir a un archivo en el directorio actual?
ln -s archivo.ejemplo dir/

Si no pongo el nombre de archivo el enlace tendrá el mismo nombre
¿Cómo hago para ir al final de línea en una consola?
Pulsando Ctl + e

Atajos de teclado usando bash

¿Cómo hago para avanzar hacia atrás, palabra a palabra, en una consola?
Pulsando Alt + b

Atajos de teclado usando bash

¿Cómo hago para borrar desde el cursor hasta el final de línea?
Pulsando Ctl + k

Atajos de teclado usando bash

¿Cómo hago para borrar la palabra siguiente?
Pulsando Alt + d

Atajos de teclado usando bash

Si quiero ver cual es la diferencia horaria de mi sesión con UTC (UTC+00), ¿cómo hago?
Con la opción R del comando date (formato RFC 8222). Sería date -R
¿Cómo sé cual es el nombre de la máquina en la que estoy conectado?
Con el comando hostname. Acuérdate de distinguir el nombre de host del nombre completo (lo que se llama FQDN).

Revisa hostname

¿Cómo hago para ver las variables de entorno de mi sesión?
Con el comando env. Recuerda que son variables creadas previamente y cuyo valor puedes usar con $VAR, por ejemplo echo $HOME.

env(1)

Puedo ejecutar un comando que no esté en mi directorio actual
 claro, usando la ruta relativa o absoluta. Por ejemplo /bin/echo  o ../bin/echo

Y la otra opción es que, si el comando se encuentra en un directorio que está en la variable de entorno PATH, no hay que usar la ruta absoluta (lo hace automáticamente el intérprete).
¿Cómo muestro el contenido de la variable PATH?
echo $PATH
¿Cómo hago para escribir en consola, sin parar, «Hola, soy yo»?
Con el comando yes, en concreto; yes "Hola, soy yo".

Revisa yes

¿Cómo hago para copiar archivo1 a archivo2 que está en el directorio dir?
cp archivo1 dir/archivo2

Revisa cp

Quiero construir un archivo suma que tenga el contenido de A1 y A2, cómo hago?
cat A1 A2 > nuevo_archivo.txt

Revisa cat

¿Cómo sé cuantas líneas tiene un archivo?
wc -l archivo

Revisa wc

Suponiendo que tengo el archivo software.tar.gz y el archivo de firma MD5 software.tar.gz.md5, cómo compruebo que es correcta?
(waiting)
¿Cómo hago para extraer campos de texto de un archivo
(waiting)
¿Cómo redirecciono la salida estándar de error?
(waiting)
cómo hago para cancelar la operación de un comando?
(waiting)
¿Cómo hago para enviar el caracter EOF a la entrada estándar?
(waiting)
Puedo descomprimir un archivo ZIP Windows en Linux?
(waiting)
¿Cómo hago para saber el tiempo que tarda en ejecutarse un comando?
time comando

Revisa time

Si quiero crear el directorio dir11 dentro de dir1, y dir1 no existe, ¿cómo lo hago con una sola instrucción?
mkdir -f dir1/dir11

Revisa mkdir

¿Cómo hago para encontrar si hay un usuario que se llame pepe?
(waiting)
¿Cómo mostrar todas las líneas de un archivo de texto que NO contengan la palabra hola?
grep -v "hola" ejemplo.txt

Revisa grep

¿Cómo hago para ver qué usuarios no tienen una shell asignada?
(waiting)
Como encuentro los archivos terminados en .txt en mi directorio actual?
(waiting)
Quiero ver el contenido de los archivos de texto que empiecen por a, seguidos de un 3 o un 4, y terminados en .sh, como hago?
(waiting)
Estoy perdido en el árbol de directorios, cómo vuelvo a mi HOME?
(waiting)
Quiero ver cuanto espacio ocupa mi home, cómo hago?
(waiting)