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
, osh 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 comonohup comando &
. - Ejecución programada: Utilizando herramientas como
cron
(para tareas periódicas) oat
(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 usanRPM
(.rpm
) condnf
oyum
, y Arch Linux usaPacman
. - 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 quehelp
. Por ejemplo,man ls
oman 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 llamadoa.out
. Este programa se espera que esté ubicado en el subdirectoriobin
dentro del directorio personal del usuario (referenciado por la variable de entorno$HOME
).../fich1.txt
: Es un argumento pasado al programaa.out
. Indica un archivo llamadofich1.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 programaa.out
generaría en la pantalla se redirige al archivosalida.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 programaa.out
genere (que normalmente iría a la pantalla de error) se redirige al archivoerrores.log
, también en$HOME/tmp/
. El número2
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 = 7g=rx
(grupo: lectura, ejecución) = 4+0+1 = 5o=---
(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 dels -la
a un nuevo archivo llamadolista
en el directorio actual. Si el archivolista
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 simplementels -R
. Asumiendo que se busca una lista recursiva.| more
: La salida completa y potencialmente muy larga dels -IR
se redirige como entrada al comandomore
. 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 entornoPATH
, se puede ejecutar directamente por su nombre (ej.ls
,grep
). El Shell busca el ejecutable en cada uno de los directorios listados enPATH
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), ys
(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
.