GNU/Linux >> Tutoriales Linux >  >> Linux

Terminales, shells, consolas y líneas de comando

Si está explorando Linux o Unix, es posible que escuche los términos terminal, línea de comando, shell y consola, y es posible que esté confundido sobre cuál es cuál y si son lo mismo. Definitivamente todos están relacionados, pero hay matices en cada uno que tienen implicaciones importantes. Este artículo lo guía a través de la terminología de las interfaces basadas en texto de Linux.

Cómo funcionan las computadoras

Cuando una computadora arranca, un kernel reconoce su propio hardware físico y permite que cada componente se comunique entre sí. Hay muchos kernels diferentes:hace mucho tiempo, había un kernel de Unix, un kernel de Sun, un kernel de BSD, y más tarde llegó el kernel de Linux, el kernel de Hurd, un kernel de Mach y un kernel de NT.

Y eso no es todo. Hay kernels especializados para todo tipo de dispositivos computacionales. Algunos son muy simples y otros son muy complejos, dependiendo de las necesidades del dispositivo que esté ejecutando.

El conjunto más básico de instrucciones para una computadora la mantiene encendida. Los controladores de hardware, orquestados por el núcleo, mantienen los ventiladores activos para evitar el sobrecalentamiento, se supervisa el espacio en disco, se gestionan los estados de RAM, se detectan nuevos dispositivos, etc. Las primeras computadoras hacían incluso menos que esto en su estado inactivo, y cada programa que ejecutaba una computadora primitiva era esencialmente el único propósito de su existencia, al menos mientras ese programa (en forma de tarjetas perforadas) se estaba ejecutando. El concepto de ejecutar un trabajo en segundo plano, o dos aplicaciones a la vez, era inimaginable. Si quería procesar dos trabajos a la vez, tenía una segunda computadora.

Concha interactiva

Sin embargo, una vez que las computadoras avanzaron, algunos científicos reconocieron que programar una computadora para un propósito cada vez que se iniciaba era ineficiente y, con los avances tecnológicos, carecía de potencia. Así que desarrollaron algo que llamaron caparazón.

Hay diferentes explicaciones sobre por qué se eligió el término "cáscara", pero una explicación creíble y satisfactoria es que la interfaz de la cáscara rodea al núcleo tal como una cáscara de nuez rodea a una nuez. El shell es la parte con la que interactúa un usuario, mientras que el núcleo gestiona las solicitudes de potencia informática.

Lo importante que hay que entender sobre un caparazón es que marcó una nueva era para la informática. El caparazón transformó las computadoras de un electrodoméstico a una herramienta eléctrica que podía cambiar su función a pedido. Las computadoras se habían vuelto interactivas. Incluso en la informática moderna, un caparazón es el nivel más bajo de interacción que puede tener con su computadora. Eso lo convierte en la forma más directa de instruir a una computadora sobre lo que desea que haga a continuación, por lo que aprender el shell es una táctica invaluable para los usuarios avanzados.

La concha es un concepto abstracto para muchas personas. Al pensar en un caparazón, es útil pensar en uno específico, y hay muchos para elegir. El más popular es (GNU) Bash, pero Zsh y Fish son alternativas populares de Bash. Tcsh y Ksh son viejos favoritos confiables de los primeros UNIX, con estricto cumplimiento de POSIX. Ash y Dash tienen como objetivo ser livianos y rápidos, lo que los hace ideales para sistemas integrados y entornos mínimos. Powershell de Microsoft es un shell basado en .NET de código abierto.

Línea de comando

Cuando accede a un shell, obtiene un aviso. Algunas personas llaman línea de comando al indicador de shell, lo cual es de hecho descriptivo:un indicador indica una línea en la que puede escribir un comando.

Un indicador es un símbolo que le permite saber que el shell está esperando sus instrucciones. Un símbolo común es el signo de dólar ($ ), pero también podría ser un signo de porcentaje (% ), un paréntesis angular (> ), un octohorpe (# ), o algo completamente diferente. Eso significa que cuando usa un shell, su vista predeterminada se ve así:


$

La diferencia notable entre los shells es la sintaxis. Por ejemplo, en Bash y Zsh y Ash y Ksh, establece variables con una declaración "igual" :

$ foo=bar
$ echo $foo
bar

En Tcsh, sin embargo, utiliza la palabra clave set para variables:

$ set foo=bar
$ echo $foo
bar

Ayuda

En la superficie, la interfaz de shell no es exactamente fácil de usar. Por el contrario, parece que se espera que sepas qué hacer con un caparazón. Esto no es a lo que están acostumbrados la mayoría de los informáticos modernos, porque las aplicaciones gráficas al menos proporcionan a los usuarios botones y menús para explorar, incluso si no saben exactamente lo que hace la aplicación.

Incluso si un usuario entiende que el shell está esperando la entrada, las palabras comunes, en inglés o de otro tipo, generan errores o resultados inútiles.

Por ejemplo, si escribe help en un indicador de Bash, obtiene una lista de comandos integrados, algunos de los cuales producen resultados útiles o permiten una mayor interacción.

En ese sentido, el shell no es una aplicación típica. Realmente es principalmente una línea de comando:una línea para que escribas comandos. Depende del usuario saber qué comandos están disponibles, y se supone que un usuario que abre un shell se ha familiarizado con al menos los comandos más rudimentarios para que pueda aprender más sobre el sistema.

Debido a que ese no es siempre el caso, es útil en los sistemas públicos crear un alias global para el comando casi inútil help. a algo informativo, como shellp.

Consola

Puede acceder a un shell en Linux o BSD sin ejecutar una GUI en absoluto (por lo que todo lo que queda es un shell), o bien presionando Alt+Shift y una tecla de función 2 a 6. Cada tecla de función lo lleva a una pantalla provista por getty (o agetty, o algo similar, dependiendo de lo que use su distribución). La pantalla proporciona un aviso de inicio de sesión a un shell, y esta pantalla a menudo se conoce casualmente como una consola. Más exactamente, es una sesión getty o un dispositivo tty emulado.

En Mac, no hay forma de optar por no ejecutar una GUI en un sistema en ejecución, aunque en el momento del arranque, puede usar teclas de bloqueo para arrancar en modo de usuario único. El modo de usuario único en Mac OS desactiva muchas funciones, incluida la administración de usuarios, por lo que generalmente no es recomendable.

La forma más común de acceder a un shell en las computadoras modernas es abrir un emulador de terminal, que ejecuta un shell dentro de él.

Terminal

Históricamente, una terminal era un dispositivo físico, incluso antes de que existiera el concepto de computadora personal (PC). Una terminal era un objeto parecido a una computadora, pero, de hecho, era solo una pantalla (¡o, a veces, solo una impresora!) con un teclado adjunto. Una ventana de terminal en una computadora moderna es una emulación de ese objeto histórico y, por lo general, puede ejecutar cualquier shell dentro de un emulador de terminal.

Por ejemplo, en su escritorio Linux, puede ejecutar una instancia de GNOME Terminal para que sirva como ventana en un shell Bash y otra instancia de GNOME Terminal para que sirva como ventana en un shell Tcsh.

El terminal en sí solo está allí para albergar un shell en ejecución. Un emulador de terminal no procesa datos ni ejecuta comandos, aunque puede agregar funciones de interfaz de usuario, como atajos de teclado especiales, la capacidad de arrastrar y soltar archivos en un shell, temas de colores, etc.

Hay muchos emuladores de terminal disponibles en todas las plataformas. Los escritorios Linux y BSD se entregan con xterm como respaldo y, por lo general, incluyen un emulador moderno para uso diario (como GNOME Terminal, Konsole, etc.). Mac OS viene con un emulador de terminal patentado, pero iTerm2 es un reemplazo muy superior (y su licencia es GPLv2).

Para Windows, PowerShell es el predeterminado, pero hay muchas otras opciones de código abierto como ConEmu y Cmder.

Más información

Puede obtener más información sobre los terminales y los shells que ejecutan leyendo sobre cómo navegar en el shell, cómo administrar archivos en el shell y cómo personalizar su shell. Si aprendes mejor haciendo , luego considere tomar cursos introductorios de Red Hat Training.

[ Necesito ayuda para averiguar qué escribir en la terminal? Descargue la hoja de trucos de los comandos de Linux. ]


Linux
  1. Cómo identificar directorios de trabajo usando variables y caracteres de shell

  2. ¿Qué shells no admiten la expansión de paréntesis de dólares y exigen backticks?

  3. Comando wc de linux

  4. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

  5. ¿Diferencia entre '{}' y {} en el comando de búsqueda?

Comando Dmesg en Linux

Comando Sysctl en Linux

Comando fuente en Linux

Cómo ordenar archivos en Linux (GUI y Shell)

Construcción de comandos

8 tipos de shells de Linux