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 !
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 :
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).
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.
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.
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.
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.
Vous pouvez vérifier votre shell avec echo $?
:
Dans mon cas, c'est zsh
Chaque shell est un programme et peut être exécuté directement à partir d'un autre shell. Par example:
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 :
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.
Alors, une fois que votre terminal est opérationnel, comment l'utilisez-vous ?
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 :
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 :
pwd
affiche le chemin actuel dans lequel vous exécutez vos commandes :
cd
change le répertoire - par défaut, il va dans le répertoire personnel ( https://asciinema.org/ enregistrement ou capture d'écran)
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 :
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
.
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 :
cd workspace
—change le répertoire courant en espace de travail :
cat file
— affiche le contenu du fichier à l'écran :
La signification des paramètres dépend du programme - au début, vous pouvez vous attendre à devoir vérifier beaucoup la documentation.
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:
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 :
La différence devient évidente lorsque vous redirigez la sortie vers un fichier :
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 :
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.
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:
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
:
Où:
cat …
— comme ci-dessus
grep 1
- obtient la valeur de l'entrée standard et la filtre uniquement sur les lignes contenant 1
. 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.
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.
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.
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.
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 :
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.
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 :
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.
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.
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.
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
:
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 bask
— faire défiler une ligne vers le hautgg
—fait défiler jusqu'au début du fichierG
—fait défiler jusqu'à la fin du fichierd/u
— demi-écran bas/haut
Ces raccourcis vous aideront à naviguer rapidement dans le fichier.
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