Dans cet article je vous partage un memo des commandes et logiciels que j’ai eu à utiliser au cours de ma vie d’utilisateur de Linux et son terminal, ces 4-5 dernières années. Certaines sont des commandes de base, d’autres des commandes un peu plus avancées mais que je suis amené à utiliser souvent ou que j’ai trouvé utile de garder sous le coude.
Cette liste n’est évidemment pas exhaustive, c’est un memo personnel que je partage avec vous, au cas où ça puisse aider les débutants.
Si vous débutez, pensez aussi que quasiment toutes les commandes ont un manuel associé que vous pouvez consulter en tapant man nomdelacommande
. Pour en savoir plus sur la commande tar
par exemple vous pouvez taper man tar
, tout simplement. Cela peut notamment vous permettre de comprendre les flags qui suivent certaines commandes.
Enfin avant de vous lister les commandes, j’admets volontiers que je suis un amateur éclairé sur le sujet, autodidacte en plus, et que vous avez sans doutes plein de choses à m’apprendre. N’hésitez pas à me mettre vos conseils ou à partager les petites commandes que vous recommandez de connaître en commentaires. Cela me sera bien utile et peut-être à d’autres lecteurs aussi !
Fichiers
cd /dossier/de/destination
: se rendre dans un dossier excd /home/gabriel/MesPhotos
cd
: revenir à la racine de ton dossiercd ..
: remonter d’un niveau dans l’arborescencerm nomdefichier
: supprimer un fichierrm nomdedossier -r
: supprimer un dossier et son contenumv /chemin/de/base /chemin/de/destination
: déplacer un fichier ou un dossiercp /home/fichier1 /new/fichier2
: copier le fichier1 à l’emplacement de fichier2cp -rp /home/julien/mondossier /run/media/julien/.
copier mondossier (-r pour répertoire) vers son nouvel emplacement, en préservant les permissions et caractéristiques de fichiers (-p)mkdir nomdedossier
: créer un dossier. Pour s’en rappeler mkdir = make directorytouch nomdefichier
: créer un fichiernano nomdefichier
: éditer un fichier (tu peux le faire même si le fichier existe pas, il sera créé à la sauvegarde)ls -lh
: lister tous les fichiers d’un dossier, leurs tailles, leurs permissions. Leh
correspond à human readable pour avoir des poids compréhensibles.ls -lhS
: lister tous les fichiers par ordre de tailleclear
: commande terminal pour nettoyer la fenêtre de tout ce qui est affichéwget example.com/fichier.zip
: permet de télécharger un fichier quand on lui attache une URL
Système
sudo apt-get update
: met à jour la liste des paquets pour connaitre les versions disponiblessudo apt-get upgrade
: met à jour les dernières versions des paquets disponiblessudo apt-get dist-upgrade
met à jour les dernières versions des paquets, en téléchargeant les nouveaux si besoin.
Utilisateurs
passwd
: changer le mot de passe de l’utilisateur courantsu roger
: se connecter en tant que l’utilisateurroger
Permissions
Le sujet des permissions est très très vaste et essentiel dans l’utilisation avancée de Linux. Mais il y a quelques commandes que vous serez certainements amenés à utiliser régulièrement si vous faites du développement web en local notamment :
chown www-data:www-data undosssier/ -R
: attribuer à l’utilisateur www-data du groupe www-data un dossier. Cette commande est utilisées maintes et maintes fois pour régler les problèmes d’accès aux fichiers par un serveur PHP par exemple. L’utilisateur web peut varier selon les distributions; sur Manjaro c’esthttp:http
par exemple.chmod +x unfichier.sh
: changer les permissions et rendre un fichier executable.
Serveur
reboot
: pour lancer le redémarrage de la machine.exit
: pour quitter la session en cours et/ou fermer la connexion SSH en coursssh
: la commande d’accès à distance de votre machine.- savoir quel process a accès à un port : https://www.cyberciti.biz/faq/what-process-has-open-linux-port/
curl -I https://urldesite.com
: recevoir le header du serveur en questionapache2ctl -S
permet de lister tous les virtual hosts apache activés
scp
La commande scp
permet (entres autres) de déplacer un fichier d’une machine à l’autre via le protocole sécurisé SSH. Cas d’usage : récupérer une sauvegarde d’un serveur pour la télécharger en local.
scp -P 45 <source> <destination>
scp /path/to/file username@a:/path/to/destination .
scp -P 45 root@22.22.22.22:/root/backup-server-$(date +"%Y-%m-%d").tar.gz backup-my-server-$(date +"%Y-%m-%d").tar.gz
Notes :
- tout comme SSH cette commande requiert de préciser le port de SSH si celui ci n’est pas le port 22 par défaut. Attention toutefois le paramètre doit être en majuscule
-P 45
! - ne pas oublier de mettre le chemin et nom de fichier de destination. Pour garder le même nom et l’emplacement courant local il faut simplement terminer la commande par un point.
- la commande
rsync
peut faire la même chose et énormément plus. Cette commande est très puissante et peut s’avérer extrêmement utile pour automatiser des sauvegardes par exemple. Je dois encore me pencher dessus pour bien la comprendre, mais gros potentiel.
Quelques commandes annexes : Pour télécharger tous les fichiers d’un format dans le dossier visé et les copier à l’emplacement local courant :
scp -P 22 root@22.22.22.22:/mnt/volume0/srv/sites/*.tar.gz .
Et, sur le même principe, pour télécharger tous les fichiers de plusieurs extensions :
scp root@22.22.22.22:'/mnt/volume0/srv/sites/*.{tar.gz,jpg}' .
logs et infos
Apprendre c’est aussi faire des erreurs. Pour apprendre de ses erreurs il faut d’avoir savoir aller les enregistrer et revenir dessus. Ces commandes peuvent être utiles pour comprendre ce qu’il se passe sur votre machine :
tail
: lire les dernières lignes d’un fichier (idéal pour les journaux)tail -f
: afficher en temps réel les nouvelles entrées d’un fichier. Idéal pour suivre en direct ce qu’a à vous dire un fichier de logswatch
: avant une commande permet d’avoir un rafraichi de cette commande toutes les 2 secondes. Rajouter--interval=.5
pour que la commande soit relancée toutes les demi secondes par exemplegrep "throttled" /var/log/kern.log.1 | wc -l
: ou à peu près ça permet de savoir si le kernel ralentit le processeur (pour cause de température par exemple)identify -verbose DSC_1736.JPG | grep "exif:"
: lire les données EXIF d’une image (source).
Les recherches utiles
De manière générale il est recommandé de se familiariser avec la commande grep
qui permet de faire énormément de choses différentes et d’être associée à d’autres commandes pour faire des recherches précises ou filtrer des contenus. La commande find
peut aussi être très utile; un peu plus complexe peut-être.
history | grep "une ancienne commande"
permet de retrouver une commande anciennement tapée dans l’historique- taper CTRL+R permet d’effectuer une recherche dans les commandes récemment utilisées
dpkg --list
permet de voir la liste exhaustive des paquets installés sur le serveur.dpkg --list | grep "mail"
par exemple permet de savoir tous les paquets qui mentionnent le mot mail
Quelques exemples de recherches avancées de fichiers :
find . -size -2k -not -path "./dossier/*" -exec ls -lS {} \+
: rechercher des fichiers de moins de 2ko, en ignorant le répertoire /dossier/find . -type f -name "*.md" | cut -d/ -f2 | sort | uniq -c | sort -nr
: lister tous les sous dossiers avec le nombre de fichiers de l’extension .md (markdown) que chacun contient
Manipulation de fichiers
youtube-dl
Le logiciel en ligne de commandes qui permet de télécharger des vidéos youtube, en vidéo, en SD, HD, en audio, et des médias depuis des tas d’autres sites. Super utile et très completyoutube-dl URL --extract-audio --audio-format mp3
pour télécharger une vidéo au format audio mp3
Liens symboliques
ln -s dossier_cible nom_du_lien
: créer un lien symbolique.
Compression et archivage
tar cvf
pour créer une archive (c = create). Rajouterz
pour gzipper.tar xvf
pour extraire une archive (x = extract)
Espaces Disques
mount
: monter un disque / un périphériqueumount
: démonter un disque / un périphériquedf -h
: lister les partitionsdu -hs
: calculer et afficher le poids total d’un dossier et ce qu’il contient.du -h -d 1
: afficher la taille des sous dossiers. Le-d 1
définit le nombre de sous niveaux.- pour trier :
sudo du -h -d 1 | sort -n -r
- pour trier :
lsblk
: lister l’organisation des disques et partitionslsblk -d
: lister les disques physiquespvs
: rapport d’information sur les volumes physiqueslvs
: rapport d’information sur les volumes virtuelsparted
oufdisk
oucfdisk
: équivalents en ligne de commandes du logiciel gparted qui permettent de manipuler les partitions d’une machine.fdisk -l
: lister les partitions
Réseau
sudo nmap -sU undomaine.com
: mapper les ports (lent?)- netcat
nc -vu 163.172.xx.xx 10000
: tester l’accès au port 10000 sur la machine 163.172.xx.xx host
pour avoir les infos DNS d’un domaine. Renvoie NXDOMAIN quand le domaine est NoneXistant.
Système : quelques logiciels et commandes utilitaires
uname
est une commande de référence pour obtenir des informations sur le système.-
lspci
affiche les données détaillées sur les ports du bus PCI de la machine. L’option -vvv permet d’avoir encore plus d’informations -
/opt/vc/bin/vcgencmd measure_temp
: commande pour connaitre la température sur un RaspberryPi dont j’ai eu besoin plusieurs fois pour connaitre la température de la carte (source). screenfetch
: Le logiciel screenfetch permet d’afficher un récapitulatif de ce qui compose votre machine. Très utilie pour trouver des infos de base rapidement. Et j’avoue, l’affichage totalement gadget du logo de l’OS en ASCII dans le terminal me fait marrer.
sudo apt-get update
sudo apt-get install screenfetch
screenfetch
.',;:cc;,'. .,;::c:,,. pi@raspberrypi
,ooolcloooo: 'oooooccloo: OS: Raspbian 9.6 stretch
.looooc;;:ol :oc;;:ooooo' Kernel: armv7l Linux 4.14.79-v7+
;oooooo: ,ooooooc. Uptime: 1h 33m
.,:;'. .;:;'. Packages: 1235
.... ..'''''. .... Shell: 1411
.''. ..'''''. ..''. CPU: ARMv7 rev 4 (v7l) @ 1.4GHz
.. ..... ..... .. RAM: 131MiB / 927MiB
. .''''''' .''''''. .
.'' .'''''''' .'''''''. ''.
''' ''''''' .'''''' '''
.' ........... ... .'.
.... ''''''''. .''.
'''''. ''''''''. .'''''
'''''. .'''''. .'''''.
..''. . .''..
.'''''''
......
Et voilà, c’est à peu près tout ce que j’ai pour ce mémo, après quelques années passées à utiliser et bidouiller sur une machine linux (Ubuntu puis Manjaro en local, Ubuntu puis Debian sur mon serveur). Si vous êtes tombé par hasard sur ce billet et qu’il vous a été utile d’une manière ou d’une autre, laissez un commentaire pour en parler :).