11 votos

¿Puede alguien explicarme la diferencia entre aplicaciones de terminal, CLI, CLT y Prompt?

Deseo entender a nivel conceptual, la diferencia entre una aplicación de terminal, Interfaz de Línea de Comandos (CLI), Herramientas de Línea de Comandos (CLT) y Prompt. No sé cuál es la diferencia entre ellas.

Lo que me despistó fue darme cuenta de que Apple no entrega MacOS con CLT (Command Line Tools) preinstalado, y tengo que descargarlo e instalarlo por separado. ¿No significa eso que Terminal.app es inútil a menos que descargue el CLT?

Estoy usando zsh como mi shell corriendo en MacOS Catalina 10.15.6.

Aclaración

Mi confusión proviene de Xcode CLT. No entiendo qué es un CLT?

  1. ¿Es Xcode CLT un compilador? Y si está integrado en MacOS, ¿por qué tengo que descargar el CLT de Xcode?

  2. Por qué necesito una aplicación como Terminal.app para acceder al CLI. ¿No es el CLI un interfaz ¿para empezar?

  3. ¿Considera Homebrew (que es un gestor de paquetes) un CLT que tiene su propio CLI con el que interactúo usando Terminal?

No consigo asimilar estos conceptos y la conexión entre ellos.

16voto

Steve Chambers Puntos 5054

CLI (Command Line Interface) es una descripción general de una interfaz con la que se interactúa escribiendo comandos. En el Mac su CLI principal es Terminal.app. En Windows es PowerShell o Command Prompt. En el antiguo sistema operativo Amiga se llama simplemente "CLI".

Terminal es el programa o aplicación ("app") que se utiliza para acceder a la interfaz de línea de comandos. En MacOS el terminal se encuentra en el directorio /Applications/Utility y se llama Terminal.app. Existen aplicaciones de terminal alternativas (en MacOS y Linux/Unix) que ofrecen otras funciones de la misma manera que la aplicación Pages de Apple ofrece funciones de procesamiento de textos presentadas e implementadas de manera diferente que Microsoft Word.

Herramientas de línea de comandos Se suministran, en efecto, y son fácilmente accesibles en MacOS mediante la aplicación Terminal.app. Dado que MacOS está basado (originalmente) en la Berkeley Standard Distribution Unix (normalmente llamada BSD Unix, o simplemente BSD), viene con (prácticamente) el conjunto estándar de herramientas de línea de comandos de Unix. Esto será similar (con algunas diferencias significativas) a las herramientas de línea de comandos incluidas en la mayoría de las distribuciones de Linux.

Shell Aunque no lo has mencionado, es importante entender que MacOS (y muchas distribuciones de Unix y Linux) vienen con varios programas de shell. Hasta hace poco, MacOS se entregaba con BASH como shell por defecto, y más recientemente se ha cambiado a ZSH, aunque BASH sigue estando disponible. Las diferencias en los shells son sutiles (para los usuarios casuales) pero definen, de manera (ligeramente) diferente, el medio ambiente que utilizamos para ejecutar las herramientas de línea de comandos. Para la mayoría de la gente, el shell que se utiliza no es importante. Para los programadores y administradores de sistemas el shell que utilizan es de vital importancia para proporcionar un entorno personalizable y adecuado a sus necesidades específicas.

Prompt es el carácter o caracteres que el shell presenta en el terminal.app para indicar que está esperando una entrada. Por ejemplo, le pide que escriba algo. He modificado mi prompt por defecto, así que el tuyo se verá diferente al mío (abajo) donde el carácter prompt es % :

My terminal prompt

TDLR

Tienes las herramientas de línea de comandos integrado en MacOS. Se accede a ellos mediante la aplicación Terminal.app (que luego utiliza el shell ZSH).

Usted puede descargue otras versiones estándar de Unix de estos comandos si los actuales no hacen el trabajo que desea, de la manera que quiere, o simplemente no existen. Uno de los repositorios más populares de comandos de código abierto es En casa.

El homebrew no es en absoluto necesario para el funcionamiento de MacOS, pero dependiendo de sus necesidades y deseos en un sistema operativo, pueden proporcionar buenas (o simplemente familiares) alternativas a lo que Apple envía con sus sistemas operativos.

16voto

Nimesh Neema Puntos 69

Añadiendo a la excelente respuesta de Steve Chambers :

Históricamente, el término Terminal se utiliza para referirse a un dispositivo de comunicación que permite al usuario interactuar con un ordenador centralizado. Un terminal proporcionaba un dispositivo de entrada/salida en forma de teclado y pantalla.

Los días de los mainframes con acceso remoto ya no existen, y, con casi todo el mundo teniendo acceso a un ordenador propio totalmente capaz con CPU y memoria dedicadas, el uso del término Terminal es ahora un término erróneo, y por lo tanto, es más apropiado utilizar el término Emulador de terminal ya que el Terminal.app está emulando un dispositivo de terminal y el mismo sistema operativo MacOS que está ejecutando el Terminal.app también está ejecutando el programa de shell con el que el usuario realmente interactúa.

Así, en la época actual en la que ya no utilizamos real terminales, el término terminal se refiere en forma abreviada a un Emulador de Terminal.

MacOS viene con un emulador de terminal integrado llamado Terminal.app Sin embargo, existen alternativas de terceros con un conjunto de funciones más amplio. Uno de esos programas emuladores de terminal de terceros muy populares es iTerm2 .

Interfaz de línea de comandos o CLI para abreviar, es un término general para referirse a una interfaz de usuario de ordenador en la que el modo principal de interacción es a través de la escritura de comandos que se adhieren a una sintaxis específica. Se trata de un término que contrasta con la interfaz gráfica de usuario o GUI, que es la que predomina en los dispositivos informáticos actuales.

Mientras que MacOS viene preinstalado con una variedad de herramientas de línea de comandos UNIX, Apple's Command Line Tools o CLT es el término utilizado para referirse a un paquete instalable específico puesto a disposición por Apple para los desarrolladores de software. CLT, además de las herramientas UNIX preinstaladas en MacOS, instala el SDK de MacOS, cabeceras y herramientas de compilación como el compilador LLVM de Apple y Make. Permite a los desarrolladores construir e instalar software de código abierto. Para más detalles, consulte este enlace: https://developer.apple.com/xcode/features/

Cabe destacar que el término Herramienta de línea de comandos puede interpretarse de dos maneras. Herramientas de línea de comandos es un paquete de software puesto a disposición por Apple que contiene un conjunto específico de elementos. Herramienta(s) de línea de comandos en general podría utilizarse para referirse a cualquier herramienta/aplicación con la que se interactúa a través de una interfaz de línea de comandos (Homebrew es la última de las dos). Y cualquier aplicación de línea de comandos puede ser en general referida como una herramienta de línea de comandos. (Al igual que Apple utiliza el término App Store para referirse a su mercado de aplicaciones para iOS, aunque el mismo término también podría utilizarse de forma genérica).

Prompt o Símbolo del sistema es otro término comúnmente utilizado para referirse a la interfaz de la línea de comandos. Un prompt se utiliza generalmente para indicar el lugar en el que los usuarios pueden introducir la línea de comandos (es decir, la secuencia de caracteres que describen el comando completo). Un prompt de comando puede utilizar un carácter especial para dar alguna idea sobre el shell en uso o el usuario conectado. Por ejemplo, el shell BASH utiliza $ para el carácter prompt, mientras que ZSH utiliza % para el carácter de la indicación. El prompt para el usuario Root es casi siempre # . Un aviso suele ir seguido de un cursor parpadeante para indicar el lugar de entrada del texto.

Esta es una representación de un símbolo del sistema que ejecuta el shell BASH en Terminal.app en MacOS para un usuario no root. La parte subrayada en verde indica el prompt en el shell al que accede el usuario usando la app Terminal:

command prompt running BASH shell in Terminal.app in macOS for a non-root user


Para responder a sus preguntas concretas:

Lo que me despistó fue darme cuenta de que Apple no entrega MacOS con CLT (Command Line Tools) y tengo que descargarlo.

MacOS no viene con el CLT de Apple porque la mayoría de los usuarios de Mac (incluso la mayoría de los desarrolladores de software) nunca lo necesitarían. Y una vez que se necesitan las herramientas de línea de comandos de Apple, Apple ha hecho que sea muy fácil instalarlas.

¿No significa eso que el Terminal es inútil a menos que descargue CLT?

Terminal es muy útil y utilizable para una variedad de tareas, incluso para muchos desarrolladores de software, incluso sin las herramientas de línea de comandos de Apple instaladas. La mayoría de los desarrolladores de software nunca instalar las herramientas de línea de comandos y, sin embargo, pueden acceder a cualquiera de los shells incorporados, ejecutar comandos internos del shell, ejecutar scripts, ejecutar uno de los numerosos comandos externos preinstalados, etc. Sólo para los desarrolladores que necesiten acceder a herramientas específicas proporcionadas por CLT, tendrían que obtenerlas instalándolo.

¿Es un compilador? Y si está construido en MacOS, ¿por qué necesito descargar el CLT de Xcode?

No, CLT no es un compilador, o mejor dicho, contiene un compilador (Apple LLVM) como una de las aplicaciones de su paquete de herramientas. Las herramientas de línea de comandos han sido descritas acertadamente por Apple aquí :

Apple Command Line Tools

Por qué necesito una aplicación como Terminal para acceder al CLI. Para empezar, ¿no es la CLI una interfaz?

La instalación de las herramientas de línea de comandos de Apple instala un paquete que contiene archivos de cabecera, SDK y varias aplicaciones de línea de comandos en MacOS. Terminal.app es entonces usado como interfaz para acceder a las propias herramientas.

¿Considera Homebrew (que es un gestor de paquetes) un CLT que tiene su propio CLI con el que interactúo usando Terminal?

Homebrew es un gestor de paquetes de terceros, desarrollado por la comunidad y de código abierto, que facilita la instalación de aplicaciones/utilidades de línea de comandos que Apple no suministra. Elimina la molestia de compilar/instalar/configurar/gestionar/desinstalar una variedad de utilidades de línea de comandos de código abierto, que podría ser una molestia para la mayoría de los usuarios (incluidos los desarrolladores de software).

El propio Homebrew se pone a disposición de los usuarios como un comando externo que les permite gestionar otras utilidades de línea de comandos. Es una aplicación/utilidad que es diferente de las herramientas de línea de comandos proporcionadas por Apple.

(Para aclarar cualquier confusión, al referirnos a la Herramientas de línea de comandos En el caso de las herramientas de línea de comandos de Apple, se da a entender que se trata de un paquete específico que contiene múltiples herramientas puestas a disposición por Apple, aunque el término en sí mismo suena bastante genérico (al igual que otros términos que utiliza Apple, como App Store). Las herramientas de línea de comandos de Apple no deben confundirse con las herramientas de línea de comandos cuando se hace referencia a ellas en general)

3voto

Kuba Barański Puntos 33

Además de las respuestas ya dadas, quiero dar un poco más de detalle sobre la distinción entre terminales (físicos) y emuladores de terminal.

Los terminales físicos pueden ser imaginados como máquinas de escribir especiales que se comunican a través de una serie, de ahí Tele-Typewriter, o, TTY para abreviar. Esto ocurría en la época en que varios usuarios compartían un gran servidor (por ejemplo, en una universidad) y se conectaban a ese punto central a través de su terminal, que proporcionaba una interfaz al sistema.

Con la era de la informática personal, pero antes de las interfaces gráficas de usuario, el terminal y la servidor fusionados en un solo dispositivo. Para conservar el mismo entorno, los ordenadores añadidos virtual terminales, o VT. En Linux puede acceder a VT1-7 mediante la combinación de teclas Control + Alt + Shift + F<em>x</em> .

En MacOS puedes habilitar tu máscara de acceso para que no te muestre los usuarios disponibles sino que te proporcione un campo de entrada de texto. Si escribe >console como usuario, se le enviará a un terminal virtual de "pantalla completa" de sólo texto. Como estos VTs emulan la línea serie y la entrada/salida limitada de los terminales físicos, tienen restricciones bastante similares.

Con la era de las interfaces gráficas de usuario, el escritorio GUI sustituyó al VT. Para poder seguir ejecutando herramientas CLI, se desarrollaron emuladores de terminal, que son aplicaciones gráficas/ventanas diseñadas para conectarse a lo que se llama pseudo (PTY), que son esencialmente VTs creables sin cabeza y ad-hoc.

Por eso tenemos abreviaturas como TTY, VT y PTY, que describen cosas bastante similares, aunque ligeramente diferentes.

1voto

awy Puntos 500

¿Es [CLT] un compilador? Y si está construido en MacOS, ¿por qué necesito descargar el CLT de Xcode?

Como su nombre indica, son un conjunto de herramientas como git , svn , ranlib , ar , compilador Clang, compilador GCC, etc. El CLT en /Library/CommandLineTools carece de xcodebuild por ejemplo, que algunas aplicaciones necesitan para compilar su código

Yo diría que los de Xcode son los más completos. PERO no necesitas Xcode para el funcionamiento normal de tu Mac y si no escribes código para macOS, iOS, WatchOS o TvOS.

Por qué necesito una aplicación como Terminal para acceder al CLI. Para empezar, ¿no es la CLI una interfaz?

Puedes tener varias aplicaciones tipo Terminal como iTerm2, etc.

¿Considera Homebrew (que es un gestor de paquetes) un CLT que tiene su propio CLI con el que interactúo usando Terminal?

Brew también tiene muchas de las herramientas de código abierto que vienen en MacOS CLT o Xcode CLT. Sin embargo los SDKs propietarios de Apple sólo se pueden encontrar en MacOS/ Xcode CLT. No he visto a nadie referirse a los paquetes de Brew como CLT. Simplemente será ambiguo.

1voto

benwiggy Puntos 8

Por qué necesito una aplicación como Terminal para acceder al CLI. Para empezar, ¿no es la CLI una interfaz?

Una interfaz es un método que las aplicaciones utilizan para canalizar la información entre usted y el ordenador. Finder es una aplicación que utiliza una interfaz gráfica (en un momento dado llamada interfaz WIMP - Windows, Iconos, Menú, Puntero).

CLI (Command Line Interface) es un método o modo de operar que una aplicación como Terminal puede utilizar. Por supuesto, técnicamente, Terminal utiliza múltiples elementos de Windows, y WIMP como arrastrar y soltar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X