paint-brush
La ligne de commande : un guide completpar@marcinwosinek
2,170 lectures
2,170 lectures

La ligne de commande : un guide complet

par Marcin Wosinek9m2023/01/18
Read on Terminal Reader

Trop long; Pour lire

Il existe de nombreux bons arguments pour s'habituer à l'interface de ligne de commande (CLI). Cependant, en tant que débutant complet, il peut être difficile de démarrer et une nouvelle session shell peut sembler un peu intimidante. Pour commencer, vous avez besoin d'un émulateur de terminal : un programme qui émule l'accès en texte seul à votre machine.
featured image - La ligne de commande : un guide complet
Marcin Wosinek HackerNoon profile picture

Il existe de nombreux bons arguments pour s'habituer à l'interface de ligne de commande (CLI). Cependant, en tant que débutant complet, il peut être difficile de démarrer et une nouvelle session de shell peut sembler un peu intimidante :

Passons en revue les bases de la CLI !

Où commencer

La première chose dont vous avez besoin est un émulateur de terminal : un programme qui émule l'accès en texte seul à votre machine. Tout système d'exploitation (OS) aura un grand choix d'émulateurs : ils sont tous assez similaires, et les principales différences seront :


  • le nombre de couleurs supportées,


  • options disponibles pour les types de police, les tailles ou les schémas de couleurs,


  • raccourcis clavier pour augmenter la taille de la police, etc.


Au tout début, vous devriez être satisfait de ce qui est disponible dans votre système d'exploitation ou votre environnement de développement intégré (IDE).

Coquilles

Shell est un programme qui interprète vos commandes et exécute des programmes pour vous. C'est une chose différente du simulateur de terminal dont nous avons parlé ci-dessus. D'une certaine manière, dans votre interface graphique, vous ouvrez le terminal, et à l'intérieur du terminal, vous disposez d'un interpréteur de commandes uniquement textuel.


De nombreuses options sont disponibles, avec des différences subtiles qui peuvent considérablement modifier l'expérience utilisateur.

Zsh

Z shell, ou Zsh, est un interpréteur de commandes moderne et populaire. Son interface est conviviale et des packages communautaires vous permettent de personnaliser votre expérience shell : Oh My Zsh . Je l'utilise depuis quelques années, et la plupart de mes habitudes CLI en sont adaptées.

Frapper

Bash est une alternative légèrement plus ancienne à Zsh. C'est très courant, vous pouvez donc vous attendre à ce qu'il soit disponible sur de nombreuses machines que vous rencontrerez. De nombreux raccourcis de Zsh y fonctionnent également, mais il utilise des fichiers de configuration différents et le langage de script est un peu différent.

SH

La coque standard. Cela fait partie des commandes Unix standard, et il est généralement garanti qu'il se trouve sur n'importe quelle machine de type Unix que vous trouverez. Par conséquent, c'est une valeur sûre lorsqu'il s'agit d'écrire des scripts.


L'interface utilisateur manque de nombreuses améliorations modernes, donc je ne l'utiliserais pas pour autre chose que des scripts de câblage.

Qu'est-ce que mon shell de toute façon ?

Vous pouvez vérifier votre shell avec echo $? :
Description de l'image

Dans mon cas, c'est zsh

Comment changer votre coque

Chaque shell est un programme et peut être exécuté directement à partir d'un autre shell. Par example:


asciicast

De cette façon, vous pouvez vérifier quels shells vous avez installés et les tester rapidement. Pour changer définitivement de shell, vous pouvez utiliser la commande chsh (change shell), aussi bien sous Linux que macOS :


asciicast

Si vous n'avez pas le shell que vous souhaitez utiliser, vous devez d'abord l'installer - la commande exacte dépend de votre système d'exploitation ou de votre distribution Linux.

Blocs de construction

Alors, une fois que votre terminal est opérationnel, comment l'utilisez-vous ?

Commandes

CLI vous permet d'exécuter des commandes en tapant leur nom dans le terminal et en appuyant sur Entrée. Chaque commande est un programme séparé qui offre une interface étendue, et chacune est livrée avec sa propre documentation.


De même, chaque système d'exploitation apporte son propre ensemble de commandes, mais ils partagent des similitudes, en particulier avec les systèmes inspirés d'Unix, macOS et Linux.


Sous Windows, la ligne de commande standard cmd a un ensemble de commandes très différent, mais de nombreuses options sont également disponibles pour obtenir une interface similaire :


  • Sous-système Windows natif pour Linux


  • Git BASH fourni par Git pour Windows


Unix était un système d'exploitation qui est devenu accessible au public en 1973, et il a influencé beaucoup de choses qui sont venues plus tard. Sa spécification actuelle définit 161 commandes , mais heureusement, vous n'en avez besoin que d'une poignée pour bénéficier de la CLI.


Exemple de commandes :


  • ls liste les fichiers d'un dossier—par défaut, il affiche le contenu du dossier actuel :
    Description de l'image

  • pwd affiche le chemin actuel dans lequel vous exécutez vos commandes :


    Description de l'image

  • cd change le répertoire - par défaut, il va dans le répertoire personnel ( https://asciinema.org/ enregistrement ou capture d'écran)


    asciicast

Arguments

Chaque commande peut prendre des arguments supplémentaires. Les arguments sont des valeurs séparées par des espaces qui viennent après le nom de la commande. La signification des arguments dépend du programme. Vous pouvez en savoir plus sur les différents arguments dans la documentation de la commande :


asciicast

Choix

De nombreuses commandes standard sont livrées avec différentes options qui vous permettent de modifier le comportement du programme. Par exemple, ls est très souvent utilisé avec les options suivantes :


  • -a — pour afficher tous les fichiers, y compris ceux qui commencent par . —une convention Unix pour les fichiers cachés


  • -l — affiche les fichiers au format long — fournissant plus d'informations


Une convention courante consiste à autoriser les options en tant que paramètres séparés, ls -a -l , ou combinées en un seul paramètre, ls -la .
Description de l'image

Paramètres

Un paramètre est un argument qui fournit une valeur à la commande ou à l'une de ses options.


Ainsi, par exemple, avec l'exemple ci-dessus, vous pouvez fournir un chemin pour modifier le comportement par défaut :


  • ls workspace — répertorie les fichiers dans le dossier de l'espace de travail :


    asciicast

  • cd workspace —change le répertoire courant en espace de travail :


    asciicast

  • cat file — affiche le contenu du fichier à l'écran :


    asciicast

La signification des paramètres dépend du programme - au début, vous pouvez vous attendre à devoir vérifier beaucoup la documentation.

Sortie standard

La sortie standard est le texte qui est ajouté à la ligne de commande lorsque vous exécutez le programme. Son texte est indiqué par le chemin heureux de l'exécution. Les exemples que nous avons vus jusqu'à présent ont montré la sortie standard de différentes commandes.


Lors de l'apprentissage du C++, l'une des premières choses que vous apprenez est cout , la sortie standard.


Par défaut, la sortie standard est simplement affichée à l'écran, mais vous pouvez facilement la rediriger vers un fichier avec l'opérateur > . Exemple:


asciicast

Sortie d'erreur

La sortie d'erreur est l'endroit où les programmes affichent des informations sur les problèmes rencontrés lors de l'exécution. Lors de l'exécution de commandes directement depuis le terminal, la sortie d'erreur et la sortie standard sont traitées de la même manière : elles sont simplement affichées à l'écran. Par exemple, lorsque j'essaie de ls un fichier inexistant :


Description de l'image

La différence devient évidente lorsque vous redirigez la sortie vers un fichier :


Description de l'image

Entrée standard

Dans un flux de travail normal, l'entrée standard est ce que vous tapez dans votre programme. Les commandes que nous avons vues jusqu'à présent ne sont généralement pas utilisées en mode interactif. Un exemple simple peut être une page de man qui permet le défilement :


asciicast

Pour ceux qui ont de l'expérience en C++, vous avez entendu ce terme pour cin :

 cin >> variable;


Pour de nombreuses commandes courantes, l'entrée standard devient particulièrement importante en raison de l'opérateur de conduite.

Tuyau

Les tubes sont des moyens de connecter la sortie standard d'un programme à l'entrée standard d'un autre. C'est ainsi que CLI réalise l'interopérabilité dont j'ai parlé dans mon article précédent .


L'utilisation de canaux vous permet de combiner différentes commandes de nombreuses manières créatives. Je montrerai quelques exemples plus tard dans cette série. Pour l'instant, un exemple simple est:


asciicast

Où:

  • cat … — lit les fichiers et renvoie leur contenu dans la sortie standard,


  • less - obtient la valeur de l'entrée standard et l'adapte à l'écran


De même, en utilisant l'utilitaire de recherche grep :


asciicast

Où:

  • cat … — comme ci-dessus


  • grep 1 - obtient la valeur de l'entrée standard et la filtre uniquement sur les lignes contenant 1 .

Ecrire dans des fichiers

Nous avons déjà mentionné l'opérateur > utilisé pour écrire la sortie standard d'une commande dans un fichier. Cet opérateur remplace le fichier par la sortie que nous fournissons. Si vous souhaitez l' ajouter à un fichier existant, vous pouvez utiliser >> à la place.

Directeur de travail

Tout ce qui se passe dans la ligne de commande est effectué dans le contexte d'un emplacement de disque spécifique, un répertoire de travail. Lorsque vous spécifiez des chemins de fichiers relatifs (pour la lecture ou l'écriture), ils sont résolus à partir du répertoire de travail.


Habituellement, vous définissez votre répertoire de travail sur un dossier supérieur du projet sur lequel vous travaillez. Lorsque vous démarrez une nouvelle session, le répertoire de travail est généralement défini sur votre répertoire personnel.

Exécuter des commandes

Les interpréteurs Shell vous proposent de nombreux raccourcis pour accélérer votre travail. Avec le temps, vous commencerez à les utiliser intuitivement, sans y penser.


Souvent, lorsque je partage l'écran avec des débutants, on me rappelle que ces raccourcis sont tout simplement évidents. Ci-dessous, je vais vous montrer quelques astuces de productivité pour travailler avec la ligne de commande.


J'utilise Zsh moi-même, et ces raccourcis fonctionnent là-bas. Au moins certains d'entre eux devraient également fonctionner dans Bash, mais cela peut dépendre de la version et de la configuration exactes.

Ne tapez pas deux fois, utilisez les flèches

L'astuce principale pour être rapide avec CLI est de ne pas tout taper tout le temps. Le cas le plus simple consiste à récupérer une commande que vous avez exécutée quelques lignes auparavant. Vous pouvez le faire en appuyant sur la touche fléchée vers le haut.


Avec les flèches vers le haut et vers le bas, vous pouvez faire défiler les commandes récentes, et une fois que vous en avez trouvé une similaire à celle que vous souhaitez exécuter maintenant, vous pouvez la modifier. Cela accélère considérablement l'ensemble du processus car vous exécutez souvent des commandes similaires, avec quelques petites différences dans les arguments.


asciicast

Rechercher des commandes plus anciennes

Le défilement manuel est parfait pour obtenir l'une ou une poignée des commandes les plus récentes. Cependant, si vous souhaitez obtenir quelque chose de plus éloigné du passé, vous pouvez utiliser la fonctionnalité de recherche. Par défaut, la commande que vous pouvez utiliser est CTRL + R pour lancer une recherche dans votre historique de commandes :


asciicast

Utiliser pour remplir automatiquement

Vous n'êtes pas obligé de saisir toutes les commandes que vous souhaitez exécuter. Zsh et Bash prennent tous deux en charge la touche de tabulation comme moyen de demander le remplissage automatique - ils rempliront la commande ou le nom du fichier s'ils sont uniques ou vous montreront toutes les options disponibles si ce que vous tapez correspond à de nombreuses possibilités.


Zsh fournit également un remplissage automatique pour les options de commande.


La saisie automatique est une fonctionnalité intéressante à deux niveaux : elle vous aide à gagner du temps lors de la saisie et elle réduit les erreurs. Au fur et à mesure que vous apprenez CLI, vous devez vous assurer de prendre l'habitude d'utiliser la saisie semi-automatique autant que possible.


asciicast

Noms de fichier Caractères génériques

Vous pouvez accélérer encore plus la saisie en utilisant des caractères génériques pour faire correspondre les noms de plusieurs fichiers :


asciicast

Téléavertisseur—Moins

Souvent, lorsqu'un programme a tellement de sorties qu'il ne tient pas dans l'écran, il utilise un autre programme comme pager, un outil qui vous permet de naviguer dans la sortie et de faire défiler vers le haut et vers le bas. Le plus souvent, le programme utilisé pour cela est less . Il y a quelques points à noter lorsque vous l'utilisez.

Défilement simple

Tout d'abord, ne faites pas défiler avec la barre de défilement fournie par votre émulateur de terminal. less redessine tout l'écran de texte à la fin de la sortie.


Si vous faites défiler vers le haut dans l'émulateur de terminal, vous verrez ce qui a été renvoyé par d'autres programmes auparavant, pas le contenu du fichier que vous souhaitez lire. Au lieu de faire défiler avec la barre de défilement (molette de défilement), utilisez les flèches haut et bas pour vous déplacer dans le fichier.


asciicast

Sortir

Un autre point commun de confusion—comment puis-je partir maintenant ? Vous pouvez quitter le mode plein écran de 'moins' en appuyant sur q . Il est souvent appelé :q car d'autres programmes (par exemple vim ) utilisent : pour lancer une commande.

Recherche

Dans la ligne de commande, tout est du texte, et le texte est simple à parcourir. Vous pouvez rechercher dans le contenu affiché par less en tapant /<search term> et parcourir les résultats en tapant n et N :


asciicast

Défilement fantaisie

less prend en charge d'autres commandes de navigation similaires à celles que vous pouvez trouver dans vim :


  • j —fait défiler une ligne vers le bas
  • k — faire défiler une ligne vers le haut
  • gg —fait défiler jusqu'au début du fichier
  • G —fait défiler jusqu'à la fin du fichier
  • d/u — demi-écran bas/haut


Ces raccourcis vous aideront à naviguer rapidement dans le fichier.

Êtes-vous intéressé à en savoir plus ?

C'est génial! La ligne de commande est un excellent outil pour augmenter votre efficacité lors de la programmation. Vous pouvez vous inscrire ici pour obtenir des mises à jour de ma part lorsque je publie d'autres documents liés à la ligne de commande.


Également publié ici