Dominando el Shell y Comandos Fundamentales en Entornos Linux

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 18,74 KB

Conceptos Fundamentales del Shell y Comandos Linux

1. Explicación Detallada de Tareas en una Imagen

(Nota: La imagen a la que se refiere esta pregunta no fue proporcionada. Se asume que se requiere una explicación de tres tareas genéricas o específicas de un contexto visual no incluido.)

2. Formas de Ejecutar un Proceso Shell: Tipos y Diferencias

Existen diversas formas de ejecutar un proceso en el Shell, cada una con sus particularidades:

  • Ejecución en primer plano (foreground): El comando se ejecuta directamente en la terminal y el Shell espera a que finalice para aceptar nuevas entradas. La interacción con el usuario es directa.
  • Ejecución en segundo plano (background): Se añade el símbolo & al final del comando (ej. comando &). El proceso se ejecuta de forma independiente, liberando la terminal para que el usuario pueda seguir trabajando. La salida del proceso puede seguir mostrándose en la terminal a menos que se redirija.
  • Ejecución de scripts: Un conjunto de comandos se guarda en un archivo de texto (script) y se ejecuta. Puede ser con ./script.sh (si tiene permisos de ejecución y está en el PATH), bash script.sh, o sh script.sh.
  • Ejecución con nohup: Permite que un proceso continúe ejecutándose incluso después de cerrar la sesión de la terminal. Se usa como nohup comando &.
  • Ejecución programada: Utilizando herramientas como cron (para tareas periódicas) o at (para tareas únicas en un momento específico).

3. Características Distintivas entre Distribuciones Linux

Las características que distinguen una distribución de otra son variadas y definen su propósito y público objetivo. Algunas de las más importantes incluyen:

  • Gestor de paquetes: Es uno de los diferenciadores clave. Por ejemplo, Debian/Ubuntu usan APT (.deb), Fedora/CentOS/RHEL usan RPM (.rpm) con dnf o yum, y Arch Linux usa Pacman.
  • Entorno de escritorio por defecto: Aunque la mayoría permite instalar varios, cada distribución suele venir con uno predeterminado (ej. GNOME en Ubuntu, KDE Plasma en Kubuntu o Fedora KDE, XFCE en Xubuntu).
  • Filosofía y comunidad: Algunas son más orientadas a la estabilidad (Debian), otras a la innovación (Fedora), la facilidad de uso (Ubuntu, Linux Mint), o la personalización y el "do it yourself" (Arch Linux, Gentoo).
  • Ciclo de lanzamiento: Algunas tienen lanzamientos fijos y estables (Ubuntu LTS, Debian Stable), mientras que otras son "rolling release" (Arch Linux) con actualizaciones continuas.
  • Propósito: Hay distribuciones para servidores (RHEL, CentOS Stream, Ubuntu Server), para escritorio (la mayoría), para seguridad (Kali Linux), para multimedia (Ubuntu Studio), etc.
  • Soporte y documentación: Varía significativamente entre distribuciones comerciales y comunitarias.

4. Diferencia entre /home y $HOME

La diferencia es fundamental en el contexto de sistemas Unix/Linux:

  • /home: Es un directorio en el sistema de archivos raíz (/). Contiene los directorios personales de los usuarios del sistema. Por ejemplo, si un usuario se llama "usuario1", su directorio personal estará en /home/usuario1. Es una ubicación física en el disco.
  • $HOME: Es una variable de entorno del Shell. Su valor es la ruta absoluta al directorio personal del usuario actual. Por ejemplo, para el usuario "usuario1", $HOME contendrá el valor /home/usuario1. Es una forma conveniente de referirse al directorio personal sin tener que escribir la ruta completa.

El primero es un directorio y el segundo es una variable de entorno.

5. ¿Qué es el Shell del Sistema Operativo?

El Shell del sistema operativo es el intérprete de comandos base. Es el programa informático que provee una interfaz de usuario para acceder a los servicios del sistema operativo. Permite a los usuarios interactuar con el kernel y ejecutar programas, gestionar archivos y directorios, y automatizar tareas mediante scripts. Aunque algunos comandos pueden ser muy antiguos y fundamentales, el Shell es una herramienta moderna y esencial para la administración y el uso de sistemas Unix/Linux.

6. Comandos help y man

Ambos comandos proporcionan ayuda, pero de diferente naturaleza:

  • help: Se utiliza para obtener ayuda sobre los comandos internos del Shell (built-ins). La información que proporciona suele ser concisa y específica para la implementación del Shell (ej. help cd, help echo).
  • man (manual): Proporciona páginas de manual completas para comandos externos, funciones de biblioteca, archivos de configuración, etc. Es mucho más detallado y exhaustivo que help. Por ejemplo, man ls o man chmod.

man ayuda con los comandos que no aparecen en la lista de help, y ofrece una documentación mucho más profunda.

7. Interpretación de la Instrucción de Shell

La instrucción $HOME/bin/a.out ../fich1.txt >> $HOME/tmp/salida.log 2> $HOME/tmp/errores.log se desglosa de la siguiente manera:

  • $HOME/bin/a.out: Ejecuta el programa ejecutable llamado a.out. Este programa se espera que esté ubicado en el subdirectorio bin dentro del directorio personal del usuario (referenciado por la variable de entorno $HOME).
  • ../fich1.txt: Es un argumento pasado al programa a.out. Indica un archivo llamado fich1.txt que se encuentra en el directorio padre (..) del directorio actual desde donde se ejecuta el comando.
  • >> $HOME/tmp/salida.log: Esto es una redirección de la salida estándar (stdout). La salida normal que el programa a.out generaría en la pantalla se redirige al archivo salida.log, ubicado en el directorio $HOME/tmp/. El operador >> significa que la salida se añadirá al final del archivo si ya existe; si el archivo no existe, se creará.
  • 2> $HOME/tmp/errores.log: Esto es una redirección de la salida de error estándar (stderr). Cualquier mensaje de error que el programa a.out genere (que normalmente iría a la pantalla de error) se redirige al archivo errores.log, también en $HOME/tmp/. El número 2 es el descriptor de archivo para stderr.

En resumen, el comando ejecuta un programa con un archivo como argumento, guardando su salida normal en un log y sus errores en otro, ambos en el directorio temporal del usuario.

8. Comando para Cambiar de Directorio

Usamos el comando cd para cambiarnos desde el directorio actual a otro destino.

9. Detener la Ejecución de un Comando

La combinación de teclas para detener la ejecución de un comando en la terminal es Ctrl+C.

10. Sensibilidad a Mayúsculas y Minúsculas en Bash

El Shell Bash es sensible a mayúsculas y minúsculas (case sensitive). Verdadero. Esto significa que Archivo.txt, archivo.txt y ARCHIVO.TXT son considerados nombres de archivos diferentes.

11. Creación de Ficheros Vacíos

Para generar un fichero vacío usamos el comando touch.

12. Listar Contenido del Directorio Padre

Comando para listar el contenido del directorio padre actual: ls ..

13. Resultado de Operaciones con Directorios

La ejecución de las siguientes instrucciones:

  • mkdir ./SOM/tema8
  • cd SOM
  • mkdir tema9

Resultaría en la creación de la siguiente estructura de directorios (asumiendo que se parte del directorio actual):

. (directorio actual)
└── SOM/
    ├── tema8/
    └── tema9/

14. Función del Comando mv

El comando mv legislación normas /asignaturas mueve los archivos legislación y normas al directorio /asignaturas. Si /asignaturas no fuera un directorio, mv intentaría renombrar legislación a normas y luego mover normas a /asignaturas, lo cual resultaría en un error si /asignaturas no existe o no es un directorio.

15. Archivos Ocultos en Linux

Cuando nos encontramos en Linux con un archivo cuyo nombre comienza por un punto (.) estamos ante un archivo oculto. Estos archivos no se muestran por defecto con un simple ls, sino que requieren la opción -a (ej. ls -a).

16. Conversión de Permisos chmod

La orden chmod u=rwx,g=rx,o=--- cosas se convierte en la orden más sencilla chmod 750 cosas.

  • u=rwx (usuario: lectura, escritura, ejecución) = 4+2+1 = 7
  • g=rx (grupo: lectura, ejecución) = 4+0+1 = 5
  • o=--- (otros: sin permisos) = 0+0+0 = 0

17. ¿Qué es la Entrada Estándar (stdin)?

La entrada estándar (stdin, descriptor de archivo 0) es el canal por defecto a través del cual un programa recibe datos. Generalmente, es el teclado. Los programas leen de stdin a menos que se redirija la entrada desde un archivo u otra fuente.

18. ¿Qué es la Salida Estándar (stdout)?

La salida estándar (stdout, descriptor de archivo 1) es el canal por defecto a través del cual un programa envía su salida normal. Generalmente, es la pantalla (terminal). La salida de stdout puede ser redirigida a un archivo o a la entrada de otro comando (tubería).

19. Visualización Paginada de Ficheros

Comando para visualizar el contenido de un fichero de texto de forma paginada: more (o less, que es una alternativa más potente y flexible).

20. Resultado del Comando ls -la > lista

La ejecución del comando ls -la > lista realiza lo siguiente:

  • ls -la: Lista todos los ficheros y directorios (incluidos los ocultos, por -a) del directorio actual, mostrando sus permisos, número de enlaces, propietario, grupo, tamaño, fecha de última modificación y nombre (por -l, formato largo).
  • > lista: Redirige la salida estándar de ls -la a un nuevo archivo llamado lista en el directorio actual. Si el archivo lista ya existe, su contenido será sobrescrito. Si no existe, se creará.

En resumen, crea o sobrescribe un archivo llamado lista con el listado detallado de todos los contenidos del directorio actual.

21. Conexión de Comandos: Tuberías

El operador con el que se conecta la salida de un comando con la entrada del siguiente es la Tubería (|, pipe).

22. Función del Comando ls -IR | more

El comando ls -IR | more realiza lo siguiente:

  • ls -IR: Lista el contenido del directorio actual y de todos sus subdirectorios de forma recursiva (-R). La opción -I (ignore) se usa para ignorar patrones, pero en este contexto, si no hay un patrón, podría ser un error tipográfico y se referiría a -l (formato largo) o simplemente ls -R. Asumiendo que se busca una lista recursiva.
  • | more: La salida completa y potencialmente muy larga de ls -IR se redirige como entrada al comando more. Esto permite visualizar el listado de forma paginada, mostrando una pantalla a la vez y esperando la interacción del usuario para avanzar.

23. Comando para Reiniciar el Equipo

El comando que reinicia el equipo es reboot (o sudo shutdown -r now, sudo init 6).

24. Visualizar Usuarios Conectados

Para ver los usuarios conectados a mi máquina se usa el comando who (o w para más detalles).

25. Ubicación de la Entrada de Comandos

Los comandos se escriben en el prompt (o línea de comandos) del Shell.

26. Finalizar un Proceso

Se puede finalizar (matar) un proceso con el comando kill, generalmente seguido del ID del proceso (PID).

27. ¿Qué es el Kernel?

El Kernel es el núcleo del sistema operativo. Es la parte central que gestiona los recursos del hardware (CPU, memoria, dispositivos de E/S) y software, permitiendo que las aplicaciones se comuniquen con el hardware de forma segura y eficiente.

28. Visualizar Variables de Entorno

Para ver las variables de entorno de mi sesión se usan los comandos env o printenv. El comando set también muestra variables de entorno, pero además incluye variables del Shell y funciones definidas.

29. Ejecución de Comandos Fuera del Directorio Actual

Sí, se puede ejecutar un comando que no esté en el directorio actual. Esto se logra de dos maneras principales:

  • Especificando la ruta completa: Se puede usar la ruta absoluta (ej. /sbin/comando) o la ruta relativa (ej. ./script.sh si está en el directorio actual, o ../bin/comando si está en un subdirectorio del padre).
  • Utilizando la variable de entorno PATH: Si el comando se encuentra en alguno de los directorios listados en la variable de entorno PATH, se puede ejecutar directamente por su nombre (ej. ls, grep). El Shell busca el ejecutable en cada uno de los directorios listados en PATH en el orden especificado.

30. Mostrar Contenido de la Variable PATH

Para mostrar el contenido de la variable PATH se usa el comando echo $PATH.

Ejercicios Prácticos con Comandos Linux

Para qué sirven los siguientes comandos:

Comando mkdir -p ./SMR/subdir1/subdir11

Este comando crea directorios de forma recursiva. La opción -p (parents) asegura que si alguno de los directorios intermedios en la ruta (./SMR o ./SMR/subdir1) no existe, será creado automáticamente antes de crear el directorio final ./SMR/subdir1/subdir11.

Comando cp montaje redes seguridad sistemas smr

Este comando copia múltiples archivos (montaje, redes, seguridad, sistemas) al directorio de destino smr. En el comando cp, cuando se especifican múltiples orígenes, el último argumento siempre se interpreta como el destino, que debe ser un directorio existente.

Listar Contenido Recursivamente

La opción para listar el contenido del directorio actual y de sus subdirectorios es ls -R (recursivo).

Visualizar Ficheros Ocultos del Directorio Padre

Para visualizar los ficheros ocultos del directorio padre del actual se usa ls -a ... La opción -a muestra todos los archivos, incluyendo aquellos que comienzan con un punto (ocultos), y .. se refiere al directorio padre.

Identificación del Tipo de Archivo con ll

Con la ejecución del comando ll (que es un alias común para ls -l), el primer carácter de la línea de salida indica el tipo de archivo:

  • Si aparece d al comienzo, es un directorio.
  • Si aparece -, es un archivo regular.
  • Si aparece l, es un enlace simbólico.
  • Otros caracteres incluyen b (dispositivo de bloque), c (dispositivo de carácter), p (pipe con nombre), y s (socket).

Función del Comando rm AW 2> error

El comando rm AW 2> error intenta eliminar el archivo AW. Si la operación de eliminación genera algún mensaje de error (por ejemplo, si el archivo no existe, no se tienen permisos para eliminarlo, etc.), la salida de error estándar (2>) se redirige al archivo llamado error. Esto significa que los mensajes de error no se mostrarán en la terminal, sino que se guardarán en el archivo error.

Buscar Texto en Archivos con grep

Para mostrar todas las líneas de un archivo de texto que contengan la palabra "hola" se usa el comando grep hola archivo.txt.

Entradas relacionadas: