# Kit de survie en lignes de commandes ...
#### pour les nuls.
## 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.
![Image Hacker Google Images](hakerzzz.png "L'image du hacker dès qu'on fait une recherche sur google images")
Or ça 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.
![ms-dos-wikipedia.jpg](ms-dos-wikipedia.jpg)
_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._
![ms-dos-help-whats-new.png](ms-dos-help-whats-new.png)
> _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](cga_rgb_mode.jpg "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)
![a-game-of-thrones-wordstar.png](a-game-of-thrones-wordstar.png)
> 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](https://www.youtube.com/watch?v=X5REM-3nWHg)
* Des aficionado·a·s qui échangent leurs personnalisations sur le subreddit appelé "unixporn" -> [unixporn on reddit](https://www.reddit.com/r/unixporn)
![cli-art.png](cli-art.png)
![cli-only.1514294010179.jpg](cli-only.1514294010179.jpg)
* 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).
![1_win30.jpg](1_win30.jpg)
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](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).
![windows_3.0.1889430.jpg](windows_3.0.1889430.jpg)
_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.
![slackware-fvwm.png](slackware-fvwm.png)
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 ".
![twm.png](twm.png)
Une autre version de FVWm dite " Crystal " ...
![fvwm-crystal.jpg](fvwm-crystal.jpg)
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 !
![gnome1.jpg](gnome1.jpg)
![kde1.jpg](kde1.jpg)
Et aussi XFCE version 2
![xfce-v2.jpg](xfce-v2.jpg)
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".
![Music On Console](mocp.png "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`
### je veux afficher l'état de la mémoire :
`free`
### Quel est l'état d'occupation du disque ? :
`df`
### Quelles sont les tâches en cours d'exécution ? :
`top` ou `htop`
![top](top.png)
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`
> 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 :
1. retour dans Phobos : `cd Phobos`
2. 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 ..
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)
### Les informations de propriété sont modifiables par la commande
`chown` (change owner)
### 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
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`
et le résultat obtenu par : `cat Readme`.
### 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.
### Les téléchargements :
#### téléchager en mode texte :
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).
### Avoir de l'aide sur une commande
man commande
### Mettre à jour le système
#### debian et clones (\*buntu ; lxle; !#; kali; tails; ...) :
apt update
apt upgrade
#### redhat et fedora et clones
yum
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 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
.deb : apt clean
arch & co : pacman -Sc / (yaourt -Sc ?)
void : xpbs-remove -O (attention à la casse)
fedora, redhat :
snap-isées :
### Vider les versions obsolètes et / ou le cache des paquets et orphelins
deb : apt autoremove --purge (orphelins / dépendances inutiles)
apt-get autoremove --purge (raspi, vieilles deb)
aptitude / dselect -> applications en curses comparables graphiquement à synaptic / kynaptic
pacman -Scc
xbps-remove -Oo
fedora
snaps
### supprimer un paquet unique (avec ou sans dépendances)
deb apt remove --purge nom-du-paquet
apt autoremove --purge (pour les dépendances)
pacman -Rs
pacman -Rdd
xbps-remove paquet
snap remove paquet
federa : dnf / yum
redhat : dnf / yum
## 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.
![MC](mc.png)
* nano
![Nano](nano.png)
* moc / npcpdcpb
![moc2](mocp.png)
* 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 / nm-cli / wicd
* ssh
* 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
* gpg
gpg est un véritable petit chenapan.
* systemctl / sv
* ln
## 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