La ligne de commande Linux
DébutantUnité 2 sur 7 de la formation Formation : Linux : ligne de commande, scripts shell et administration
Ce que tu vas apprendre
- Reconnais le shell et son invite, saisis des commandes correctement avec des options et des arguments, et utilise les touches qui rendent le travail en ligne de commande plus rapide et plus sûr.
- Distingue le shell, le terminal et l’invite de commandeDistingue le shell de la fenêtre du terminal, lis les informations de l’invite sur ton identité et ton emplacement, et utilise les touches de base pour exécuter, arrêter et répéter des commandes.
- Écris des commandes avec des options et des argumentsConstruis une commande avec son nom, ses options et ses arguments, combine les options courtes, utilise les options longues et leurs valeurs, et traite correctement les espaces et les noms inhabituels.
- Distingue le shell, le terminal et l’invite de commande
- Utilise les pages de manuel et l’aide rapide intégrée aux commandes et au shell pour découvrir ce que fait une commande et quelles sont ses options, sans quitter le terminal.
- Lis les pages de manuel et effectue des recherches dans le manuelOuvre une page de manuel, comprends ses rubriques et la notation SYNOPSIS, déplace-toi et effectue des recherches dans la page, choisis une section du manuel et trouve la bonne page lorsque tu ne connais pas le nom de la commande.
- Utilise l’aide rapide et les autres documentationsObtiens un aperçu rapide des options avec --help, lis l’aide des commandes internes du shell, trouve des documents supplémentaires dans /usr/share/doc et les pages info, et utilise les messages d’erreur comme indices.
- Lis les pages de manuel et effectue des recherches dans le manuel
- Comprends comment Linux organise les fichiers dans une arborescence unique, déplace-toi à l’aide de chemins absolus et relatifs, puis liste et examine le contenu de chaque répertoire.
- Comprends l’arborescence des répertoiresDécris l’arborescence unique qui commence au répertoire racine, reconnais les principaux répertoires système et le répertoire personnel, et respecte les règles concernant les noms et les fichiers cachés.
- Déplace-toi à l’aide de chemins absolus et relatifsRepère où tu te trouves, change de répertoire et écris des chemins depuis la racine ou le répertoire courant, avec .. et avec ~, en choisissant le type de chemin adapté à chaque tâche.
- Liste et examine le contenu des répertoiresListe les fichiers avec ls et ses options courantes, lis chaque colonne d’un affichage détaillé et affiche les fichiers cachés, les tailles et le contenu des sous-répertoires selon différents ordres de tri.
- Comprends l’arborescence des répertoires
- Gère les fichiers et les répertoires depuis le shell : crée-les, copie-les, déplace-les ou renomme-les, et supprime-les en toute sécurité, en sachant exactement ce que fait chaque commande lorsque des noms existent déjà.
- Crée des fichiers et des répertoiresCrée des répertoires, y compris des répertoires imbriqués, crée des fichiers vides ou mets à jour leurs horodatages avec touch, et supprime des répertoires vides.
- Copie, déplace et renommeCopie des fichiers et des répertoires entiers avec cp, déplace et renomme avec mv, prévois où se trouvera le résultat et évite d’écraser des fichiers par accident.
- Supprime des fichiers et des répertoires en toute sécuritéSupprime des fichiers et des arborescences avec rm, utilise les options qui demandent confirmation ou forcent la suppression, et suis une méthode qui évite de supprimer les mauvais éléments.
- Crée des fichiers et des répertoires
- Utilise les motifs du shell contenant des caractères génériques pour désigner plusieurs fichiers à la fois, prévois exactement les noms auxquels un motif correspond et utilise ces motifs en toute sécurité avec les commandes de copie, de déplacement et de suppression.
- Sélectionne les noms de fichiers avec *, ? et [ ]Écris des motifs avec *, ? et des expressions entre crochets, y compris des plages et des négations, et prévois les noms existants auxquels ils correspondent, en tenant compte de la casse et des fichiers cachés.
- Utilise les caractères génériques en toute sécurité dans les commandesPrévois ce que le shell transmet à une commande après le développement, vérifie les motifs avant de les utiliser, empêche leur développement avec des guillemets et utilise les accolades pour générer des noms.
- Sélectionne les noms de fichiers avec *, ? et [ ]
- Rappelle et répète des commandes de l’historique, stocke des valeurs dans des variables du shell et d’environnement, et contrôle la recherche des programmes par le shell à l’aide de PATH.
- Rappelle et réutilise des commandes de l’historiqueParcours, recherche et réexécute des commandes précédentes, utilise le développement de l’historique avec prudence et découvre où Bash conserve l’historique et ce qu’il enregistre.
- Définis et utilise des variables du shell et des variables d’environnementCrée, lis et supprime des variables, exporte-les dans l’environnement, utilise les variables d’environnement courantes, protège correctement les valeurs et rends les paramètres permanents.
- Contrôle la recherche des commandes par le shell avec PATHExplique comment le shell associe un nom de commande à un programme, lis et complète PATH, exécute un programme absent de PATH et vérifie quel programme un nom lance.
- Rappelle et réutilise des commandes de l’historique
Ligne de commande Linux : cours
1Travaille à l’invite de commande
Une session de terminal te permet de saisir des instructions et d’en voir les résultats. Le shell lit chaque instruction, tandis que l’invite t’aide à garder la trace de ton compte utilisateur et de ton emplacement. Tu apprendras à utiliser les touches qui complètent les noms et corrigent une ligne, puis à construire des commandes avec des noms, des options et des arguments. Il est important de bien placer les espaces et les guillemets : le shell agit sur les mots qu’il reçoit, et une petite modification de la saisie peut désigner un autre fichier.
1.1 Distingue le shell, le terminal et l’invite de commande
Un shell lit les commandes et lance les opérations qu’elles demandent. Un terminal est la fenêtre dans laquelle tu saisis du texte et vois la sortie. Ouvrir un autre terminal lance normalement une autre session de shell. Une console fournit un écran textuel directement relié à la machine ; une connexion SSH peut donner accès à un shell sur un autre ordinateur.
Lis l’invite
Dans l’exemple d’invite sam@laptop:~$, sam est l’utilisateur, laptop est l’hôte et ~ désigne le répertoire personnel. Le $ final indique généralement un utilisateur ordinaire. La présentation des invites peut changer : utilise donc des commandes pour confirmer les détails si nécessaire. whoami affiche le nom du compte et pwd affiche le répertoire courant.
Une invite # indique par convention root, le compte administrateur. Travaille comme utilisateur ordinaire et n’utilise les droits d’administration que lorsqu’une tâche les exige. Un symbole d’invite affiché avant un exemple de commande ne fait pas partie de la commande à saisir.
Lance une première session
Saisis chaque ligne séparément et appuie sur Entrée :
whoami
pwd
date
echo Hello
Pour le compte de l’exemple, les deux premiers résultats sont sam et /home/sam. date affiche la date et l’heure actuelles ; echo Hello affiche Hello. La sortie d’une commande apparaît sous la ligne saisie, suivie d’une nouvelle invite. Certaines commandes qui réussissent n’affichent rien : mkdir reports crée un répertoire sans message. Examine le résultat avec ls si tu as besoin de le confirmer.
Bash, le Bourne Again Shell, est largement utilisé sous Linux. Il existe aussi d’autres shells, comme zsh et fish. echo $0 montre comment le shell courant a été lancé ; echo $SHELL affiche le shell de connexion configuré pour le compte. Lancer un autre shell peut donner des réponses différentes. Une fenêtre de terminal ne détermine pas elle-même quel shell s’y exécute.
Modifie la saisie et reprends la main
| Touche | Action |
|---|---|
| Tab | Compléter un nom de commande ou de fichier ; appuyer deux fois pour voir les possibilités en cas d’ambiguïté |
| Haut / Bas | Parcourir les commandes saisies précédemment |
| Ctrl+C | Annuler la ligne en cours de saisie ou interrompre un programme en cours au premier plan |
| Ctrl+L | Effacer l’écran ; clear fait de même |
| Ctrl+D sur une ligne vide | Fermer le shell, comme exit |
Supposons que tu saisisses ls Doc et appuies sur Tab. Si Documents est le seul nom correspondant, la complétion le complète. Si plusieurs noms commencent par Doc, Bash a besoin de caractères supplémentaires ou d’un choix. La complétion aide à respecter l’orthographe et la casse : Documents et documents sont des noms différents.
Un programme en plein écran peut attendre sa propre touche au lieu d’afficher l’invite du shell. Appuie sur q pour quitter man ou less. Une commande cat seule, sans fichier, attend du texte saisi ; Ctrl+C te ramène au shell. Ctrl+C n’est donc pas le raccourci habituel pour copier dans un terminal. Beaucoup d’émulateurs de terminal utilisent Ctrl+Maj+C et Ctrl+Maj+V pour copier et coller.
La disposition du clavier influe aussi sur la saisie de symboles comme ~, [ et {. Certaines dispositions utilisent AltGr, et une touche morte ~ peut nécessiter un appui sur Espace avant de s’afficher. Respecte exactement la casse des commandes : LS et ls sont deux noms de commande différents.
Points clés
- Le shell interprète les commandes ; le terminal affiche la session.
- L’invite aide à identifier le compte, l’hôte et le répertoire courant.
- Utilise Tab pour compléter les noms et Ctrl+C pour interrompre ou annuler.
- Ctrl+D sur une ligne vide ferme le shell ;
qferme le pageur du manuel.
1.2 Écris des commandes avec des options et des arguments
Une ligne de commande se compose de mots. Le premier désigne ce qu’il faut exécuter, les options modifient son comportement et les arguments fournissent les objets ou les valeurs sur lesquels la commande agit. Des espaces séparent ces mots.
Identifie les éléments
Dans ls -l /etc, ls est la commande, -l demande un affichage détaillé et /etc est l’argument qui désigne le répertoire. La forme d’utilisation command [options] [arguments] décrit cette organisation ; tu ne saisis pas ces crochets.
Les options courtes utilisent un tiret et une lettre. ls -a -l, ls -al et ls -la demandent le même affichage. Les options longues utilisent deux tirets, comme dans ls --all. Garde les options longues séparées ; réunir des mots après un seul tiret ne crée pas une option longue. Par exemple, ls -all est lu comme les options courtes -a -l -l.
Une option peut aussi nécessiter une valeur. Dans touch -d 2025-01-31 old.txt, la date appartient à -d ; old.txt est l’argument qui désigne le fichier. La forme longue est touch --date=2025-01-31 old.txt. Lis la description de l’utilisation pour savoir si une option nécessite une valeur et comment la fournir.
Garde chaque nom en un seul morceau
Le shell traite les espaces non protégés par des guillemets comme des séparations entre les mots. Chacune de ces trois lignes désigne un seul fichier :
ls "Annual Report.pdf"
ls 'Annual Report.pdf'
ls Annual\ Report.pdf
Les guillemets ou la barre oblique inverse protègent l’espace ; ils ne font pas partie du nom du fichier. Sans cette protection, ls Annual Report.pdf demande deux fichiers. Un effet similaire apparaît avec echo : echo Hello world reçoit deux mots et affiche un seul espace entre eux, tandis que echo "Hello world" conserve les trois espaces dans un seul argument.
Évite les ambiguïtés dans les options
Place les options avant les arguments qui désignent des fichiers. Les commandes GNU les acceptent souvent aussi après, mais les placer en premier rend la ligne plus facile à lire et fonctionne plus largement. Pour les commandes qui le permettent, -- met fin au traitement des options. rm -- -draft.txt traite donc -draft.txt comme un nom de fichier. Le chemin ./-draft.txt commence aussi par un point : rm ./-draft.txt évite ainsi un premier caractère qui ressemble à une option.
La signification d’une lettre d’option dépend de sa commande. cp -r copie les répertoires récursivement, mais ls -r inverse le tri ; ls -R liste les répertoires récursivement. ls -h modifie l’affichage des tailles et ne demande pas l’aide. Un tiret demi-cadratin copié, –, est lui aussi différent du - ordinaire qu’exigent les options.
Découvre ce qu’un nom exécute
Une commande peut être un fichier de programme, une commande interne du shell ou un alias qui se développe en une autre ligne de commande. cd est intégré à Bash parce qu’il change le répertoire de ce shell. ls est normalement un programme, souvent associé à un alias qui ajoute de la couleur. type cd et type ls indiquent la signification active.
Si ls-l échoue avec command not found, Bash a cherché ce nom entier. Insère l’espace manquant : ls -l. Si une commande signale une option inconnue, vérifie l’orthographe de l’option et sa documentation ; modifier le chemin du fichier ne corrigera pas une erreur d’option.
Points clés
- Les espaces séparent la commande, les options et les arguments.
- Protège par des guillemets ou par échappement un espace qui fait partie d’un même nom.
- Les options courtes peuvent se combiner ; les options longues utilisent deux tirets.
- Une option peut nécessiter sa propre valeur.
--ou un chemin commençant par./permet de traiter un nom de fichier qui commence par un tiret.typedistingue une commande interne, un alias et un fichier de programme.
2Trouve de l’aide en ligne de commande
L’aide en ligne de commande te permet de répondre à une question précise sans mémoriser toutes les options. Une page de manuel fournit une référence complète ; l’aide rapide d’une commande donne un rappel plus court. Bash possède aussi un système d’aide distinct pour les commandes internes du shell. Tu apprendras à choisir la bonne source, à lire la notation abrégée d’une ligne d’utilisation, à rechercher dans une longue page et à utiliser un message d’erreur pour décider quoi vérifier ensuite.
2.1 Lis les pages de manuel et effectue des recherches dans le manuel
Une page de manuel est une référence détaillée sur une commande ou une fonction du système désignée par son nom. Ouvre-en une avec man ls. La page apparaît normalement dans less, un pageur qui affiche un écran à la fois et permet de rechercher sans quitter le terminal.
Lis la structure de la page
La rubrique NAME indique la commande et son rôle. SYNOPSIS donne sa forme d’appel. DESCRIPTION et OPTIONS expliquent son comportement et ses options. EXAMPLES peut montrer des utilisations concrètes, tandis que FILES et ENVIRONMENT décrivent les fichiers et les variables associés. SEE ALSO indique les pages associées. Les rubriques varient, car certaines commandes nécessitent des informations dont d’autres n’ont pas besoin.
Une ligne d’utilisation comme ls [OPTION]... [FILE]... est une notation compacte :
- Le texte littéral, souvent en gras, se saisit tel qu’il est affiché.
- Le texte servant de paramètre fictif, souvent en italique ou souligné, se remplace par ta valeur.
- Les crochets entourent les éléments facultatifs.
...signifie que l’élément précédent peut être répété.- Une barre verticale sépare les choix possibles.
Dans cette forme de ls, les groupes d’options et de fichiers sont tous deux facultatifs : ls seul est donc valide. Dans mkdir [OPTION]... DIRECTORY..., le groupe des répertoires n’a pas de crochets : au moins un nom de répertoire est obligatoire. Ne saisis pas DIRECTORY simplement parce qu’il apparaît dans le manuel.
Recherche pendant la lecture
Espace ou Page suivante avance d’un écran ; b recule. Les flèches déplacent d’une ligne à la fois. g en minuscule va au début et G en majuscule à la fin. Saisis /human et appuie sur Entrée pour rechercher « human ». Utilise n pour le résultat suivant et N pour le précédent. Appuie sur q pour quitter la page ; h ouvre l’aide du pageur.
Pour une recherche pratique, ouvre man ls, cherche /human et lis l’entrée de -h, --human-readable. Cette option fonctionne avec un affichage qui montre les tailles, comme -l. Quitte le manuel et exécute ls -lh. Un fichier de 2 048 octets apparaît sous la forme 2.0K. Utiliser ls -h seul donne toujours une simple liste de noms, car aucune colonne de taille n’a été demandée.
Choisis la bonne section du manuel
| Section | Sujet |
|---|---|
| 1 | Commandes utilisateur |
| 2 | Appels système |
| 3 | Fonctions de bibliothèque |
| 4 | Fichiers spéciaux de périphériques |
| 5 | Formats de fichiers |
| 6 | Jeux |
| 7 | Présentations générales et conventions |
| 8 | Commandes d’administration système |
La référence passwd(5) désigne l’explication du format du fichier de mots de passe dans la section 5. Exécute man 5 passwd pour la sélectionner. man passwd seul ouvre normalement la page de la commande dans la section 1.
Si tu connais le rôle d’une commande mais pas son nom, exécute apropos directory ou man -k directory. Ces commandes recherchent dans les noms et les descriptions courtes indexés. Si tu connais déjà un nom et veux une description de son rôle en une ligne, utilise whatis ls ou man -f ls. Un nouveau système peut avoir un index vide : une recherche par mot-clé infructueuse ne prouve donc pas que la commande est absente.
Certaines installations minimales ne comportent pas de manuels. L’absence d’une page pour man cd s’explique aussi souvent par le fait que cd est une commande interne du shell. Utilise help cd pour obtenir la description fournie par Bash.
Points clés
- Utilise
man commandpour consulter une référence et/wordpour y effectuer une recherche. - Dans SYNOPSIS, les crochets indiquent les éléments facultatifs ; les points de suspension indiquent une répétition.
- Un numéro de section permet de choisir parmi les pages qui portent un même nom.
aproposrecherche les rôles des commandes ;whatisrecherche un nom connu.- Utilise
helppour les commandes internes de Bash commecd.
2.2 Utilise l’aide rapide et les autres documentations
Tu n’as pas toujours besoin d’une page de manuel complète. Une liste rapide des options, l’aide propre à une commande interne ou un message d’erreur peut répondre à la question immédiate. Choisis une source qui décrit la commande que tu exécutes réellement.
Choisis l’aide adaptée à la commande
type cp indique normalement un fichier de programme : cp --help donne donc son utilisation et ses options. type cd indique une commande interne du shell : help cd décrit donc la version de Bash. help seul liste les commandes internes de Bash ; il ne fournit pas de page d’aide pour le programme externe ls.
La plupart des commandes GNU prennent en charge --help, mais la signification des options courtes varie. Pour ls, -h indique des tailles lisibles et non l’aide. Lire ls --help est le moyen fiable de vérifier les options de ls sans les déduire de celles d’un autre programme.
Supposons que tu veuilles créer reports/2026/q1, mais que les répertoires parents n’existent pas. Traite la question étape par étape :
apropos directorysuggèremkdirpour créer des répertoires.mkdir --helpaffiche-p, --parentset explique la création des parents manquants.mkdir -p reports/2026/q1crée tout le chemin.
La recherche dans l’aide indique le comportement recherché, et pas seulement le nom de la commande. C’est utile lorsque tu connais déjà mkdir mais que sa forme ordinaire signale l’absence d’un parent.
Va au-delà de la liste des options
Les manuels GNU Info sont des documents plus longs, composés de pages liées entre elles. info coreutils ouvre la documentation des utilitaires de base pour les fichiers. Dans Info, n passe au nœud suivant, p au précédent, u remonte d’un niveau, Entrée suit un lien sélectionné et q quitte le programme. Un nœud est une partie du manuel constitué de pages liées.
Les paquets installés peuvent aussi fournir de la documentation sous /usr/share/doc/. Par exemple, ls /usr/share/doc/bash liste la documentation du paquet Bash. Ces répertoires peuvent contenir des fichiers README, des journaux des modifications, des textes de licence et des exemples. Le suffixe .gz indique un fichier compressé ; zless peut afficher du texte compressé.
Utilise une erreur comme indice
Une erreur indique généralement la commande, l’objet et la raison. Dans ls: cannot access 'note.txt': No such file or directory, ls s’est exécuté, mais n’a pas trouvé ce chemin. Vérifie pwd, l’orthographe et la casse, ainsi que le répertoire contenant le fichier. Saisir de nouveau ls en majuscules créerait un autre problème lié au nom de la commande.
rmdir: failed to remove 'photos': Directory not empty signifie que la cible existe mais contient encore des entrées. Les lister, y compris les entrées cachées, explique pourquoi la suppression a échoué. Une option inconnue est un autre problème : un message concernant --bogus te dirige vers ls --help parce que l’option elle-même n’est pas valide.
L’aide locale correspond mieux au programme installé qu’un exemple quelconque trouvé sur le web. ls --version indique la version de GNU lorsque tu dois comparer des documentations. Avant d’utiliser une commande copiée que tu ne connais pas, identifie chaque option dans l’aide de cette commande, surtout si elle supprime des fichiers ou s’exécute avec des droits d’administration.
Points clés
- Choisis
command --helppour les options d’un programme ethelp namepour les commandes internes de Bash. infoet/usr/share/doc/peuvent fournir des explications plus longues et des exemples.- Utilise la commande, le chemin et la raison indiqués dans une erreur pour décider quoi vérifier ensuite.
3Navigue dans le système de fichiers Linux
Les fichiers et les répertoires se trouvent dans une arborescence unique, et chaque commande travaille depuis un endroit précis de cette arborescence. Un chemin lui indique où aller ou quoi examiner. Tu suivras des chemins depuis la racine et depuis ton répertoire courant, utiliseras des raccourcis pour le répertoire personnel et les répertoires parents, et liras des affichages qui montrent plus que les noms. Ces compétences te permettent de vérifier ton emplacement et les objets sur lesquels tu travailles avant toute modification.
3.1 Comprends l’arborescence des répertoires
Linux organise les fichiers et les répertoires dans une arborescence unique. Un fichier contient des données ; un répertoire, appelé dossier dans un gestionnaire de fichiers graphique, contient des entrées nommées pour les fichiers et les autres répertoires. L’arborescence commence au répertoire racine, /.
Suis l’arborescence
Une barre oblique sépare les composants d’un chemin : /home/sam/photos mène de / à home, puis à sam, puis à photos. Les autres disques apparaissent dans la même arborescence, souvent sous /media ou /mnt ; ils n’ont pas besoin de lettres de lecteur. Une barre oblique inverse n’est pas un séparateur de chemin sous Linux. Bash l’utilise pour protéger le caractère suivant, comme dans Annual\ Report.pdf.
Les emplacements importants ont des rôles différents :
| Emplacement | Rôle principal |
|---|---|
/home | Répertoires personnels des utilisateurs ordinaires |
/root | Répertoire personnel de root |
/etc | Configuration du système |
/bin, /usr/bin | Fichiers des programmes courants |
/sbin, /usr/sbin | Programmes d’administration système |
/tmp | Données temporaires qui peuvent être effacées automatiquement |
/var | Données changeantes, y compris les journaux sous /var/log |
/dev | Fichiers de périphériques |
Beaucoup de distributions actuelles relient /bin à /usr/bin et /sbin à /usr/sbin. Tu peux donc voir deux noms de répertoires menant aux mêmes programmes installés. Le répertoire racine / et le répertoire /root désignent toutefois des endroits différents : le premier est le point de départ de l’arborescence et le second est le répertoire personnel d’un compte.
Reconnais tes propres fichiers
Pour l’utilisateur sam de l’exemple, le répertoire personnel est /home/sam, que le shell abrège en ~. /home est son parent, pas le répertoire personnel de sam. Les documents et paramètres personnels se trouvent normalement dans le répertoire personnel ; /tmp ne convient pas à ce que tu dois conserver, car les données temporaires peuvent être supprimées automatiquement.
Considère cette organisation :
/home/sam/
.bashrc
Documents/
cv.pdf
letter.txt
photos/
projects/
notes.txt
website/
index.html
style.css
Le chemin complet vers la feuille de style est /home/sam/projects/website/style.css. Le fichier notes.txt se trouve à côté de website, et non à l’intérieur. Les entrées de chaque répertoire déterminent la prochaine étape possible dans l’arborescence.
Lis les noms exactement
Les noms sont sensibles à la casse : notes.txt, Notes.txt et NOTES.TXT peuvent désigner trois fichiers. Les noms ne peuvent contenir ni / ni octet nul. De simples lettres, chiffres, points, tirets et traits de soulignement rendent les noms courants faciles à saisir ; les systèmes de fichiers Linux courants limitent un nom à 255 octets.
Un suffixe comme .txt fait partie du nom et ne prouve pas son contenu. file report examine les données et peut identifier un PDF même si le nom ne comporte pas .pdf.
Un point initial cache une entrée dans l’affichage ordinaire de ls. .bashrc, .profile et .config contiennent couramment des paramètres. Caché signifie omis de l’affichage par défaut, et non protégé contre l’accès ; ls -a révèle ces noms. L’entrée spéciale . désigne le répertoire lui-même et .. son parent. À la racine, .. mène toujours à /.
Points clés
- Les chemins Linux appartiennent à une arborescence unique dont la racine est
/. /home/sam,/homeet/rootsont des répertoires différents.- Les noms de fichiers sont sensibles à la casse ; les extensions ne déterminent pas leur contenu.
- Un point initial cache un nom dans un affichage ordinaire, mais pas aux personnes autorisées à y accéder.
.désigne le répertoire courant et..son parent.
3.2 Déplace-toi à l’aide de chemins absolus et relatifs
Un chemin indique à une commande où trouver un objet. Pour lire correctement un chemin, détermine d’abord son point de départ. Un chemin absolu commence à / ; un chemin relatif commence au répertoire de travail courant du shell.
Établis ton point de départ
pwd affiche ton répertoire courant. Depuis /home/sam, le chemin projects/website mène à /home/sam/projects/website. Depuis /etc, ce même chemin relatif désignerait /etc/projects/website. Le chemin absolu /home/sam/projects/website désigne le même emplacement depuis l’un ou l’autre point de départ.
cd change le répertoire courant. Il ne liste pas le contenu de la destination et n’ouvre pas de fichier. cd projects entre dans un répertoire enfant nommé projects ; cd /etc va à l’emplacement absolu /etc. Sans argument, cd revient au répertoire personnel. cd - revient au répertoire de travail précédent et affiche cet emplacement.
Suis un chemin étape par étape
Pars de /home/sam/projects/website et examine cd ../../photos :
- Le premier
..mène à/home/sam/projects. - Le second
..mène à/home/sam. photosdescend dans/home/sam/photos.
La commande entière effectue un seul changement vers la destination finale. Depuis le répertoire website, cd .. s’arrête à projects, tandis que cd ../.. s’arrête au répertoire personnel. Le répertoire de départ compte à chaque fois : après un déplacement, une deuxième commande relative part de ton nouvel emplacement.
Un ./ initial désigne explicitement le répertoire courant. ./notes.txt et notes.txt désignent le même fichier local. ls ../photos liste un répertoire proche sans y déplacer ton shell ; seule une commande qui change le répertoire de travail, comme cd, change la base des chemins relatifs suivants.
Utilise le raccourci du répertoire personnel
Au début d’un mot non protégé par des guillemets, Bash développe ~ en ton répertoire personnel. cd ~/Documents fonctionne donc depuis n’importe où pour sam. ~alex désigne le répertoire personnel d’alex.
Protéger le tilde par des guillemets empêche ce développement : cd "~/Documents" cherche un répertoire littéralement nommé ~ sous le répertoire courant. Si la suite contient un espace, laisse le tilde hors des guillemets :
cd ~/"My Files"
Tu peux aussi écrire cd "$HOME/My Files" ; les guillemets doubles conservent l’espace tout en permettant le développement de la valeur de la variable.
Diagnostique un chemin qui échoue
cd /projects cherche projects directement sous /, et non sous ton répertoire personnel. cd.. est un seul nom de commande ; écris cd ... Un documents en minuscules échoue si le nom réel est Documents. Vérifie le point de départ, chaque composant et sa casse exacte. La complétion par Tab peut compléter un nom existant et éviter une faute de frappe.
Les chemins absolus conviennent aux instructions qui doivent fonctionner depuis différents emplacements. Les chemins relatifs sont pratiques pour travailler à proximité. Les deux formes fonctionnent aussi comme arguments de fichiers pour cp, mv, ls et d’autres commandes ; l’interprétation d’un chemin ne dépend pas de son utilisation avec cd.
Points clés
- Utilise
pwdpour établir la base d’un chemin relatif. - Les chemins absolus commencent par
/; les chemins relatifs partent du répertoire courant. - Lis chaque
..comme une étape vers le répertoire parent. cd,cd -etcd ..ont des destinations différentes.- Laisse
~hors des guillemets lorsque tu veux le développer en répertoire personnel.
3.3 Liste et examine le contenu des répertoires
ls affiche le contenu du répertoire courant ou les fichiers et répertoires que tu désignes. Un affichage peut répondre à plus que « Que trouve-t-on ici ? » : les options révèlent les entrées cachées, les détails, les tailles, l’ordre et les sous-répertoires.
Choisis ce qu’il faut afficher
ls et ls -l seuls omettent les entrées cachées. -a les inclut avec . et .. ; -A inclut les entrées cachées sans ces deux noms spéciaux. -F ajoute une barre oblique après les noms des répertoires. Les couleurs de sortie sont une autre aide visuelle, mais les couleurs exactes dépendent du système.
ls projects liste ce qui se trouve dans projects. ls -ld projects affiche quant à lui les détails de l’entrée du répertoire lui-même. L’option -d change l’objet affiché, et non le niveau de détail.
Lis un affichage détaillé
Examine cette ligne produite par ls -l :
-rw-r--r-- 1 sam sam 2048 Mar 3 14:20 notes.txt
Lis-la de gauche à droite :
-indique un fichier ordinaire ;dindiquerait un répertoire etlun lien symbolique.- Les neuf caractères suivants décrivent les droits du propriétaire, du groupe et des autres.
1est le nombre de liens physiques.- Les deux champs
samindiquent le propriétaire et le groupe. 2048est la taille du fichier en octets.- La date et l’heure indiquent la dernière modification du contenu.
notes.txtest le nom.
ls -lh affiche cette taille sous la forme 2.0K. L’option -h modifie le format des tailles, tandis que -l fournit la colonne des tailles. ls -h seul affiche toujours les noms sans les tailles.
La taille propre d’un répertoire correspond à l’espace utilisé pour ses entrées ; ce n’est pas la somme de toutes les données qu’il contient. La ligne total 12 indique les blocs de disque utilisés par les entrées listées, et non douze fichiers. Utilise les lignes des noms de fichiers pour voir les entrées elles-mêmes.
Trie le résultat
| Options | Ce qui apparaît en premier |
|---|---|
| Aucune option de tri | Les noms dans l’ordre des paramètres régionaux |
-t | Les entrées modifiées le plus récemment |
-S | Les entrées les plus volumineuses |
-r avec un autre ordre | L’inverse de cet ordre |
Par exemple, ls -lt place d’abord les modifications les plus récentes, tandis que ls -ltr les place en dernier. ls -lhS affiche des tailles lisibles, les plus grandes en premier. La casse et la ponctuation peuvent être triées différemment selon les paramètres régionaux : ne conclus donc pas qu’un fichier manque simplement parce que son nom n’est pas à l’endroit attendu.
Examine les niveaux inférieurs
ls -R projects liste le contenu de projects, puis celui de ses sous-répertoires. Avec notes.txt à côté d’un répertoire website, le premier titre est projects: et ses entrées comprennent ces deux noms. Un titre ultérieur, projects/website:, indique l’affichage qui contient index.html et style.css.
-R en majuscule est récursif. -r en minuscule inverse seulement le tri. Combiner -a avec un affichage récursif révèle aussi les entrées cachées, ce qui peut rendre le résultat beaucoup plus long. Pour les métadonnées d’un seul répertoire, ls -ld est généralement plus clair.
Points clés
-lajoute des détails et-hrend les tailles affichées plus faciles à lire.-ainclut les entrées cachées ;-Aomet uniquement.et...-dliste un répertoire lui-même ;-Rliste ses sous-répertoires.-t,-Set-rcontrôlent l’ordre.- La taille d’un répertoire et la ligne
totalne représentent ni le nombre ni la taille totale de tous les fichiers qu’il contient. - Un affichage détaillé indique le type, les droits, les liens, le propriétaire, le groupe, la taille, la date de modification et le nom.
4Crée, copie, déplace et supprime des fichiers et des répertoires
Créer un répertoire, copier un fichier et renommer un fichier modifient chacun l’arborescence d’une manière différente. Le résultat dépend aussi de l’existence préalable de la destination. Tu créeras une petite structure de répertoires, prévoiras où aboutissent les copies et les déplacements, et distingueras la suppression d’un répertoire vide de celle d’une arborescence entière. Lire la commande comme une action sur des chemins précis de source et de destination aide à éviter les écrasements et les suppressions accidentels.
4.1 Crée des fichiers et des répertoires
mkdir crée des répertoires et touch crée des fichiers vides ou met à jour des horodatages existants. Ce sont deux actions distinctes : un répertoire fournit un emplacement pour des entrées, tandis qu’un fichier vide est déjà un fichier, même s’il ne contient aucune donnée.
Crée d’abord le répertoire
mkdir drafts crée un répertoire sous ton emplacement courant. mkdir drafts final crée deux répertoires de même niveau. Si un nom demandé existe déjà, mkdir sans option signale File exists.
Les parents d’un chemin doivent normalement exister. Si reports manque, mkdir reports/2026/q1 ne peut pas atteindre l’emplacement demandé. Ajoute -p pour créer les répertoires parents manquants :
mkdir -p reports/2026/q1
Cette commande crée chaque niveau manquant et accepte les niveaux déjà présents sous forme de répertoires. La répéter est utile pour préparer une structure dont les parties existantes doivent rester en place. Elle ne transforme pas un fichier ordinaire existant en répertoire.
Ajoute des fichiers vides
touch todo.txt crée un fichier de zéro octet si ce nom est absent. Si le fichier existe, touch conserve son contenu et met à jour ses dates d’accès et de modification. Cette commande ne sert pas à vider un fichier. Tu peux nommer plusieurs fichiers, comme dans touch a.txt b.txt, ou choisir un horodatage avec touch -d 2025-01-31 old.txt.
Les fichiers qui ont un contenu sont normalement créés par un programme qui enregistre des données, comme un éditeur. Créer un fichier avec touch lui donne un nom et un contenu vide ; la commande n’ajoute pas de texte pour toi.
Construis un petit projet
Depuis ton répertoire personnel, exécute :
mkdir -p website/css website/images
touch website/index.html website/css/style.css
ls -R website
La première ligne crée website et ses deux répertoires enfants. La deuxième place index.html dans website et style.css dans website/css. Elle ne place aucun de ces fichiers dans images. Dans l’affichage récursif, website: contient css, images et index.html ; website/css: contient style.css ; website/images: ne contient aucune entrée ordinaire.
Remarque que la commande touch dépend des répertoires parents créés par mkdir. Inverser ces deux étapes échouerait si website n’existait pas encore.
Supprime un répertoire vide
rmdir website/images supprime ce répertoire vide. rmdir website/css échoue tant que style.css s’y trouve. Une entrée cachée rend elle aussi un répertoire non vide : examine-le donc avec ls -A si l’affichage ordinaire semble vide.
rmdir -p reports/2026/q1 supprime q1, puis essaie de supprimer 2026, puis reports. La commande s’arrête lorsqu’un parent n’est pas vide. Cette option remonte l’arborescence, tandis que mkdir -p crée les parents manquants en descendant.
Les espaces séparent toujours les arguments. mkdir My Project demande deux répertoires ; mkdir "My Project" en demande un. Un nom simple comme my-project évite l’espace. Les noms Reports et reports sont distincts : utilise donc la même casse dans la commande de création et dans les chemins ultérieurs.
Points clés
mkdircrée des répertoires ;-pcrée aussi les parents manquants.touchcrée un fichier vide absent ou met à jour un fichier existant sans l’effacer.- Crée les répertoires parents avant les fichiers qu’ils doivent contenir.
rmdirne supprime que les répertoires vides, c’est-à-dire sans entrée cachée non plus.
4.2 Copie, déplace et renomme
Une copie laisse la source en place. Un déplacement change son nom ou son emplacement. Pour prévoir le résultat de l’une ou l’autre action, examine le chemin source, le chemin de destination et l’existence éventuelle de la destination.
Prévois la destination d’une copie
cp notes.txt notes-backup.txt crée un second fichier nommé notes-backup.txt. Si Documents est un répertoire existant, cp notes.txt Documents/ crée plutôt Documents/notes.txt. La barre oblique finale exprime l’intention de copier dans un répertoire.
Lorsqu’il y a plusieurs sources, le dernier argument doit être un répertoire existant. cp cv.pdf letter.txt backup/ place les deux fichiers indiqués dans backup. Cette commande ne crée pas automatiquement un répertoire de destination manquant.
Les répertoires nécessitent une copie récursive. cp website website-old omet le répertoire parce qu’aucune option récursive n’a été fournie. cp -r website website-old copie l’arborescence, mais le résultat dépend de la destination :
| Avant la copie | Emplacement de l’arborescence copiée |
|---|---|
website-old n’existe pas | website-old/index.html, et ainsi de suite |
website-old existe comme répertoire | website-old/website/index.html, et ainsi de suite |
Un répertoire de destination existant reçoit le répertoire source sous son nom. Il n’est pas automatiquement remplacé par le contenu de la source.
Déplace ou renomme
mv draft.txt final.txt renomme un fichier. mv final.txt Documents/ le déplace dans un répertoire existant. mv website site renomme un répertoire lorsque site est absent et ne nécessite pas d’option récursive.
Au sein d’un même système de fichiers, un déplacement modifie normalement les entrées de répertoire sans copier toutes les données. Un déplacement entre systèmes de fichiers peut nécessiter de copier puis de supprimer les données : un déplacement volumineux n’est donc pas forcément instantané.
Si archive n’existe pas, mv notes.txt archive renomme le fichier en archive. mv notes.txt archive/ exige au contraire un répertoire et échoue si ce répertoire est absent. Utilise la barre oblique lorsqu’un nouveau nom de fichier ne serait pas le résultat voulu.
Contrôle le remplacement et les métadonnées
cp et mv sans option peuvent écraser un fichier de destination existant sans demander confirmation. -i demande confirmation avant le remplacement ; -n ignore les destinations existantes ; -v affiche les actions. Des alias peuvent ajouter des options : utilise donc type cp ou type mv si le comportement observé diffère.
Une copie ordinaire nouvellement créée reçoit une nouvelle date de modification. cp -p conserve les horodatages et les droits, tandis que cp -a conserve récursivement les attributs d’une arborescence et est utile pour les sauvegardes. Ne suppose pas qu’une copie simple conserve la date de sa source simplement parce que les contenus correspondent.
Suis une opération complète
Depuis /home/sam, crée d’abord backup. cp projects/notes.txt backup/ crée backup/notes.txt. Ensuite, mv backup/notes.txt backup/notes-2026.txt ne change que le nom de la copie. Enfin, cp -r projects/website backup/ crée backup/website, avec ses fichiers. Les originaux projects/notes.txt et projects/website restent à leur place, car aucun des deux n’a été la source d’un déplacement.
Points clés
cplaisse la source en place ;mvchange son nom ou son emplacement.- Un répertoire de destination existant reçoit la source sous son nom.
- Avec plusieurs sources, le dernier argument doit être un répertoire.
cp -rcopie une arborescence ;mvn’a pas besoin d’option récursive.-idemande confirmation avant d’écraser et-nignore une destination existante.cp -pconserve les horodatages et les droits ;cp -aconserve récursivement une arborescence.
4.3 Supprime des fichiers et des répertoires en toute sécurité
rm supprime les fichiers désignés par ses arguments. Contrairement à la mise à la corbeille dans un gestionnaire de fichiers graphique, cette commande ne les place pas dans une corbeille. Une sauvegarde est normalement le moyen de récupérer les fichiers après leur suppression.
Choisis la bonne commande de suppression
rm old.txt supprime un fichier et rm a.txt b.txt supprime plusieurs fichiers désignés. rm old sans option refuse si old est un répertoire. rmdir old ou la commande GNU rm -d old ne supprime un répertoire que s’il est vide. rm -r old supprime récursivement son contenu, puis le répertoire lui-même.
Cette distinction est utile lorsque tu t’attends à trouver un répertoire vide. Si rmdir échoue avec Directory not empty, tu peux examiner le contenu inattendu. Une suppression récursive supprimerait aussi ce contenu.
Contrôle les demandes de confirmation
| Option | Effet |
|---|---|
-i | Demander confirmation avant chaque suppression |
-I | Demander une fois avant de supprimer plus de trois fichiers ou avant une suppression récursive |
-f | Ne pas demander confirmation ; ignorer les noms inexistants |
-v | Afficher les actions de suppression |
Lors d’une saisie interactive ordinaire, rm peut aussi demander confirmation pour un fichier protégé en écriture. -f supprime cette question. Cette option ne rend pas la suppression réversible et n’élimine pas toutes les causes possibles d’échec d’une commande.
Vérifie les cibles exactes
Suis cette méthode avant une suppression qui pourrait toucher plusieurs noms :
- Exécute
pwdpour confirmer ton emplacement. - Liste les noms exacts ou le motif que tu comptes supprimer.
- Examine la liste, notamment pour voir si des répertoires sont sélectionnés.
- Utilise la même expression cible avec
rm, en ajoutant-ilorsqu’une confirmation est utile.
Supposons que le répertoire contienne draft1.tmp, draft2.tmp, final.txt et notes.tmp. ls *.tmp affiche les trois fichiers temporaires. rm -i *.tmp demande confirmation pour ces trois noms ; final.txt ne correspond pas au motif. Répondre n ignore un fichier, tandis que y confirme sa suppression.
Respecte l’écriture des chemins
Un espace sépare les mots, même dans une commande dangereuse. Ajouter un espace entre ~/ et le nom d’un élément enfant transforme un chemin relatif au répertoire personnel en deux cibles distinctes. Vérifie toute la ligne avant d’appuyer sur Entrée. Évite la suppression récursive forcée pour le nettoyage courant lorsqu’une commande plus ciblée suffit. Par défaut, rm de GNU protège / lui-même ; cette protection ne protège pas tous les chemins situés sous / contre un motif erroné.
Un tiret initial peut être pris pour une option. rm -- -draft.txt met fin à l’analyse des options avant le nom du fichier. rm ./-draft.txt le désigne aussi sans ambiguïté. Pour un espace dans un nom, utilise rm "old notes.txt" ; la version sans guillemets désigne séparément old et notes.txt.
Une erreur demande un diagnostic, pas automatiquement des droits plus étendus. Si une suppression échoue, vérifie si la cible est un répertoire, si son chemin est correct et ce qu’indique exactement le message. Répéter une commande mal saisie avec des droits d’administration augmente la portée possible de l’erreur.
Points clés
rmsupprime directement ; la commande n’envoie pas les fichiers dans une corbeille.- Utilise
rmdirpour un répertoire vide etrm -rpour une arborescence. - Vérifie le répertoire de travail et les cibles exactes avant la suppression.
-idemande confirmation pour chaque cible ;-fsupprime les questions et ignore les noms inexistants.- Les espaces, les guillemets et les tirets initiaux changent la façon dont les arguments de suppression sont interprétés.
5Sélectionne des fichiers avec des caractères génériques
Un caractère générique permet de transformer un court motif en plusieurs noms de fichiers. Bash effectue cette recherche de correspondances avant de lancer la commande : un même motif peut donc servir à afficher, copier ou supprimer des fichiers. Tu détermineras exactement les noms qui correspondent, tiendras compte de la casse et des entrées cachées, et verras comment les guillemets changent ce qui parvient à un programme. Le développement des accolades fournit un autre outil utile : il produit de nouveaux noms même lorsqu’aucun fichier ne porte ces noms.
5.1 Sélectionne les noms de fichiers avec *, ? et [ ]
Un motif de nom de fichier est un motif utilisé pour sélectionner des noms de fichiers. Bash remplace un motif non protégé par des guillemets par les noms existants qui lui correspondent avant de lancer la commande. Tu peux utiliser le même motif avec ls, cp, mv ou une autre commande qui accepte ces noms.
Recherche les correspondances partie par partie
| Partie du motif | Ce à quoi elle correspond |
|---|---|
* | Toute suite de caractères, y compris une suite vide |
? | Exactement un caractère |
[12] | Un caractère : 1 ou 2 |
[0-9] | Un chiffre dans la plage |
[!0-9] | Un caractère hors de la plage des chiffres |
Un motif correspond au nom entier. report* correspond à report parce que l’astérisque peut correspondre à une suite vide. beach?.jpg correspond à beach1.jpg, mais pas à beach10.jpg : deux chiffres ne peuvent pas correspondre à un seul point d’interrogation. beach[12].jpg limite ce caractère à 1 ou 2.
Pour un exemple détaillé de sélection, supposons que photos contienne beach1.jpg, beach2.jpg, beach10.jpg, city1.jpg, city2.png, IMG_01.JPG, notes.txt et .index. Le motif *.jpg correspond aux trois photos de plage et à city1.jpg. city* correspond aussi à city2.png, car il impose une condition au début du nom, et non au suffixe. [!b]* correspond aux noms dont le premier caractère n’est pas b, en excluant les noms de plage ainsi que le fichier caché .index.
Tiens compte de la casse et des points initiaux
Par défaut, la recherche de correspondances est sensible à la casse. *.jpg ne sélectionne pas IMG_01.JPG. Le motif *.[jJ][pP][gG] accepte les deux casses pour chaque caractère du suffixe : il inclut donc les deux formes.
Pour sélectionner un nom commençant par un point dans la recherche ordinaire de Bash, il faut placer explicitement un point au début du composant de chemin concerné. * omet .index ; .i* le sélectionne. Cette règle s’applique aussi à l’intérieur d’un répertoire : photos/* omet les noms cachés dans photos. Le motif ne sélectionne pas les fichiers cachés simplement parce que ls -a est la commande qui le reçoit ; le développement a déjà eu lieu avant le démarrage de ls.
Un caractère générique ne franchit pas /. photos/*.jpg sélectionne les correspondances directement dans photos. */notes.txt sélectionne un fichier correspondant situé exactement un niveau de répertoire sous le répertoire courant. Il ne recherche pas dans tous les répertoires plus profonds.
Lis attentivement les ensembles de caractères
[abc] correspond à un seul caractère, et non à un choix entre des noms de fichiers entiers. Un ! ou un ^ initial inverse l’ensemble. Une plage comme [a-f] suit les règles des paramètres régionaux, qui peuvent influer sur l’ordre et les correspondances. Les classes nommées utilisent une autre paire de crochets : [[:digit:]], [[:upper:]] et [[:lower:]]. La classification de leurs caractères suit les paramètres régionaux ; les minuscules ne se limitent pas aux lettres ASCII de a à z.
Les motifs de noms de fichiers et les expressions régulières suivent des règles différentes. Dans un motif de nom de fichier, un point est un point littéral et * est déjà une instruction complète signifiant « toute suite de caractères ». N’emprunte pas la signification de . ou de * à un motif de recherche textuelle pour prévoir les correspondances de noms de fichiers.
Points clés
- Bash développe les motifs de noms de fichiers en noms existants correspondants avant l’exécution d’une commande.
*correspond à zéro caractère ou plus ;?et un ensemble entre crochets correspondent chacun à un caractère.- La casse et un point initial influent sur les correspondances.
- Les caractères génériques agissent dans un composant de chemin et ne franchissent pas
/. - Les plages et les classes de caractères dépendent des paramètres régionaux.
- Les motifs de noms de fichiers et les expressions régulières interprètent les symboles différemment.
5.2 Utilise les caractères génériques en toute sécurité dans les commandes
Un programme reçoit les noms produits par Bash, et non l’expression contenant des caractères génériques qui les a sélectionnés. Il est donc utile de vérifier le résultat du développement : tu peux examiner les arguments sélectionnés avant qu’une commande ne modifie des fichiers.
Développe, puis exécute
Si notes.txt et todo.txt sont les seuls noms en .txt, ls *.txt reçoit ces deux noms. Le shell effectue la recherche des correspondances ; ls peut ensuite lister chaque argument selon ses propres règles. Les répertoires correspondants comptent aussi comme des noms : un motif ne garantit donc pas que chaque cible est un fichier ordinaire.
echo *.tmp affiche les mots obtenus après développement sans modifier de fichiers. ls -d -- *.tmp liste les entrées correspondantes elles-mêmes, y compris les entrées de répertoires, au lieu d’afficher leur contenu. Pour des noms de fichiers simples, ces aperçus permettent de vérifier facilement la sélection avant de copier, déplacer ou supprimer.
Dans la configuration par défaut de Bash, un motif sans correspondance reste inchangé. Si aucun nom en .pdf n’existe, echo *.pdf affiche *.pdf ; ls *.pdf essaie d’accéder à ce nom littéral et signale qu’il n’existe pas. Un astérisque affiché peut donc indiquer l’absence de correspondance, et non une véritable liste de fichiers sélectionnés.
Décide qui doit recevoir le motif
Les guillemets empêchent le développement des caractères génériques. echo '*.txt', echo "*.txt" et echo \*.txt affichent tous le motif littéral. À l’inverse, echo *.txt demande à Bash de sélectionner les noms existants correspondants. Les guillemets conviennent lorsque le programme lui-même doit recevoir les caractères spéciaux ou lorsqu’un fichier réel contient un astérisque dans son nom.
Distingue ce choix de la protection des espaces par des guillemets. Un nom de fichier sélectionné par le développement d’un motif reste un seul argument même s’il contient un espace. Mais une variable contenant un chemin doit normalement être entourée de guillemets doubles lors de son utilisation, car son développement sans guillemets peut être découpé en mots.
Vérifie la destination de la commande
cp *.jpg ~/backup/ copie les noms correspondants dans un répertoire de sauvegarde existant. mv draft* archive/ déplace les noms correspondants dans un répertoire d’archivage existant. Une barre oblique finale impose une destination qui soit un répertoire, ce qui aide à repérer une destination manquante au lieu de renommer silencieusement une source unique.
Un * large inclut les répertoires. cp * backup/ copie les fichiers ordinaires mais omet les répertoires en l’absence de copie récursive. Ajouter -r inclut les répertoires, y compris backup lui-même lorsqu’il se trouve dans le répertoire courant ; cp refuse alors de copier ce répertoire dans lui-même. Place une sauvegarde hors de l’ensemble des sources sélectionnées ou choisis un motif plus ciblé.
Les espaces changent la sélection. *.tmp est un seul motif ; * .tmp est un motif large accompagné d’un argument distinct dont le nom commence par un point. Vérifie l’expression exacte que tu utiliseras.
Génère de nouveaux noms avec les accolades
Le développement des accolades produit des mots, qu’ils existent ou non :
mkdir -p project/{src,docs,tests}
touch file{1..3}.txt
cp notes.txt{,.bak}
La première ligne crée trois éléments enfants portant les noms indiqués. La deuxième produit file1.txt, file2.txt et file3.txt. La dernière se développe en cp notes.txt notes.txt.bak ; son premier choix entre accolades est vide. Utilise les accolades pour générer des noms et les motifs de noms de fichiers pour sélectionner ceux qui existent.
Points clés
- Vérifie le motif exact avant d’utiliser une commande qui modifie des fichiers.
- Sans correspondance, le motif reste littéral dans la configuration par défaut de Bash.
- Les guillemets ou une barre oblique inverse conservent les caractères génériques tels quels.
- Les motifs de noms de fichiers sélectionnent les répertoires ainsi que les fichiers ordinaires.
- Le développement des accolades crée des mots même lorsque les fichiers correspondants n’existent pas.
6Réutilise des commandes et manipule des variables
Un shell peut mémoriser tes commandes et conserver des valeurs que tu réutilises. L’historique réduit la saisie, les variables donnent des noms à des valeurs utiles et l’environnement transmet certaines valeurs aux programmes nouvellement lancés. La variable d’environnement PATH indique à Bash où chercher les fichiers de programme. Tu relieras ces fonctions à la protection des caractères, à la résolution des commandes et aux fichiers de démarrage afin d’expliquer ce qui fonctionne maintenant et ce dont une session de terminal ultérieure héritera.
6.1 Rappelle et réutilise des commandes de l’historique
Bash conserve une liste d’historique des commandes saisies dans le shell. Tu peux rappeler une ligne, l’examiner, en modifier une partie et exécuter la version modifiée. C’est particulièrement utile pour un long chemin ou une combinaison d’options utilisés récemment.
Rappelle une ligne avant de l’exécuter
Les flèches haut et bas parcourent les commandes précédentes. La ligne rappelée devient une saisie modifiable ; elle n’est exécutée que lorsque tu appuies sur Entrée. history affiche la liste numérotée et history 5 limite la sortie aux entrées récentes.
Ctrl+R recherche en remontant l’historique. Saisis une partie d’une commande, comme mkdir, pour trouver la ligne correspondante la plus récente. Appuie de nouveau sur Ctrl+R pour obtenir une correspondance plus ancienne. Entrée exécute la commande affichée, tandis que Ctrl+G annule la recherche. Lis tout le résultat, car le fragment recherché peut apparaître dans plusieurs commandes ayant des chemins différents.
Comprends les raccourcis avec un point d’exclamation
Le développement de l’historique réécrit les expressions avant l’exécution :
| Expression | Texte réutilisé |
|---|---|
!! | La commande précédente |
!42 | L’entrée 42 de l’historique |
!ls | La dernière commande commençant par ls |
!$ | Le dernier argument de la commande précédente |
Par exemple, immédiatement après mkdir -p reports/2026, cd !$ se développe en cd reports/2026. Le raccourci renvoie à la commande précédente : une autre commande saisie entre ces lignes changerait donc ce que !$ sélectionne. Pour répéter une commande numérotée, utilise son numéro d’entrée ; pour réutiliser son dernier argument, utilise un raccourci de mot dans le contexte approprié.
Le développement affiche normalement la commande développée et l’exécute aussitôt. Cet affichage n’est pas une demande de confirmation. Un modificateur :p, comme dans !rm:p, affiche le développement sans l’exécuter. Le rappel par les flèches ou Ctrl+R est souvent plus facile lorsque tu veux examiner et modifier une ligne potentiellement destructive. Tu peux rencontrer sudo !! pour répéter la dernière commande avec des droits d’administration ; examine l’action prévue avant de décider si des droits supplémentaires sont appropriés.
Sache ce qui est enregistré
Le shell actif conserve l’historique en mémoire. À sa fermeture, il l’écrit normalement dans le fichier désigné par HISTFILE, généralement ~/.bash_history. Chaque terminal possède sa propre liste en mémoire : deux terminaux ouverts n’affichent donc pas nécessairement le même historique à ce moment-là.
HISTSIZE limite le nombre de commandes conservées en mémoire. La valeur intégrée par défaut de Bash est de 500, même si les distributions la modifient souvent. HISTFILESIZE limite le nombre de lignes dans le fichier d’historique enregistré. Ces paramètres contrôlent deux emplacements différents : modifier l’un ne signifie donc pas que tu as changé les deux limites.
HISTCONTROL=ignorespace omet les lignes commençant par un espace ; ignoredups omet une ligne identique à la précédente ; ignoreboth combine les deux. Ce sont des choix de configuration, qui ne permettent pas de supposer qu’un terminal quelconque laisse une commande sans l’enregistrer. history -d 42 supprime une entrée et history -c efface la liste courante en mémoire.
Les mots de passe placés dans les arguments d’une commande peuvent être enregistrés dans l’historique. Laisse un programme demander un mot de passe à sa propre invite au lieu de le placer dans la ligne de commande.
Points clés
- Le rappel avec les flèches et Ctrl+R permettent d’examiner une commande avant d’appuyer sur Entrée.
!!, les entrées numérotées, les préfixes et!$renvoient à des textes antérieurs différents.- Le développement de l’historique s’exécute normalement immédiatement ;
:pl’affiche sans l’exécuter. - La liste d’historique active et le fichier d’historique enregistré ont des limites distinctes.
- Ne place pas de mots de passe dans les arguments de commande.
6.2 Définis et utilise des variables du shell et des variables d’environnement
Une variable donne un nom à une valeur. Bash peut substituer cette valeur dans des lignes de commande ultérieures. Une variable d’environnement est aussi transmise aux programmes lancés depuis ce shell, ce qui leur permet de lire des paramètres comme la langue ou l’emplacement du répertoire personnel.
Affecte et lis une valeur
Écris une affectation sans espace autour de = :
city=Lisbon
echo "$city"
echo "${city}_trip"
La première ligne stocke Lisbon ; les lignes suivantes affichent Lisbon et Lisbon_trip. Les accolades indiquent où se termine le nom de la variable. Sans elles, $city_trip désigne une autre variable nommée city_trip.
city = Lisbon n’est pas une affectation : Bash essaie d’exécuter une commande nommée city avec deux arguments. Les noms sont sensibles à la casse et peuvent contenir des lettres, des chiffres et des traits de soulignement, mais ne peuvent pas commencer par un chiffre. Dans l’utilisation ordinaire de Bash, lire une variable non définie donne une valeur vide. unset city supprime la valeur.
Choisis les guillemets adaptés
| Saisie | Action de Bash |
|---|---|
echo "$HOME" | Développe HOME et garde le résultat en un seul morceau |
echo '$HOME' | Transmet le texte littéral $HOME |
echo \$HOME | Protège le signe dollar et affiche aussi $HOME |
Après greeting="Good morning", echo "$greeting, $USER" affiche la salutation et le nom du compte comme un seul argument. Entoure de guillemets doubles une variable utilisée comme chemin si sa valeur peut contenir des espaces. Les guillemets simples protègent tout ce qu’ils contiennent, y compris le signe dollar : ils ne peuvent donc pas servir au même usage que les guillemets doubles lorsque tu veux développer une variable.
Transmets des paramètres aux programmes fils
Une affectation ordinaire crée une variable du shell. export city la marque pour l’environnement ; export city=Lisbon combine les deux actions. Compare :
city=Lisbon
bash -c 'echo $city'
export city
bash -c 'echo $city'
Si city n’avait pas été exportée auparavant, le premier shell fils affiche une ligne vide. Après l’exportation, un nouveau processus fils reçoit Lisbon. L’exportation transmet une copie au lancement ; elle ne met pas à jour les programmes déjà en cours d’exécution.
env et printenv listent les entrées de l’environnement, tandis que printenv HOME en affiche une. set liste aussi les variables et les fonctions du shell. Les paramètres courants comprennent HOME pour le répertoire personnel, USER pour l’utilisateur, PWD pour le répertoire de travail, SHELL pour le shell de connexion, LANG pour la langue et les formats régionaux, et PATH pour la recherche des programmes. Des noms en minuscules pour tes propres valeurs évitent les conflits avec ces noms conventionnels en majuscules.
Contrôle la durée de vie et le démarrage
Une affectation placée devant une commande fournit un paramètre à cette seule commande : TZ=Asia/Tokyo date affiche l’heure de Tokyo sans remplacer le réglage du fuseau horaire du shell. LC_ALL=C ls --help demande les messages originaux non traduits.
Un paramètre non enregistré défini à l’invite appartient à ce shell ; ouvrir un autre terminal ne le rend pas permanent. Place un paramètre réutilisé comme export EDITOR=nano dans ~/.bashrc pour les shells Bash interactifs qui ne sont pas des shells de connexion. Les shells de connexion lisent les fichiers de profil, qui chargent souvent ce fichier. Un nouveau shell qui n’est pas un shell de connexion lit le paramètre enregistré ; source ~/.bashrc applique le fichier dans le shell courant.
Points clés
- Les affectations n’ont pas d’espaces autour de
=;$namelit la valeur. - Les guillemets doubles permettent le développement tout en conservant les espaces ; les guillemets simples gardent le texte littéral.
exporttransmet une variable aux programmes fils lancés par la suite.envaffiche l’environnement ;setinclut aussi les variables et les fonctions du shell.- Une affectation placée en tête peut ne concerner qu’une seule commande.
- Les fichiers de démarrage rendent les paramètres enregistrés disponibles dans les shells ultérieurs.
6.3 Contrôle la recherche des commandes par le shell avec PATH
Lorsque tu saisis un nom de commande, Bash doit déterminer ce qu’il signifie. Il peut s’agir d’un alias, d’une fonction, d’une commande interne ou d’un fichier de programme. PATH contrôle la recherche des fichiers de programme pour un nom qui ne contient pas de barre oblique.
Lis la liste de recherche
PATH contient des noms de répertoires séparés par des deux-points, par exemple /usr/local/bin:/usr/bin:/bin. echo "$PATH" affiche la liste. Bash examine d’abord les significations définies dans le shell ; pour un nom de programme externe, il parcourt les répertoires indiqués de gauche à droite et utilise le premier exécutable correspondant.
Ce sont les noms des répertoires qui comptent, et non le seul fait qu’un programme soit installé quelque part. Un fichier situé hors de la liste de recherche n’est pas trouvé par son seul nom. Les programmes courants se trouvent généralement sous /usr/bin ou /bin ; les programmes d’administration utilisent /usr/sbin ou /sbin ; les installations locales utilisent souvent /usr/local/bin. Les programmes personnels peuvent se trouver sous ~/bin ou ~/.local/bin.
Si deux répertoires de PATH contiennent un programme de même nom, le premier répertoire est prioritaire lors d’une nouvelle recherche.
Examine la commande active
type cd indique une commande interne du shell. type ls peut indiquer /usr/bin/ls ou signaler un alias qui ajoute de la couleur. type -a echo liste les correspondances internes et externes. which ls indique normalement un chemin de programme trouvé dans PATH, mais peut manquer des fonctions du shell que type connaît. Utilise type lorsque tu veux comprendre ce que Bash fera réellement.
Exécute un chemin explicite
Le PATH habituel omet le répertoire courant. Un fichier exécutable nommé backup dans le répertoire courant nécessite donc ./backup, sauf si son répertoire figure dans PATH. Un nom de commande contenant / désigne directement un emplacement :
./backup
/home/sam/bin/backup
Les deux formes contournent la recherche dans PATH. La première est relative à ton répertoire de travail ; la seconde part de /. Le fichier doit quand même être exécutable. Le seul fait de pouvoir le lister ou le lire ne permet pas de l’exécuter.
Complète sans remplacer
Pour ajouter un répertoire personnel à la fin, conserve la valeur existante :
export PATH="$PATH:$HOME/bin"
Le deux-points sépare l’ancienne liste du répertoire ajouté. Avec un exécutable backup dans /home/sam/bin, une commande backup ultérieure peut maintenant le trouver. L’ajout à la fin laisse tout programme correspondant déjà présent avant ton nouveau répertoire. Placer le nouveau répertoire en premier changerait le nom en double qui est prioritaire.
PATH=$HOME/bin écarte au contraire tous les répertoires existants de la valeur. Les commandes externes comme ls peuvent cesser de fonctionner lorsqu’elles sont appelées par leur seul nom. Ouvrir un nouveau terminal avec la configuration de démarrage normale rétablit son PATH normal ; pour le shell courant, export PATH=/usr/local/bin:/usr/bin:/bin fournit une liste de réparation de base. Les commandes internes peuvent encore fonctionner, car elles ne sont pas trouvées à l’aide de PATH.
Pour conserver un ajout voulu dans les nouveaux shells interactifs qui ne sont pas des shells de connexion, enregistre sa ligne d’exportation dans ~/.bashrc.
Points clés
- PATH est une liste séparée par des deux-points, parcourue de gauche à droite pour rechercher les commandes externes.
typeindique aussi les alias, les fonctions et les commandes internes.- Une commande contenant
/désigne directement un chemin et contourne PATH. - Conserve
$PATHlorsque tu complètes la liste. - L’ordre de recherche détermine quel programme externe est prioritaire lorsque plusieurs portent le même nom.
Ligne de commande Linux : exemples
1Construis et lis une commande
11 étapes
- 1IntroductionLis une session de terminal
Un terminal affiche un échange : tu saisis une commande, le shell l’interprète et tout résultat apparaît en dessous. L’invite indique où une nouvelle ligne peut commencer.
Nous allons lire cette invite, utiliser quelques touches et construire une commande dont les espaces et les options ont exactement le sens voulu. Le but est de comprendre la ligne avant d’appuyer sur Entrée.
- 2ExplicationIdentifie le shell et la fenêtre
Le shell est l’interpréteur. Le terminal est la fenêtre qui affiche ses entrées et ses sorties. Bash est un shell Linux couramment utilisé ; une autre fenêtre de terminal peut elle aussi exécuter Bash.
Dans
sam@laptop:~$, l’invite indique sam sur laptop, dans son répertoire personnel. Le signe dollar final indique par convention un utilisateur ordinaire. Ne saisis pas ce symbole d’invite lorsque tu entres un exemple de commande. - 3ExempleDemande qui tu es et où tu te trouves
Saisis
whoamiet lis le résultat : pour notre compte d’exemple, c’estsam. Saisis ensuitepwd; depuis le répertoire personnel, la commande affiche/home/sam. Chaque commande occupe une ligne de saisie distincte.La sortie est une information renvoyée par la commande, pas un texte que tu dois saisir de nouveau. Une nouvelle invite signifie que le shell est prêt. Une commande réussie peut aussi ne rien afficher : la longueur de la sortie ne mesure donc pas la réussite.
- 4ConseilComplète, annule ou quitte
Commence à saisir un nom de répertoire et appuie sur Tab pour le compléter. Si plusieurs noms conviennent, ajoute des caractères ou appuie deux fois sur Tab pour voir les possibilités. La complétion suit l’orthographe et la casse réelles des noms existants.
Ctrl+C annule la saisie ou interrompt un programme au premier plan. Ctrl+D sur une ligne vide ferme le shell. Dans un pageur de manuel,
qquitte la page ; cette même touche a un sens différent de celui d’une commande saisie à l’invite du shell. - 5DéfiChoisis la touche pour reprendre la saisie
Tu as saisi
ls-l, remarqué l’espace manquant et tu veux annuler toute la ligne avant son exécution. Quelle touche te ramène à une nouvelle ligne de saisie ?---reveal---
Appuie sur Ctrl+C. Cette combinaison annule la saisie en attente sans l’exécuter. Ctrl+L efface l’écran ; ce n’est pas la même chose qu’annuler ce que tu as saisi. Tu pourrais aussi corriger la ligne en
ls -l, mais l’action demandée ici est l’annulation. - 6ExplicationAttribue un rôle à chaque mot
Lis
ls -l /etccomme trois mots ayant trois rôles.lsdésigne la commande,-lmodifie son comportement et/etcindique ce qu’il faut lister. Les espaces de séparation permettent à Bash de transmettre ces éléments séparément.Les options courtes ont un tiret ; les options longues en ont deux.
ls -lacombine-let-a, tandis quels --allest une seule option longue. Certaines options nécessitent aussi des valeurs, que leur texte d’aide indique. - 7ExempleGarde ensemble un nom contenant un espace
Supposons qu’un fichier soit nommé « Annual Report.pdf ». Saisir
ls Annual Report.pdffournit deux arguments de fichier, car l’espace non protégé par des guillemets sépare les mots.Écris
ls "Annual Report.pdf"pour garder le nom ensemble. Les guillemets simples fonctionnent aussi pour ce nom littéral, ou tu peux échapper son espace comme dansAnnual\ Report.pdf. Les caractères de protection guident le shell ; ils ne deviennent pas des caractères du nom de fichier. - 8Point cléLes options dépendent de leur commande
Une lettre familière peut avoir des significations différentes selon le programme.
cp -rcopie les répertoires récursivement, maisls -rne fait qu’inverser l’ordre. L’option d’affichage récursif est-Ren majuscule.De même,
ls -hformate les tailles ; cette option ne demande pas l’aide. Lis la commande et l’option ensemble. Deviner à partir d’une option utilisée avec une autre commande peut produire une commande valide qui fait autre chose que ce que tu voulais. - 9DéfiConstruis un affichage clair
Un fichier est nommé « Course Plan.txt ». Comment demander son affichage détaillé sans demander deux fichiers distincts ?
---reveal---
Utilise
ls -l "Course Plan.txt". Le premier espace sépare la commande de l’option et le suivant sépare l’option de l’argument entre guillemets. L’espace interne reste dans un seul nom.ls-lserait au contraire un autre nom de commande etCourse Plan.txtsans guillemets serait interprété comme deux arguments cibles. - 10DéfiTraite deux types de texte particulier
Le fichier que tu dois lister est « -old notes.txt ». Tu veux ses détails et dois traiter à la fois le tiret initial et l’espace interne. Écris une commande GNU
lspour ce fichier.---reveal---
Utilise
ls -l -- "-old notes.txt". Les guillemets gardent le nom ensemble, tandis que--indique àlsd’arrêter l’analyse des options. Les guillemets seuls ne suppriment pas le tiret initial : ils règlent donc le problème de l’espace, mais pas celui de l’option.ls -l "./-old notes.txt"fonctionne aussi. - 11RécapitulatifLis la ligne avant d’appuyer sur Entrée
Reconnais l’invite, puis lis la ligne saisie comme une commande avec des options et des arguments distincts. Protège les espaces dans les noms, vérifie la signification des options pour la commande utilisée et sers-toi de la complétion pour réduire les fautes de frappe.
Lorsque la saisie est incorrecte, annule-la ou modifie-la avant l’exécution ; lorsqu’un programme occupe tout l’écran, utilise sa propre commande de sortie ou d’interruption.
2Trouve le comportement de commande dont tu as besoin
10 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionTrouve une réponse dans l’aide
- 2ExplicationOuvre le manuel de la commande
- 3ExempleInterprète les éléments facultatifs et répétés
- 4ConseilRecherche et reviens à l’invite
- 5DéfiSélectionne la page dont tu as besoin
- 6LienChoisis l’aide selon le type de commande
- 7ExempleLis la raison d’un échec
- 8DéfiChoisis une référence pour une commande interne
- 9DéfiPasse du rôle à une commande fonctionnelle
- 10RécapitulatifAssocie la question à la référence
3Navigue dans une arborescence de répertoires et examine-la
13 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionSuis un trajet dans l’arborescence
- 2ExplicationPars de la racine
- 3ExempleLis une petite arborescence
- 4DéfiReconnais une entrée enfant cachée
- 5ExplicationÉtablis le point de départ du trajet
- 6ExempleRemonte de deux parents
- 7ConseilUtilise les raccourcis du répertoire personnel et de l’emplacement précédent
- 8DéfiTrouve un répertoire au même niveau que le parent
- 9ExplicationAjoute les détails nécessaires
- 10ExempleDistingue la taille de l’ordre de tri
- 11DéfiChoisis l’affichage adapté à la question
- 12DéfiSuis un déplacement et un examen
- 13RécapitulatifDistingue l’emplacement de l’affichage
4Construis, copie, renomme et nettoie
14 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionPrévois l’organisation finale
- 2ExempleCrée les parents
- 3ExempleAjoute des fichiers à la structure
- 4DéfiVérifie ce qui doit exister en premier
- 5ExplicationCopie un fichier dans un répertoire
- 6ExempleCopie l’arborescence
- 7ExempleRenomme un élément dans la copie
- 8ConseilImpose un répertoire lorsque c’est la destination voulue
- 9DéfiLocalise un élément enfant copié
- 10ExplicationSupprime un répertoire enfant vide
- 11ConseilVérifie la cible avant la suppression
- 12DéfiChoisis une action réservée aux répertoires vides
- 13DéfiSuis tout le nettoyage
- 14RécapitulatifLis les actions comme des modifications de chemins
5Analyse un motif avant de l’utiliser
12 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionPrévois une sélection avec des caractères génériques
- 2ExplicationDétermine le nombre de caractères associé à chaque symbole
- 3ExempleLimite les caractères possibles à un emplacement
- 4Point cléLa casse et les points restent importants
- 5DéfiSélectionne les correspondances exactes
- 6ExplicationLaisse d’abord le shell développer le motif
- 7ExempleLis un motif littéral
- 8DéfiDétermine ce qui parvient au programme
- 9ConseilGarde la destination hors de la sélection
- 10ExempleGénère des noms avant que les fichiers existent
- 11DéfiGénère, déplace, puis sélectionne
- 12RécapitulatifDistingue la sélection de la génération
6Réutilise des commandes et suis les paramètres hérités
15 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionRéutilise une ligne et une valeur
- 2ExplicationRappelle une ligne pour pouvoir la modifier
- 3ExempleComprends ce que le raccourci réutilise
- 4DéfiIdentifie bien la commande précédente
- 5ExplicationAffecte une valeur sans la découper
- 6ExempleChoisis ce que les guillemets permettent
- 7ExemplePartage une copie avec un processus fils
- 8DéfiPrévois l’héritage et la modification locale
- 9LienChoisis la durée d’un paramètre
- 10ExplicationRecherche une commande externe
- 11ExempleAjoute un répertoire personnel à la fin
- 12Point cléUne barre oblique désigne directement un emplacement
- 13DéfiConserve la priorité du premier résultat
- 14DéfiRelie le rappel, la protection et la recherche
- 15RécapitulatifSuis le texte, les valeurs et leur portée
Ligne de commande Linux : QCM
Série 1 : Lis les commandes, l’aide et les chemins10 Questions Pratiques
Question 1 sur 10
sam@laptop:~/training$ et attend une saisie. Quel emplacement l’invite indique-t-elle ?Afficher la réponseMasquer la réponse
/training désigne son répertoire enfant. L’invite indique donc /home/sam/training. Lire seulement le tilde ferait manquer le composant enfant et placerait à tort le shell dans le répertoire personnel.Question 2 sur 10
Afficher la réponseMasquer la réponse
ls sépare la commande de son option et les guillemets gardent le nom du fichier dans un seul argument. Sans guillemets, Bash fournit deux noms distincts, Team et Schedule.pdf. Ajouter des barres obliques décrirait un autre chemin au lieu de protéger l’espace.Question 3 sur 10
Afficher la réponseMasquer la réponse
Question 4 sur 10
/etc/passwd, mais man passwd ouvre la page de la commande de changement de mot de passe. Quelle commande ouvre la page nécessaire ?Afficher la réponseMasquer la réponse
passwd. La section 1 est celle de la commande utilisateur déjà ouverte. Une recherche par mot-clé ou une description en une ligne peut identifier des pages, mais ne sélectionne pas directement la référence demandée sur le format.Question 5 sur 10
type export indique que export est une commande interne du shell. Comment lire l’aide de Bash à son sujet ?Afficher la réponseMasquer la réponse
help : help export cible donc directement cette commande. Appliquer aux commandes internes la forme habituelle --help des programmes externes n’est pas fiable. Le type de commande indiqué par type permet de savoir quel système d’aide consulter.Question 6 sur 10
mkdir [OPTION]... DIRECTORY.... Que faut-il fournir pour une utilisation simple et valide ?Afficher la réponseMasquer la réponse
Question 7 sur 10
/home/sam/labs/module. Quel répertoire absolu cd ../../downloads sélectionne-t-il ?Afficher la réponseMasquer la réponse
.. mène à /home/sam/labs et le second à /home/sam. Le dernier composant entre ensuite dans son répertoire enfant downloads. S’arrêter après une seule remontée placerait à tort la destination dans labs ; il faut suivre les deux composants parents.Question 8 sur 10
assets lui-même, sans lister les fichiers qu’il contient. Quelle commande le permet ?Afficher la réponseMasquer la réponse
-d indique à ls d’afficher l’entrée du répertoire lui-même et -l ajoute ses métadonnées. Sans -d, ls -l assets liste les entrées de ce répertoire. Ajouter des options pour les entrées cachées ou la récursion modifie l’affichage du contenu, mais ne sélectionne pas l’entrée du répertoire lui-même.Question 9 sur 10
ls ordinaire n’affiche rien dans settings, mais ls -A settings affiche .localrc. Pourquoi les résultats diffèrent-ils ?Afficher la réponseMasquer la réponse
-A inclut ces entrées. L’option d’affichage ne crée pas de fichiers et n’accorde pas d’accès supplémentaire. Un affichage ordinaire vide peut donc correspondre à un répertoire non vide contenant des noms cachés.Question 10 sur 10
/home/sam, tu exécutes cd projects, puis ls ../downloads, puis cd ../photos. Tous les répertoires indiqués existent. Dans quel répertoire te trouves-tu et que sélectionne ensuite cd - ?Afficher la réponseMasquer la réponse
/home/sam/projects ; l’affichage de ../downloads ne change pas cet emplacement. Le dernier déplacement relatif remonte à sam puis entre dans photos. cd - revient au répertoire de travail précédent, projects, et non au répertoire simplement listé.Série 2 : Prévois les modifications des fichiers et des répertoires10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
lab n’existe pas. Comment créer lab/week2/input et ses parents manquants en une seule commande ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
records contient jan.csv et stored existe déjà comme répertoire vide. Quel chemin contient le fichier copié après cp -r records stored ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
agenda.txt contient des notes de réunion. Que se passe-t-il lorsque tu exécutes touch agenda.txt ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
rough.txt existe et archive n’existe pas. Que fait mv rough.txt archive sans alias ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
old-cache est un répertoire qui devrait être vide. Quelle commande ne le supprime que si c’est bien le cas ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
-scratch.log. Comment transmettre ce nom à rm de GNU sans alias sans qu’il soit lu comme des options ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
unit/part ne contient que .prefs. Pourquoi rmdir unit/part échoue-t-il alors que ls unit/part sans option semble vide ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
/home/sam, source/item.txt existe et saved est un répertoire vide. Tu exécutes cp -r source saved, puis mv saved/source saved/session. Où se trouvent maintenant le fichier original et sa copie ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
/home/sam/work, ../safe est un répertoire vide et part ne contient que keep.txt. Tu exécutes cp part/keep.txt ../safe/, mv part/keep.txt keep.txt, puis rmdir part. Que reste-t-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 3 : Recherche des correspondances de noms et utilise les valeurs du shell10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
task.txt, task4.txt et task42.txt. Quel nom correspond à task?.txt ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
.zip ne correspond dans le répertoire de travail. Qu’affiche echo *.zip ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
upload, l’examiner et la modifier avant de l’exécuter. Quelle fonction convient pour la trouver ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
folder="Project Plans", quel argument ls "$folder" reçoit-il pour le chemin ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
rec1.csv, rec2.csv, rec3.csv et rec12.csv. Quels noms correspondent à rec[!2].csv ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
/opt/team/bin:/usr/bin:/bin. Les deux premiers répertoires contiennent chacun un exécutable nommé report. Aucun alias, fonction ou commande interne ne porte ce nom. Qu’est-ce qui s’exécute ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
pic1.png et pic2.png. Qu’affiche echo "pic*.png" ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
region n’est pas définie. Tu exécutes region=west, puis bash -c 'echo $region'. Pourquoi le shell fils affiche-t-il une ligne vide ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
item1.dat, item2.dat, item12.dat, .item3.dat, ainsi qu’un répertoire out vide. Tu exécutes cp item?.dat out/, puis mv out/item2.dat out/chosen.dat. Quels fichiers se trouvent dans out ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
/usr/bin:/bin. Les fichiers exécutables /usr/bin/scan et /home/sam/bin/scan existent et aucun scan n’est défini dans le shell. Tu exécutes export PATH="$PATH:$HOME/bin" avec HOME égal à /home/sam. Depuis /home/sam/bin, que s’exécute-t-il pour scan et pour ./scan ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 4 : Relie les chemins, les motifs et le comportement des commandes10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
ls signale unrecognized option '--time-sort'. Quelle est la vérification suivante la plus directe pour le programme GNU installé ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
. ni ... Quelle commande GNU le fournit ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
-d, --date=STRING. Dans touch --date=2026-02-18 checkpoint, quel est le rôle de 2026-02-18 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
clip.jpg, clip.JPG, clip.Jpg et clip.jpeg. Quels noms correspondent à clip.[jJ][pP][gG] ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
!cp sans l’exécuter. Quelle expression d’historique affiche seulement son développement ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
/home/sam/jobs/run, ../data contient a.txt et /home/sam/store existe déjà. Tu exécutes cp -r ../data ../../store/, puis mv ../../store/data/a.txt ../../store/data/b.txt. Quel nouveau chemin contient la copie et où se trouve la source ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
area n’était pas définie. Tu exécutes area=north, export area, bash, puis, dans le shell fils, area=south et exit. Qu’affiche echo "$area" de retour dans le parent, et pourquoi ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
red1.tmp, red2.tmp, red10.tmp et un répertoire save vide. Après cp red[12].tmp save/ et mv save/red1.tmp save/final.txt, qu’affiche echo save/*.tmp ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
checkup se trouve dans ton répertoire courant, qui est absent de PATH. Il n’existe aucune autre commande portant ce nom. Comment exécuter ce fichier ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
/home/sam/team/drafts, tu exécutes cd ../final, puis cd -, puis ls ../../photos. Tous les répertoires existent. Où te trouves-tu et quel répertoire l’affichage a-t-il examiné ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Série 5 : Résous plusieurs choix en ligne de commande10 Questions Pratiques
Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.
Question 1 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
tag=blue, qu’affiche echo '$tag' ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
bundle n’existe pas. Tu exécutes mkdir -p bundle/raw bundle/log, touch bundle/raw/x, mv bundle/raw/x bundle/log/, puis rmdir -p bundle/raw. Que reste-t-il sous bundle ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
touch note{2..4}.txt, mkdir bin, mv note[24].txt bin/, puis echo note?.txt. Qu’est-ce qui s’affiche ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
/usr/bin:/bin, HOME vaut /home/sam, et des fichiers exécutables render existent dans /usr/bin et /home/sam/bin. Aucun alias, fonction ou commande interne ne s’appelle render. Après export PATH="$HOME/bin:$PATH", quel fichier externe render seul sélectionne-t-il et quelle est la valeur complète de PATH obtenue ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
-review notes.txt. Quelle commande GNU ls unique demande ses détails tout en traitant le tiret initial et l’espace ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
unit1.tmp, unit2.tmp, unit10.tmp, .unit3.tmp et final.txt, tous des fichiers ordinaires. Après vérification, tu exécutes rm -i unit?.tmp sans alias et réponds y à chaque demande. Quels fichiers ordinaires restent ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
mkdir -p samples/day7, tu exécutes pwd, puis echo !$. Que sélectionne le raccourci d’historique ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
/home/sam, projects ne contient que .prefs et un répertoire src ; src contient main.c. Le répertoire archive existe et est vide. Tu exécutes ls projects, cp -r projects/src archive/, mv projects/src archive/live, puis rmdir projects. Que reste-t-il dans projects et archive ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
/home/sam, tu définis dest="$HOME/Field Notes" et exécutes export dest. Un shell Bash fils exécute cd "$dest", puis définit dest=elsewhere et se ferme. Le répertoire existe. Dans quel chemin le fils est-il entré et quelle est ensuite la valeur de dest dans le parent ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Tu bloques sur ton propre exercice ? Aide aux Devoirs
Mots-Clés
A
Affichage détaillé
ls -l, qui montre des métadonnées comme le type, le propriétaire, le groupe, la taille et la date de modification.ls -l notes.txt affiche les détails d’un seul fichier ; ajouter -h transforme une taille de 2 048 octets en 2.0K.Affichage récursif
ls -R projects affiche projects:, puis des titres pour les répertoires enfants comme projects/website:.Aide de Bash
help suivi du nom d’une commande interne.help export explique l’exportation des variables, tandis que help seul liste les commandes internes disponibles.Aide rapide
--help.mkdir --help pour trouver l’option de création des parents sans parcourir toute la page de manuel.Alias
ls comme ls --color=auto ; type ls révèle ce texte de commande supplémentaire.Aperçu du développement
ls -d -- draft* affiche les entrées correspondantes elles-mêmes, afin que les répertoires correspondants soient visibles comme cibles.apropos
apropos directory aide à identifier mkdir ou rmdir lorsque tu te souviens de la tâche mais pas du nom de la commande.Argument
cp report.txt saved/, les deux arguments de chemin désignent le fichier source et le répertoire de destination.B
Bash
help cd parce que cd est une de ses commandes internes, et non un fichier de programme distinct.C
Caractère générique
* pour une suite ou ? pour un caractère.part?.txt accepte part4.txt mais exclut un nom avec deux chiffres à l’emplacement du point d’interrogation.Chemin absolu
/ et décrit un emplacement depuis le répertoire racine ; son sens ne dépend donc pas de ton emplacement courant./home/sam/photos désigne le même répertoire, que le shell se trouve dans /etc ou dans le répertoire personnel de sam.Chemin explicite de la commande
/home/sam/bin, ./backup et /home/sam/bin/backup désignent tous deux le même exécutable local.Chemin relatif
/home/sam/projects, ../photos atteint le répertoire photos de sam en remontant puis en descendant.Classe de caractères
[[:digit:]] pour les chiffres ou [[:lower:]] pour les minuscules.Commande
ls -l /var, le nom de la commande est ls ; les mots restants contrôlent l’affichage et en désignent la cible.Commande interne
type cd indique une commande interne et help cd fournit la documentation de la commande Bash qui change de répertoire.Composant de chemin
/.data/*.csv sélectionne directement dans data ; ce motif ne sélectionne pas aussi les noms correspondants sous data/old.Compte root
# indique root par convention ; le travail ordinaire doit utiliser un compte ordinaire.Copie
cp.cp memo.txt stored/ crée stored/memo.txt lorsque stored existe, tout en laissant le mémo original à sa place.Copie en mode archive
cp -a qui conserve les attributs des fichiers, ce qui est utile pour copier une arborescence de répertoires.cp -a site site-backup conserve les attributs de l’arborescence au lieu de la traiter comme une copie ordinaire de fichier nouvellement créée.D
Date de modification
ls -t l’utilise pour trier les entrées de la plus récente à la plus ancienne.touch met à jour cet horodatage sans changer les données du fichier et peut donc modifier l’ordre chronologique.Déplacement
mv sans l’option récursive nécessaire à la copie d’une arborescence.mv memo.txt stored/ place le fichier existant dans stored : son ancien chemin ne désigne donc plus ce fichier déplacé.Destination
archive est absent, mv notes.txt archive utilise archive comme nouveau nom de fichier au lieu de créer un répertoire.Développement de l’historique
!! pour la commande précédente.mkdir drafts, cd !$ réutilise le dernier argument, mais une autre commande intercalée le change.Développement des accolades
file{1..3}.txt.mkdir work/{src,docs} reçoit deux noms de répertoires générés, même si aucun des deux enfants n’existe encore.Développement des noms de fichiers
ls *.log reçoit deux noms de fichiers plutôt que le motif littéral contenant un astérisque.Développement des variables
echo "${city}_trip" ajoute du texte à la valeur de city, tandis que $city_trip lirait un autre nom de variable.Développement du tilde
~ sans guillemets au début d’un mot du shell par un chemin de répertoire personnel, ce qui facilite la saisie des chemins qui en partent.cd ~/Documents atteint ton répertoire de documents depuis n’importe où, mais protéger le tilde par des guillemets empêche cette substitution.Documentation du paquet
/usr/share/doc/ dans un répertoire propre au paquet./usr/share/doc/bash peut révéler des fichiers README, des journaux des modifications, un texte de licence et des exemples.E
Entrée cachée
ls à l’omettre par défaut dans son affichage ordinaire..bashrc apparaît avec ls -a, même si un affichage ordinaire du répertoire personnel l’omet.Environnement
Exécutable
./backup lorsque son répertoire est absent de PATH.export
Expression entre crochets
! ou un ^ initial inverse cet ensemble.part[13].txt correspond aux noms ayant 1 ou 3 à cet endroit, mais pas à la terminaison à deux chiffres 13.É
Écrasement
cp ou mv sans option peut faire sans demander confirmation.cp -i notes.txt saved.txt pour demander confirmation avant de remplacer saved.txt lorsqu’un fichier portant ce nom existe déjà.F
Fichier
.pdf.Fichier d’historique
~/.bash_history ; son chemin est contenu dans HISTFILE.Fichier de démarrage
~/.bashrc est lue par un nouveau shell Bash interactif qui n’est pas un shell de connexion ; un profil de connexion peut aussi charger ce fichier.H
HISTCONTROL
ignoreboth combine ignorespace et ignoredups ; un autre shell peut utiliser un réglage différent.Historique des commandes
Horodatage
touch -d 2025-01-31 old.txt demande une date choisie au lieu d’utiliser l’heure actuelle pour la mise à jour.I
Invite de commande
sam@laptop:~$, le tilde indique le répertoire personnel et le signe dollar final indique généralement un utilisateur ordinaire.M
Manuel Info
info coreutils ouvre un manuel plus long ; n, p et u permettent de se déplacer entre ses nœuds liés.Message d’erreur
No such file or directory produit par ls invite à vérifier le chemin, la casse et le répertoire de travail.Métadonnées
mkdir
-p crée les parents manquants et accepte les composants du chemin déjà présents comme répertoires.mkdir -p app/css prépare les deux répertoires si app manque, afin qu’un fichier puisse ensuite être créé dans css.Motif de nom de fichier sans correspondance
echo *.pdf affiche le motif tandis que ls *.pdf signale que ce chemin littéral est absent.Motif littéral
echo "*.txt" affiche l’astérisque et le suffixe même si le répertoire contient des fichiers qui leur correspondraient.O
Option
-l indique à ls de produire un affichage détaillé au lieu d’afficher seulement les noms.Option de forçage
-f dans rm de GNU, supprime les demandes de confirmation et ignore les noms inexistants, ce qui rend la vérification de l’expression cible encore plus nécessaire.-f ne fournit aucun moyen de récupération ; cette option change seulement le traitement des questions et des noms inexistants lors de la suppression.Ordre de recherche
/usr/bin.P
Page de manuel
man ls ouvre la référence de la commande d’affichage, où tu peux rechercher une option dont tu as besoin.Pageur
man permet de rechercher avec /size, de parcourir les correspondances avec n et de quitter avec q.Paramètres régionaux
PATH
/.:$HOME/bin à la fin conserve les répertoires précédents et leur priorité lorsqu’un nom de programme apparaît deux fois.Protection des caractères
ls "Work Plan.txt" gardent l’espace dans le nom du fichier au lieu de le découper en deux mots.R
Recherche inversée
Répertoire
/home/sam/projects peut contenir à la fois notes.txt et un répertoire enfant nommé website.Répertoire de travail
cd projects, le nom relatif notes.txt désigne un fichier dans ce répertoire nouvellement sélectionné.Répertoire parent
.. désigne ce parent./home/sam/projects/website, un .. mène à projects, tandis que deux mènent au répertoire personnel de sam.Répertoire personnel
/home/username pour un utilisateur Linux ordinaire.~ se développe en /home/sam ; /home seul est le répertoire qui contient les répertoires personnels des utilisateurs.Répertoire racine
/, est le point de départ de l’arborescence unique du système de fichiers Linux, au-dessus de tout autre chemin absolu./etc commence au répertoire racine ; il ne désigne pas un enfant de ton répertoire de travail courant.Résolution des commandes
type echo peut indiquer la commande interne de Bash avant un fichier echo externe qui existe aussi dans un répertoire de PATH.rm
rm -i old.txt demande confirmation avant de supprimer ce fichier, ce qui te permet de refuser l’action.rmdir
rmdir cache signale un contenu non vide alors que ls sans option semble vide, utilise ls -A cache pour vérifier les entrées cachées.S
Section du manuel
man 5 passwd sélectionne la page du format de fichier plutôt que celle de la commande.Sensibilité à la casse
Plans et plans peuvent désigner des répertoires différents ; la complétion aide à respecter la casse.Shell
pwd dans une session de terminal et affiche le répertoire où le shell travaille.Source
cp et mv.cp notes.txt archive/, notes.txt fournit les données et archive/ indique où placer la copie.Suppression interactive
rm -i de GNU pose une question distincte pour chaque cible.rm -i *.tmp demande confirmation pour les noms correspondants avant de les supprimer.Suppression récursive
rm -r de GNU.rmdir old-cache lorsqu’un élément enfant inattendu doit arrêter le nettoyage au lieu d’être supprimé avec son parent.SYNOPSIS
mkdir [OPTION]... DIRECTORY... autorise des options facultatives mais exige au moins un nom de répertoire.T
Taille en unités lisibles
ls -h de GNU.-h avec -l : le premier formate les tailles, tandis que le second fournit la colonne qui les affiche.Terminal
touch
touch checklist.txt conserve le texte d’une liste existante ; la commande ne vide pas le fichier avant de mettre à jour ses dates.V
Variable
name=value et lue par un développement comme $name.topic=linux, echo "$topic" affiche la valeur stockée, tandis que unset topic supprime la variable.Variable d’environnement
export.export city permet à un shell Bash fils lancé ensuite de lire la valeur de city auparavant détenue uniquement par le parent.Variable du shell
city=Lisbon seul ne fournit pas cette valeur à un nouveau shell Bash fils, sauf si city est déjà exportée.W
whatis
whatis ls donne une courte description de son rôle ; man ls fournit la référence plus longue lorsque tu as besoin de détails.À propos de cette unité
Crée ton propre Matériel d'Étude
Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.