11 votes

Quelqu'un peut-il m'expliquer la différence entre les applications de terminal, CLI, CLT et Prompt ?

Je souhaite comprendre, à un niveau conceptuel, la différence entre une application de terminal, une interface de ligne de commande (CLI), des outils de ligne de commande (CLT) et une invite. Je ne sais pas quelle est la différence entre eux ?

Ce qui m'a déconcerté, c'est de réaliser qu'Apple ne fournit pas MacOS avec CLT (Command Line Tools) préinstallé, et que je dois le télécharger et l'installer séparément. Cela ne signifie-t-il pas que Terminal.app est inutile si je ne télécharge pas les CLT ?

J'utilise zsh comme shell sous MacOS Catalina 10.15.6.

Clarification

Ma confusion provient de Xcode CLT. Je ne comprends pas ce qu'est un CLT ?

  1. Xcode CLT est-il un compilateur ? Et s'il est intégré à MacOS, pourquoi dois-je télécharger le CLT de Xcode ?

  2. Pourquoi ai-je besoin d'une application comme Terminal.app pour accéder à l'interface CLI ? Le CLI n'est-il pas un interface pour commencer ?

  3. Est-ce que Homebrew (qui est un gestionnaire de paquets) considère un CLT qui a sa propre CLI avec laquelle j'interagis en utilisant le Terminal ?

Je n'arrive pas à me faire une idée de ces concepts et du lien qui les unit.

0 votes

Les commentaires ne sont pas destinés à une discussion prolongée. déplacé vers chat .

16voto

Steve Chambers Points 21588

CLI (Command Line Interface) est une description générale d'une interface avec laquelle on interagit en tapant des commandes. Sur Mac, votre CLI principal est Terminal.app. Sous Windows, c'est PowerShell ou Command Prompt. Sur l'ancien système d'exploitation Amiga, il est simplement appelé "CLI".

Terminal est le programme ou l'application ("app") qui est utilisé pour accéder à l'interface de ligne de commande. Sous MacOS, le terminal se trouve dans le dossier /Applications/Utility et appelé Terminal.app. Il existe d'autres applications de terminal (sous MacOS et Linux/Unix) qui offrent d'autres fonctions, de la même manière que l'application Pages d'Apple offre des fonctions de traitement de texte présentées et mises en œuvre de manière différente de celles de Microsoft Word.

Outils en ligne de commande sont en effet livrés avec et facilement accessibles sous MacOS à l'aide de Terminal.app. Comme MacOS est basé (à l'origine) sur l'Unix Berkeley Standard Distribution (généralement appelé BSD Unix, ou simplement BSD), il est livré avec (à peu près) la suite standard d'outils de ligne de commande Unix. Ce sera similaire (avec quelques différences significatives) aux outils de ligne de commande fournis avec la plupart des distributions Linux.

Shell Bien que vous ne l'ayez pas mentionné, il est important de comprendre que MacOS (et de nombreuses distributions Unix et Linux) est livré avec un certain nombre de programmes shell. Jusqu'à récemment, MacOS était livré avec BASH comme interpréteur de commandes par défaut, plus récemment remplacé par ZSH, bien que BASH soit toujours disponible. Les différences entre les interpréteurs de commandes sont subtiles (pour les utilisateurs occasionnels), mais définissent, de manière (légèrement) différente, les éléments suivants environnement que nous utilisons pour exécuter les outils en ligne de commande. Pour la plupart des gens, le shell que vous utilisez n'a pas d'importance. Pour les programmeurs et les administrateurs système, le shell qu'ils utilisent est d'une importance vitale pour fournir un environnement personnalisable adapté à leurs besoins spécifiques.

Prompt est le ou les caractères que le shell présente dans le terminal.app pour indiquer qu'il attend une entrée. EG il vous invite à taper quelque chose. J'ai modifié mon invite par rapport à celle par défaut, donc la vôtre sera différente de la mienne (ci-dessous) où le caractère d'invite est le suivant % :

My terminal prompt

TDLR

Vous disposez des outils de ligne de commande intégré à MacOS. On y accède à l'aide de Terminal.app (qui utilise ensuite le shell ZSH).

Vous peut télécharger d'autres versions Unix standard de ces commandes si les versions actuelles ne font pas le travail que vous voulez, de la manière dont vous le voulez, ou sont tout simplement absentes. L'un des référentiels de commandes open source les plus populaires est le suivant Homebrew.

Le homebrew n'est en aucun cas nécessaire au fonctionnement de MacOS, mais en fonction de vos besoins et de vos envies en matière de système d'exploitation, ils peuvent constituer de bonnes (ou simplement familières) alternatives à ce qu'Apple livre avec ses systèmes d'exploitation.

10 votes

Il existe également les outils de ligne de commande Xcode qui doivent être téléchargés/installés séparément.

0 votes

1) CLT est-il un compilateur ? Et s'il est intégré à MacOS, pourquoi dois-je télécharger le CLT de Xcode ? 2) Pourquoi ai-je besoin d'une application comme Terminal pour accéder à la CLI. Le CLI n'est-il pas d'abord une interface ? 3) Est-ce que Homebrew (qui est un gestionnaire de paquets) considère un CLT qui a son propre CLI avec lequel j'interagis en utilisant Terminal ?

3 votes

@CaptainCustard Xcode Command Line Tools est une installation supplémentaire qui permet de compiler des applications à partir de la ligne de commande (au lieu d'utiliser l'application Xcode).

16voto

Nimesh Neema Points 44385

Ajoutant à la excellente réponse de Steve Chambers :

Historiquement, le terme Terminal était utilisé pour désigner un dispositif de communication qui permet à l'utilisateur d'interagir avec un ordinateur centralisé. Un terminal fournissait un dispositif d'entrée/sortie sous la forme d'un clavier et d'un écran.

L'époque des ordinateurs centraux avec accès à distance est révolue et, comme presque tout le monde a accès à son propre ordinateur doté d'une unité centrale et d'une mémoire dédiées, l'utilisation du terme "terminal" est désormais un terme impropre et il est donc plus approprié d'utiliser le terme "terminal". Emulateur de terminal car l'application Terminal.app émule un terminal et le système d'exploitation MacOS qui exécute l'application Terminal.app exécute également le programme shell avec lequel l'utilisateur interagit réellement.

Ainsi, à l'époque actuelle où nous n'utilisons plus réel Le terme "terminal" désigne en abrégé un émulateur de terminal.

MacOS est livré avec un émulateur de terminal intégré appelé Terminal.app Cependant, il existe des alternatives tierces disponibles avec des fonctionnalités étendues. L'un de ces émulateurs de terminal tiers, très populaire, est le suivant iTerm2 .

Interface de ligne de commande ou CLI est un terme général désignant une interface utilisateur informatique dans laquelle le principal mode d'interaction consiste à taper des commandes respectant une syntaxe spécifique. Elle s'oppose à l'interface utilisateur graphique (GUI) qui prévaut dans les appareils informatiques modernes.

Alors que MacOS est préinstallé avec une variété d'outils de ligne de commande UNIX, Command Line Tools ou CLT d'Apple est le terme utilisé pour désigner un paquetage installable spécifique mis à disposition par Apple pour les développeurs de logiciels. CLT, en plus des outils UNIX préinstallés dans MacOS, installe le SDK MacOS, les en-têtes et les outils de construction tels que le compilateur LLVM d'Apple et Make. Il permet aux développeurs de construire et d'installer des logiciels open source. Pour plus de détails, consultez ce lien : https://developer.apple.com/xcode/features/

Il est intéressant de noter que le terme Outil en ligne de commande peut être interprété de deux façons. Outils en ligne de commande est un logiciel mis à disposition par Apple qui contient un ensemble spécifique d'éléments. Outil(s) en ligne de commande en général, pourrait être utilisé pour faire référence à tout outil/application avec lequel on interagit via une interface de ligne de commande (Homebrew est le dernier des deux). Et toute application en ligne de commande peut en général être désignée comme un outil en ligne de commande. (Tout comme Apple utilise le terme App Store pour désigner leur place de marché pour les applications iOS, le même terme pouvant également être utilisé de manière générique).

Prompt ou Command Prompt est un autre terme couramment utilisé pour désigner l'interface de ligne de commande. Une invite est généralement utilisée pour indiquer l'endroit où les utilisateurs peuvent saisir la ligne de commande (c'est-à-dire la séquence de caractères décrivant l'ensemble de la commande). Une invite de commande peut utiliser un caractère spécial pour donner une idée du shell utilisé ou de l'utilisateur connecté. Par exemple, le shell BASH utilise $ pour le caractère d'invite, tandis que ZSH utilise % pour le caractère d'invite. L'invite pour l'utilisateur Root est presque toujours # . Une invite est généralement suivie d'un curseur clignotant pour indiquer l'endroit où saisir le texte.

Voici une représentation d'une invite de commande exécutant le shell BASH dans Terminal.app sous MacOS pour un utilisateur non-Root. La partie soulignée en vert indique l'invite dans le shell auquel l'utilisateur accède en utilisant l'application Terminal :

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


Pour répondre à vos questions spécifiques :

Ce qui m'a déconcerté, c'est que je me suis rendu compte qu'Apple ne livrait pas MacOS avec CLT (Command Line Tools) et que je devais le télécharger.

MacOS n'est pas livré avec le CLT d'Apple parce que la plupart des utilisateurs de Mac (et même la plupart des développeurs de logiciels) n'en auront jamais besoin. Et une fois que vous avez besoin des outils de ligne de commande d'Apple, Apple a fait en sorte qu'il soit très facile de les installer.

Cela ne signifie-t-il pas que le terminal est inutile si je ne télécharge pas CLT ?

Le terminal est très utile et utilisable pour une variété de tâches, même pour de nombreux développeurs de logiciels, même sans les outils de ligne de commande d'Apple installés. La plupart des développeurs de logiciels jamais installer les outils de ligne de commande et pourtant ils peuvent accéder à n'importe lequel des shells intégrés, exécuter les commandes internes du shell, exécuter les scripts du shell, exécuter une des nombreuses commandes externes préinstallées, etc. Seuls les développeurs ayant besoin d'accéder à des outils spécifiques fournis par CLT devraient les obtenir en l'installant.

Est-ce un compilateur ? Et s'il est intégré à MacOS, pourquoi dois-je télécharger le CLT de Xcode ?

Non, CLT n'est pas un compilateur, ou plutôt, il contient un compilateur (Apple LLVM) comme l'une des applications de son paquet d'outils. Les outils en ligne de commande ont été décrits de manière appropriée par Apple aquí :

Apple Command Line Tools

Pourquoi ai-je besoin d'une application comme Terminal pour accéder au CLI ? Le CLI n'est-il pas d'abord une interface ?

L'installation des outils de ligne de commande d'Apple installe un paquet contenant des fichiers d'en-tête, des SDK et diverses applications de ligne de commande dans MacOS. Terminal.app est alors utilisé comme un interface pour avoir accès aux outils eux-mêmes.

Est-ce que Homebrew (qui est un gestionnaire de paquets) considère un CLT qui a sa propre CLI avec laquelle j'interagis en utilisant le Terminal ?

Homebrew est un gestionnaire de paquets tiers, open source et développé par la communauté, qui permet de gérer facilement l'installation d'applications/utilitaires en ligne de commande qui ne sont pas fournies par Apple. Il élimine les tracas de la compilation, de l'installation, de la configuration, de la gestion et de la désinstallation d'une variété d'utilitaires en ligne de commande à code source ouvert, ce qui peut être un problème pour la majorité des utilisateurs (y compris les développeurs de logiciels).

Homebrew devient lui-même disponible pour les utilisateurs comme une commande externe qui leur permet de gérer d'autres utilitaires en ligne de commande. Il s'agit d'une application/utilité différente des outils de ligne de commande fournis par Apple.

(Pour dissiper toute confusion, lorsque l'on fait référence à l'application Apple Outils en ligne de commande il est sous-entendu que l'on parle du paquet spécifique contenant plusieurs outils mis à disposition par Apple, bien que le terme lui-même semble assez générique (comme d'autres termes utilisés par Apple tels que App Store). Les outils de ligne de commande d'Apple ne doivent pas être confondus avec les outils de ligne de commande lorsqu'ils sont mentionnés en général).

0 votes

En ce qui concerne ma dernière question, est-ce un oui ou un non ? Ce que j'ai compris, c'est que Homebrew est une application comme le CLT d'Apple. J'interagis avec son CLI à travers Terminal.app. Cela ne ferait-il pas de Terminal.app une interface graphique pour le CLI ?

2 votes

@CaptainCustard Comme je l'ai mentionné dans la réponse, vous pouvez interpréter le terme "outil de ligne de commande" de deux façons. Les "outils de ligne de commande" sont des logiciels mis à disposition par Apple et contenant un ensemble spécifique d'éléments. L'expression "outil(s) de ligne de commande" en général peut être utilisée pour désigner tout outil/application avec lequel on interagit par l'intermédiaire d'une interface de ligne de commande. Homebrew est ce dernier. Et toute application en ligne de commande peut être désignée comme un outil en ligne de commande. (Tout comme Apple utilise le terme "App Store" pour désigner sa place de marché pour les applications iOS, alors que le même terme peut également être utilisé de manière générique). J'espère que cela vous aidera.

0 votes

Très bien expliqué.

3voto

ljrk Points 138

En complément des réponses déjà données, je souhaite donner un peu plus de détails sur la distinction entre les terminaux (physiques) et les émulateurs de terminaux.

Les terminaux physiques peuvent être imaginés comme des machines à écrire spéciales qui communiquaient en série, d'où le nom de Tele-Typewriter, ou TTY en abrégé. C'était l'époque où plusieurs utilisateurs partageaient un grand serveur (par exemple dans une université) et se connectaient à ce point central via leur terminal qui fournissait une interface au système.

Avec l'ère de l'informatique personnelle, mais avant les interfaces utilisateur graphiques, le terminal et le terminal serveur fusionnés en un seul appareil. Pour conserver le même environnement, les ordinateurs ont ajouté virtuel terminaux, ou VT. Sous Linux, vous pouvez accéder à VT1-7 via la combinaison de touches Control + Alt + Shift + F<em>x</em> .

Sous MacOS, vous pouvez faire en sorte que votre masque de connexion n'affiche pas les utilisateurs disponibles mais propose un champ de saisie de texte. Si vous tapez >console en tant qu'utilisateur, vous serez alors plongé dans un terminal virtuel "plein écran" en mode texte uniquement. Comme ces VTs émulent la ligne série et les entrées/sorties limitées des terminaux physiques, ils ont des restrictions assez similaires.

Avec l'ère des interfaces utilisateur graphiques, le bureau GUI a remplacé le VT. Afin de pouvoir continuer à exécuter des outils CLI, des émulateurs de terminal ont été développés. Il s'agit d'applications graphiques/fenêtres conçues pour se connecter à ce que l'on appelle des "émulateurs de terminal". pseudo (PTY), qui sont essentiellement des VTs sans tête et créables ad-hoc.

C'est pourquoi nous avons des abréviations telles que TTY, VT et PTY qui décrivent toutes des choses assez similaires, mais légèrement différentes.

1voto

awy Points 500

Est-ce [CLT] un compilateur ? Et s'il est intégré à MacOS, pourquoi dois-je télécharger le CLT de Xcode ?

Comme son nom l'indique, il s'agit d'un ensemble d'outils tels que git , svn , ranlib , ar , le compilateur Clang, le compilateur GCC, etc. Le CLT en /Library/CommandLineTools manque xcodebuild par exemple, dont certaines applications ont besoin pour compiler leur code.

Je dirais que ceux de Xcode sont les plus complets. MAIS vous n'avez pas besoin de Xcode pour le fonctionnement normal de votre Mac et si vous n'écrivez pas de code pour MacOS, iOS, WatchOS ou TvOS.

Pourquoi ai-je besoin d'une application comme Terminal pour accéder au CLI ? Le CLI n'est-il pas d'abord une interface ?

Vous pouvez avoir plusieurs applications de type terminal comme iTerm2, etc.

Est-ce que Homebrew (qui est un gestionnaire de paquets) considère un CLT qui a sa propre CLI avec laquelle j'interagis en utilisant le Terminal ?

Brew dispose également d'un grand nombre d'outils open source disponibles dans MacOS CLT ou Xcode CLT. Cependant, les SDK propriétaires d'Apple ne peuvent être trouvés que dans les CLT de MacOS/Xcode. Je n'ai vu personne faire référence aux paquets de Brew en tant que CLT. C'est simplement ambigu.

0 votes

Fish est un shell et non une "application de type terminal". Pour la distinction, voir la réponse de Steve.

0 votes

Je vous remercie, mais vous n'avez répondu à aucune de mes questions. Pourquoi ai-je besoin d'applications comme Terminal pour accéder à la CLI du système d'exploitation ? (Je ne demandais pas s'il y avait plus d'applications comme Terminal.app.) Du point de vue terminologique, si Homebrew me permet d'utiliser certaines commandes pour interagir avec la CLI du système d'exploitation, cela n'en fait-il pas un CLT ?

0 votes

@CaptainCustard 1 Où pourriez-vous voir la sortie d'un binaire ? 2 D'un point de vue terminologique, votre Mac est votre ordinateur personnel, ce qui n'en fait pas un PC ? Vous pouvez utiliser ce que vous voulez Je ne l'appliquerai pas, mais je la qualifierai d'ambiguë.

1voto

benwiggy Points 21125

Pourquoi ai-je besoin d'une application comme Terminal pour accéder au CLI ? Le CLI n'est-il pas d'abord une interface ?

Une interface est une méthode que les applications utilisent pour canaliser les informations entre vous et l'ordinateur. Le Finder est une application qui utilise une interface graphique. (appelée à un moment donné interface WIMP -- Windows, Icons, Menu, Pointer).

CLI (Command Line Interface) est une méthode ou un mode de fonctionnement qu'une application comme le Terminal peut utiliser. Bien sûr, techniquement, Terminal utilise plusieurs éléments de Windows et de WIMP comme le glisser-déposer.

1 votes

Peut-on dire que des applications comme Terminal sont des interfaces graphiques pour CLI ?

1 votes

Ce serait certainement plein d'esprit.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X