{{tag>tutoriel}} ====== 74 Commandes pour Raspberry Pi - Antisèche commandes Raspberry Pi ====== ===== Gestion des fichiers ===== Voici les commandes de base que tout débutant sous Linux doit apprendre pour naviguer dans l'arborescence de fichiers. L'organisation des fichiers sous Linux est un arbre, dont la racine est / Chaque nouveau sous-dossier ajoute un niveau en dessous de / Par exemple, voici la représentation de la branche /home/pi/test /home | +--pi | +--test - **cd ** : Changer de dossier, pour aller dans l'emplacement spécifié * Chemin absolu: ...@...:~ $ cd /home/pi/test * Chemin relatif: ...@...:~ $ cd test * "Absolu" correspond au chemin en entier, alors que"Relatif" prend en compte le chemin à partir du chemin actuel (le second exemple ne marche que si vous êtes déjà dans /home/pi par exemple) - **mkdir ** : Créer un nouveau dossier au nom indiqué (dans le répertoire courant ou spécifié) - **mv ** : Déplace un fichier vers l'emplacement spécifié (permet aussi de renommer) * Un fichier: ...@...:~ $ mv test.txt /home/pi * Un dossier: ...@...:~ $ mv /home/pi/test /home/pi/test2 - **more ** : Affiche le contenu d'un fichier, page par page * Chemin absolu: ...@...:~ $ more test.txt * Chemin relatif:...@...:~ $ more /home/pi/test.txt Dans les longs fichiers, il faut appuyer sur "Espace" pourpasser à la page suivante. - **ls (DOSSIER)** : Lister les fichiers et dossiers présents dans l'emplacement indiqué * Dossier en cours:...@...:~ $ ls * Dossier spécifié:...@...:~ $ ls /home/pi/test Il existe plein d'options facultatives permettant de changer l'affichage du résultat, par exemple: ...@...:~ $ ls -latr /home/pi - **cp ** : Copie un fichier d'un emplacement à un autre - Copier un fichier:...@...:~ $ cp test.txt /home/pi - Copie récursive:...@...:~ $ cp -r /home/pi/test /home/user/ Utilisez l'option récursive afin de copier un dossier et tout son contenu - **cat ** : Affiche le contenu d'un fichier, sans pagination * Usage basique:...@...:~ $ cat test.txt * Avec un jocker:...@...:~ $ cat *.txt - **tail ** : Affiche les dernières lignes d'un fichier * Base:...@...:~ $ tail test.txt * Lignes à prendre:...@...:~ $ tail -n20 test.txt * Temps réel:...@...:~ $ tail -f test.txt - **head ** : Similaire à la commande tail mais pour afficher le début d'un fichier * 10 lignes:...@...:~ $ head test.txt * 20 lignes:...@...:~ $ head -n20 test.txt - **grep** : Grep est un outil puissant (mais complexe), permettant de faire des recherches * Rechercher valeur:...@...:~ $ grep "dhcp" /var/log/syslog * Filtrer les résultats:...@...:~ $ ls -latr | grep ".php" * Ou sur un script:...@...:~ $ /home/pi/script.sh | grep error * Le pipe (|) vous permet d'exécuter une commande sur le résultat de la première * De nombreuses options avancées sontdisponibles: * Exp. régulières:...@...:~ $ grep "dhcp\|dns" /var/log/syslog * Options diverses:...@...:~ $ grep -A2 -B4 'Fatal error' /var/log/syslog * Recherche inversée:...@...:~ $ grep -v 'Notice' /var/log/syslogi - **nano ** : Ouvre un fichier pour modification. Nano est un éditeur de fichier très puissant * Usage basique:...@...:~ $ nano /home/pi/test.txtNano va créer le fichier s'il n'existe pas - **tar** : Tar est le gestionnaire de fichiers compressés sous Linux * Créer un fichier:...@...:~ $ tar -cvfz archive.tar.gz /home/pi/test * Extraire le contenu:...@...:~ $ tar -xvfz archive.tar.gz * Options: * **-c** pour Compresser, * **-x** pour extraire * **-v** : mode verbeux, * **-z** : utilise gZip pour la compression, * **-f** spécifie le nom du fichier. * Utilisez "man tar" pour en savoir plus - **touch ** : Crée un nouveau fichier (vide) * Dossier courant:...@...:~ $ touch test.txt * Spécifique:...@...:~ $ touch /home/pi/test.txt * La plupart du temps, on utilisera plutôt "nano", car il permetde modifier le fichier directement - **rm ** : Supprimer un fichier ou un dossier * Un fichier:...@...:~ $ rm test.txt * Un dossier:...@...:~ $ rm -rf /home/pi/test * L'option -rf sur un dossier permet de supprimer un dossier et tout son contenu (même s'il n'est pas vide). - **zip / unzip** : Zip est similaire à tar, mais pour le format Zip (commun sous Windows) * Créer un fichier:...@...:~ $ zip -r archive.zip /home/pi/test * Extraire le contenu:...@...:~ $ unzip archive.zip * L'option -r permet de compresser tout le contenu dudossier. * L'option -d permet d'extraire à un emplacement spécifique. * Regardez "man zip" pour voir toutes les options disponibles - **pwd** : Une commande simple pour afficher l'emplacement actuel * Exemple:pwd - **find** : Find permet de faire une recherche sur votre Raspberry Pi * Trouver un fichier:...@...:~ $ find /home/pi -iname test.txt * Filtrer les extensions:...@...:~ $ find /home/pi -iname *.php * Se limiter aux dossiers:...@...:~ $ find / -type d -iname test * -iname est insensible à la casse (contrairement à -name). * Vous pouvez utiliser "-type f" pour chercher uniquement les fichiers - **tree** : Un autre outil permet d'afficher l'emplacement actuel, sous forme d'arbre * Dossier courant:...@...:~ $ tree * Dossier spécifié:...@...:~ $ tree /home/pi/ * Il existe quelques options permettant de changer l'affichage du résultat, utilisez "man tree" pour en savoir plus - **Des options plus poussées**: * Taille des fichiers:...@...:~ $ find / -size +10Maffiche tous les fichiers de plus de 10M * Date modification:...@...:~ $ find /home -mtime -2-mtime -2 liste les fichiers modifiés depuis 48h * Lancer une commande sur les résultats:...@...:~ $ find /var/log -iname *.log.gz -exec rm {} \;Le paramètre {} sera remplacé par les résultats * Consultez "man find" pour plus de détails ===== Commandes réseau ===== - **ifconfig** : Affiche votre configuration réseau actuelle(adresse ip notamment) * Usage:...@...:~ $ ifconfig * Il est possible d'ajouter le nom de l'interface en paramètre si vous voulez: "ifconfig wlan0". - **ifup / ifdown** : Permet d'activer ou de désactiver une interface * Activation:...@...:~ $ sudo ifup eth0 * Désactivation:...@...:~ $ sudo ifdown eth0 * Cela peut être utile pour déactiver le Wi-Fi une fois connecté en câble par exemple. - **hostname** : Affiche ou change le nom d'hôte du Raspberry Pi: * Affichage:...@...:~ $ hostname * Configuration:...@...:~ $ sudo hostname RaspberryZero - **ssh @** : Connexion à un autre système via SSH * Exemple:ssh pi@192.168.1.1 - **rsync** : Similaire à scp mais avec davantage defonctionnalités * Syntaxe:...@...:~ $ rsync @: * Exemple:...@...:~ $ rsync test.txt pi@192.168.1.1:/home/pi/ * Copie locale:...@...:~ $ rsync /home/pi/* /media/usb/ * Copie distante récursive::...@...:~ $ rsync -auzr /home/pi/Documents/* pi@192.168.1.1:/home/pi/Documents/ - **iwconfig** : Montre les informations concernant la connexion Wi-Fi (SSID, vitesse, ...) * Usage:...@...:~ $ iwconfig * NB: Vous pouvez également spécifier l'interface: ...@...:~ $ iwconfig wlan0 - **ping ** : Vérifier si une machine est joignable sur le réseau * Usage: ...@...:~ $ ping 192.168.1.1 * Consultez l'aide "man ping" pour toutes les options - **wget ** : Télécharge un fichier depuis la console * Usage:...@...:~ $ wget http://192.168.1.1/test.txt * Spécifier le nom de fichier:...@...:~ $ wget http://192.168.1.1/test.txt -Otarget.txt - **scp** : Copie un fichier sur le réseau à travers SSH * Syntaxe:...@...:~ $ scp @: * Exemple:...@...:~ $ scp test.txt pi@192.168.1.1:/home/pi/ ===== Gestion des paquets ===== Sous Linux, chaque programme est un paquet, tout comme chaque dépendance Vous téléchargez les paquets depuis un dépôt (serveur hébergeant les paquets) Vous aurez besoin de l'outil **apt** pour rechercher, installer et mettre à jour les paquets sur Debian/Raspbian. Toutes ces commandes nécessitent les droits administrateur, il faudra donc utiliser **sudo**. - **sudo apt update** : Télécharge la liste des paquets à jour depuis le dépôt * Usage :...@...:~ $ sudo apt update * Pour ajouter ou modifier les dépôts utilisés, vous pouvez éditer le fichier /etc/apt/sources.list et suivre les instructions - **sudo rpi-update** : Met tout à jour sur votre Raspberry Pi. À utiliser en dernier recours * Usage :...@...:~ $ sudo rpi-update - **sudo apt remove ** : Désinstalle un paquet du système * Usage :...@...:~ $ sudo apt remove vim * Je vous donne la commande permettant de lister les paquets installés juste après - **Installation manuelle** : Parfois, vous devrez installer des paquets à la main,voici comment faire : - **Téléchargez le paquet** avec wget :...@...:~ $ wget https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.19.325-Linux-ARM.deb - **Installez-le à la main** :...@...:~ $ sudo dpkg -i VNC-Viewer-6.19.325-Linux-ARM.deb * La commande dpkg -r permet de désinstaller un paquet s'il a été installé à la main - **sudo apt upgrade** : Télécharge et installe les dernières mises à jour pour les paquets utilisés * Usage :...@...:~ $ sudo apt upgrade * L'utilisation de "apt update" avant est obligatoire. L'option -y permet d'accepter automatiquement les mises à jour (sans confirmation) - **sudo apt install ** : Installe le paquet spécifié sur votre système * Usage :...@...:~ $ sudo apt install phpmyadmin * Utilisez la commande "search" ci-dessous pour trouver le nom exact d'un paquet - **sudo apt search** : Très utile pour retrouver le nom d'un paquet * Usage :...@...:~ $ apt search openjdk * Avec grep :...@...:~ $ apt search openjdk | grep jre * L'utilisation de sudo est inutile pour cette commande - **Liste des paquets installés** : Dpkg permet aussi d'afficher la liste des paquets installés sur votre système * Syntaxe :...@...:~ $ sudo dpkg -l * Avec grep :...@...:~ $ sudo dpkg -l | grep php * Lisez l'aide "man dpkg" pour connaître toutes les optionsdisponibles ===== Gestion du système ===== - **reboot** : Cette commande redémarre instantanément le Raspberry Pi * Usage :...@...:~ $ sudo reboot - **service** : Permet de gérer le fonctionnement des services du système * Démarrage :...@...:~ $ sudo service apache2 start * Arrêt :...@...:~ $ sudo service apache2 stop * Redémarrer :...@...:~ $ sudo service apache2 start * Recharger:...@...:~ $ sudo service apache2 reload * Utilisez "service " pour connaitre toutes les options disponibles. * La touche TAB vous aidera à trouver le nom du service - **Liste des processus** : Affiche tous les processus en cours * Usage basique :...@...:~ $ ps aux * Filtrer par utilisateur :...@...:~ $ ps -u pi - **htop** : Une bonne alternative à "top" pour afficher l'état du système * Usage :...@...:~ $ htop * Si htop n'est pas disponible, c'est qu'il faut d'abord l'installer: ...@...:~ $ sudo apt install htop - **shutdown** : Arrête le Raspberry Pi, soit immédiatement, soit à une heure spécifiée * Maintenant:...@...:~ $ sudo shutdown -h now * Heure indiquée:...@...:~ $ sudo shutdown -h 20:00 - **Démarrage auto** : Permet de gérer le démarrage automatique ou non lors du lancement du Raspberry Pi * Démarrage auto :...@...:~ $ sudo update-rc.d ssh enable * Désactivation :...@...:~ $ sudo update-rc.d -f ssh remove * Pour lancer un script au démarrage, ajoutez le dans /etc/rc.local - **kill / killall** : Termine immédiatement le processus indiqué * Kill :...@...:~ $ kill 12345 * Killall :...@...:~ $ killall php * Utilisez la commande "ps aux" au préalable pour trouver le numéro du processus - **df** : Affiche la liste des partitions, ainsi que l'espace disque utilisé/restant * Usage basique :...@...:~ $ df * Plus lisible :...@...:~ $ df -h * Partition spécifiée :...@...:~ $ df -h /media/usb - **du** : Affiche l'espace disque utilisé par le dossier courant ou spécifié * Usage basique :...@...:~ $ du * Dossier précis :...@...:~ $ du /home/pi * Résumé :...@...:~ $ du --summarize /home/pi * Plus gros fichiers :...@...:~ $ du -ak | sort -nr | head -20 * Il existe bien plus d'options disponibles, utilisez "man du" pour en savoir plus - **date** : Comme le nom l'indique, permet d'afficher la date * Affichage complet :...@...:~ $ date * Format précis :...@...:~ $ date +%m-%d-%Y * Le "man date" vous aidera au niveau du format notamment - **chown** : Changer le propriétaire d'un fichier * Propriétaire :...@...:~ $ sudo chown pi /usr/local/bin/script.sh * Propriétaire et groupe :...@...:~ $ sudo chown pi:www-data /var/www/html/mysite - **Température du cpu** : Elle n'est pas facile à se souvenir, mais elle peut être très utile en cas de surcharge * Usage :...@...:~ $ vcgencmd measure_temp * vcgencmd est inclus dans le paquet libraspberry-bin, une installation peut être nécessair e: ...@...:~ $ sudo apt install libraspberrypi-bin - **mount** : Monter une partition (une clé USB par exemple) * Montage :...@...:~ $ sudo mount /dev/sda1 /mnt/usb * Démontage :...@...:~ $ sudo umount /mnt/usb * Ce n'est pas très simple pour les débutants, je vous conseille la lecture de ce tutoriel si vous n'avez jamais fait:[[https://raspberrytips.fr/monter-cle-usb-raspberry-pi/]] - **uptime** : Affiche le temps d'exécution du Raspberry Pi depuis le dernier démarrage * Utilisation :...@...:~ $ uptime * Heure dernier boot :...@...:~ $ uptime -s - **chmod** : Change les permissions d'un fichier ou dossier * Format numérique :...@...:~ $ chmod 644 script.sh * Format lettres :...@...:~ $ chmod +x script.sh * Il existe des outils pour vous aider à connaître les bonnes options à utiliser, par exemple : [[https://chmod-calculator.com/]] - **man ** : permet d'afficher l'aide * Utilisez la touche Espace pour passer à la page suivante et q pour quitter. * Exemple :...@...:~ $ man find ===== Commandes Raspbian ===== - **raspi-config** : C'est l'outil principal pour la configuration d'un Raspberry Pi * Usage :...@...:~ $ sudo raspi-config * Raspi-config permet de changer plein de paramètres système via un menu pratique (localisation, Wi-Fi, interfaces,etc.) - **raspivid** : Même chose, mais pour prendre une vidéo avec la caméra * Utilisation :...@...:~ $ raspivid -o video.h264 -t 10000L'option -t permet de spécifier la durée du film - **raspividyuv / raspiyuv** : Idem que raspivid mais au format YUV * Utilisation :...@...:~ $ raspividyuv -o video.yuv - **raspistill** : Cette commande permet de prendre une photo avec la caméra du Raspberry Pi * Utilisation :...@...:~ $ raspistill -o image.jpg - **raspi-gpio** : Permet d'accéder aux pins GPIO directement sans code * Récupérer valeur :...@...:~ $ raspi-gpio get * Définir valeur :...@...:~ $ raspi-gpio set 20 a5 - **rpi-update** : mise àjour complète du système * Usage :...@...:~ $ sudo rpi-update ===== Commandes diverses ===== - **history** : Linux archive toutes les commandes tapées, la commande history permet de les afficher * Voir tout :...@...:~ $ history * Les 20 dernières :...@...:~ $ history | tail -n 20 * Tout effacer :...@...:~ $ history -c * Effacer une ligne :...@...:~ $ history -d 123 - **|** : ce symbole est important * Syntaxe :...@...:~ $ | * Grep :...@...:~ $ cat test.txt | grep error * Double:...@...:~ $ du -ak | sort -nr | head -20 - **!** : Lance une commande présente dansl'historique * Syntaxe :!...@...:~ $ * Exemple :...@...:~ $ !123 * Pensez bien à vérifier le numéro à chaque fois, il change à chaque nouvelle commande tapée - **>** : Stocke le résultat dans un fichier * Syntaxe :...@...:~ $ > * Exemple :...@...:~ $ cat test.txt | grep error > error.log * La dernière commande stocke toutes les lignes contenant le mot clé "error" dans le fichier error.log. Cette commande n'affichera rien du tout - **crontab** : Planificateur de tâches pour Raspberry Pi * Voir les tâches :...@...:~ $ crontab -l * Modifier :...@...:~ $ crontab -e * La syntaxe n'est pas évidente à maitriser, je vous conseille de la valider avec ce genre d'outil :[[https://crontab.guru/]] - **!!** : Similaire à ! mais pour la dernière commande * Usage :...@...:~ $ !! - **>>** : Même chose que > mais ajoute à la fin du fichier au lieu de remplacer tout * Usage :...@...:~ $ cat test.txt | grep error >> error.logDans ce cas, les lignes d'erreur sont ajoutées à la fin de error.log ===== Commandes d'expert ===== - **awk** : Awk est pratiquement un langage de programmation. Il permet de rechercher une valeur et de transformer l'affichage du résultat * Syntaxe :...@...:~ $ awk [-F] [-v var=value] 'program' file * Exemple basique :...@...:~ $ awk -F":" '{print $1}' /etc/passwd * La dernière commande affiche juste la première colonne. * Difficile d'expliquer en deux lignes, je vous recommande la lecture de ce guide: [[https://do.co/2VC8mnm]] - **cut** : Une troisième manière de transformer l'affichage d'un fichier * Syntaxe :...@...:~ $ cut * Exemple :...@...:~ $ cut -d : -f 1 /etc/passwd * -d indique le délimiteur, and -f le champ à garder. * Utilisez "man cut" pour voir les autres options - **lsof** : Abréviation de "LiSt Open Files", affiche les fichiers ouverts sur votre système * Usage :...@...:~ $ lsof * À coupler avec grep pour filtrer les résultats - **netstat** : Surveille l'activité réseau * Ports ouverts :...@...:~ $ netstat -l * Indique le processus :...@...:~ $ netstat -lp * Temps réel :...@...:~ $ netstat -lpc * Il existe plein d'autres options, utilisez "man netstat" pour en savoir plus - **sed** : Similaire à awk, mais utilisant uniquement des expressions régulières * Syntaxe :...@...:~ $ sed