¿Cuál es la diferencia entre Terminal, Console, Shell y Command Line?

211

¿Cuál es la diferencia entre Terminal, Console, Shell y Command Line?

Akiva
fuente
1
(1/2) Agent Cool es en su mayoría correcto, pero la definición de consola que proporciona es obsoleta, dado este tema. Sin embargo, su enlace tiene la información correcta, si la sigue. Lea la definición completa en su enlace. La consola se usa libremente para significar muchas cosas similares, pero lo más importante generalmente se refiere a los dispositivos de entrada y salida humanos CONEXIÓN LOCAL, por ejemplo, teclado, pantalla y tal vez el mouse.
0xSheepdog
1
(2/2) Esto puede parecer un punto pedante, pero como un sistema experimentado, te diré que no lo es . Cuando un sistema tiene un problema y parece estar completamente bloqueado / inactivo / fuera de línea, debe verificar la consola física del sistema para ver si todavía funciona, pero simplemente perdió la conectividad de red. Este pequeño detalle podría ahorrarle o costarle datos, procesamiento de información, etc. Pedantic, sí. Pero importante
0xSheepdog
66
@ 0xSheepdog Es posible que desee ampliar estos comentarios en una respuesta completa (incluidas las definiciones o explicaciones de los otros términos también), publicado como tal. No está mal que una pregunta tenga múltiples respuestas (excepto quizás cuando transmiten exactamente la misma información y de la misma manera). No estoy seguro de por qué la práctica importante de verificar una máquina localmente se basa en conocer / llamar a su interfaz humana física una consola, pero tal vez haya un argumento de que es importante para una comunicación efectiva con colegas o el uso de documentación. (Puede aclarar eso en su respuesta.)
Eliah Kagan
44
Debido a su estrecha relación (ver todas las buenas respuestas), estos términos a veces se usan como sinónimos, lo que probablemente es lo que lo llevó a preguntar esto.
Mark

Respuestas:

143

Respuesta corta:

  • terminal = entorno de entrada / salida de texto
  • consola = terminal física
  • shell = intérprete de línea de comando

Respuesta larga:

La consola y el terminal están estrechamente relacionados. Originalmente, se referían a un equipo a través del cual se podía interactuar con una computadora: en los primeros días de Unix, eso significaba un dispositivo de estilo teleimpresor que se parecía a una máquina de escribir, a veces llamado teletipo, o "tty" en forma abreviada. El nombre "terminal" vino desde el punto de vista electrónico, y el nombre "consola" desde el punto de vista de los muebles. Muy temprano en la historia de Unix, los teclados y pantallas electrónicas se convirtieron en la norma para los terminales.

Terminal

En la terminología de Unix, un terminal es un tipo particular de archivo de dispositivo que implementa una serie de comandos adicionales ( ioctls ) más allá de la lectura y escritura. El kernel proporciona algunos terminales en nombre de un dispositivo de hardware, por ejemplo, con la entrada proveniente del teclado y la salida yendo a una pantalla de modo de texto, o con la entrada y salida transmitidas a través de una línea en serie. Otros terminales, a veces llamados pseudo-terminales o pseudo-ttys, son provistos (a través de una capa delgada del núcleo) por programas llamados emuladores de terminal . Algunos tipos de emuladores de terminal incluyen:

  • Aplicaciones GUI que se ejecutan en el sistema X Window : Xterm , Gnome Terminal, Konsole, Terminator, etc.
  • Screen y tmux , que proporciona una capa de aislamiento entre un programa y otro terminal
  • Ssh , que conecta un terminal en una máquina con programas en otra máquina
  • Esperar , para scripting interacciones terminales

La palabra terminal también puede tener un significado más tradicional de un dispositivo a través del cual uno interactúa con una computadora, generalmente con un teclado y una pantalla. Por ejemplo, un terminal X es un tipo de cliente ligero , una computadora de propósito especial cuyo único propósito es manejar un teclado, pantalla, mouse y ocasionalmente otros periféricos de interacción humana, con las aplicaciones reales ejecutándose en otra computadora más poderosa.

Consola

Una consola es generalmente un terminal en el sentido físico que es, por alguna definición, el terminal primario conectado directamente a una máquina. La consola aparece ante el sistema operativo como terminales (implementadas en el núcleo). En algunos sistemas, como Linux y FreeBSD, la consola aparece como varios terminales (ttys) (las combinaciones de teclas especiales cambian entre estos terminales); solo para confundir las cosas, el nombre dado a cada terminal en particular puede ser "consola", "consola virtual", "terminal virtual" y otras variaciones.

Consulte también ¿Por qué un terminal virtual es "virtual" y qué / por qué / dónde está el terminal "real"? .

Línea de comando [interfaz]

Una línea de comando es una interfaz donde el usuario escribe un comando (que se expresa como una secuencia de caracteres, generalmente un nombre de comando seguido de algunos parámetros) y presiona la Returntecla para ejecutar ese comando.

Cáscara

Un shell es la interfaz principal que los usuarios ven cuando inician sesión, cuyo objetivo principal es iniciar otros programas. (No sé si la metáfora original es que el shell es el entorno hogareño para el usuario, o si el shell es lo que otros programas están ejecutando).

En los círculos de Unix, Shell se ha especializado en significar un shell de línea de comandos , centrado en ingresar el nombre de la aplicación que se desea iniciar, seguido de los nombres de archivos u otros objetos sobre los que la aplicación debería actuar, y presionar la tecla Enter. Otros tipos de entornos (con la notable excepción reciente de Gnome Shell) generalmente no usan la palabra "shell"; por ejemplo, los sistemas de ventanas involucran " administradores de ventanas " y " entornos de escritorio ", no un "shell".

Hay muchas conchas de Unix diferentes. El shell predeterminado de Ubuntu es Bash (como la mayoría de las otras distribuciones de Linux). Las alternativas populares incluyen zsh (que enfatiza el poder y la personalización) y fish (que enfatiza la simplicidad).

Los shells de línea de comandos incluyen construcciones de control de flujo para combinar comandos. Además de escribir comandos en un mensaje interactivo, los usuarios pueden escribir scripts. Los shells más comunes tienen una sintaxis común basada en Bourne_shell . Cuando se habla de " programación de shell ", el shell casi siempre se supone que es un shell de estilo Bourne. Algunos shells que a menudo se usan para scripts pero carecen de funciones interactivas avanzadas incluyen el shell Korn (ksh) y muchas variantes de cenizas . Casi cualquier sistema similar a Unix tiene un shell de estilo Bourne instalado como /bin/sh, por lo general, ash, ksh o bash. En Ubuntu, /bin/shes Dash , una variante de ceniza (elegida porque es más rápida y usa menos memoria que bash).

En la administración del sistema Unix, el shell de un usuario es el programa que se invoca cuando inician sesión. Las cuentas de usuario normales tienen un shell de línea de comandos, pero los usuarios con acceso restringido pueden tener un shell restringido o algún otro comando específico (por ejemplo, para la transferencia de archivos -solo cuentas).


La división del trabajo entre el terminal y el caparazón no es completamente obvia. Aquí están sus tareas principales.

  • Entrada: el terminal convierte las claves en secuencias de control (p . Ej. Left\e[D). El shell convierte las secuencias de control en comandos (por ejemplo, \e[Dbackward-char).
  • La edición de línea, el historial de entrada y la finalización son proporcionados por el shell.
    • El terminal puede proporcionar su propia edición de línea, historial y finalización, y solo enviar una línea al shell cuando esté listo para ejecutarse. El único terminal común que funciona de esta manera está M-x shellen Emacs.
  • Salida: el shell emite instrucciones como "mostrar foo", "cambiar el color de primer plano a verde", "mover el cursor a la siguiente línea", etc. El terminal actúa siguiendo estas instrucciones.
  • El aviso es puramente un concepto de shell.
  • El shell nunca ve la salida de los comandos que ejecuta (a menos que se redirija). El historial de salida (scrollback) es puramente un concepto terminal.
  • El terminal proporciona copiar y pegar entre aplicaciones (generalmente con el mouse o secuencias de teclas como Ctrl+ Shift+ Vo Shift+ Insert). El shell también puede tener su propio mecanismo interno de copiar y pegar (por ejemplo, Meta+ Wy Ctrl+ Y).
  • El control del trabajo (iniciar programas en segundo plano y administrarlos) se realiza principalmente por el shell. Sin embargo, es el terminal el que maneja combinaciones de teclas como Ctrl+ Cpara eliminar el trabajo en primer plano y Ctrl+ Zpara suspenderlo.

Reciclado de Unix y Linux

Gilles
fuente
1
Tendría que estar en desacuerdo con usted porque el terminal es un término apropiado para un archivo de dispositivo terminal, y / o el código de manejo de terminal en el núcleo (tty ioctls, raw / cooking, edición de línea básica). terminal = lo que maneja los códigos de escape, convierte las pulsaciones de teclas en caracteres y dibuja en una pantalla (o imprime en papel / cinta). Vea mi respuesta para más detalles.
Peter Cordes
2
@PeterCordes En este nivel de detalle, no hay distinción. POSIX define terminal como sinónimo de dispositivo terminal , en el sentido de un archivo de dispositivo. Ese es el significado de Unix. Resulta que es lo que maneja los códigos de escape, convierte las pulsaciones de teclas en caracteres y dibuja en una pantalla (o transmite a través de la red, o registra en un archivo, etc.).
Gilles
2
hrm, sí, la terminal también se usa en ese sentido. Suponiendo que hay un emulador de terminal, o un puerto serie con un dispositivo terminal conectado a él, en un extremo del dispositivo terminal que maneja el núcleo. El manejo de kernel tty (en modo cocinado) solo maneja algunos códigos de control (señales en ^ c, edición de línea en ^ u / ^? (Eliminar). Estoy tratando de dibujar una línea entre el código tty y la parte de Linux que implementa un terminal tipo VT100 en una tarjeta gráfica y un teclado USB / ps2 / AT. Puede compilar Linux sin eso, pero no sin tty.
Peter Cordes
3
@PeterCordes En la configuración del kernel, el soporte para terminales puede omitirse (es útil para algunos sistemas incrustados raros donde la memoria es extremadamente escasa); que está controlado por CONFIG_TTY. El soporte para emuladores de terminal (más propiamente llamados pseudo terminales - "emulador de terminal" no siempre incluye telnetd, screen, expect, ...) está controlado por CONFIG_UNIX98_PTYS. Soporte para la visualización en modo texto y el teclado de PC o similar es controlado por CONFIG_VT. Ver drivers/tty/Kconfigen la fuente del núcleo.
Gilles
2
Vaya, no tenía una fuente reciente de kernel por ahí. CONFIG_TTY solo se agregó en 2012. De todos modos, sí, espero que eso ayude a cualquiera que intente entender cuáles son las diferentes piezas del rompecabezas y cómo encajan.
Peter Cordes
60

Una representación visual.

Terminal

Algo en lo que puedas sentarte y trabajar como un jefe.

Terminal

Consola

Un hardware que hace muchas cosas.

Consola

Otro ejemplo de una consola, sería una consola de videojuegos como una Super Nintendo [donde puedes jugar Actraiser]

Cáscara

Básicamente una aplicación para ejecutar comandos.

CáscaraCáscara

Línea de comando [interfaz]

Básicamente cualquier cosa que ingrese comandos.

CLICLI

Akiva
fuente
8
Me robaste la idea: iba a dar básicamente la misma respuesta. Para que pueda tener un voto a favor. El punto es, por supuesto, que si bien estos términos son sinónimos en la actualidad, términos como "terminal" y "consola" tienen su origen en conceptos informáticos más antiguos.
thomasrutter
2
Buen esfuerzo. Simple y fácil
Un Umar Mukthar
19

Del Proyecto de Información de Linux :

Terminal : Técnicamente, una ventana de terminal, también conocida como emulador de terminal, es una ventana de solo texto en una interfaz gráfica de usuario (GUI) que emula una consola.

En nuestras palabras, una aplicación GUI, desde donde podemos acceder a la consola de un usuario.

Consola : un panel de instrumentos que contiene los controles para una computadora

Shell : un shell es un programa que proporciona la interfaz de usuario tradicional de solo texto para Linux y otros sistemas operativos similares a Unix

Línea de comandos: una línea de comandos es el espacio a la derecha del símbolo del sistema en un modo de visualización de todo el texto en un monitor de computadora (generalmente un panel CRT o LCD) en el que un usuario ingresa comandos y datos

rɑːdʒɑ
fuente
55
"Terminal" significa una pantalla física de solo texto. Lo que dices es en realidad "emulador de terminal".
Usuario registrado
2
@RegisteredUser Un emulador de terminal es un tipo de terminal. La palabra terminal no se limita a terminales físicos (la palabra habitual para eso es consola ).
Gilles
2
Esta definición de línea de comando es incorrecta. Una línea de comando no se limita a un modo de visualización de todo el texto.
Gilles
1
@Gilles Lo tomé de One web-Link. Has mencionado bien la respuesta correcta.
rɑːdʒɑ
55
@AgentCool No cuestiono su capacidad para copiar y pegar. Cuestiono tu elección de fuente. Lo que publica es su responsabilidad, ya sea que lo haya escrito o no.
Gilles
15

Las respuestas aquí parecen muy buenas. Sin embargo, son demasiado secos y técnicos para mi gusto, así que daré una idea.

La terminal es el final de algo, donde termina. Por ejemplo, si toma el metro en alguna ciudad, la estación donde baja es su terminal. O en un aeropuerto, el lugar donde las personas salen cuando llegan a su país de destino se considera la terminal. La razón por la cual la terminal en el aeropuerto es hoy en día tanto el lugar donde lleva a las personas a bordo como el lugar donde las baja del avión es por razones económicas obvias.

El propósito de una computadora es obtener datos, hacer algo con ellos y escupir el resultado. Por lo tanto, el terminal es cualquier dispositivo desde el que puede obtener el resultado del cálculo (una pantalla, por ejemplo). Simplemente sucedió que en las primeras computadoras generalmente tenías la entrada (teclado) y la salida (pantalla) como un solo dispositivo. Debido a eso, hoy en día los terminales se consideran dispositivos de entrada / salida. Un mouse, teclado, pantalla, cámara, todos son terminales.

Shell es una cosa del sistema operativo. En una computadora tienes el kernel que en Ubuntu, por ejemplo, es la parte de Linux. Ahora, dado que el núcleo es realmente de bajo nivel, se proporciona un shell, un programa que permite al usuario interactuar con el núcleo de una manera fácil. Eso es lo que BASH es, por ejemplo.

La consola es (de un diccionario)

Una superficie plana que contiene los controles para una máquina, para un equipo eléctrico, etc.

Es por eso que en la industria de la música el tablero con todos los mandos, o en un transbordador espacial la mesa de comando, todos se consideran consolas. Super Nintendo y PS2 también se llaman consolas históricamente, ya que los primeros dispositivos de entretenimiento parecían cajas con un montón de botones.

La línea de comando es solo una interfaz, lo opuesto a la GUI. Es decir, hay dos tipos de interfaces en una computadora; CLI (interfaz de línea de comandos) y GUI (interfaz gráfica de usuario). La principal diferencia es que el primero recibe información del teclado mientras que el segundo recibe información del mouse.

Pithikos
fuente
1
¿Qué quieres decir con "lo opuesto a la GUI"?
Koray Tugay
2
Con opuesto quiero decir que tienes CLI o GUI. He aclarado ahora un poco más en la respuesta.
Pithikos
12

Para resumir mi respuesta:

Shell es un programa que processesordena y returnsgenera, como bash en Linux.

Terminal es un programa que es runun shell , en el pasado era un dispositivo físico (antes de que los terminales fueran monitores con teclados, eran teletipos ) y luego su concepto se transfirió al software , como Gnome-Terminal .

Entonces abro Gnome-Terminal , aparece una ventana negra que ejecuta Shell para poder ejecutar mis comandos.

La consola es un tipo especial de terminal , también era un dispositivo físico. ejemplo en Linux tenemos el virtual consolecual puedo acceder a ellos mediante la combinación de Ctrl+ Alt+ F1 to F7.

Consola a veces significa el teclado y el monitor conectados físicamente a esta computadora.

nux
fuente
11

Estos términos a menudo van juntos, por lo que las personas usan uno de los términos para referirse a la colección. (es decir, generalmente es obvio por el contexto que significan una ventana de terminal que proporciona una interfaz a un shell de línea de comando)

Para evitar que esto llegue a largo aliento, solo voy a decir xterm como sustituto de XTerm / Gnome Terminal / Konsole / mrxvt / etc / etc. Lo mismo para bash.

La consola tiene muchos otros significados específicos, así que déjalo fuera por ahora.

Terminal : Algo que proporciona interacción humana con programas a través de un flujo bidireccional de caracteres ASCII / UTF8 / otros, generalmente con VT100 o procesamiento de código de escape similar. (Por ejemplo, retroceder, eliminar, teclas de flecha, etc. generan códigos de escape. Los programas pueden imprimir códigos de escape para mover el cursor por la pantalla del terminal, cambiar a texto en negrita y / o color, borrar o desplazar la pantalla, etc.) En los viejos tiempos, a menudo era un dispositivo dedicado con una pantalla y un teclado y un puerto serie. Ahora, generalmente es un programa como xterm.

Hay archivos de dispositivo para programas para leer / escribir desde / a terminales, y los terminales virtuales también tienen el otro lado accesible como un archivo de dispositivo. Aquí es donde xterm escribe su entrada para que bash pueda leerla.

Cada terminal, incluidas las virtuales, proporciona edición de línea básica cuando está en modo cocinado (en lugar de crudo). Esto es manejado por el código del núcleo. Es bash que proporciona la edición de línea que puede hacer con las teclas de flecha. (Intente ejecutar caty escribir si desea ver cómo es la edición de línea básica proporcionada por el núcleo. Retroceso funciona, y un par de otras cosas según su configuración stty).

Aunque hay una gran cantidad de código de kernel detrás de los dispositivos terminales, se lo denominará como código de manejo de terminales, no como un terminal en sí mismo.

Editar: Gilles me ha convencido de que referirse a un tty como terminal es un uso adecuado. Los emuladores de terminal y los programas interactivos que se ejecutan conectados a un terminal dependen de la semántica del terminal implementada por el núcleo. (La mayoría de este comportamiento está estandarizado por POSIX, y es el mismo en Linux / * BSD / otro Unix.) Un editor de texto de pantalla completa depende del comportamiento de las cosas de Unix, así como del manejo del código de escape del movimiento del cursor, y muchas otras características, del emulador de terminal.

Sin embargo, un VT100 físico con pantalla, teclado y puerto serie es una instancia de un terminal. No requiere un núcleo Unix en el otro extremo de su puerto serie para estar completo. Algo completamente diferente podría ser enviarle códigos de escape y texto ASCII, y recibir lo mismo. Sin embargo, solo sería un VT100, no un terminal Unix. Un emulador de terminal más la semántica de Unix tty constituyen el paquete completo de un terminal de Unix en el que normalmente se ejecuta un programa como bash.

La línea de comando es un estilo de interfaz de usuario, donde escribe algo, luego presiona Intro para que algo suceda. También se usa como una abreviatura para un shell de línea de comandos, como bash o MS-DOS, pero también puede decir "es una herramienta de línea de comandos" sobre algo como fdisk. Considerando solo los programas que usan un terminal para su interfaz de usuario, las dos familias principales son la línea de comandos y el texto de pantalla completa (por ejemplo, un editor como vi o emacs -nw).

Los programas de línea de comandos que normalmente se ejecutan en terminales casi siempre funcionan con sus entradas y salidas redirigidas a archivos, pero los programas de pantalla completa basados ​​en terminales como editores o clientes de correo electrónico son solo interactivos y no funcionarían.

Un shell es un programa para iniciar otros programas. En un contexto Unix, es común referirse al shell de línea de comandos (es decir, al shell Bourne o al equivalente del shell C). Los shells de Unix también pueden leer su entrada de archivos, es decir, scripts de shell. Son lenguajes de programación completos, con variables, bucles y condicionales, y muchos programas están escritos en bash (o solo con las /bin/shfunciones de shell POSIX, para una mayor portabilidad). También es fácilmente posible escribir un rápido for i in *.something; do some_program "$i";done en un shell interactivo.

Al poner todo junto, un shell como bash (o cualquier programa que inicie ejecutando un comando de shell) recibirá caracteres del /dev/pts/Ndispositivo terminal después de que xterm escriba su entrada en su lado del pseudo-terminal. Si ejecuta cat, luego presiona ^c, el código tty del kernel actuará en el ^cy enviará un SIGINTproceso al primer plano en ese terminal. (Tenga en cuenta el uso de terminalen este contexto significa el Unix tty, no un emulador de terminal o algo conectado a un puerto serie). Esto sucede porque el shell pone el terminal en modo "cocinado" antes de iniciar cualquier programa, lo que significa que el núcleo actúa en algún control. secuencias (El código tty todavía no tiene nada que ver con el manejo de los códigos de escape VT100, solo algunos códigos de control de bajo ASCII). Si en lugar de un xterm, está utilizando el terminal de texto de la consola Linux, entonces el kernel está haciendo la emulación VT100, y manejando todas esas cosas. Linux se puede compilar sin soporte de terminal de texto de consola virtual, pero no sin soporte tty.

La consola a veces se usa como sinónimo de terminal (KDE incluso tiene un emulador de terminal llamado Konsole).

Como señala 0xSheepdog, también tiene otro significado: hardware de interacción humana conectado localmente.

En un contexto de kernel, la consola tiene otro significado específico: es la terminal donde se escriben los mensajes de arranque. Este puede ser un puerto serie. Normalmente, por supuesto, es la consola de texto implementada por el núcleo en la parte superior de los controladores para hardware de gráficos y teclados USB / ps2 / AT. Si inicia Linux con console=tty0 console=ttyS0,115200n8en la línea de comando, recibirá mensajes del núcleo en su pantalla Y en el puerto serie.

Linux implementa consolas virtuales ( /dev/tty1a N ). Puede cambiar cuál está controlando su pantalla física / teclado con Ctrl+ Alt+ . Las distribuciones típicas de Linux crean 6 y comienzan en todas ellas, por lo que incluso si no puede o no desea iniciar X11, puede iniciar sesión 6 veces y alternar entre un comando, una página de manual y cualquier otra cosa, sin ejecutando un programa como pantalla. Linux (el núcleo) incluye un emulador de terminal estilo VT100 para proporcionar una interfaz de terminal a través de la pantalla y el teclado en las consolas virtuales.FNgetty

Los 6 terminales virtuales estándar con indicaciones de inicio de sesión son las razones por las que Ctrl+ Alt+ lo F7lleva de regreso a su sesión X11: el servidor X toma la próxima consola virtual disponible. (Sin embargo, el servidor X se abre /dev/input/...directamente, en lugar de obtener sus pulsaciones de teclas /dev/tty7).

Entonces "cambiar a una consola de texto" significa presionar Ctrl+ Alt+ F1y usar esa terminal. Cuando las computadoras eran lentas y no tenían mucha RAM, algunas personas pasaban gran parte de su tiempo en las consolas de texto, ya que eran rápidas, se podía configurar una buena fuente e incluso cambiar el tamaño del terminal para tener caracteres más pequeños, pero más en pantalla a la vez. Alt+ Lefty Alt+ Rightcambiar a la consola anterior / siguiente. (X11 deshabilita esto para su consola, por supuesto, dejando solo el combo Ctrl+ Alt+ ).FN

Entonces consola es el único de estos términos que no tiene un significado técnico bien definido. Tiene un par de diferentes. (Dependiendo de cómo se sienta acerca del manejo apropiado de terminal versus terminal más tty, se podría decir que el terminal también tiene múltiples significados).

Peter Cordes
fuente
2
La consola significa que el terminal físico "principal" no está solo en un contexto de núcleo. Es el mismo significado en /dev/console. La consola no es particularmente ambigua, aunque ocasionalmente se usa en el sentido más general de terminal , eso es bastante raro (más raro que el terminal que se usa para referirse específicamente a una consola).
Gilles
1
bien, sí, echo foo | sudo tee / dev / console> / dev / null se imprimirá en la pantalla, si su VT actual está en modo texto (incluida la consola framebuffer, no solo literalmente el modo de texto VGA). Si arrancaste con la consola en un puerto serie, creo que iría allí. Se podría decir que / dev / console es el archivo del dispositivo para cualquier cosa que el núcleo esté tratando como la consola del sistema. Nada más en el sistema necesita tener una noción de que haya una consola tty (excepto las cosas de recuperación de arranque que inician un shell en la consola TTY si el sistema no se inicia en modo multiusuario. Por lo general desde initrd)
Peter Cordes
1
El servidor xorg X (strings / usr / bin / Xorg) no usa / dev / console para obtener acceso al hardware. Utiliza / dev / tty0 y / dev / tty% d, y / dev / vc /% d, para configurarse en su propio VT. Estoy bastante seguro de que Xorg aún funcionaría bien en una PC que arrancó con la consola del kernel en un puerto serie. Y que los terminales virtuales en modo texto seguirían funcionando. Cuanto más lo considero, más me inclino a ver la consola en un contexto de kernel como un terminal especial, seleccionado en el momento del arranque. (Linux realmente puede enviar sus mensajes de consola en múltiples terminales a la vez, si usted lo solicita).
Peter Cordes
6

Creo que en los primeros días de las computadoras de tiempo compartido, cada usuario tenía un terminal (¡cuando podían obtener uno!), Pero solo los operadores del sistema tenían una consola. La consola podría usarse para tareas como reiniciar la máquina u obtener diagnósticos del sistema que no eran posibles desde los terminales de usuario. La consola estaba en la sala de máquinas, una parte intrínseca de la computadora, mientras que los terminales podían ser remotos. La consola también incluiría luces e interruptores de hardware, no solo entrada y salida de texto.

Yo diría que la línea de comando es un área donde un usuario puede escribir un comando, mientras que el shell es el programa que interpreta / obedece ese comando. El término "shell" es muy particular para los derivados de Unix; "línea de comandos" está más en la tradición de Windows / DOS. El equivalente en mainframes generalmente se denomina "lenguaje de control de trabajo".

Claramente, estas distinciones originales se han vuelto borrosas con el tiempo a medida que la tecnología cambia.

Michael Kay
fuente
3

Intentando una respuesta corta centrada en el usuario:

línea de comando : la línea donde ingresa los comandos. Por lo general, solía decir que necesita ejecutar algo en la ventana de modo de texto (interfaz de línea de comando) proporcionada por su sistema operativo.

shell : el programa real que ejecuta el sistema operativo para procesar las cosas que ingresas command line. De ahí el nombre: shell fácil de usar para el núcleo del sistema operativo no amigable. Proporciona el símbolo del sistema, como $o >, ejecuta sus propios comandos y aplicaciones. Siempre trabaja a través del shellprograma y nunca opera con la consola o terminal directamente.

consola : es una ventana donde se ejecutan sus programas en modo texto. Esta ventana procesa las pulsaciones de teclas, sabe que es ancho y alto. Puede ser de pantalla completa.

terminal : es un dispositivo con pantalla para humanos que acepta la secuencia de entrada de caracteres y los muestra. No hay comentarios para el usuario sobre la altura o el ancho (solo hacks) o las pulsaciones de teclas del teclado, solo los caracteres se desplazan hacia él. El terminal procesa secuencias especiales en esta secuencia para colorear las cosas, limpiar la pantalla y hacer otras cosas desagradables. Los terminales son escamosos, porque es fácil desordenar las cosas si el archivo que está enviando contiene secuencias especiales. Son populares en las redes y las interfaces de depuración de dispositivos, porque solo necesita una sola transmisión para enviar la salida y controlar el dispositivo de salida y puede tapiniciar una conversación sin necesidad de inicializar o crear una ventana.

consola serie : es una consola que procesa el flujo de entrada como un terminal.

anatoly techtonik
fuente
3

Este es un tema vago, porque los términos son muy ambiguos. Recomiendo leer los enlaces que he proporcionado a lo largo de esta respuesta, que también son mis fuentes para esta respuesta.

Un caparazón es la capa sobre el núcleo:

  • Interpreta los comandos ingresados ​​por el usuario y los procesa. El shell tiene acceso al kernel, a diferencia de los usuarios. Los usuarios solo pueden acceder al kernel ingresando comandos usando un shell y usando procesos (es decir, ejecutando programas). Los programas usan llamadas del sistema para acceder a la funcionalidad del kernel. Todas las llamadas del sistema juntas forman la API del sistema.
  • Se dan ejemplos de conchas en la segunda definición de terminal.

Una terminal tiene muchos significados:

  • (1) Un terminal de texto . Esta es la combinación de un monitor de pantalla y un teclado. Un cable conectaba el terminal a la computadora (a menudo indirectamente). Se llamó terminal ya que estaba ubicado en el extremo terminal de este cable. Estos terminales generalmente estaban separados físicamente de la computadora, porque en el pasado muchos terminales estaban conectados a una sola computadora central / computadora, por lo que múltiples usuarios podían tener acceso a la computadora al mismo tiempo.
  • (2) Una ventana de terminal, también conocida como emulador de terminal . En Linux, una ventana de terminal es la emulación de una consola, contenida en una ventana GUI. Es la CLI en la que escribe su texto, y esta entrada es leída por el shell que está utilizando. Hay muchos tipos de shells (por ejemplo, bash, dash, ksh88) y terminales (por ejemplo, konsole, gnome).
  • (3) Para una explicación sobre pseudo terminales , vea esto . Es un par de dos 'archivos de dispositivo' utilizados para la comunicación entre un proceso y un emulador de terminal.

Una consola tiene muchos significados:

  • (1) un panel de instrumentos que contiene los controles para una computadora.
  • (2) Una consola del sistema, también conocida como consola de computadora . Esta es la combinación de la pantalla del monitor y un teclado conectado a una computadora. Esto es sinónimo de lo que llamamos un "terminal de texto". A veces, otros periféricos de entrada de usuario, como un mouse, forman parte de una consola.
  • (3) Una interfaz de línea de comandos que cubre la pantalla completa. Esto está en contraste con una ventana de terminal, que es una GUI con una X en la esquina superior derecha para cerrarla. Estos son los dos modos de visualización para CLI (interfaces de línea de comandos) en sistemas tipo Unix. De manera similar a una ventana de terminal, la consola también puede ejecutar muchos shells.

A menudo, los sistemas operativos le permiten ejecutar múltiples consolas en una consola física (definición de consola 2). Estas se llaman consolas virtuales , también conocidas como terminales virtuales , y se puede acceder a través de combinaciones ctrl+ alt+ Fx. Por ejemplo, si desea abrir la tercera consola virtual, use la combinación ctrl+ alt+ F3.

Las consolas (definición 3) pueden parecerle un anacronismo, pero los expertos deberían sentirse cómodos usándolas, ya que hay muchos sistemas operativos que no admiten GUI. Además, si una GUI deja de responder, la consola aún puede funcionar.

usuario1534664
fuente
2

La mayoría de las terminales hoy en día son estrictamente hablando emuladores de terminal . Es un tipo de función en el funcionamiento de un sistema similar a UNIX y, al mismo tiempo, la interfaz básica que ofrecen los sistemas. De hecho, todo, incluida la GUI, se construye sobre él.
Coloquialmente "terminal" también puede referirse a puntos finales en una red informática con una topografía estelar.

La consola se refiere a las interfaces (hardware) para los terminales. Es decir, hay consolas seriales y hoy en día principalmente virtuales .
La ventana coloquialmente conocida como "consola" -ventana es un shell, conectado a un terminal del sistema, a través de una consola virtual.

En el pasado, cuando las computadoras eran caras, una instalación podría haber tenido una computadora real y varios terminales conectados a ella, a través de cables seriales ("consola serie"). El sistema operativo, las operaciones, etc. se llevaron a cabo en la computadora física, la entrada y la salida se realizaron en la (s) consola (s).
Puede cambiar entre terminales virtuales presionando CTRL+ ALT+ F1(hasta F6): un remanente de esos tiempos.
Hoy en día, el concepto de "clientes ligeros" se remonta en esta dirección de centralizar cantidades masivas de recursos y proporcionar el hardware suficiente para proporcionar una interfaz de última generación en el lugar de trabajo real.

shell es el "motor" que ves en la terminal. Proporciona interoperabilidad con el sistema en sí y agrega características agradables como autocompletar, variables, etc.
Se traduce de un lado a otro entre el sistema operativo / núcleo real que utiliza las llamadas del sistema y usted. Las llamadas al sistema sin shell son un poco como la codificación assemblery al menos un shell te proporciona C.

La línea de comando se refiere al método de intercambio de entrada y salida a través de una ventana de texto. Estrictamente hablando, la línea en la que escribe es la línea de comando (actual). El método en general se conoce más correctamente como interfaz de línea de comando o CLI.

  1. núcleo
  2. terminal de ofertas
  3. el terminal está conectado a través de una consola
  4. consola ejecuta shell
  5. los comandos y la salida se intercambian a través de la línea de comandos (interfaz)
marca
fuente
1
Las instrucciones de la línea de comando no son entendidas por el núcleo, sino por un shell. El "marco central de instrucciones que entiende el núcleo" serían las llamadas al sistema. La "interfaz de línea de comandos básica de UNIX" es un shell, no hay separación entre eso y las "características agradables". Una "ventana de emulador de terminal" no es una consola.
Gilles
1
@Gilles ajustado. Obviamente confundí algunas cosas yo mismo allí.
Mark