Aller au contenu

Linux : terminal et navigation

Fenêtre de terminal
pwd # où suis-je ?
ls # contenu du dossier courant
cd /var/log # aller dans un dossier (chemin absolu)
cd .. # dossier parent
cd # retour au dossier personnel (idem : cd ~)
cd - # retour au dossier précédent
Type Commence par Exemple
Absolu / /home/alice/documents/rapport.txt
Relatif Autre chose documents/rapport.txt (depuis /home/alice)
Raccourci Signification
. Le dossier courant
.. Le dossier parent
~ Le dossier personnel (/home/alice)
~bob Le dossier personnel de bob
- Le dossier précédent (avec cd -)
Fenêtre de terminal
cd ~/documents
cd ../images # frère du dossier courant
ls ~/documents/../images
Fenêtre de terminal
ls -l # format long : droits, propriétaire, taille, date
ls -a # inclut les fichiers cachés (commençant par un point)
ls -lh # tailles lisibles (Ko, Mo)
ls -lt # triés par date (récents d'abord)
ls -lS # triés par taille
ls -R # récursif
ls -ld /etc # le dossier lui-même, pas son contenu
ls -1 # un fichier par ligne

Lecture d’une ligne de ls -l :

-rw-r--r-- 1 alice alice 4096 janv. 15 10:30 rapport.txt
│└┬┘└┬┘└┬┘ │ │ │ │ │ └─ nom
│ │ │ │ │ │ │ │ └─ date de modification
│ │ │ │ │ │ │ └─ taille (octets)
│ │ │ │ │ │ └─ groupe
│ │ │ │ │ └─ propriétaire
│ │ │ │ └─ nombre de liens
│ │ │ └─ droits des autres
│ │ └─ droits du groupe
│ └─ droits du propriétaire
└─ type (- fichier, d dossier, l lien)

Les fichiers dont le nom commence par un point (.bashrc, .ssh) sont cachés : ls -a les montre. Ils contiennent souvent la configuration de l’utilisateur.

Le shell développe les motifs avant d’appeler la commande :

Motif Correspond à
* N’importe quelle suite de caractères (même vide)
? Exactement un caractère
[abc] Un des caractères listés
[0-9] Un caractère dans l’intervalle
{a,b,c} Chacune des alternatives (développement d’accolades)
Fenêtre de terminal
ls *.txt # tous les fichiers .txt
ls rapport-?.pdf # rapport-1.pdf, rapport-a.pdf…
ls fichier[0-9]*.log
mkdir -p projet/{src,docs,tests} # crée trois sous-dossiers d'un coup
cp rapport.{txt,bak} # équivaut à : cp rapport.txt rapport.bak

Précautions : rm * supprime tout le dossier courant. Toujours tester avec ls d’abord (ls *.tmp, puis rm *.tmp).

Fenêtre de terminal
cd Mes\ Documents # espace échappé
cd "Mes Documents" # guillemets doubles (les variables sont développées)
cd 'Mes Documents' # guillemets simples (texte littéral)
echo "Je suis $USER" # Je suis alice
echo 'Je suis $USER' # Je suis $USER

Éviter les espaces dans les noms de fichiers et de dossiers : ils compliquent beaucoup de commandes. Préférer des tirets ou des soulignés.

Raccourci Effet
Tab Complétion (noms de commandes, de fichiers) : à utiliser tout le temps
Tab Tab Liste les possibilités
↑ / ↓ Commandes précédentes / suivantes
Ctrl+R Rechercher dans l’historique (taper quelques lettres)
Ctrl+C Interrompre la commande en cours
Ctrl+D Fin de saisie / fermer la session
Ctrl+L Effacer l’écran (ou clear)
Ctrl+A / Ctrl+E Début / fin de ligne
Ctrl+U / Ctrl+K Effacer avant / après le curseur
Ctrl+W Effacer le mot précédent
Alt+. Insérer le dernier argument de la commande précédente
Ctrl+Z Suspendre (reprise avec fg)

La complétion par Tab évite les fautes de frappe : taper cd /va puis Tab donne cd /var/.

Fenêtre de terminal
history | tail -20
!! # relancer la dernière commande
sudo !! # la relancer avec sudo
!ssh # dernière commande commençant par « ssh »
!42 # commande numéro 42 de l'historique
history -c # effacer l'historique de la session

L’historique est enregistré dans ~/.bash_history. Ne pas saisir de mots de passe dans les commandes : ils se retrouveraient dans l’historique. Une commande précédée d’une espace n’est généralement pas enregistrée (selon la configuration de HISTCONTROL).

Fenêtre de terminal
man ls # manuel (navigation : espace, /motif pour chercher, q pour quitter)
man -k copier # chercher un manuel par mot-clé (équivaut à apropos)
ls --help # aide courte
info coreutils # documentation GNU détaillée
type ls # nature de la commande (alias, fonction, programme)
which python3 # emplacement du programme
whatis grep # description en une ligne
tldr tar # exemples pratiques (paquet tldr, facultatif)
Section du manuel Contenu
1 Commandes utilisateur (man 1 ls)
5 Formats de fichiers (man 5 fstab)
8 Administration (man 8 mount)

Un manuel se lit par ses sections : NAME (résumé), SYNOPSIS (syntaxe), DESCRIPTION, OPTIONS, EXAMPLES, SEE ALSO. Les crochets [ ] signalent le facultatif.

Pour lire les manuels en français : sudo apt install manpages-fr, puis LANG=fr_FR.UTF-8 man ls ; la couverture est partielle, les pages en anglais sont plus complètes.

Fenêtre de terminal
cd /var/log && ls -lh # la 2e seulement si la 1re réussit
make ; echo "terminé" # les deux, quoi qu'il arrive
test -f config.txt || echo "absent" # la 2e seulement si la 1re échoue
ls -l | less # envoyer la sortie à un autre programme (tube)
long-calcul & # lancer en arrière-plan

Chaque commande renvoie un code de sortie : 0 = succès, autre = erreur (echo $? pour le lire). Les enchaînements && et || s’appuient dessus. Voir Texte, éditeurs et redirections et Bash : conditions et boucles.

Fenêtre de terminal
echo $HOME $USER $SHELL
echo $PATH # dossiers où le shell cherche les commandes
printenv | sort | head
export EDITOR=nano # variable visible des programmes lancés ensuite

Une variable définie dans le terminal disparaît à sa fermeture : pour la rendre permanente, l’ajouter à ~/.bashrc (puis source ~/.bashrc).

Fenêtre de terminal
alias ll='ls -lah'
alias gs='git status -sb'
alias # liste des alias
unalias ll

Pour les garder : les ajouter à ~/.bashrc. Éviter un alias qui masque une commande avec une option dangereuse (alias rm='rm -rf') ; au contraire, alias rm='rm -I' demande une confirmation pour les suppressions massives.

Sur un serveur, une connexion SSH qui se coupe interrompt les commandes en cours. Un multiplexeur de terminal garde la session :

Fenêtre de terminal
sudo apt install tmux
tmux new -s travail # nouvelle session nommée
# Ctrl+B puis D : se détacher ; la session continue
tmux attach -t travail # se rattacher
tmux ls
Symptôme Piste
bash: cd: …: No such file or directory Chemin incorrect ou casse différente : ls pour vérifier, Tab pour compléter
ls: cannot access '*.txt': No such file or directory Aucun fichier ne correspond au motif
-bash: commande: command not found Faute de frappe, programme absent ou hors du PATH
Le terminal affiche des caractères étranges après cat d’un fichier binaire reset (ou Ctrl+L puis reset)
Ctrl+C ne fait rien Programme qui ignore le signal : Ctrl+Z puis kill %1
Les flèches affichent ^[[A Programme sans édition de ligne : relancer dans bash
Le terminal se fige Gel par Ctrl+S : Ctrl+Q pour reprendre

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Le shell par défaut est bash sur les deux versions. Sur 26.04, certains outils de base peuvent être des réécritures : les options courantes (ls -lah, cp -r) sont identiques ; en cas de doute, commande --help.