{{tag>administration système console terminal shell tutoriel}}
====== La Ligne de commande sous GNU/Linux ======
===== Introduction =====
Cette page vise à présenter une liste non exhaustive de commandes connues et souvent utilisées.
* Il ne sera fait aucune différence entre les options [[wpfr>POSIX|POSIX]] et [[wpfr>Gnu|GNU]]\\
* Il est presque toujours possible de combiner les options (exemple : **ls -l -a** deviendra **ls -la**)
* Il ne sera pas précisé si les commandes doivent être exécutées avec des [[:sudo|droits plus élevés]] que ceux des simples utilisateurs
* Les mots //répertoire// et //dossier// sont équivalents.
La plupart des commandes présentées ici sont documentées dans votre système. Il vous suffit de taper dans une console **man** suivi d'un espace et du nom de la commande pour avoir toutes les informations sur le fonctionnement de la commande voulue. Pour plus d'informations à ce sujet, reportez-vous à la page << **[[:man|Le manuel]]** >>.
==== Notions de relativité des chemins de fichier ====
Le titre est un peu compliqué, mais le principe est simple : un fichier peut être référencé de manière **relative**, par rapport au répertoire courant, ou de manière **absolue** par rapport à la racine. Le premier caractère de la référence permet d'effectuer la distinction : les références absolues commencent toujours par le caractère **/**, alors que les références relatives commencent par tout autre caractère valide pour un nom de fichier.\\
Ainsi, les deux commandes ci-dessous sont équivalentes et peuvent être utilisées l'une comme l'autre pour renommer le fichier MonFichier localisé dans le répertoire personnel de l'utilisateur (/home/user) :
user@mulet:~$ mv MonFichier NouveauNomDuFichier
user@mulet:/srv $ mv /home/user/MonFichier /home/user/NouveauNomDuFichier
Dans le premier exemple, l'invite système (user@mulet:~$) montre que le répertoire courant est le répertoire personnel de l'utilisateur ("~", caractère spécial équivalent /home/user) ; la référence au fichier à renommer est exprimée de manière relative par rapport à ce répertoire. Dans le second exemple, l'invite système montre que le répertoire courant est /srv ; pour désigner le même fichier, il faut donc utiliser une référence absolue : /home/user/MonFichier (qui aurait tout aussi bien pu être exprimée par ~/MonFichier).
Comme vous le constatez, l'espace sert à séparer les directives d'une commande. Si dans votre ligne de commande un chemin comporte un espace dans le nom du répertoire et/ou du fichier, encadrez alors la totalité du chemin avec des guillemets ou des apostrophes. Exemple :
user@mulet:/srv $ mv /home/user/MonFichier '/home/user/Nouveau NomDuFichier'
==== Raccourcis pratiques ====
Les caractères spéciaux **~**, **.** et **..** correspondent respectivement au répertoire personnel de l'utilisateur, au répertoire courant et au répertoire parent. Ils permettent tous les trois de simplifier l'expression de références absolues. \\
Ainsi pour déplacer le fichier **/UnRep/MonFichier** respectivement dans le répertoire de l'utilisateur (/home/user), le répertoire courant (/rep1/sousrep2) ou le sous-répertoire toto du répertoire parent (/rep1/toto), on pourra utiliser les commandes ci-dessous :
user@mulet:/rep1/sousrep2 $ mv /UnRep/MonFichier ~
user@mulet:/rep1/sousrep2 $ mv /UnRep/MonFichier .
user@mulet:/rep1/sousrep2 $ mv /UnRep/MonFichier ../toto/
==== Méta-caractères ====
Pour de nombreuses commandes, il est souvent utile de faire appel à des méta-caractères :
Il y a évidemment le caractère * qui remplace un ou plusieurs caractères (ou même aucun !) :
===== Les commandes Unix de base à connaître =====
==== man ====
* Équivalent MS-DOS/MS Windows : **help**
* Signification : //Page de manuel//
* Affiche les pages du manuel système.\\ Chaque argument donné à man est généralement le nom d'un programme, d'un utilitaire, d'une fonction ou d'un fichier spécial.
* Exemples d'utilisation :
* **man man**\\ affiche les informations pour l'utilisation de man
* **man exports**\\ décrit le contenu et la syntaxe du fichier **/etc/exports** pour les partages NFS
* 'q' pour quitter.
* Voir aussi la page [[:man]]
==== ls ====
* Équivalent MS-DOS/MS Windows : **dir**
* Signification : //list segment//
* Permet de lister un répertoire
* Options les plus fréquentes :
* **-l** : Permet un affichage détaillé du répertoire (permissions d'accès, le nombre de liens physiques, le nom du propriétaire et du groupe, la taille en octets, et l'horodatage)
* **-h** : Associé avec **-l** affiche la taille des fichiers avec un suffixe correspondant à l'unité (K, M, G)
* **-a** : Permet l'affichage des fichiers et répertoires cachés (ceux qui commencent par un . (point))
* **-lct** : Permet de trier les fichiers et répertoires par date de modification décroissante
* Exemples d'utilisation :
* **ls -a**\\ affiche tous les fichiers et répertoires y compris les cachés du répertoire courant
* **ls /etc/**\\ affiche le contenu du répertoire /etc/
* **lspci** ou **lsusb**\\ affiche les périphériques PCI ou USB connectés.
* **lshw** affiche les caractéristiques de tout le matériel physique, non-logiciel (hardware).
* [[:ls_couleur|ls en couleur]]
**Remarque :**\\
Il existe également une commande **dir** quasi identique à la commande **ls**. Elle s'utilise de la même façon, avec les mêmes options, et les pages man (manuel) les 2 commandes sont d'ailleurs identiques.
Seul l'affichage par défaut de la sortie est différent avec **dir** :
* par défaut la sortie n'est pas en couleur (il faut utiliser l'option **%%--color%%** pour obtenir une sortie en couleur avec dir) ;
* les caractères spéciaux tels que les espaces dans les noms des fichiers et dossiers sont précédés d'un caractère \ (backslash).
La commande << **ls -C -b** >> produira une sortie identique à la commande **dir** employée sans options.
==== cd ====
* Équivalent MS-DOS/MS Windows : **cd**
* Signification : //change directory//
* Permet de se promener dans les répertoires
* Exemples d'utilisation :
* **cd** \\ permet de revenir au répertoire /home/utilisateur (identique à cd ~)
* **cd -** \\ permet de revenir au répertoire précedent
* **cd ..** \\ permet de remonter au répertoire parent (ne pas oublier l'espace contrairement à windows)
* **cd /** \\ permet de remonter à la racine de l'ensemble du système de fichiers
* **cd /usr/bin/** \\ se place dans le répertoire /usr/bin/
==== mv ====
* Équivalent MS-DOS/MS Windows : **move** ou **ren**
* Signification : //move//
* Permet de déplacer ou renommer des fichiers et des répertoires
* Options les plus fréquentes :
* **-f** : Écrase les fichiers de destination sans confirmation
* **-i** : Demande confirmation avant d'écraser
* **-u** : N'écrase pas le fichier de destination si celui-ci est plus récent
* Exemples d'utilisation :
* **mv monFichier unRep/** \\ Déplace //monFichier// dans le répertoire //unRep//
* **mv unRep/monFichier .** \\ Déplace le fichier //monFichier// du répertoire //unRep// là où on se trouve
* **mv unRep monRep** \\ Renomme //unRep// en //monRep//
==== cp ====
* Équivalent MS-DOS/MS Windows : **copy** (et **xcopy** avec l'option **-u**)
* Signification : //copy//
* Permet de copier des fichiers ou des répertoires
* Options les plus fréquentes :
* **-a** : Archive. Copie en gardant les droits, dates, propriétaires, groupes, etc.
* **-i** : Demande une confirmation avant d'écraser
* **-f** : Si le fichier de destination existe et ne peut être ouvert alors le détruire et essayer à nouveau
* **-R** ou **-r** : Copie un répertoire et tout son contenu, y compris les éventuels sous-répertoires
* **-u** : Ne copie que les fichiers plus récents ou qui n'existent pas
* **-v** : permet de suivre les copies réalisées en temps réel
* Exemples d'utilisation :
* **cp monFichier sousrep/** \\ Copie //monFichier// dans //sousrep//
* **cp -r monRep/ ailleurs/** \\ Copie le répertoire //monRep// (et ses éventuels sous-répertoires) vers //ailleurs// en créant le répertoire //ailleurs/monRep// s'il n'existe pas.
* **cp monRep/{*.cpp, *.h, MakeFile, Session.vim} ailleurs/**\\ Copie les fichiers spécifiés dans {} contenus dans le répertoire //monRep// vers //ailleurs//
==== rm ====
Attention cette commande est très dangereuse ([[:commandes_dangereuses|voir commandes dangereuses]]). **Exécutez-la uniquement si vous savez ce que vous faites** !
* Équivalent MS-DOS/MS Windows : **del** ou **erase**
* Signification : //remove//
* Permet d'effacer des fichiers
* Options les plus fréquentes :
* **-i** : Demande confirmation avant d'effacer
* **-f** : Ne demande pas de confirmation avant d'effacer
* **-r** : Efface //**r**écursivement//. Ce mot signifie "y compris ses sous-répertoires et leur contenu".
* Exemples d'utilisation :
* **rm CeFichier** \\ Efface du répertoire courant le fichier //CeFichier//.
* **rm -rf /tmp/LeRep** \\ Efface le répertoire ///tmp/LeRep// ainsi que tous ses fichiers, liens et sous-répertoires sans demander de confirmation.
* **rm -rf /* **\\ ...La commande qui "tue"... Disparition immédiate de tous vos fichiers.
==== mkdir ====
* Équivalent MS-DOS/MS Windows : **mkdir** ou **md**
* Signification : //make directory//
* Crée un répertoire vide
* Options les plus fréquentes :
* **-p** : Crée les répertoires parents s'ils n'existent pas
* Exemples d'utilisation :
* **mkdir photos** \\ Crée le répertoire //photos//
* **mkdir -p photos/2005/noel** \\ Crée le répertoire //noel// et s'ils n'existent pas les répertoires //2005// et //photos//
==== rmdir ====
* Équivalent MS-DOS/MS Windows : **rmdir** ou **rd**
* Signification : //remove directory//
* Supprime un répertoire (vide)
* Options les plus fréquentes :
* **-p** : Supprime les répertoires parents s'ils deviennent vides
* Exemples d'utilisation :
* **rmdir LeRep** \\ Supprime le répertoire //LeRep//
==== top ====
* Montre la charge CPU
* La combinaison des touches [ Majuscules + M ] permet de classer en fonction de l'occupation de la mémoire.
* La combinaison des touches [ Majuscules + P ] classe en fonction de l'occupation du CPU.
* La combinaison des touches [ Majuscules + W ] permet de conserver ces préférences
* La touche [ k ] permet de tuer directement un processus en rentrant son PID
* La touche [ q ] permet de quitter le programme
* Options les plus fréquentes :
* **-u** : affiche les processus pour un utilisateur donné
* Exemples d'utilisation :
* **top**
* **top -u root**
* 'q' pour quitter.
* Alternative : [[http://htop.sourceforge.net/|htop]] qui est plus complet et disponible dans les dépôts ([[apt>htop|htop]])
==== pwd ====
* Équivalent MS-DOS/MS Windows : **chdir**
* Signification : //print working directory//
* Affiche le répertoire de travail
==== ln ====
* Signification : //link//
* Crée un [[:lien_physique_et_symbolique|lien (physique ou symbolique)]] vers un fichier (ou un répertoire)
* Options les plus fréquentes :
* **-s** : Crée un lien symbolique (similaire au raccourci du monde Windows)
* **-f** : Force l'écrasement du fichier de destination s'il existe
* **-d** : Crée un lien sur un répertoire (uniquement en mode sudo ou root)
* Exemples d'utilisation :
* **ln -s Rep1/Rep2/Monfichier MonLien** \\ Crée un lien symbolique //MonLien// de //Rep1/Rep2/Monfichier// dans le répertoire où on se trouve
* **ln Monfichier unRep/AutreNom** \\ Crée un lien physique //AutreNom// de //Monfichier// dans le répertoire //unRep//
* Note :
* Vérifiez que vous vous trouvez bien dans le répertoire dans lequel vous souhaitez créer le lien avant d’exécuter cette commande.
==== find ====
* Équivalent MS-DOS/MS Windows : **find**
* Signification : //rechercher//
* Permet de chercher des fichiers et éventuellement d'exécuter des commandes sur ceux-ci ; la recherche est //récursive// c'est-à-dire qu'elle concerne le répertoire de départ et toute sa descendance (sous-répertoires ainsi que toute leur descendance ...)
* Options les plus fréquentes :
* **-name** : Recherche d'un fichier par son nom
* **-iname** : Même chose que **-name** mais insensible à la casse
* **-type** : Recherche de fichier d'un certain type
* **-atime** : Recherche par date de dernier accès
* **-mtime** : Recherche par date de dernière modification
* **-link** : Recherche du nombre de liens au fichier
* **-user** : Recherche de fichiers appartenant à l'utilisateur donné
* **-group** : Recherche de fichiers appartenant au groupe donné
* Actions les plus fréquentes :
* **-exec** : Exécute la commande donnée aux fichiers trouvés
* **-ok** : Même chose que **-exec** mais demande une confirmation
* **-ls** : exécute la commande **ls** à chaque fichier trouvé
* Opérateurs les plus fréquents :
* **-a** : Opérateur ET
* **-o** : Opérateur OU
* **!** ou **-not** : Opérateur NOT
* Exemples d'utilisation :
== simple ==
Placez-vous dans le répertoire à partir duquel la recherche //récursive// doit être effectuée et faites :
* **find monfichier* **\\ Recherche un fichier commençant par "monfichier"
* **find -name *monfichier*.ogg** \\ Recherche un fichier contenant "monfichier" et ayant pour extension ".ogg"
== avancé ==
* **find /home/ -name monfichier ** \\ Recherche le fichier //monfichier// dans toute la descendance de /home/
* **find . -name "*.c"** \\ Recherche tous les fichiers ayant une extension //.c//
* **find . -mtime -5** \\ Recherche les fichiers du répertoire courant qui ont été modifiés entre maintenant et il y a 5 jours
* **find /home/ -mtime -1 \! -type d** \\ Recherche uniquement les fichiers (//! -type d// signifie n'était pas un répertoire) ayant été modifiés ces dernières 24h
* **find . ! -user root ** \\ Affiche tous les fichiers n'appartenant pas à l'utilisateur root
* **find . \( -name '*.wmv' -o -name '*.wma' \) -exec rm {} \;** \\ Recherche et supprime tous les fichiers WMA et WMV trouvés
* **find . \( -type f -exec sudo chmod 664 "{}" \; \) , \( -type d -exec sudo chmod 775 "{}" \; \)** \\ Modifie récursivement les droits en 664 sur les fichiers et en 775 sur les répertoires en une seule instruction
* [[http://www.go2linux.org/usages-examples-of-find-command|Autres exemples]] ou encore [[https://touticphoto.fr/assistance-informatique/26-commande-find-sous-linux-avec-l-option-regex|sur touticphoto]]
==== grep ====
* Équivalent MS-DOS/MS Windows : **find**
* Signification : //global regular expression print//
* Recherche une chaîne de caractères dans des fichiers (ou depuis la console si aucun fichier n'est indiqué) ; souvent utilisé en filtre avec d'autres commandes.
* Options les plus fréquentes :
* **-c** : Retourne le nombre de lignes au lieu des lignes elles-mêmes
* **-n** : Retourne les lignes préfixées par leur numéro
* **-i** : Insensible à la casse
* **-r** : Recherche récursivement dans tous les sous-répertoires ; on peut utiliser la commande **rgrep**
* **-G** : Recherche en utilisant une expression rationnelle basique (option par défaut)
* **-E** : Recherche en utilisant une expression rationnelle étendue ; on peut utiliser la commande **egrep**
* **-F** : Recherche en utilisant une chaîne fixe ; on peut utiliser la commande **fgrep**
* **-v toto** : Recherche les lignes qui ne contiennent pas le mot //toto//
* Exemples d'utilisation :
* **grep -n montexte monfichier** \\ Retourne toutes les lignes ainsi que leur numéro où //montexte// apparaît dans //monfichier//
==== locate ====
Son utilisation - très simple - est détaillée ici :
[[:recherche_ligne_commande]]
==== cat ====
* Équivalent MS-DOS/MS Windows : **type**
* Signification : //concatenate//
* Affiche le contenu d'un fichier
* Options les plus fréquentes :
* **-n** : Affiche les numéros de ligne
* **-v** : Affiche les caractères de contrôles
* Exemple d'utilisation :
* **cat -n monFichier** \\ Affiche //monFichier// en numérotant les lignes à partir de 1
* créer un fichier texte contenant quelques lignes sans avoir recours à un éditeur : cat > fichier
texte à inclure dans le fichier
Ctrl+D pour terminer.
==== more ====
* Équivalent MS-DOS/MS Windows : **more**
* Signification : //more//
* Affiche un fichier page par page
* Options les plus fréquentes :
* **-s** : Regroupe les lignes vides consécutives en une seule
* **-f** : Ne coupe pas les lignes longues
* Exemple d'utilisation :
* **more -sf monFichier** \\ Affiche //monFichier// page par page en concaténant les lignes vides sans couper les lignes longues.
==== less ====
* Équivalent MS-DOS/MS Windows : **less**
* Signification : //less//
* Affiche un fichier en permettant la navigation, ainsi que certaines possibilités de vi (par ex: la recherche)
* Options les plus fréquentes :
* **-e** ou **-E** : Quitte automatiquement la deuxième fois que la fin du fichier est atteinte, ou dès la première fois avec **-E**.
* **-F** : Quitte automatiquement si le fichier tient sur le terminal.
* **-m** ou **-M** : Prompt long a la **more**.
* **-r** ou **-R** : Autorise les caractères spéciaux.
* **-x** : Règle la taille des tabulations.
* **-~** : ne comble pas les lignes vides par des ~
* Exemple d'utilisation :
* **less -Emr~ monFichier** \\ Affiche //monFichier// page par page avec un prompt long (affichage du pourcentage du fichier parcouru) en affichant les caractères spéciaux sans combler les lignes vides par des ~
==== id ====
La commande **id** affiche les informations utilisateur et de groupe pour un utilisateur spécifié, ou si aucun utilisateur n'est spécifié, elle affiche les informations sur l'utilisateur courant
id ubuntu-user
uid=1001(ubuntu-user) gid=1001(ubuntu-user) groupes=1001(ubuntu-user),29(audio)
===== commandes système =====
==== chmod ====
* Équivalent MS-DOS/MS Windows : **cacls**
* Signification : //change mode//
* Modifie les permissions d'accès à un fichier ou à un répertoire.\\ Type d'autorisations (une autorisation d'exécution sur un répertoire autorise son ouverture) :
* **+** : Ajoute une permission
* **-** : Enlève une permission
* **=** : Autorise uniquement l'autorisation indiquée
* **r** : Lecture ; Valeur octale **4**
* **w** : Écriture ; Valeur octale **2**
* **x** : Exécution ; Valeur octale **1**
* **s** : Utilise les droits du propriétaire ou du groupe lors de l'exécution
* **u** : Propriétaire du fichier
* **g** : Groupe propriétaire du fichier
* **o** : Tous les autres utilisateurs
* Options les plus fréquentes :
* **-R** : Récursif, modifie les autorisations d'un répertoire et tout ce qu'il contient
* **-c** : Ne montrer que les fichiers ayant été réellement modifiés
* **-f** : Ne pas afficher les messages d'erreur
* Exemples d'utilisation :
* **chmod ugo+x monRep** \\ Ajoute l'exécution (ouverture) du répertoire //monRep// à tous (propriétaire, groupe, autres)
* **chmod go-wx monRep** \\ Supprime l'autorisation d'écriture et l'exécution de //monRep// au groupe et aux autres
* **chmod u=rw,go=r MonFichier** \\ Fixe l'autorisation de lecture et d'écriture au propriétaire de //MonFichier// et une autorisation de lecture au groupe et aux autres.
* **chmod 644 MonFichier** \\ Exactement la même chose que ci-dessus mais en utilisant les valeurs octales (Nota : 6 = 4+2 = lecture + écriture)
* **chmod u=rw,g=r MonFichier** \\ Fixe l'autorisation d'ouverture et de lecture de //MonFichier// au propriétaire, uniquement la lecture au groupe et interdit tout accès aux autres.
* **chmod 640 MonFichier** \\ Exactement la même chose que ci-dessus mais en utilisant les valeurs octales
==== chown ====
* Équivalent MS-DOS/MS Windows : **cacls**
* Signification : //change owner//
* Change le propriétaire et le groupe propriétaire d'un fichier
* Options les plus fréquentes :
* **-R** : Modifie récursivement un répertoire et tout ce qu'il contient
* Exemples d'utilisation :
* **chown autreUtilisateur MonFichier** \\ Change le propriétaire de //MonFichier// en //autreUtilisateur//
* **chown -R lui:nous monRep** \\ Change le propriétaire en //lui// et le groupe propriétaire en //nous// du répertoire //monRep// ainsi que tout ce qu'il contient
==== chgrp ====
* Signification : //change groupe//
* Change le groupe propriétaire d'un fichier
* Options les plus fréquentes :
* **-R** : Change récursivement un répertoire et tout ce qu'il contient
* **-h** : Change le groupe propriétaire d'un lien symbolique et seulement lui (ne touche pas à la destination du lien)
* **-L** : Si fournie avec **R** , change le groupe propriétaire d'un répertoire et des fichiers qu'il contient s'il est pointé par un lien symbolique rencontré lors de l'exécution
* Exemples d'utilisation :
* **chgrp unGroupe MonFichier** \\ Change le groupe propriétaire du fichier //MonFichier// en //unGroupe//
* **chgrp -R unGroupe monRep** \\ Change le groupe propriétaire du répertoire //monRep// ainsi que tout ce qu'il contient en //unGroupe//
==== free ====
* Signification : //mémoire libre//
* Affiche la mémoire disponible / utilisée du système
* Options les plus fréquentes :
* **-b** : Affiche la mémoire en octets (**b**ytes)
* **-k** : Affiche la mémoire en **k**ilooctets
* **-m** : Affiche la mémoire en **m**égaoctets
* **-g** : Affiche la mémoire en **g**igaoctets
* **-h** : Affiche la mémoire en unités pertinentes pour l'**h**umain
* **-s** : Spécifie le délai de réaffichage de la mémoire
* **-t** : Affiche en plus la ligne des totaux (RAM + swap)
* Exemples d'utilisation :
* **free -th**
* **free -m -s 5** \\ Affiche la mémoire du système en mégaoctets toutes les 5 secondes
==== mount ====
* Signification : //mount//
* Monter un système de fichiers
* Options les plus fréquentes :
* **-a** : Monter tous les systèmes de fichiers déclarés dans le fichier ///etc/fstab//
* **-t** : Précise le type de fichier à monter
* **-o** : Ajouter une option. Options adjointes à **-o** les plus fréquentes :
* **auto** : Permet d'être monté par **-a**
* **async** : Les entrées/sorties sur le système de fichiers seront asynchrones
* **defaults** : Utilise les options **rw**, **suid**, **dev**, **exec**, **auto**, **nouser**, et **async**.
* **dev** : Interprète les fichiers spéciaux de périphériques du système présent dans ///dev///
* **exec** : Permet l'exécution de fichiers binaires du système monté
* **noauto** : Empêche d'être monté avec **-a**
* **nodev** : Ne pas interpréter les fichiers spéciaux de périphériques du système
* **noexec** : Empêche l'exécution de fichiers binaires du système monté
* **nouser** : Ne pas autoriser d'autres utilisateurs que root (ou sudo) à monter le système de fichiers (comportement par défaut)
* **ro** : Monte le système en lecture seule
* **rw** : Monte le système en lecture et écriture
* **suid** : Prend en compte les bits [[wpfr>Setuid|SetUID ou SetGID]] du système monté
* **user** : Permet aux utilisateurs ordinaires de monter et démonter le système de fichiers (implique **noexec**, **nosuid**, et **nodev** sauf si surchargées)
* Exemples d'utilisation :
* **mount** \\ Liste tous les systèmes de fichiers actuellement montés
* **mount -a** \\ Monte tous les systèmes de fichiers déclarés dans le fichier ///etc/fstab//
* **mount /mnt/maPartion** \\ Monte le système de fichiers ad-hoc déclarés dans le fichier ///etc/fstab//
* **mount -t iso9660 monFichier.iso /mnt/monIso -o loop** \\ Monte dans un //périphérique boucle// (loop) le fichier iso //monFichier.iso// dans le répertoire ///mnt/monIso//
* **mount -t vfat -o defaults,rw,user,umask=022,uid=1000 /dev/sda1 /mnt/Mondisk/** \\ Monte un disque dur USB (///dev/sda1//) formaté en FAT32 (//-t vfat//) en lecture écriture (//rw//) dans le répertoire ///mnt/Mondisk/// ; tous les utilisateurs peuvent le démonter (//user//), les droits d'exécution (//uid=1000//) sont fixés à l'utilisateur ayant l'UID 1000 (sous Ubuntu, l'uid 1000 correspond au premier utilisateur créé) et la création d'un fichier s'effectuera avec les permissions 644 (%%rw-r---r--%%) et pour un répertoire 644 (%%rwxr-xr-x%%) (//umask 022//) 666-022
* Ressource :
* À lire aussi [[:mount_fstab]]
==== umount ====
* Signification : //unmout//
* Démonte un système de fichiers
* Options les plus fréquentes :
* **-a** : Démonte tous les systèmes de fichiers présents dans ///etc/mtab//
* **-d** : Si le système monté est un périphérique //loop//, libérer le périphérique.
* **-f** : Forcer le démontage
* **-r** : Si impossible de démonter, monter en lecture seule
* Exemples d'utilisation :
* **umount /mnt/Mondisk** \\ Démonte le système de fichiers monté dans ///mnt/Mondisk//
* **umount -f /dev/cdrom** \\ Force le démontage du périphérique CDROM
* **umount -d /mnt/monIso** \\ Démonte et libère le périphérique loop
* **umount -a** \\ Démonte tous les systèmes de fichiers montés (à l'exception de ///proc//) ; ne sert que lorsque l'on veut redémarrer ou éteindre sa machine manuellement et proprement.
==== sudo ====
* Équivalent MS-DOS/MS Windows : **runas**
* Signification : //substitute user - do//
* Permet d'exécuter des commandes en tant qu'un autre utilisateur, donc avec d'autres privilèges que les siens.
* Options les plus fréquentes :
* **-s** : Importe les variables d'environnement du shell
* **-k** : Lorsque l'on utilise **sudo**, il garde en mémoire le mot de passe ; cette option déconnecte l'utilisateur et forcera à redemander un mot de passe si **sudo** est exécuté avant le timeout défini.
* Exemples d'utilisation :
* ** sudo reboot** \\ Lance la commande **reboot** avec les droits de l'utilisateur root
* Ressources :
* [[:sudo]]
* Site officiel de **sudo** : [[http://www.courtesan.com/sudo/|Sudo Main Page]]
* Voir aussi la commande **visudo**
==== ps ====
* Équivalent MS-DOS/MS Windows : **tasklist**
* Signification : //processes snapshot//
* Affiche les processus en cours
* Options les plus fréquentes :
* **-u** : Affiche les processus de l'utilisateur qui exécute la commande
* **-au** : Affiche les processus de tous les utilisateurs
* **-aux** : Affiche l'intégralité des processus du système. Équivalent à **ps -A**
* **-faux** : Affiche tous les processus du système en les regroupant par enchaînement d'exécution.
* Exemples d'utilisation :
* **ps -u** \\ Tous les processus de l'utilisateur courant
* **ps -aux** \\ Tous les processus en cours
pensez à utiliser avec grep pour limiter la liste : ps -aux | grep tuxpaint ne vous retournera que les processus contenant tuxpaint
==== kill / killall ====
* Équivalent MS-DOS/MS Windows : **taskkill**
* Signification : //kill// / //kill all// [tuer/tuer tous] lalalalalalalala
* Permet d'envoyer un signal à un processus ; **kill** ne comprend que les PID (Process Identifier, numéro d'ordre du processus), **killall** quant à lui comprend le nom du processus.
* Options les plus fréquentes :
* ** -s** : Indique quel signal envoyer au processus ; Le signal peut être identifié soit par son nom (exemple : SIGTERM) soit par son numéro (exemple : 9) ; Cette option peut être remplacée par le numéro du signal : **-s 9** est équivalent à **-9**.
* ** -l** : Affiche la liste des signaux connus.
* Les signaux les plus courants sont : \\ **HUP** signal **1** : signal de fin d'exécution où le processus doit relire son fichier de configuration. \\ **TERM** signal **15** : Le signal Terminate indique à un processus qu'il doit s'arrêter. \\ **KILL** signal **9** : Le signal Kill indique au système qu'il doit arrêter un processus qui ne répond plus.
* Exemples d'utilisation :
* **kill -15 14774** : Envoie le signal 15, ou TERM, au processus ayant le numéro 14774 ce qui a pour effet de **terminer** //proprement// le processus.
* **kill -9 7804** : Envoie le signal 9, ou KILL, au processus ayant le numéro 7804 ce qui a pour effet de **tuer** le processus.
* **killall -TERM firefox-bin** : Envoie le signal TERM, ou 15, au processus firefox-bin ce qui a pour effet de le fermer.
* Il est généralement conseillé de lancer des signaux de faible importance avant de lancer la grosse artillerie. En pratique, tester dans l'ordre et deux fois chacune de ces commandes :kill pid (envoie le signal 15, TERM)
kill -INT pid (envoie le signal 2, INT)
kill -KILL pid (envoie le signal 9, KILL)
L'option par défaut de kill est TERM, c'est pourquoi il n'est pas nécessaire de le préciser explicitement. ''kill'' et ''kill -TERM'' sont donc équivalents.
* Ça ne marche pas ? Deux possibilités, diagnosticable à l'aide de la commande **ps aux|grep nom_du_process** :
* Le processus est devenu « zombie ». Dans ce cas, la commande précédente affiche un 'Z'. Pour le tuer, il faut tuer ou redémarrer son processus parent, que l'on peut déterminer avec la commande **ps -ef** ou **ps afx**.
* Le processus est ininterruptible (il apparaît comme 'D' avec la commande précédente), bloqué sur une opération d'entrée/sortie (I/O), vraisemblablement suite à un bug dans un pilote matériel. Dans ce cas, aucune issue : la politique des développeurs du noyau linux est de considérer qu'avoir la main sur ce type de processus compromettrait trop profondément la stabilité du système. C'est l'un des rares cas où l'on n'a pas d'autre choix que de redémarrer l'ordinateur.
==== shutdown ====
* Équivalent MS-DOS/MS Windows : shutdown
* Signification : //shutdown// [éteindre]
* Permet d'éteindre ou relancer la machine au bout d'un temps déterminé (requis : on peut mettre now pour éteindre immédiatement). Les nouvelles connexions seront bloquées quelques minutes avant l'extinction et les utilisateurs connectés sont prévenus à l'avance.
* Options les plus fréquentes :
* ** -r** : pour relancer (reboot).
* ** -P** : pour éteindre.
* ** -t** : pour programmer le temps (en secondes)
* ** -c** : pour annuler
* Exemples d'utilisation :
* **shutdown -r now** : reboot immédiat
* **shutdown -P now** : extinction immédiate
* **shutdown -r -t 600** : reboot dans 600 secondes (10 minutes)
* **shutdown -c** : annule toutes programmation d'extinction
*
Il semblerait que shutdown now ne fonctionne plus, ni sur Ubuntu, ni sur OpenBSD (du moins sur les miens). Cependant, la commande **shutdown -P now** fonctionne.
En effet, il suffit de remplacer "now" par "0" soit 0 minutes et le tour est joué.
==== passwd ====
* Signification : //password//
* Permet de modifier le mot de passe d'un utilisateur.
* Options les plus fréquentes :
* **-S** : Affiche l'état d'un compte (nom du compte, bloqué (L), si l'utilisateur n'a pas de mot de passe (NP) ou a un mot de passe utilisable (P), date de dernière modification du mot de passe, durée minimum avant modification, durée maximum de validité, durée d'avertissement, durée d'inactivité autorisée) \\ À moins d'être administrateur système ou réseau (auquel cas pourquoi lisez-vous ces lignes ;-) ?) cette commande s'utilise généralement sans option.
* Exemple d'utilisation :
* **passwd ** \\ Demande à changer le mot de passe
==== groups ====
* Signification : //groups//
* Affiche les groupes auxquels appartient un utilisateur
* Exemples d'utilisation :
* **groups** \\ Affiche la liste des groupes auxquels appartient l'utilisateur ayant tapé la commande.
* **groups MonUtilisateur** \\ Affiche tous les groupes auxquels appartient l'utilisateur //MonUtilisateur//.
==== adduser ====
* Signification : "ajouter un utilisateur" (en anglais : //add user//)
* Ajoute un utilisateur, ou un groupe, au système.
* Options les plus fréquentes :
* ** %%--%%disabled-login** : Crée un nouvel utilisateur qui ne pourra se connecter jusqu'à ce qu'un mot de passe lui soit attribué.
* ** %%--%%disabled-password** : Comme **%%--%%disabled-login** sauf que le nouvel utilisateur pourra se connecter en SSH avec des clefs RSA : pratique pour créer un utilisateur qui ne se connectera que via SSH.
* ** %%--%%system** : Crée un utilisateur système.
* ** %%--%%group %%--%%system** : Un groupe ayant le même nom et le même identifiant numérique que l'utilisateur système est créé.
* ** %%--%%home tel-répertoire** : Utilise "tel-répertoire" comme répertoire personnel de l'utilisateur, plutôt que la valeur par défaut. Si le répertoire n'existe pas, il est créé, et les fichiers du squelette y sont copiés.
* ** %%--%%no-create-home** : Ne crée pas de répertoire HOME.
* Exemples d'utilisation :
* **adduser MonUtilisateur** \\ Crée l'utilisateur //MonUtilisateur//.
* **adduser %%--%%disabled-password %%--%%no-create-home UtilisateurSSH** \\ Crée un utilisateur //UtilisateurSSH// sans mot de passe ni répertoire personnel dans /home, qui ne pourra pas se connecter à la machine **directement**, mais en SSH, oui.
* **adduser %%--%%disabled-password %%--%%home /home/UtilisateurSSH UtilisateurSSH** \\ Même chose que ci-dessus sauf qu'on lui donne le même répertoire HOME qu'à l'utilisateur //UtilisateurSSH// créé en premier.
* **adduser UtilisateurSSH fuse** \\ Ajoute l'utilisateur //UtilisateurSSH// (créé préalablement) dans le groupe "//fuse//". On peut faire aussi un: **gpasswd -a $USER fuse**
* **adduser NouvelUtilisateur %%--%%ingroup users** \\ Crée l'utilisateur //NouvelUtilisateur// et l'ajoute au groupe "//users//".
* **adduser NouvelUtilisateur %%--%%ingroup users %%--%%uid 1000 ** \\ Crée l'utilisateur //NouvelUtilisateur// avec l'uid 1000 et l'ajoute au groupe "//users//" (utile pour écrire sur une partition ext2/3/4 externe au système ou un dossier appartenant au uid 1000).
==== deluser ====
* Signification : //delete user//
* Supprime un utilisateur du système.
* Option la plus fréquente :
* **%%--%%system** : Ne supprime l'utilisateur que si c'est un utilisateur système.
* **%%--%%remove-home** : Supprime l'utilisateur ainsi que son répertoire dans le home.
* Exemple d'utilisation :
* **deluser UtilisateurSSH** \\ Supprime l'utilisateur //UtilisateurSSH//
* **deluser --remove-home NouvelUtilisateur** \\ Supprime l'utilisateur //NouvelUtilisateur// ainsi que le répertoire ''/home/NouvelUtilisateur''
* **deluser NouvelUtilisateur users** \\ Supprime l'utilisateur //NouvelUtilisateur// du groupe "//users//"
==== usermod ====
* Signification : //user modification//
* Modifie les paramètres d'un compte utilisateur.
* Options les plus fréquentes :
* ** -G, --groups** GROUPE1[,GROUPE2,...[,GROUPEN]]] : Ajouter l'utilisateur aux groupes précédents. ATTENTION : si l'utilisateur fait partie d'un groupe qui n'est pas listé dans votre ligne de commande ("admin" par exemple), l'utilisateur sera supprimé de ce groupe avec des conséquences pouvant être désastreuses. Ce comportement peut être changé avec l'option **-a**, qui permet d'ajouter l'utilisateur à une liste de groupes supplémentaires sans prendre le risque de le supprimer d'autres groupes importants.
* Exemples d'utilisation :
* **usermod -aG toto machin** \\ Ajoute l'utilisateur machin au groupe toto sans supprimer machin de ses groupes d'origine.
* **usermod -g group1 user1** \\ Défini pour l'utilisateur user1 le groupe group1 comme groupe primaire
* **sudo usermod -d /home/nouveau_login -m -l nouveau_login ancien_login** \\ Permet de renommer le répertoire (dossier) utilisateur et de changer son nom. Pratique lorsque le pc change de mains.
==== df ====
* Signification : //disk free//
* Affiche la quantité d'espace disque utilisée par les systèmes de fichiers.
* Options les plus fréquentes :
* **-a** : Affiche tous les systèmes de fichiers, y compris ceux de 0 blocs (par exemple : proc, sysfs, usbfs et tmpfs)
* **-h** : Ajoute aux valeur un **M** pour mébioctet (2^20 octets) pour que ce soit plus lisible.
* **-H** : Pareil que **-h** mais en mégaoctets (10^6 octets).
* **-T** : Affiche le type du système de fichiers.
* Exemples d'utilisation :
* **df -h** \\ Affiche la quantité d'espace disque utilisé en mébioctets par les systèmes de fichiers.
* **df /home** \\ Affiche la quantité d'espace disque utilisé par la partition /home (si elle existe)
* **df -T -h** \\ Affiche le nom des partitions et leur point de montage.
* Alternative : On peut aussi utiliser [[http://projects.gw-computing.net/projects/dfc|dfc]], avec affichage en couleur de l'occupation des systèmes de fichiers.
==== fdisk ====
* Équivalent MS-DOS/MS Windows : **fdisk**
* Signification : //Manipulateur de partitions//
* Modifie la table de partition des disques, son utilisation est auto-documentée avec la commande **m**
* Options les plus fréquentes :
* **-l** Informations détaillées des disques
* Exemples d'utilisation
* **sudo fdisk /dev/sda**
* **sudo fdisk -l**
==== du ====
* Équivalent MS-DOS/MS Windows : **dir**
* Signification : //disk usage//
* Affiche l'espace disque utilisé par les fichiers et/ou les répertoires
* Options les plus fréquentes :
* **-a** : Afficher pour tous les fichiers et pas uniquement les répertoires.
* **-s** : Afficher le total sans lister les différents fichiers
* **-c** : Faire un total après avoir tout affiché.
* **-h** : Ajoute un suffixe correspondant à l'unité (K, M, G)
* **-H** : Idem que **-h** mais en puissance de 10
* Exemple d'utilisation :
* **du -hs dir** \\ Affiche la taille du répertoire dir ou du répertoire courant si dir est omis.
* **du -ch /home/MonUtilisateur** \\ Affiche la taille des répertoires contenus dans **/home/MonUtilisateur** en utilisant un suffixe puis le total.
* **du -sm ~/Images/*.jpg** \\ Affiche la taille totale des fichiers JPEG contenus dans le répertoire **~/Images**
==== uptime ====
* Signification : //uptime//
* Indique depuis quand le système fonctionne.
* Exemples d'utilisations :
* **uptime** \\ Affiche l'heure actuelle, la durée depuis laquelle le système fonctionne, le nombre d'utilisateurs actuellement connectés, et la charge système moyenne ; Commande de geek par excellence :-) qui ne sert pas à grand chose pour un utilisateur lambda, mais utile pour un administrateur.
==== lspci ====
* Signification : //list pci//
* Liste tous les périphériques PCI
* Option la plus fréquente :
* **-v** : Affiche des informations plus détaillées
* Exemples d'utilisation :
* **lspci**
==== lsusb ====
* Signification : //list usb//
* Liste tous les périphériques USB
* Option la plus fréquente :
* **-v** : Affiche des informations plus détaillées
* Exemples d'utilisation :
* **lsusb**
==== uname ====
* Signification : //unix name//
* Affiche des informations sur le système.
* Options les plus fréquentes :
* **-s** : Affiche le nom du noyau.
* **-n** : Affiche le nom de la machine (hostname).
* **-r** : Affiche la révision du noyau
* **-v** : Affiche la version du noyau
* **-m** : Affiche le type de processeur de la machine (i386, i686, etc.)
* **-o** : Affiche le nom du système d'exploitation
* **-a** : Afficher les informations en utilisant les options **-snrvmo**
* Exemple d'utilisation :
* **uname -a** \\ Affiche tout.
==== apt-get ====
* Signification : //avanced package tool - get//
* Permet l'installation et la désinstallation de paquets en tenant compte des dépendances ainsi que le téléchargement des paquets s'ils sont sur une source réseau.
* Commandes les plus fréquentes :
* **update** : Met à jour la liste des paquets disponibles en fonction des sources fournies.
* **upgrade** : Met à jour tous les paquets déjà installés.
* **dist-upgrade** : Pareil à upgrade mais permet en plus de passer à une version supérieure du noyau et de certains paquets, **sans changer de version d'ubuntu**.
* **install** : Installe un ou plusieurs paquets.
* **remove** : Supprime un ou plusieurs paquets.
* **clean** : Efface du système les installateurs, sans désinstaller de paquets.
* Options les plus fréquentes :
* **-f** : Utilisée avec **install** ou **remove** cette option permet de réparer un système dont les dépendances sont défectueuses.
* **-m** : Ignore les paquets manquants (à éviter si on ne sait pas exactement ce que l'on fait).
* **-s** : Fait une simulation des actions à mener sans rien toucher au système.
* **-y** : Répond automatiquement //oui// à toutes les questions.
* **-u** : Affiche les paquets mis à jour.
* **%%--%%purge** : À utiliser conjointement avec **remove** pour supprimer tout ce qui peut l'être (fichiers de configuration par exemple, sauf ceux éventuellement présents dans /home).
* **%%--%%reinstall** : Réinstaller les paquets avec leur version plus récente.
* Exemples d'utilisation :
* **sudo apt-get update** \\ Met à jour la liste des paquets **disponibles**.
* **sudo apt-get upgrade** \\ Met à jour tous les paquets installés.
* **sudo apt-get install paquet1 paquet2** \\ Installe paquet1 paquet2.
* **sudo apt-get %%--%%purge remove paquet3** \\ Supprime paquet3 ainsi que tous ses fichiers de configuration sauf ceux éventuellement présents dans /home.
Ne pas confondre avec **apt**, plus jeune, qui a beaucoup moins d'options. note>
* Ressources :
* [[:apt-get]]
* **man apt-get**
* Chez Debian le [[http://www.debian.org/doc/manuals/apt-howto/index.fr.html|APT HOWTO]]
==== apt-cache ====
* Signification : //avanced package tool - cache//
* Gestion des paquets et manipulation du cache par APT
* Commandes les plus fréquentes :
* **show** : Affiche les informations associées au paquet.
* **search** : Recherche l'expression régulière donnée sur tous les paquets disponibles.
* **depends** : Affiche les paquets dépendants du paquet donné.
* **rdepends** : Affiche les paquets qui ont en dépendance le paquet donné.
* **madison** : Affiche le dépôt dans lequel se trouve le paquet donné.
* Options les plus fréquentes :
* **-f** : Affiche tous les champs d'information.
* **-n** : Ne recherche que dans les noms des paquets.
* Exemples d'utilisation :
* **apt-cache show xeyes** \\ Affiche les informations associées au paquet //xeyes//.
* **apt-cache depends ubuntu-desktop** \\ Affiche toutes les dépendances du paquet //ubuntu-desktop//.
* **apt-cache rdepends gnome-about** \\ Affiche tous les paquets dont dépend le paquet //gnome-about//.
* **apt-cache search -n irc** \\ Recherche et affiche tous les paquets ayant dans leur nom //irc//
* **apt-cache madison brasero** \\ Indique le dépôt fournissant le paquet //brasero//
==== file ====
* Fonction : déterminer le type de //fichier//
* Permet d'identifier le type de fichier grâce à son [[wpfr>Multipurpose_Internet_Mail_Extensions|MIME]] en utilisant les tests //magic// sur le contenu des fichiers (en général les premiers bits). Les tests sont fournis par le paquet libmagic1.
* Exemples d'utilisation :
* $ file Images/karmic_koala-transparent_60px.png
Images/karmic_koala-transparent_60px.png: PNG image, 60 x 46, 8-bit/color RGBA, non-interlaced
* $ file /usr/share/example-content/Ubuntu_Free_Culture_Showcase/*
/usr/share/example-content/Ubuntu_Free_Culture_Showcase/How fast.ogg: Ogg data, Theora video
/usr/share/example-content/Ubuntu_Free_Culture_Showcase/Josh Woodward - Swansong.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~100000 bps, created by: Xiph.Org libVorbis I
* Voir aussi : [[exiftool]] du paquet [[apt://libimage-exiftool-perl|libimage-exiftool-perl]] qui travaille sur les métadonnées (lecture et écriture) des fichiers image, audio et vidéo.
Pour accéder aux merguez de Linux la commande : /MerguezGrillé est très utilisée
===== Voir aussi =====
==== Tutoriels vidéos ====
Une série de tutoriels vidéos concernant les commandes Unix est en cours de réalisation, voici les 3 vidéos disponibles qui donnent de bonnes bases.
* [[http://www.tutoriels-video.fr/decouverte-de-la-console-sous-ubuntu/|Découverte de la console et quelques généralités]] Partie 1
* [[http://www.tutoriels-video.fr/quelques-commandes-indispensables-sur-unix/|Quelques commandes indispensables]] Partie 2 (suite)
* [[http://www.tutoriels-video.fr/quelques-commandes-unix-avancees/|Des commandes Unix avancées]] Partie 3 (suite)
À noter que 2 autres vidéos vont venir sur le thème des chaînages de commandes et les scripts bash.
==== Liens ====
* [[:recherche_ligne_commande|Rechercher des fichiers en ligne de commande]]
* [[:commande_shell|Les commandes classées par catégorie et par usage]]
* Le site de Nadir Soualem très pédagogique dédié à Linux [[http://www.math-linux.com]], on y trouve des tutos très clairs, notamment[[http://www.math-linux.com/article.php3?id_article=22|une introduction à la console]]
* [[https://debian-facile.org/doc:systeme:commandes:gnu_linux|Les commandes GNU/Linux]] sur le Wiki de [[http://debian-facile.org/|Debian-Facile]]
* [[http://jp.barralis.com/linux-man/|Les pages de manuel en français sur le site de Jean-Philippe Barralis]]
* [[http://www.roesler-ac.de/wolfram/acro/Cmd.htm|Liste des acronymes Unix et leurs significations]]
* [[wpfr>Commandes_unix|Article de Wikipedia sur les commandes unix]]
* Une plaquette à imprimer et à garder dans sa poche avec les commandes importantes [[http://www.forgeard-grignon.fr/index.php?post/2007/10/22/Memento-pour-les-Linuxien|téléchargeable librement ici]] (merci de lire le mini cahier des charges avant de demander une modification)
* Une seconde plaquette, sur les commandes, en couleur celle-ci, est [[http://www.biologeek.com/journal/index.php/documentation-ubuntu-fr-telechargeable-en-relecture|disponible ici]]
* [[http://www.commandeslinux.fr/commandes-linux-fondamentales/|Commandes Linux fondamentales]]
----
//Contributeurs : [[:utilisateurs:CyberSDF]], [[:utilisateurs:krodelabestiole]]//