Le matériel, dont nous publions la traduction aujourd'hui, est destiné à ceux qui souhaitent maîtriser la ligne de commande Linux. La possibilité d'utiliser efficacement cet outil permet de gagner beaucoup de temps. En particulier, il s'agira du shell Bash et de 21 commandes utiles. Nous verrons également comment utiliser les indicateurs de commande et les alias Bash pour accélérer la saisie d'instructions longues.

→
Lisez également sur notre blog une série de publications sur les scripts bashTermes
À mesure que vous apprenez à utiliser la ligne de commande Linux, vous pouvez rencontrer de nombreux concepts qui vous seront utiles pour naviguer. Certains d'entre eux, comme «Linux» et «Unix», ou «shell de commande» et «terminal», sont parfois confus. Parlons de ces termes et d'autres termes importants.
Unix est un système d'exploitation populaire développé par Bell Labs dans les années 1970. Son code était privé.
Linux est le système d'exploitation de type Unix le plus populaire. Il est utilisé aujourd'hui sur une variété d'appareils, y compris les ordinateurs.
Un terminal, ou émulateur de terminal, est un programme qui donne accès au système d'exploitation. Vous pouvez ouvrir plusieurs fenêtres de terminal en même temps.
Un shell est un programme qui vous permet d'envoyer des commandes écrites dans un langage spécial au système d'exploitation.
Bash signifie Bourne Again Shell. Il s'agit du langage shell le plus couramment utilisé pour interagir avec le système d'exploitation. De plus, le shell Bash par défaut est utilisé par macOS.
L' interface de ligne de commande (CLI) est un moyen d'interaction entre une personne et un ordinateur, lors de l'utilisation par lequel l'utilisateur entre des commandes à partir du clavier, et l'ordinateur, exécutant ces commandes, affiche des messages sous forme de texte pour l'utilisateur. Fondamentalement, la CLI est utilisée pour obtenir des informations à jour sur certaines entités, par exemple les fichiers, et pour travailler avec des fichiers. L'interface de ligne de commande doit être distinguée de l'interface utilisateur graphique (GUI), qui est principalement utilisée par la souris. L'interface de ligne de commande est souvent appelée simplement ligne de commande.
Un script est un petit programme qui contient une séquence de commandes shell. Les scripts sont écrits dans des fichiers, vous pouvez les utiliser à plusieurs reprises. Lors de l'écriture de scripts, vous pouvez utiliser des variables, des constructions conditionnelles, des boucles, des fonctions et d'autres fonctionnalités.
Maintenant que nous avons considéré des termes importants, je tiens à noter que j'utiliserai ici les termes «Bash», «shell» et «ligne de commande» comme interchangeables, ainsi que les concepts de «répertoire» et de «dossier».
Les
flux standard que nous utiliserons ici sont l'entrée standard (entrée standard,
stdin
), la sortie standard (sortie standard,
stdout
) et la sortie d'erreur standard (erreur standard,
stderr
).
Si dans les exemples des commandes qui seront données ci-dessous, vous rencontrez quelque chose comme
my_whatever
- cela signifie que ce fragment doit être remplacé par quelque chose à vous. Par exemple, le nom du fichier.
Maintenant, avant de procéder à l'analyse des équipes auxquelles ce matériel est consacré, regardons leur liste et leurs brèves descriptions.
21 Bash Team
▍Obtenir des informations
man
: affiche le manuel d'utilisation (aide) de la commande.pwd
: affiche des informations sur le répertoire de travail.ls
: affiche le contenu du répertoire.ps
: permet d'afficher des informations sur les processus en cours d'exécution.
▍ Manipulation du système de fichiers
cd
: changez le répertoire de travail.touch
: créer un fichier.mkdir
: crée un répertoire.cp
: copier le fichier.mv
: déplacer ou supprimer un fichier.ln
: création de lien.
▍ Redirection d'E / S et pipelines
<
: redirection stdin
.>
: redirection stdout
.|
: rediriger la sortie d'une commande vers l'entrée d'une autre commande à l'aide du pipeline.
▍Lecture de fichiers
head
: lit le début du fichier.tail
: lire la fin du fichier.cat
: lecture d'un fichier et affichage de son contenu à l'écran ou concaténation de fichiers.
▍ Supprimer des fichiers, arrêter des processus
rm
: supprimer le fichier.kill
: arrêtez le processus.
▍Rechercher
grep
: recherche d'informations.ag
: équipe de recherche avancée.
▍Archivage
tar
: créer et travailler avec des archives.
Parlons plus en détail de ces commandes.
Détails de l'équipe
Pour commencer, parlons des équipes dont les résultats sont affichés sous forme de
stdout
. En règle générale, ces résultats apparaissent dans une fenêtre de terminal.
▍Obtenir des informations
man command_name
: la sortie du manuel de commande, c'est-à-dire les informations de référence.
pwd
: affiche le chemin d'accès au répertoire de travail actuel. Lorsqu'il travaille avec la ligne de commande, l'utilisateur a souvent besoin de savoir exactement où il se trouve sur le système.
ls
: affiche le contenu du répertoire. Cette commande est également utilisée assez souvent.
ls -a
: affiche les fichiers cachés. Le drapeau
-a
de la
ls
appliqué ici. L'utilisation de drapeaux permet de personnaliser le comportement de l'équipe.
ls -l
: affiche des informations détaillées sur les fichiers.
Veuillez noter que les drapeaux peuvent être combinés. Par exemple, comme ceci:
ls -al
.
ps
: afficher les processus en cours d'exécution.
ps -e
: affiche des informations sur tous les processus en cours d'exécution, pas seulement ceux liés au shell utilisateur actuel. Cette commande est souvent utilisée sous cette forme.
▍ Manipulation du système de fichiers
cd my_directory
: changez le répertoire de travail en
my_directory
. Pour aller un niveau plus haut dans l'arborescence des répertoires, utilisez le chemin relatif
../
comme
my_directory
.
Commande Cdtouch my_file
: créez
my_file
au chemin spécifié.
mkdir my_directory
: créez le dossier
my_directory
au chemin spécifié.
mv my_file target_directory
: déplacez le fichier
my_file
vers le dossier
my_file
. Lorsque vous spécifiez le répertoire cible, vous devez utiliser le chemin absolu vers celui-ci (et non une construction comme
../
).
La commande
mv
peut également être utilisée pour renommer des fichiers ou des dossiers. Par exemple, cela pourrait ressembler à ceci:
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: créez une copie de
my_source_file
et placez-la dans le dossier
target_directory
.
ln -s my_source_file my_target_file
: créez un lien symbolique
my_target_file
vers
my_source_file
. Si vous modifiez le lien, le fichier d'origine sera également modifié.
Si le fichier
my_source_file
est supprimé, alors
my_target_file
restera. L'indicateur
-s
de la commande
ln
vous permet de créer des liens pour les répertoires.
Parlons maintenant de la redirection d'E / S et des pipelines.
▍ Redirection d'E / S et pipelines
my_command < my_file
: remplace le descripteur du fichier d'entrée standard (
stdin
) par le fichier
my_file
. Cela peut être utile si la commande prévoit d'entrer certaines données à partir du clavier et que ces données sont stockées à l'avance dans un fichier.
my_command > my_file
: redirige les résultats de la commande, c'est-à-dire ce qui arrive généralement dans
stdout
et s'affiche à l'écran, vers le fichier
my_file
. Si le fichier
my_file
n'existe pas, il est créé. Si le fichier existe, il est écrasé.
Par exemple, après avoir exécuté la
ls > my_folder_contents.txt
, un fichier texte sera créé contenant une liste de ce qui se trouve dans le répertoire de travail actuel.
Si au lieu du symbole
>
utilisez la construction
>>
, alors, à condition qu'il existe un fichier vers lequel la sortie de la commande est redirigée, ce fichier ne sera pas écrasé. Des données seront ajoutées à la fin de ce fichier.
Jetez maintenant un œil aux données de pipeline.
Les sorties d'une commande sont transmises à l'entrée d'une autre commande. C’est comme connecter un tuyau à un autrefirst_command | second_command
first_command | second_command
: symbole de tuyau,
|
, est utilisé pour envoyer les résultats d'une équipe à une autre équipe. Le fait que la commande située sur le côté gauche de la construction décrite envoie à
stdout
tombe dans le
stdin
commande, qui est situé à droite du symbole de pipeline.
Sous Linux, les données de pipeline peuvent être organisées à l'aide de presque toutes les commandes correctement composées. On dit souvent que tout sous Linux est un pipeline.
En utilisant le symbole du convoyeur, vous pouvez enchaîner plusieurs commandes ensemble. Cela ressemble à ceci:
first_command | second_command | third_command
Un convoyeur de plusieurs équipes peut être comparé à un pipelineNotez que lorsqu'une commande se trouve à gauche de la
|
imprime quelque chose dans
stdout
, ce qu'il imprime devient immédiatement disponible en tant que
stdin
deuxième commande. Autrement dit, il s'avère que, en utilisant le pipeline, nous avons affaire à l'exécution parallèle de commandes. Parfois, cela peut conduire à des résultats inattendus. Des détails à ce sujet peuvent être trouvés
ici .
Parlons maintenant de la lecture des données des fichiers et de leur affichage à l'écran.
▍Lecture de fichiers
head my_file
: lit les lignes depuis le début du fichier et les affiche. Vous pouvez lire non seulement le contenu des fichiers, mais aussi ce que les commandes
stdin
vers
stdin
, en utilisant cette commande comme élément du pipeline.
tail my_file
: lit les lignes à la fin du fichier. Cette commande peut également être utilisée dans le pipeline.
La tête est à l'avant et la queue à l'arrièreSi vous travaillez avec des données à l'aide de la bibliothèque pandas, les commandes
head
et
tail
devraient vous être familières. Si ce n'est pas le cas, regardez la figure ci-dessus et vous vous en souviendrez facilement.
Examinons d'autres façons de lire les fichiers et parlons de la
cat
.
La
cat
affiche le contenu du fichier à l'écran ou concatène plusieurs fichiers. Cela dépend du nombre de fichiers transmis à cette commande lors de son appel.
Équipe de chatcat my_one_file.txt
: lorsqu'une commande est transférée vers cette commande, elle l'affiche dans
stdout
.
Si vous lui donnez deux fichiers ou plus, elle se comporte différemment.
cat my_file1.txt my_file2.txt
: ayant reçu plusieurs fichiers en entrée, cette commande concatène leur contenu et affiche ce qui s'est passé dans
stdout
.
Si le résultat de la concaténation de fichiers doit être enregistré en tant que nouveau fichier, vous pouvez utiliser l'opérateur
>
:
cat my_file1.txt my_file2.txt > my_new_file.txt
Voyons maintenant comment supprimer des fichiers et arrêter des processus.
▍ Supprimer des fichiers, arrêter des processus
rm my_file
: supprime le fichier
my_file
.
rm -r my_folder
: supprime le dossier
my_folder
et tous les fichiers et dossiers qu'il contient. L'indicateur
-r
indique que la commande fonctionnera en mode récursif.
Pour empêcher le système de demander une confirmation lors de chaque opération de suppression d'un fichier ou d'un dossier, utilisez l'indicateur
-f
.
kill 012345
: arrête le processus d'exécution spécifié, lui donnant le temps de s'arrêter correctement.
kill -9 012345
: termine de force le processus d'exécution spécifié. Un indicateur de la forme
-s SIGKILL
signifie la même chose qu'un indicateur
-9
.
▍Rechercher
Vous pouvez utiliser différentes commandes pour rechercher des données. En particulier,
grep
,
ag
et
ack
. Nous commençons notre introduction à ces commandes par
grep
. Il s'agit d'une équipe fiable et éprouvée, qui est cependant plus lente que les autres et ne les aime pas, pratique à utiliser.
Commande Grepgrep my_regex my_file
: recherche
my_regex
dans
my_regex
. Lorsque des correspondances sont trouvées, la chaîne entière est renvoyée pour chacune d'entre elles. Par défaut,
my_regex
traité comme une expression régulière.
grep -i my_regex my_file
: la recherche est insensible à la casse.
grep -v my_regex my_file
: retourne toutes les lignes qui ne contiennent pas
my_regex
. L'indicateur
-v
signifie inversion; il ressemble à l'opérateur
NOT
, qui est disponible dans de nombreux langages de programmation.
grep -c my_regex my_file
: renvoie des informations sur le nombre de correspondances avec le modèle de recherche trouvé dans le fichier.
grep -R my_regex my_folder
: effectue une recherche récursive dans tous les fichiers situés dans un dossier donné et dans les dossiers qui s'y trouvent.
Parlons maintenant de l'équipe
ag
. Elle est apparue plus tard
grep
, elle est plus rapide, il est plus pratique de travailler avec elle.
Équipe Agag my_regex my_file
: renvoie des informations sur les numéros de ligne et les lignes elles-mêmes, dans lesquelles des correspondances sont trouvées avec
my_regex
.
ag -i my_regex my_file
: la recherche est insensible à la casse.
La commande
ag
traite automatiquement le fichier
.gitignore
et exclut de la sortie ce qui se trouve dans les dossiers ou fichiers répertoriés dans ce fichier. C'est très pratique.
ag my_regex my_file -- skip-vcs-ignores
: le contenu des fichiers des systèmes de contrôle automatique de version (comme
.gitignore
) n'est pas pris en compte lors de la recherche.
De plus, pour indiquer à la commande
ag
les chemins de fichier à exclure de la recherche, vous pouvez créer un fichier
.agignore
.
Au début de cette section, nous avons mentionné la commande
ack
. Les commandes
ack
et
ag
sont très similaires, on peut dire qu'elles sont interchangeables à 99%. Cependant, la commande
ag
est plus rapide, donc je l'ai décrite spécifiquement.
Parlons maintenant de l'utilisation des archives.
▍Archivage
tar my_source_directory
: combine les fichiers du dossier
my_source_directory
en un seul fichier tarball. Ces fichiers sont pratiques à utiliser pour transférer de grands ensembles de fichiers à quelqu'un.
Commande tarLes fichiers tarball créés par cette commande sont des fichiers avec l'extension
.tar
(Tape ARchive). Le fait que le mot «bande» soit caché dans le nom de la commande et dans l'extension des noms de fichiers créés par celle-ci indique la durée de cette commande.
tar -cf my_file.tar my_source_directory
: crée un fichier tarball nommé
my_file.tar
avec le contenu du dossier
my_source_directory
. Le drapeau
-c
signifie "créer" et le drapeau
-f
signifie "fichier".
Pour extraire les fichiers qui se trouvent dans le fichier
.tar
, utilisez la commande
tar
avec les indicateurs
-x
("extraire", extraction) et
-f
("fichier", fichier).
tar -xf my_file.tar
:
tar -xf my_file.tar
fichiers de
my_file.tar
dans le répertoire de travail actuel.
Voyons maintenant comment compresser et décompresser les fichiers
.tar
.
tar -cfz my_file.tar.gz my_source_directory
: ici, l'utilisation de l'indicateur
-z
(algorithme de compression «zip») indique que
gzip
(GNU zip) doit être utilisé pour compresser les fichiers. La compression de fichiers économise de l'espace disque lors du stockage de ces fichiers. Si les fichiers sont prévus, par exemple, pour être transférés à d'autres utilisateurs, cela contribue à un téléchargement plus rapide de ces fichiers.
Vous pouvez décompresser le fichier
.tar.gz
en ajoutant l'indicateur
-z
à la commande pour extraire le contenu des fichiers
.tar
, que nous avons examiné ci-dessus. Cela ressemble à ceci:
tar -xfz my_file.tar.gz
Il convient de noter que la commande
tar
a beaucoup plus de drapeaux utiles.
Alias Bash
Les alias bash (également appelés alias ou abréviations) sont conçus pour créer des noms abrégés de commandes ou de leurs séquences, dont l'utilisation à la place des commandes ordinaires accélère le travail. Si, par
python setup.py sdist bdist_wheel
, vous avez un
bu
alias, derrière lequel la commande
python setup.py sdist bdist_wheel
, alors pour appeler cette commande, utilisez simplement cet alias.
Pour créer un tel alias, ajoutez simplement la commande suivante au fichier
~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
Si votre système ne possède pas de fichier
~/.bash_profile
, vous pouvez le créer vous-même à l'aide de la commande
touch
. Après avoir créé un alias, redémarrez le terminal, après quoi vous pouvez utiliser cet alias. Dans ce cas, l'entrée de deux caractères remplace l'entrée de plus de trois douzaines de caractères de la commande, qui est conçue pour
construire des packages Python.
Dans
~/.bash_profile
vous pouvez ajouter des alias pour toutes les commandes couramment utilisées.
▍ Résultats
Dans cet article, nous avons examiné 21 équipes Bash populaires et parlé de la création d'alias pour les équipes. Si vous êtes intéressé par ce sujet,
voici la série de publications Bash. Vous trouverez ici la version pdf de ces publications. De plus, si vous voulez apprendre le Bash, rappelez-vous qu'ici, comme pour l'étude de tout autre système logiciel, la pratique est importante.
Chers lecteurs! Quelles commandes utiles aux débutants sauriez-vous ajouter à celles décrites dans cet article?
→
Lisez également sur notre blog une série de publications sur les scripts bash