Linux – Le b.a.-ba du shell

Linux – Le b.a.-ba du shell

white rose in close up photography

J’allais te prĂ©senter des commandes utiles, te dire comment elles m’aident au quotidien pour rĂ©aliser mon taf et Ă  chaque fois que je pensais avoir atteint la base, j’ajoutais un paragraphe avant celui que je venais de taper. Alors les commandes utiles on verra plus tard. Commençons par le commencement.

Tu pars de loin donc on va commencer doucement (basic, simple). Ouvre un shell, inspire par le nez et expire par la bouche.

OĂą suis-je ?

Le prompt

antoine@dressing:~$ if you're happy and you know it syntax error
Syntax error
  • “antoine” : mon nom d’utilisateur
  • “@” : sur quoi, quelle machine (comme dans une adresse email)
  • “dressing” : ma machine
  • “:” : sĂ©parateur entre l’identification utilisateur, machine et le dossier dans lequel on se trouve
  • “~” : mon dossier personnel
  • “$” : sĂ©parateur entre lĂ  oĂą on se trouve et lĂ  oĂą on va taper des commandes. Le sĂ©parateur peut Ă©galement ĂŞtre un “#” (lorsque l’on est connectĂ© en root).

L’arborescence

Si tu fais parti des aficionados de Windows, tu connais certainement “C:\” et ses “C:\Program Files\” ou bien “C:\Windows\System32”. Au pays des pingouins ça ne se passe pas du tout comme ça. DĂ©jĂ  parce que les dossiers systèmes de Linux peuvent ĂŞtre stockĂ©s dans d’autres partitions ou d’autres disques durs sans que Pingu ne sourcille (Nut nut !). Mais surtout parce qu’il n’y a pas de lettre ou de deux points prĂ©cĂ©dant la racine du système. Elle est symbolisĂ©e par un simple slash “/”.

Bon perso j’ai pas encore saisi toutes les nuances de l’arbo sous Linux mais je sais utiliser un moteur de recherche donc si ce que j’Ă©cris ne te convient pas, bah tu feras pareil. NĂ©anmoins voici ce que j’en retiens (mes commentaires après le dièse et non, ça ne se dit pas hashtag [insulte gratuite supprimĂ©e]).

Je fais genre j’utilise un vrai shell mais pour les besoins du direct je vais prĂ©senter les rĂ©sultats de la prochaine commande Ă  la verticale alors que normalement c’est Ă  l’horizontale (comme chez Keen V). Ah oui, je vais pas tout afficher non plus…

antoine@dressing:~$ ls /
/bin    # Applications binaires de l'utilisateur
/boot   # Fichiers statiques du loader
/etc    # Fichiers de configuration des applications
/home   # Dossiers personnels des utilisateurs
/lib    # Bibliothèques partagées et modules du kernel
/media  # Point de montage par défaut des disques externes
/mnt    # Point de montage par défaut des disques internes
/opt    # Applications tierces
/proc   # Pseudo système de fichiers des processus en cours
/root   # Dossier personnel de root
/sbin   # Applications binaires de root
/sys    # Pseudo système de fichiers, contient des infos sur le matériel et le kernel
/tmp    # Fichiers temporaires généralement supprimés au boot
/var    # Fichiers variants tels que les journaux, le spool, les emails

Ma home, mon dossier personnel

Le dossier personnel est reprĂ©sentĂ© sous Linux par un tilde “~”. C’est gĂ©nĂ©ralement le dossier par dĂ©faut lorsque l’on ouvre un shell.

C’est particulièrement lourd Ă  taper sur un clavier AZERTY (bien qu’il en vaille deux) mais chez nos amis zanglosaxons cette touche est juste en dessous d’echap (j’aurais bien tapĂ© ici un 2 en indice pour expliquer mais sur mon Linux Mint ça fait un “Ĺ“” alors fais un effort).

Les dossiers home de chaque utilisateur standard sont situĂ©s dans “/home”. Original non ? Sauf pour l’administrateur du système, le Très-Haut, le mirifique “root” dont le home est stockĂ© dans “/root”. Quel frimeur!

Auto-complétion

Le shell est ton ami, il faut l’aimer aussi. Lorsqu’il n’y a aucune ambiguĂŻtĂ©, la touche tabulation (tab) permet de complĂ©ter la saisie un chemin du système de fichier automatiquement. Si la première partie est commune, appuyer sur tab permet de complĂ©ter une saisie selon ce que l’on a dĂ©jĂ  tapĂ©. Si cela ne fonctionne pas, c’est soit que la commande de dĂ©but de ligne ne permet pas l’auto-complĂ©tion ou bien que la saisie est ambiguĂ«.

En cas d’ambiguĂŻtĂ©, une double pression (une pinte quoi) sur tab affichera les possibilitĂ©s, ou s’il y en a trop nous demandera confirmation.

Lorsque l’on sait que ça existe, l’auto-complĂ©tion est un outil qui permet de substantiels gains de temps.

Commandes du système de fichiers

Change Directory : cd

cd c’est la base et il existait mĂŞme dĂ©jĂ  sous MS-DOS. Tout le monde d’Ă  peu près technique connaĂ®t son existence. Ça permet de se rendre dans un dossier :

antoine@dressing:~$ cd /var/log/
antoine@dressing:/var/log$ cd apt/

On se rend dans le dossier contenant les journaux des applications /var/log, puis dans le dossier des journaux d’APT (Advanced Packaging Tool, le gestionnaire de paquets).

On passe vite sur cd qui devrait ĂŞtre suffisamment connu pour Ă©viter d’y passer des heures mais voici deux, trois trucs pour gagner du temps :

antoine@dressing:/var/log$ cd # permet de se rendre dans notre home
antoine@dressing:~$ cd - # permet de retourner à l'emplacement précédent
antoine@dressing:/var/log$ cd .. # pour aller au dossier parent
antoine@dressing:/var$ 

Dernière chose si tu ne l’utilisais pas avec un autre système : enchaĂ®ner le retour aux dossiers parents !

antoine@dressing:~/jai/pas/d/idee/de/chemin/grave/long$ cd ../../../../..
antoine@dressing:~/jai/pas/d $ cd autre/idee/merveilleuse
antoine@dressing:~/jai/pas/d/autre/idee/merveilleuse$ cd ../d/exemple
antoine@dressing:~/jai/pas/d/autre/idee/d/exemple$

Print Working Dir : pwd

Savoir se dĂ©placer d’un dossier Ă  un autre c’est bien mais c’est un coup Ă  se perdre. Alors on peut tout Ă  fait faire un “cd /” et repartir de la racine. Mais on peut aussi demander au shell oĂą l’on se trouve. La sortie de cette commande peut Ă©galement ĂŞtre redirigĂ©e vers un fichier.

antoine@dressing:~$ pwd
/home/antoine
antoine@dressing:~$ pwd > vous_etes_ici.txt

List : ls

Permet de lister les Ă©lĂ©ments d’un dossier. UtilisĂ© seul, la liste prĂ©sentera les Ă©lĂ©ments du dossier oĂą l’on se trouve mais on peut aussi lister un dossier ailleurs dans le système.

antoine@dressing:~$ ls
 Bureau   Documents   Images   Modèles   Musique   Public   Téléchargements   Vidéos
antoine@dressing:~$ ls /ailleurs/sur/le/filesystem/Images/
 Coquillage.jpg   Station_service.jpg   Echelle.jpg   Mustang.jpg

J’ai quand mĂŞme plus l’habitude d’utiliser ls avec les paramètres suivants :

  • -a, –all : ne pas ignorer les entrĂ©es dĂ©butant par .
  • -l : utiliser le format long d’affichage
  • -h, –human-readable : avec -l ou -s, afficher des tailles telles que 1K, 234M, 2G, etc.

Ça permet de voir pas mal d’information en un seul regard :

antoine@dressing:/etc$ ls -alh
total 1,3M
drwxr-xr-x 143 root root    12K 11 avril 10:43 .
drwxr-xr-x  19 root root   4,0K 15 mars  09:18 ..
-rw-r--r--   1 root root   3,0K 25 mai    2023 adduser.conf
drwxr-xr-x   3 root root   4,0K 14 déc.  02:41 alsa
drwxr-xr-x   2 root root    12K  3 avril 09:57 alternatives
-rw-r--r--   1 root root    401 11 janv.  2023 anacrontab
|________| |_| |__| |__|   |__| |____________| |__________|
     |      |    |   |      |         |              |_______ fichier/dossier
     |      |    |   |      |         |______________________ dernière modification
     |      |    |   |      |________________________________ taille
     |      |    |   |_______________________________________ groupe propriétaire
     |      |    |___________________________________________ utilisateur propriétaire
     |      |________________________________________________ nombre de hard links
     |_______________________________________________________ droits d'accès

Make directory : mkdir

On sait se dĂ©placer dans l’arborescence, demander notre chemin et afficher le contenu ; on est prĂŞt pour crĂ©er nos dossiers.

antoine@dressing:~$ mkdir articles
antoine@dressing:~$ cd articles
antoine@dressing:~/articles$ 

On peut avoir besoin de crĂ©er plusieurs dossiers d’un coup au mĂŞme niveau (en sĂ©parant les dossiers par des espaces) ou en cascade (en indiquant le paramètre “-p”).

antoine@dressing:/websites$ mkdir test1 test2 test3 test4
antoine@dressing:/websites$ ls
test1  test2  test3  test4
antoine@dressing:/websites$ mkdir -p test1/syndrome/de/la/page/blanche

Remove directory : rmdir

rmdir permet de supprimer un dossier vide. On peut Ă©galement supprimer en remontant la cascade (tel un saumon) tant que les dossiers sont vides.

antoine@dressing:/websites$ rmdir test1 test2 test3 test4
rmdir: impossible de supprimer 'test1': Le dossier n'est pas vide
antoine@dressing:/websites$ ls
test1
antoine@dressing:/websites$ rmdir -p test1/syndrome/du/nom/de/dossier/blanc
antoine@dressing:/websites$ ls 
antoine@dressing:/websites$

Remove : rm

Pour supprimer des éléments, on utilise rm. Sans paramètre il permet de supprimer des fichiers. Mais on ne va peut être pas se galérer à supprimer les éléments un par un ou bien citer tous les fichiers de chaque dossier sur une ligne de commande précédée de rm.

Pour cela on va utiliser la rĂ©cursivitĂ© “-r” et au besoin “-f” pour outrepasser la demande de confirmation. Avec la rĂ©cursivitĂ©, rm est capable de supprimer des dossiers mĂŞme non vides.

antoine@dressing:~/Vidéos $ rm -rf pr0n/*
antoine@dressing:~/Vidéos $ ^C
antoine@dressing:~/Vidéos $ annuler
-bash: annuler : commande introuvable
antoine@dressing:~/Vidéos $ undelete
-bash: undelete : commande introuvable

Attention, il n’y a pas de corbeille et Linux est particulièrement permissif : il est important de retenir que “/” est la racine du système. On Ă©vitera Ă  tout prix “rm -rf /”, ce serait dĂ©vastateur.

Move : mv

Pour déplacer ou renommer des dossiers ou fichiers, on utilise mv.

antoine@dressing:~/Musique $ mv your_ass.mp3 your_body.mp3 # renommer
antoine@dressing:~/Musique $ mv your_body.mp3 to/the/dancefloor/ # déplacer
antoine@dressing:~/Musique $ cd to/the/dancefloor/
antoine@dressing:~/Musique/to/the/dancefloor/ $ ls
your_body.mp3

Find : find… ouĂ© je me suis pas foulĂ©

Pour retrouver ses clĂ©s de bagnole un fichier la commande find est Ă  la portĂ©e de n’importe quel Ă©lève de 5ème. La commande est rĂ©cursive Ă  partir du dossier dans lequel on lance la commande (ici, dans le dossier en cours “.”).

antoine@dressing:~/botte-de-foin $ find . -iname aiguill*

Ok, on aura vu quelques outils de base du shell. Il faut bien prendre le temps de les comprendre et de les intégrer ; ce sont des commandes très basiques qui ont principalement trait aux dossiers. Je vais prochainement enregistrer une nouvelle bande pour des commandes basiques pour les fichiers.

fin de la cassette

Fin de la bande

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *