Kit de survie en lignes de commandes ...

pour les nuls.

Ceci est la version légèrement corrigée, étendue et complétée de la présentation du jeudi 2 juin 2018.

Pourquoi la ligne de commande ?

La ligne de commande est une chose qui a, pour des raisons marketting et en lien avec la massification de l'usage de l'outil informatique, peu à peu disparue alors qu'elle faisait partie intégrante des ordinateurs dans les années 80 et jusqu'en 1995 pour le grand public.

Actuellement, la ligne de commande est perçue par les néophytes comme un objet de toute puissance ou de diabolisation. Les stéréotypes véhiculés par les media traditionnels associent souvent la ligne de commande, et in extenso le terminal, à un outil de hacker.

"L'image du hacker dès qu'on fait une recherche sur google images"

Alors que cela a été pendant longtemps le quotidien de beaucoup d'utilisateurs.

Posons un peu de vocabulaire : Linux est un noyau c'est à dire un binaire qui communique avec le matériel. Autour de lui est le système GNU (pour GNU is Not Unix). Le système GNU a été pensé dans les années 80 comme étant une alternative Libre au système (gratuit) mais propriétaire Unix.

Dans les années 80, à la préhistoire informatique, les systèmes d'ordinateurs n'avaient pour ainsi dire pas d'interface graphique (et encore moins de souris) : un noyau, un interpréteur de commande (shell) et quelques utilitaires suffisaient à faire un ordinateur fonctionnel.

Ici le système Microsoft Disk Operating System fonctionnant avec les fichier : msdos.sys et io.sys (l'équivalent du noyau), config.sys et autoexec.bat, à partir de là l'interpréteur de commande (ou shell) : COMMAND.COM s'exécute et affiche l'image précédente.

Dans MS-DOS on trouve des outils basiques (dont BASIC.COM) qui permettent des tâches de gestion et d'édition simple, l'image affichée ci-dessus est EDIT.COM l'éditeur de textes simple mais toujours utile.

"CP/M l'ancêtre de MS-DOS"

Et dans cet exemple l'ancêtre de MS-DOS à savoir CP/M. Ce qui est intéressant c'est de constater que MS-DOS ou Windows utilisent encore la notation A: B: C: etc... pour accrocher les périphériques locaux ou mapper les ressources distantes.

D'ailleurs de nos jours, certain·e·s utilisent encore des systèmes en mode texte sans interface graphique :

Les adminitrateurs / administratices système travaillant sous Linux, Unix, AIX ...

Certain·e·s inconditionnels d'anciens systèmes, comme Georges R.R. Martin pour écrire son Game of Thrones (c.f. video youtube)

Un extrait de The Secret History of Westeros or a game of thrones. Lors d'une émission (lien youtube suivant) télévisée, l'auteur, G R.R. Martin avoua que son arme secrête pour éviter de se faire pirater à distance les extraits de romans en cours d'écriture, utilisait " an old DOS machine " (une vieille machine sous MS-DOS) et comme traitement de textes il utilisait WordStar 4.0.

Georges R.R. Martin at CONAN / Youtube

Des aficionado·a·s qui échangent leurs personnalisations sur le subreddit appelé "unixporn" -> unixporn on reddit

Des gens qui ont des machines à très faibles capacités et ont des besoins spartiates en terme d'interfaces graphiques voire aucune.

De l'interface textuelle vers l'interface graphique

Rares étaient les interfaces graphiques, avant 1984 on pouvait trouver des stations Xerox, et peut être des amiga (à vérifier), passé 1984 on a eu le "Macintosh classique" d'apple, windows est devenu réellement graphique en 1990/1 (windows 3.0).

Sur le site de Toastytech on trouve d'ailleurs des captures d'écran des systèmes d'exploitation de cette époque : http://toastytech.com/guis

A cette époque, et hormis les macintosh et les amiga (avec GEM) les interfaces graphiques ne sont que des surcouches du système, ainsi les "PC" grand public sont livrés avec MS-DOS (ou d'autres DOS jusqu'à ce que Micro$oft bloque le démarrage de windows s'il détecte un DOS autre que le sien en cours d'exécution, c.f. l'affaire "4DOS")... pour un démarrage automatique de windows lors de l'allumage de l'ordinateur il fallait ajouter la ligne "win" à la fin du fichier C:\AUTOEXEC.BAT (oui je sais, ça fait vieux barbu).

Quelques captures d'écran de Windows 3.0 qui fût en son temps une révolution sur PC.

GNU/Linux ont donc été créés à cette époque là. Et, malgré l'arrivée du serveur X Window / XFree86, et comme Unix/Linux étaient plutôt utilisés par des ingénieurs et des passionnés, l'interface graphique n'a pas été leur intérêt. Si bien qu'au milieu des années 90 peu d'interfaces graphiques existent : TWM, KDE, GNOME, sawfish, GNUStep, ICEWm, blackbox ... Le soucis a toujours été à l'époque comme celui que nous expérimentons en tant que libristes actuellement : que ce soient les SoC ou les cartes propriétaires wifi, il faut toujours trouver un driver quelque part, alors imaginez vous dans les années 90, avec une connexion à 56 kbps (7 ko/s) télécharger un fichier de quelques mégas pour un driver sur une ligne anal ogique qui est inutilisable tant qu'on reste connecté à internet...

L'intérêt progressif du public et de développeurs et développeuses pour les Linux s'est traduite progressivement par plus de développements et désormais une jungle d'interfaces. Au milieu des années 90 commencent à arriver les premières applications graphiques et interfaces graphiques dignent de ce nom, TWM, XFCE, FVWM, GNUStep, KDE, GNOME, metacity, ICEWm, blackbox ... mais hormis ces interfaces, peu de logiciels graphiques " grand public ". Le seul outil réellement développé est le terminal graphique où peuvent ainsi s'exécuter les logiciels dont les gens ont l'habitude.

Deux des plus anciennes interfaces graphiques ci-avant FVWm (ou sa variante FVWm95) exécuté sur une antique distribution " slackware " et ci après TWM sur un système " debian ".

Une autre version de FVWm dite " Crystal " ...

Et bien sûr n'oublions pas les interfaces graphiques qui sont encore parmi les plus connues du monde linux actuel dans les premières versions stables : GNOME 1 et KDE 1 !

Et aussi XFCE version 2

Le monde des Linux permet ce que le monde Windows ou Apple ne permet pas : outre le changement de style d'une interface par la personnalisation de l'interface (couleurs, transparences, formes des barres de fenêtres, décorations ou non, position dessus/dessous) il est possible de choisir l'interface qui est notre petite chou-chou et ce même si des gens restent sur l'interface "par défaut " ou choisissent leur distribution en fonction du look qu'elle montre par défaut (d'où à mon avis l'un des critères de la réussite d'ubuntu).

Cependant, il y a toujours eu des "pro" qui ne jurent que par la ligne de commande pour des raisons diverses et variées.

L'objet de la présentation actuelle est de vous donner quelques commandes de base et quelques exemples pratiques pour vous familiariser à la manipulation des dossiers et fichiers, quelques outils d'édition et de mises à jour. Pourquoi ?

Tout simplement car lorsqu'on est un·e habitué·e des interfaces graphiques les raisons d'utiliser une interface textuelle sont (entre autres) :

une panne de l'interface graphique (et oui ça arrive... nvidia powaaa !)

un goût pour certaines applications plus rapides, moins gourmandes en mode texte qu'en mode graphique (personnalisation à la mode h4ck3rzzz) et une personnalisation à l'extrême du système avec uniquement les "paquets nécesssaires".

"Mon player préféré pour écouter de la musique, économe en ressources, simple, efficace"

un pc avec des capacités faibles qui permet d'exécuter peu de logiciels graphiquement mais qui supporte aussi quelques applications textuelles complémentaires.

Historiquement, les années 80 et début 90 offrent aux utilisateurs de PC à but professionnel un logiciel de démarrage, un noyau, un shell et quelques applications. Cela suffit amplement pour beaucoup de gens.

Avant de commencer à faire mumuse dans le terminal, il est nécessaire de reposer quelques bases de l'organisation hiérarchique du système de fichier, car autant dans les interfaces graphiques en comparant celle des 3 systèmes qui en utilisent (je passerai outre les systèmes de téléphones portables ou des tablettes iOS où justement il n'y a plus que des icônes accédant directement aux données mais où le système de fichier sous-jacent est masqué à l'utilisateur basique.

Critère | Windows | Linux / Unix | Mac Operating System / MacPS
Le système (ordinateur) | "Ordinateur" ou "Bureau (XP)" | / | /
Désignation des systèmes attachés non-amovibles | C:\ D:\ ... Z:\ (sauf A:\ et B:\ réservés par défaut aux disquettes) | /dev/sda.. /dev/sdb... /dev/hd... (vieux linux) /dev/mmcblk0p... le premier de ces systèmes est accroché à "/" | / (je n'ai jamais eu à tester des systèmes mac sur plusieurs DD)
Désignation des systèmes amovibles | A:\ B:\ D:\ E:\ ... Z:\ (toujours A et B réservés aux disquettes) | /mnt/device /media/device /run/media/device (vieux) /mnt/login/device /media/login/device /run/media/login/device ... | /Volumes/device
Localisation des dossiers des utilisateurs. | C:\Documents and Settings (XP)\login C:\Utilisateurs\login C:\Users\login | /home/login | /users/login
Les programmes | C:\Program Files C:\Program Files_(x86) | /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin | ?????
Les réglages "par défaut" des programmes | C:\Users C:\Utilisateurs C:\Documents and Settings Soit dans fichiers soit dans BDR. | /etc/ ou /usr/lib ou /home/login/.config ou /home/login/.local | /Users/login/.Library ?

Où configurer le shell des utilisateurs ?

Ce paramètre se configure dans /etc/passwd

Note : Si on regarde les lignes /usr/sbin/nologin

Donc on commence à ouvrir un terminal pour nous entraîner.

Où démarre le shell du terminal ? Il démarre dans le dossier personnel de l'utilisateur donc /home/login. et si c'est l'utilisateur root à savoir l'administrateur c'est dans le dossier /root.

Quelques commandes pour commencer :

Où suis-je ? :

pwd

Cette commande veut dire : Print Working Directory, elle affiche (imprime) le dossier actuel (working directory).

anonymous@Ars3n1c:~$ pwd
/home/anonymous
anonymous@Ars3n1c:~$

Qui suis-je ? :

who et / ou whoami

who : qui est-ce ? whoami : Who Am I qui suis-je ?

anonymous@Ars3n1c:~$ who
anonymous tty7         2018-06-02 09:19 (:0)
anonymous@Ars3n1c:~$ whoami
anonymous
anonymous@Ars3n1c:~$

Qui est connecté au système ? :

w

anonymous@Ars3n1c:~$ w
 11:56:29 up  2:39,  1 user,  load average: 0,36, 3,21, 2,72
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
anonymou tty7     :0               09:19    2:38m  4:03   0.78s /usr/bin/lxsession -s LXDE -e LXDE
anonymous@Ars3n1c:~$

montre qui est connecté au système et le programme qu'il exécute.

Je veux aller au dossier /usr/share (par exemple) :

cd /usr/share

cd pour "change directory".

Je veux afficher l'organisation des disques :

lsblk est la commande à utiliser pour liste des blocs.

anonymous@Ars3n1c:~$ lsblk
NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 298,1G  0 disk
├─sda1                  8:1    0   476M  0 part  /boot
├─sda2                  8:2    0     1K  0 part
└─sda5                  8:5    0 297,6G  0 part
  └─sda5_crypt        254:0    0 297,6G  0 crypt
    ├─TaGueule-racine 254:1    0  28,9G  0 lvm   /
    ├─TaGueule-meme   254:2    0   7,6G  0 lvm   [SWAP]
    └─TaGueule-maison 254:3    0 261,1G  0 lvm   /home

Ici on voit donc les informations relatives à mon disque dur (avec le gentil "TaGueule") qui définit mon volume logique, un private joke avec des ami·e·s

Je veux afficher l'état de la mémoire :

Avec free vous aurez tout compris, surtout en ajoutant l'option -h

anonymous@Ars3n1c:~$ free
              total        used        free      shared  buff/cache   available
Mem:        2032868      538980     1023124       82024      470764     1264968
Swap:       7999484           0     7999484
anonymous@Ars3n1c:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1,9G        526M        999M         80M        459M        1,2G
Swap:          7,6G          0B        7,6G
anonymous@Ars3n1c:~$

Quel est l'état d'occupation du disque ? :

C'est la commandedf qui sera celle à utiliser comme "disk free"

anonymous@Ars3n1c:~$ df
Sys. de fichiers            blocs de 1K  Utilisé Disponible Uti% Monté sur
udev                            1002132        0    1002132   0% /dev
tmpfs                            203288     3620     199668   2% /run
/dev/mapper/TaGueule-racine    29663212  5952084   22181272  22% /
tmpfs                           1016432    38180     978252   4% /dev/shm
tmpfs                              5120        4       5116   1% /run/lock
tmpfs                           1016432        0    1016432   0% /sys/fs/cgroup
/dev/sda1                        463826    75444     359915  18% /boot
/dev/mapper/TaGueule-maison   268463808 62463388  192293568  25% /home
tmpfs                            203284        4     203280   1% /run/user/110
tmpfs                            203284       12     203272   1% /run/user/1000
anonymous@Ars3n1c:~$ df -h
Sys. de fichiers            Taille Utilisé Dispo Uti% Monté sur
udev                          979M       0  979M   0% /dev
tmpfs                         199M    3,6M  195M   2% /run
/dev/mapper/TaGueule-racine    29G    5,7G   22G  22% /
tmpfs                         993M     37M  957M   4% /dev/shm
tmpfs                         5,0M    4,0K  5,0M   1% /run/lock
tmpfs                         993M       0  993M   0% /sys/fs/cgroup
/dev/sda1                     453M     74M  352M  18% /boot
/dev/mapper/TaGueule-maison   257G     60G  184G  25% /home
tmpfs                         199M    4,0K  199M   1% /run/user/110
tmpfs                         199M     12K  199M   1% /run/user/1000
anonymous@Ars3n1c:~$

Vous aurez noté bien sûr que l'option -h modifie toujours les affichages pour les rendre humainement lisibles et intelligibles.

Quelles sont les tâches en cours d'exécution ? :

top ou htop

Affiche l'état du système et la table des processus en cours d'exécution ou en attente (table of processes). On peut aussi utiliser la commande ps

ps

et pour afficher tout ce qui tourne (en arrière plan etc..)

ps -a
ps -e
ps -x
ps -auex

Quels sont les fichiers et "nodes" ouverts ? :

lsof pour list open files

Note : Il y a l'autocompletion par la touche [tab] qui parcourre alphabétiquement les différents choix possible qui complètent le début saisi._

Deux liens physiques importants à connaître : ./ = dossier actuel, ../ = dossier parent.

Maintenant entraînement à manipuler des dossiers :

Je veux créer un dossier Mars comme sous-dossier du dossier actuel : mkdir Mars (attention à la casse).

Tel quelle la commande mkdir oblige à créer les sous-arborescence les unes après les autres mais en passant quelques options on peut créer tout en une seule fois.

mkdir -p Mars/Satellites/Phobos

Depuis le dossier actuel je veux aller dans le dossier Phobos.

cd Mars/Satellite/Phobos ou bien :

cd ./Mars/Satellite/Phobos et bien sûr pwd pour voir où vous êtes.

Je veux remonter de plusieurs dossiers en une fois :

retour dans Phobos : cd Phobos

remontée des deux dossiers : cd ../.. suivi de pwd.

Je veux remonter d'un dossier : cd .. la preuve par pwd

ET retourner maison

ex : cd /usr/share/icons puis vérification par pwd suivi de cd suivi de pwd pour vérifier à la fin.

Petit entrainement et préparation de la suite, saisie des caractères non reconnus nativement et des espaces :

cd
mkdir Mars/Satellites/Deimos
mkdir Mars/Satellites/Belle Mere
mkdir Mars/Satellites/Belle\ Soeur
mkdir 'Mars/Satellites/Beau Pere'
mkdir "Mars/Satellites/Beau Frere"
echo "Salut" > machin

Note : cd tout seul permet de revenir au dossier de base de l'utilisateur.

Note 2 : la dernière ligne commençant par echo sera expliquée plus tard.

Créer plusieurs sous-dossiers en une seule fois :

mkdir {Jupiter,"Mini moi"}/Satellites/{Io,Europe,Ganymede,Callisto,Bidule}

Attention quand on supprime c'est d é f i n i t i f !

Supprimer un dossier non vide et / ou une sour-arborescence

rmdir Mini\ moi

cela crée une erreur, du coup :

rm -fR ./Mini\ moi

suivi de ls -lh pour vérifier.

Attention au gag : en tant que root, taper un rm -fR / efface la totalité du disque dur :p

La commande ls, . et ..

Testez ces commandes les unes après les autres en observant les résultats.

cd Mars
mkdir ../{Gaia,Venus,Mercure}
cd ..
ls
ls -l
ls -la
ls -lh
ls -lah
ls -rl

comment analyser la sortie d'un ls -l ?

ls -lh
...
drwxr-xr-x 3 anonymous anonymous 4,0K mai    4 23:47 Jupiter
-rw-rw-r-- 1 anonymous anonymous    6 mai    4 23:56 machin
...

type d'entrée | droits propriétaire | droits groupe propriétaire | droits autres | nombre de liens (dossiers + . + ..) | propriétaire | groupe propriétaire | taille sur disque | date de dernière modification | heure de dernière modification | nom du fichier
d | rwx | r-x | r-x | 3 | anonymous | anonymous | 4,0K | mai 4 | 23:47 | Jupiter
- | rw- | rw- | r-- | 1 | anonymous | anonymous | 6 | mai 4 | 23:56 | machin

le - veut dire que le fichier n'a rien de spécial (c'est un simple fichier d'archives) d -> dossier, S -> Suid bit activé r -> lecture x -> exécution (ou parcours d'un dossier) w -> écriture

Les informations de droits sont modifiables par la commande

chmod (change mode) La commande permet de changer les modes d'un fichier, d'un dossier ou d'une arborescence , la marque "r" vaut 4, le "w" vaut 2 et le "x" vaut 1.

Par exemple : chmod 0640 fichier.txt permet de rendre le fichier fichier.txt accessible en lecture et écriture (6) pour le propriétaire, accessible en lecture (4) pour les membres du groupe associé au fichier et aucun accès (0) au reste des utilisateurs (sauf root évidemment).

Les informations de propriété sont modifiables par la commande

chown (change owner) permet de changer l'utilisateur.

chown anonymous.anonymous bidule.txt
						// attribue le fichier bidule.txt à anonymous et son groupe
chown anonymous.root bidule.txt
						// attribue le fichier bidule.txt à anonymous et au groupe root
chown root.root bidule.txt
						// attribue le fichier bidule.txt à root et son groupe
chown 1000:1000 bidule.txt
		// attribue le fichier bidule à l'utilisateur d'UID 1000 et au groupe de GUID 1000
chown -R anonymous.anonymous /home/anonymous
		// attribue récursivement le dossier /home/anonymous à l'utilisateur anonymous et à son groupe

Rendre un fichier invisible :

ls -l
mv machin .machin
ls -l

à retenir : mv = move (déplacement du fichier).

à retenir 2 : un fichier "invisible" sous linux est un fichier (ou un dossier) dont le nom commence par ".".

Créer un fichier ligne par ligne directement depuis le shell sans éditeur :

cd
cd Jupiter
echo Ceci est le dossier de Jupiter > Readme
less Readme

sortie de less par la touche "Q" (note : c'est la même chose quand on aune mise à jour critique ou grave pour raison de sécurité, un message de post-installation s'affiche, et pour quitter on appuie sur "Q".

cat Readme

vous voyez la différence entre less et cat.

echo ----------------------------------- > Readme

regardons le résultat :

cat Readme

et oui ! Le début à été effacé. Utilisons la touche [flèche haut] pour revenir à la ligne echo Ceci est le dossier de Jupiter > Readme puis ensuite tapez echo ----------------------------------- >> Readme et regardons par un cat Readme.

echo "Bonjour"

A Retenir : less et cat permettent d'afficher des contenus de fichiers, echo permet soit d'afficher du texte, soit d'écrire un texte vers un périphérique ou un fichier en mode écrasement > ou ajout >> .

Edition par bloc

il est possible directement d'utiliser la commande echo pour éditer un fichier ligne par ligne et l'enregistrer en une seule fois.

echo "
`> écrivez ici le texte que vous voulez mais sans pouvoir`
`> revenir à la ligne précédente. Chaque nouvelle ligne est`
`> précédée du signe > mais cela permet quand même d'éditer`
`> un fichier au fur et à mesure et quand c'est fini on a 3`
`> choix disponibles : annuler par [CTRL]+[Z]`
`> finir et afficher le texte à l'écran par [CTRL]+[D]`
`> finir et enregistrer dans un fichier en une seule fois`
`> par la redirection finale " >> Readme`

regardez ensuite le résultat obtenu par : cat Readme.

Note : vous pouvez imaginer les possibilités de cette option en cas de manque d'éditeur sur un système ultraminimaliste.

Copier un fichier (Readme) dans un autre dossier

cp Readme ../Mars/

L'option "-v" rend la commande verbeuse.

Copier un dossier et son contenu en une fois

cd ..
pwd (vérification si on est au dessus de Jupiter)
cp -r Jupiter Saturne
ls -l Saturne (pour vérifier que tout à été copié).

Effacer un dossier et son contenu

rm -fR Saturne

Filtrer une sortie d'après un mot clé :

grep

ex : Afficher tous les paquets de debian contenant le mot clé "theme" puis filtrer les sorties pour n'afficher que celles contenant "gtk"

apt-cache search theme | grep gtk

Maintenant qu'on a fini de faire mumuse avec les sorties, les fichiers et les dossiers on va passer aux commandes dangereuses.

Notez aussi l'utilisation du tuyau pipe permet de chaîner les commandes (le résultat de la première est envoyé vers la 2nde etc...)

Les téléchargements :

Téléchager en mode texte :

Suivant les distributions il y a par défaut l'un, l'autre ou les deux, les .... doivent être remplacés par l'url du fichier. À noter que wget permet d'aspirer des sites webs alors que curl n'est prévu que pour un fichier à chaque fois, et qu'il est possible de forcer curl à passer par des réseaux anonymisans tel que tor.

wget -c ....
curl -L -C- -O ....

Passer en super utilisateur / administrateur

Les mesures de sécurité élémentaires font qu'on sépare

si sudo disponible :

sudo su

si sudo pas disponibles :

su -

exécuter 1 commande unique en superutilisateur :

sudo commande options
su -c "commande options"

ATTENTION : En tant que root vous avez le pouvoir de vie et de mort sur le système et il faut savoir que les applications unix ne disent rien si tout s'est passé comme prévu (si elles donnent des informations c'est qu'il y a une erreur). Si vous voulez forcer le bavardage des commandes alors il faut passer l'option "-v" la plupart du temps (v pour verbose c'est à dire verbeux).

Enchaînement des commandes : & et &&

& : les commandes s'exécutent en parallèle dans des sous-shells

&& : la seconde commande s'exécute si la première renvoie un code d'erreur "0" (donc pas d'erreur).

Par exemple :

anonymous@Ars3n1c:~$ echo "hello" & echo "salut"
[1] 1725
salut
hello
anonymous@Ars3n1c:~$ echo "hello" && echo "salut"
hello
salut
[1]+  Fini                    echo "hello"
anonymous@Ars3n1c:~$

Dans le premier cas les deux commandes s'exécutent en simultanée (le [1] 1725 indique que la 2e commande est envoyée dans un sous-terminal dont le PID (process ID) est 1725). La 2nde commande a été plus rapide que la première. Dans le 2nd cas, les commandes s'exécutent dans l'ordre car la 2nde commande s'exécute seulement si la première n'a pas posé problème.

Ce type de chaînage est pratique pour effectuer des opérations de mises à jour automatisées plus ou moins contrôlées :

root@Ars3n1c:~# apt update && apt clean && apt upgrade -y && apt clean && init 0

Cette série de commandes fait :

une mise à jour de la liste des programmes apt update puis si l'exécution est correcte ;

un nettoyage du cache local des paquets apt clean puis si tout s'est bien passé ;

une mise à jour du système en répondant "Oui" automatiquement si une question est posée grâce à la commande apt upgrade -y et si tout s'est bien passé suivra ...

un nettoyage du cache des paquets téléchargés grâce à apt clean puis si tout est ok, alors ...

l'ordinateur sera éteint aussitôt après init 0.

Avoir de l'aide sur une commande

man commande

La commande man affiche une aide formatée, pendant lontemps, quand les connexions internet étaient coûteuses et lentes, l'administrateur ou l'administratrice d'un système Unix/Linux utilisait principalement les pages man (c'est le nom donné à toutes ces aides des commandes).

Mettre à jour le système

debian et clones (*buntu ; lxle; !#; kali; tails; ...) :

apt update
apt upgrade

redhat et fedora et clones

yum ou dnf :
dnf system-upgrade clean
dnf clean all
dnf upgrade
dnf system-upgrade download --releasever=28 --allowerasing --best
dnf system-upgrade reboot

les distributions "snap"-isées

Snap est un nouveau système d'empaquetage. Mon avis sur le sujet sera exprimé une prochaine fois lors d'une présentation dédiée à ubuntu 18.04 LTS

snap refresh

archlinux, parabola gnu/linux-libre, manjaro (pour les paquets qui ne sont pas dans AUR)

pacman -Syu

et pour les paquets dans AUR en plus des autres paquets des dépôts par défaut.

yaourt -Syua

voidlinux

xbps-install -Su

nettoyer le cache des paquets

debian et clones : apt clean
archlinux et clones : pacman -Sc / (yaourt -Sc ?)
voidlinux : xpbs-remove -O (attention à la casse)
fedora, redhat : dnf clean all
snap-isées : mes recherchez n'ont rien montré'

Vider les versions obsolètes et / ou le cache des paquets et orphelins

Tout comme les opérations de mise à jour ces opérations de nettoyage des paquets obsolètes ou du cache inutile.

debian et clones

apt autoremove --purge (orphelins / dépendances inutiles)
apt-get autoremove --purge (raspberry pi, vieilles versions de debian)

A noter : aptitude ou dselect applications en curses comparables graphiquement à synaptic / kynaptic

archlinux et clones

pacman -Sc
pacman -Scc
pacman -Rsn $(pacman -Qdtq)

La première commande nettoie le cache des fichiers antérieurs dont on a une version plus récente, la deuxième commande nettoie quant à la troisième elle recherche tous les paquets orphelins ou inutiles pour faire fonctionner d'autres paquets installés.

voidlinux

xbps-remove -O
xbps-remove -Oo

La première commande supprime les paquets obsolètes et la 2nde les paquets orphelins aussi.

Pour les autres distributions telles que les fedora et autres snaps à vous de chercher :p

supprimer un paquet unique (avec ou sans dépendances)

debian et clones :
apt remove --purge nom-du-paquet
apt autoremove --purge (pour les dépendances)

Archlinux et clones :
pacman -Rs
pacman -Rdd
pacman -Rsn $(pacman -Qdtq)

Voidlinux :
xbps-remove paquet

Versions snaps :
snap remove paquet

federa et redhat : à vous de chercher :)

Quelques utilitaires

mc

midnight commander est le logiciel qui s'exécute par la commande mc c'est un véritable couteau-suisse. Rapide. Simple. Capable d'édition de visualisation, copie, effacement et déplacement, il fonctionne en double-fenêtre à la sauce du mythique Norton Commander.

nano

C'est devenu peu à peu l'éditeur de base des distributions courantes. Ici l'exécution de la commande nano -cil

moc / npcpdcpb

alsamixer

links / lynx / w3m

Ahhh les joies de la navigation en mode texte.... si touchante et nostalgique...

Ces trois navigateurs permettent ainsi de naviguer, sans JS, sans CSS, sans images (si dans un terminal), à l'ancienne...

dhcpcd ou dhclient (debian)

C'est avec ces commandes qu'on peut configurer la connexion réseau filaire automatiquement

nm-cli ou wicd ou wifi-menu (archlinux et clones)

Ces commandes sont là pour configurer le wifi en mode texte.

ssh

anonymous@Ars3n1c:~$ ssh -l memyselfi 192.168.1.107
memyselfi@192.168.1.107's password:
Linux rasprad 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu May 31 00:41:10 2018 from 192.168.1.19
memyselfi@rasprad ~ $

sshfs

Merci à Tristan de m'avoir fait découvrir cette commande. Un régal ! Elle permet l'équivalent d'un ssh:// ou d'un sftp:// que j'utilise très souvent dans mon explorateur de fichiers graphique (pcmanfm). Grâce à cela on peut attacher une ressource du réseau à un point d'ancrage sur sa propre machine et l'explorer comme un simple sous-dossier (attention cependant aux latences de la connexion qui infuent sur la réactivité).

sshfs login@ressource:/chemin point-ancrage-local

fusermount

fusermount -u point-ancrage-local

permet de démonter le point d'ancrage

gpg

gpg est un véritable petit chenapan qui permet de chiffrer des données, des fichiers, etc.....

systemctl / sv

la commande systemctl (anciennement service pour les systemes ) permet de démarrer, d'arrêter ou de rendre automatique au démarrage certains programmes du système appelés services.

La commande sv fait de même pour les système utilisant runit comme système de démarrage (typique de voidlinux), d'autres utilisent encore la commande rc .

ln

Avec la commande ln source raccourciavec quelques options type -s ou -sf

Gérer les périphériques et les liens

Formatage, partitionnement, vérification, gravue d'iso, création d'iso...

Partitionnement de périphériques (disques, clés, etc...)

Partitionner un disque (inférieur à 2,3 To)

fdisk /dev/...
cfdisk /dev/...

Partitionner un disque (supérieur à 2,3 To)

gpt ...

Formater une partition

type ext

mkfs.ext2 /dev/....
mkfs.ext3 /dev/....
mkfs.ext4 /dev/....

type swap

mkswap /dev/....

Formater une clé (par exemple) en FAT32 ou EFI

mkfs.vfat -n NOM /dev/....

Créer un lien symbolique

ln -s cible alias

Graver une image

dd status=progress ... if=... of=....

Mounter un périphérique manuellement

C'est à l'aide de la commande mount qu'on pourra effectuer cela. Cette commande permet d'accrocher à un endroit de l'arborescence un support physique et la commande umount permet de le décrocher.

un périphérique réel

Imaginons une clé USB branchée sur le système, son noeud système (la manière dont le noyau linux communique avec elle) est /dev/sdb. Elle possède une partition de type FAT32 dont la désignation est /dev/sdb1 (la désignation se fait automatiquement par le système). Pour avoir accès à ces infos on utilise bien sûr la commande lsblk et ensuite je décide de mounter cette clé dans le dossier /mnt :

mount /dev/sdb1 /mnt

Les noyaux de Linux sont capables de reconnaître automatiquement bon nombre de systèmes de fichier aussi l'option -t .... n'est pas nécessaire.

un ramdisk

Le ramdisk ou disque de mémoire volatile est vraiment très pratique. Il permet de créer dans la mémoire volatile de l'ordinateur un espace assimilé par le système à un stockage permanent, en gros, un peu de ram devient un peu de disque. Quel(s) intérêt(s) ? Ils sont multiples tout autant légaux que non.

Dans les choses légales citons :

économiser des cycles d'écriture sur un SSD

aider un vieux (ou un lent) disque dur à trouver un souffle de jeunesse

virtualiser

etc.

Dans le cas d'un usage à but illégal, sachez tout de même que la RAM est vulnérable aux attaques de type "Cold Boot" et que contrairement à la légende une RAM ne s'efface pas à l'extinction mais quelques dizaines de secondes plus tard, plus si elle est vite refroidie.

Voici quand même la commande :

mount -t tmpfs tmpfs point-de-mountage -o size=xxxx

Attention : si l'option -o size=xxxx n'est pas précisée, le système alloue la moitié de la mémoire vive disponible à l'espace de stockage. La taille xxxx doit contenir l'unité : k, M, G ...

une ISO en loop

ls /mnt
mount -o loop -t iso 9660 monfichierimage.iso /mnt
ls /mnt

Par cette commande monfichierimage.iso qui est un fichier contenant une copie bit-à-bit d'un support de type CDROM a été mounté dans le dossier /mnt qui est vide au départ et non vide à l'arrivée. Bien sûr on finit proprement par le démounter :

umount /mnt

Éteindre et redémarrer

suivant les distributions le droit d'éteindre ou de redémarrer le système n'est pas permis directement à l'utilisateur lambda. D'autres distributions permettent l'accès à cette commande. La commande est " shutdown " à la quelle peuvent être passés des arguments divers. Il y a bien sûr la commande "init" ou la commande "telinit" aussi.

Notez que la commande "init" n'est pas forcément existante dans toutes les distributions par contre shutdown et telinit elles oui. Voici quelques options de son utilisation.

Extinction directe du système :

shutdown -h now ou /sbin/telinit 0 ou init 0

Extinction différée du système dans un délais (en minutes) :

shutdown -h +10

Extinction différée du système à une heure spécifique :

shutdown -h -t 23:35:00 (à vérifier)

Redémarrage du système

shutdown -r now

ou

/sbin/telinit 6

ou

init 6

Sources :

manpages

http://toastytech.com/guis/

https://fr.wikipedia.org/wiki/Xerox_Star

https://fr.wikipedia.org/wiki/Interface_graphique

https://fr.wikipedia.org/wiki/Amiga

http://www.catb.org/~esr/writings/taouu/html/ch02s05.html