Acceder a la línea de comandos en Red Hat Enterprise Linux

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, te embarcarás en un viaje fundamental hacia el mundo de las operaciones en la línea de comandos de Linux, específicamente dentro de un entorno de Red Hat Enterprise Linux (RHEL). Obtendrás experiencia práctica con comandos esenciales para identificar información de usuario y del sistema, administrar contraseñas de usuarios e inspeccionar varios tipos de archivos.

A través de ejercicios prácticos, aprenderás a ver el contenido de los archivos usando cat, head y tail, a contar estadísticas de archivos y a navegar de manera eficiente por tu historial de comandos. Además, dominarás atajos cruciales de edición en la línea de comandos, lo que mejorará tu productividad y competencia en la gestión de sistemas Linux.

Identificar al usuario y la hora del sistema

En este paso, aprenderás a identificar al usuario actual que ha iniciado sesión en el sistema y a mostrar la fecha y hora actuales del sistema utilizando comandos básicos de Linux. Comprender estos comandos fundamentales es crucial para navegar y administrar cualquier entorno Linux.

Primero, vamos a averiguar con qué usuario has iniciado sesión actualmente. El comando whoami se utiliza para este propósito. Imprime el nombre de usuario efectivo del usuario actual.

Escribe el siguiente comando en tu terminal:

whoami

Captura de pantalla de la salida del comando whoami

Deberías ver labex como resultado, lo que indica que has iniciado sesión como el usuario labex.

labex

A continuación, exploraremos el comando date. Este comando se utiliza para mostrar o configurar la fecha y hora del sistema. Cuando se usa sin ninguna opción, muestra la fecha y hora actuales en un formato predeterminado.

Ejecuta el comando date:

date

La salida mostrará el día de la semana actual, el mes, el día del mes, la hora (HH:MM:SS), la zona horaria y el año. La salida exacta variará según cuándo ejecutes el comando.

Mon Jul 22 10:30:45 AM UTC 2024

El comando date es muy flexible y te permite formatear la salida de varias maneras utilizando especificadores de formato. Por ejemplo, para mostrar solo la hora actual en formato de 24 horas (HH:MM), puedes usar +%R.

Prueba a mostrar solo la hora:

date +%R

La salida será similar a:

10:30

Para mostrar solo la fecha actual en formato MM/DD/AAAA, puedes usar +%x.

Prueba a mostrar solo la fecha:

date +%x

La salida será similar a:

07/22/2024

Por último, puedes ejecutar varios comandos en una sola línea separándolos con un punto y coma (;). Esto puede resultar útil para ejecutar rápidamente una secuencia de comandos.

Intentemos ejecutar whoami y date en la misma línea:

whoami; date

Verás la salida de ambos comandos, uno tras otro:

labex
Mon Jul 22 10:30:45 AM UTC 2024

Captura de pantalla de la salida de los comandos whoami y date

Administrar contraseñas de usuario y ver tipos de archivos

En este paso, aprenderás a cambiar la contraseña de un usuario y a determinar el tipo de un archivo utilizando el comando file. Comprender los tipos de archivos es esencial para trabajar con varios formatos de datos y ejecutables en Linux.

Primero, observemos cómo comienza un cambio de contraseña sin cambiar la contraseña predeterminada del laboratorio. El comando passwd se utiliza para cambiar las contraseñas de los usuarios. Para el usuario labex, solicita la contraseña actual y luego una contraseña nueva. La contraseña actual es labex.

Escribe el siguiente comando en tu terminal:

passwd

En la solicitud de la contraseña actual, escribe labex y presiona Enter. Cuando aparezca la solicitud de la nueva contraseña, presiona Ctrl+C para cancelar el comando y regresar a la terminal. No introduzcas una contraseña nueva.

Changing password for user labex.
Current password:
New password: ^C

Nota: Cuando escribes contraseñas en Linux, no aparecerá nada en la pantalla por razones de seguridad. Este es un comportamiento normal y no significa que la máquina virtual no responda. El sistema sigue recibiendo tu entrada aunque no puedas ver los caracteres que estás escribiendo.

A continuación, exploraremos el comando file. Este comando determina el tipo de un archivo. Es muy útil para comprender qué tipo de datos contiene un archivo, especialmente cuando falta la extensión del archivo o es engañosa.

Examinemos el tipo del archivo /etc/passwd. Este archivo contiene información sobre todas las cuentas de usuario en el sistema.

file /etc/passwd

La salida indicará que /etc/passwd es un archivo de texto ASCII.

/etc/passwd: ASCII text

Ahora, comprobemos el tipo de un archivo ejecutable, como /bin/bash, que es el programa de shell que estás utilizando actualmente.

file /bin/bash

La salida mostrará que /bin/bash es un archivo ejecutable, junto con detalles sobre su arquitectura y otras propiedades.

/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=<omitted>, for GNU/Linux <omitted>, stripped

Por último, determinemos el tipo de un directorio. Usaremos el directorio /home como ejemplo.

file /home

La salida simplemente indicará que /home es un directorio.

/home: directory

Estos ejemplos demuestran cómo el comando file puede ayudarte a identificar rápidamente la naturaleza de diferentes archivos y directorios en tu sistema Linux.

Inspeccionar el contenido de archivos con cat, head y tail

En este paso, aprenderás a inspeccionar el contenido de archivos de texto utilizando tres comandos esenciales de Linux: cat, head y tail. Estos comandos son fundamentales para ver el contenido de los archivos, especialmente los archivos de configuración y de registro (logs).

Primero, usemos el comando cat. El comando cat (abreviatura de concatenate, concatenar) se utiliza principalmente para mostrar el contenido de los archivos. También se puede utilizar para combinar varios archivos en uno solo.

Veamos todo el contenido del archivo /etc/passwd. Este archivo contiene información de las cuentas de usuario.

cat /etc/passwd

Verás que todo el contenido del archivo /etc/passwd se imprime en tu terminal. La salida será extensa y mostrará todas las entradas de usuario.

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...output omitted...

Ahora, creemos dos archivos de texto simples en tu directorio ~/project para demostrar el uso de cat con varios archivos.

Crea file1.txt:

echo "Hello World!!" > ~/project/file1.txt

Crea file2.txt:

echo "Introduction to Linux commands." > ~/project/file2.txt

Ahora, usa cat para mostrar el contenido de ambos archivos:

cat ~/project/file1.txt ~/project/file2.txt

La salida mostrará el contenido de file1.txt seguido del de file2.txt.

Hello World!!
Introduction to Linux commands.

A continuación, utilizaremos el comando head. El comando head muestra las primeras líneas de un archivo. De manera predeterminada, muestra las primeras 10 líneas.

Veamos las primeras 10 líneas de /etc/passwd:

head /etc/passwd

Verás las primeras 10 líneas del archivo /etc/passwd.

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

Puedes especificar el número de líneas que deseas mostrar utilizando la opción -n. Por ejemplo, para ver las primeras 3 líneas:

head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

Por último, usemos el comando tail. El comando tail muestra las últimas líneas de un archivo. De manera predeterminada, también muestra las últimas 10 líneas.

Veamos las últimas 10 líneas de /etc/passwd:

tail /etc/passwd

Verás las últimas 10 líneas del archivo /etc/passwd.

systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:998:996:systemd Resolver:/:/sbin/nologin
systemd-network:x:997:995:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System Message Bus:/:/sbin/nologin
polkitd:x:996:994:User for polkitd:/:/sbin/nologin
unbound:x:995:993:Unbound DNS resolver:/:/sbin/nologin
tss:x:59:59:TPM software stack:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin

De manera similar a head, puedes especificar el número de líneas a mostrar utilizando la opción -n. Por ejemplo, para ver las últimas 3 líneas:

tail -n 3 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:980:978::/run/gnome-initial-setup/:/sbin/nologin
dnsmasq:x:979:977:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin

Estos comandos son sumamente valiosos para examinar rápidamente el contenido de los archivos sin abrirlos en un editor de texto, lo cual es especialmente útil para archivos grandes o cuando solo necesitas verificar partes específicas.

Contar estadísticas de archivos y usar el historial de comandos

En este paso, aprenderás a utilizar el comando wc para contar líneas, palabras y caracteres en archivos, y a utilizar de manera eficaz la función de historial de comandos en tu terminal. Administrar el historial de comandos es crucial para lograr eficiencia y recordar comandos ejecutados anteriormente.

Primero, exploremos el comando wc (word count, recuento de palabras). Este comando se utiliza para contar el número de líneas, palabras y caracteres en un archivo.

Contemos las líneas, palabras y caracteres del archivo /etc/passwd:

wc /etc/passwd

La salida mostrará tres números seguidos del nombre del archivo: líneas, palabras y caracteres. Los números exactos pueden variar ligeramente según la configuración de tu sistema.

41   98 2338 /etc/passwd

Puedes utilizar opciones para mostrar únicamente recuentos específicos:

  • -l para líneas
  • -w para palabras
  • -c para caracteres

Contemos solo las líneas en /etc/passwd y /etc/group (el cual contiene información sobre los grupos de usuarios). Podemos hacer esto en una sola línea utilizando un punto y coma.

wc -l /etc/passwd
wc -l /etc/group

Verás el recuento de líneas de cada archivo:

41 /etc/passwd
63 /etc/group

Ahora, contemos solo los caracteres en /etc/group y /etc/hosts (que asigna nombres de host a direcciones IP).

wc -c /etc/group /etc/hosts

La salida mostrará el recuento de caracteres para cada archivo y un recuento total.

883 /etc/group
114 /etc/hosts
997 total

A continuación, aprenderemos sobre el historial de comandos. Tu shell mantiene un registro de todos los comandos que has ejecutado. Esto es increíblemente útil para volver a ejecutar comandos o recordar lo que hiciste antes.

Para mostrar tu historial de comandos, usa el comando history:

history

Verás una lista numerada de todos los comandos que has introducido en tu sesión actual y en sesiones anteriores. La salida variará enormemente según tu actividad.

...output omitted...
   23  clear
   24  whoami
   25  date
   26  file /etc/passwd
   27  cat /etc/passwd
   28  head /etc/passwd
   29  tail /etc/passwd
   30  wc /etc/passwd
   31  history

Puedes volver a ejecutar un comando de tu historial utilizando el signo de exclamación (!) seguido del número de comando o de una cadena de texto.

Por ejemplo, para volver a ejecutar el comando número 26 (que era file /etc/passwd en el ejemplo anterior, pero será diferente para ti), busca su número en la salida de tu history y úsalo:

!26 ## Reemplaza 26 con el número real de 'file /etc/passwd' en tu historial

El shell mostrará primero el comando que está a punto de ejecutar y luego su salida:

file /etc/passwd
/etc/passwd: ASCII text

También puedes volver a ejecutar el comando más reciente que comience con una cadena específica. Por ejemplo, para volver a ejecutar el último comando que comenzó con wc:

!wc

Esto ejecutará el último comando wc que hayas lanzado.

wc -c /etc/group /etc/hosts
883 /etc/group
114 /etc/hosts
997 total

Estas funciones del historial pueden acelerar significativamente tu flujo de trabajo al permitirte recordar y volver a ejecutar rápidamente comandos complejos sin tener que volver a escribirlos.

Practicar atajos de edición en la línea de comandos

En este paso, aprenderás y practicarás útiles atajos de edición en la línea de comandos. Estos atajos pueden mejorar significativamente tu eficiencia al escribir y modificar comandos en la terminal, permitiéndote navegar y editar texto sin tener que recurrir constantemente al ratón.

Primero, comprendamos cómo escribir un comando largo en varias líneas. Esto puede mejorar la legibilidad en comandos complejos. Puedes usar una barra invertida (\) al final de una línea para indicar que el comando continúa en la línea siguiente.

Intentemos mostrar las primeras 3 líneas de dos archivos de diccionario utilizando un comando multilínea. Estos archivos se encuentran típicamente en sistemas Linux y contienen listas de palabras.

head -n 3 \
  /home/labex/project/words \
  /home/labex/project/linux.words

Cuando presionas Enter después de la primera línea, tu terminal mostrará un símbolo > (o similar) que indica que está esperando el resto del comando. Escribe las partes restantes y vuelve a presionar Enter.

==> /home/labex/project/words <==
1080
10-point
10th

==> /home/labex/project/linux.words <==
1080
10-point
10th

Ahora, practiquemos algunos atajos de edición en la línea de comandos. Estos atajos funcionan en la mayoría de las terminales modernas de Linux (como Bash o Zsh).

Escribe un comando largo, pero no presiones Enter todavía:

echo "This is a very long command that we will edit using shortcuts."
  • Ctrl+A: Salta al principio de la línea de comandos.
    • Escribe el comando anterior y presiona Ctrl+A. Tu cursor se moverá al principio de la línea.
  • Ctrl+E: Salta al final de la línea de comandos.
    • Después de presionar Ctrl+A, presiona Ctrl+E. Tu cursor volverá al final de la línea.
  • Ctrl+U: Borra desde el cursor hasta el principio de la línea de comandos.
    • Escribe el comando de nuevo. Coloca tu cursor en algún lugar del medio de la línea (por ejemplo, después de "very"). Presiona Ctrl+U. El texto desde el cursor hasta el principio será eliminado.
  • Ctrl+K: Borra desde el cursor hasta el final de la línea de comandos.
    • Escribe el comando de nuevo. Coloca tu cursor en algún lugar del medio de la línea (por ejemplo, después de "very"). Presiona Ctrl+K. El texto desde el cursor hasta el final será eliminado.
  • Ctrl+FlechaIzquierda (o Alt+B): Salta al principio de la palabra anterior en la línea de comandos.
    • Escribe el comando de nuevo. Coloca tu cursor al final de la línea. Presiona Ctrl+FlechaIzquierda repetidamente para moverte palabra por palabra hacia la izquierda.
  • Ctrl+FlechaDerecha (o Alt+F): Salta al final de la palabra siguiente en la línea de comandos.
    • Coloca tu cursor al principio de la línea. Presiona Ctrl+FlechaDerecha repetidamente para moverte palabra por palabra hacia la derecha.
  • Ctrl+R: Busca un patrón en la lista del historial de comandos.
    • Presiona Ctrl+R. Aparecerá una indicación de búsqueda ((reverse-i-search)). Comienza a escribir una parte de un comando que hayas ejecutado previamente, por ejemplo, date. La terminal mostrará el comando más reciente de tu historial que coincida. Sigue presionando Ctrl+R para recorrer las coincidencias más antiguas. Presiona Enter para ejecutar el comando encontrado, o las flechas Izquierda/Derecha para editarlo.

Estos atajos acelerarán significativamente tu interacción con la línea de comandos una vez que te acostumbres a ellos. Practícalos regularmente para desarrollar memoria muscular.

Resumen

En este laboratorio, aprendiste comandos fundamentales de Linux para identificar información de usuario y del sistema. Practicaste el uso de whoami para determinar el usuario que ha iniciado sesión actualmente y date para mostrar la fecha y hora actuales del sistema, incluyendo varias opciones de formato como +%R para la hora y +%x para la fecha. Además, descubriste cómo ejecutar varios comandos en una sola línea usando un punto y coma, lo que mejora la eficiencia en el entorno de la línea de comandos.