Le système d'exploitation GNU-Linux/Commandes de base
Éléments de syntaxe
[modifier | modifier le wikicode]Les commandes présentées dans les sections qui suivent sont introduites juste après un message d'invite qui dépend de la configuration du shell utilisé. Celui-ci est représenté par un signe dollar $. Il ne doit donc pas être tapé.
Le caractère dièse # marque le début d'un commentaire qui se termine en fin de ligne. Il n'est pas nécessaire de le recopier pour exécuter la commande.
Exemple :
$ pwd # affiche le répertoire courant
Pour tester cette commande, il suffit d'entrer p w d ↵.
Les lignes qui ne sont pas marquées du signe dollar indiquent ce que la commande précédente doit/peut afficher.
Par ailleurs, il existe deux opérateurs de concaténation des commandes :
- ";" : qui enchaine les commandes quelques soient leurs résultats. Exemple :
pwd ; pwd
. - "&" : qui stoppe l'enchainement si une commande renvoie une erreur. Exemple :
pwd & pwd
. De plus, si aucune commande ne figure après le "&", le terminal redonne le focus avant la fin de la première commande, de sorte que l'on peut en taper d'autres si elle est longue (en asynchrone).- "&&" : idem sans les informations sur les processus.
pwd (print working directory)
[modifier | modifier le wikicode]Affiche le répertoire courant.
$ pwd /home/alex
id
[modifier | modifier le wikicode]Affiche les informations relatives à l'utilisateur connecté.
$ id uid=1000(alex) gid=1000(alex) groupes=20(dialout), 24(cdrom), 25(floppy), 29(audio), 44(video), 46(plugdev), 106(netdev), 109(powerdev), 1000(alex)
passwd
[modifier | modifier le wikicode]Permet de changer son mot de passe
$ passwd
Changing password for alex
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd : le mot de passe a été mis à jour avec succès
Ne pas utiliser le symbole euros (€
) dans les mots de passe, car il est potentiellement mal géré par Linux et pourrait se voir systématiquement refusé.
cd (change directory)
[modifier | modifier le wikicode]Pour se placer dans un répertoire
$ cd . # . désigne le répertoire courant $ cd .. # .. désigne le répertoire parent $ cd / # / désigne le répertoire racine
$ cd /tmp # désigne le répertoire tmp appartenant à la racine $ cd tmp # désigne le répertoire tmp du répertoire courant $ cd ../tmp # désigne le répertoire tmp du répertoire parent du répertoire courant
$ cd ~ # permet de revenir dans son répertoire de travail (home directory) $ cd # idem
Connecté en root, la commande cd m'amène au répertoire /root qui est le répertoire de travail de l'utilisateur root.
Connecté avec l'utilisateur alex, cd m'amène au répertoire de travail de l'utilisateur alex, à savoir /home/alex.
ls (list sorting)
[modifier | modifier le wikicode]Liste les fichiers d'un répertoire
$ ls # liste les fichiers non cachés du répertoire courant $ ls -l # (l : long) : liste détaillée des fichiers du répertoire courant $ ls -a # (a : all) : liste tous les fichiers, y compris les fichiers cachés
On peut combiner plusieurs options, l'ordre n'est pas important. Les quatre commandes suivantes sont identiques :
$ ls -a -l $ ls -l -a $ ls -la $ ls -al
Lister de façon détaillée (-l) tous les fichiers, même cachés (-a), les plus récents (-t) en derniers (-r), avec leur taille en kilo-octets (-k) lisible facilement avec les unités K pour Kilo, M pour Mega, G pour Giga(-h).
$ ls -lartkh
Pour ne lister que les sous-dossiers :
ls -d */
Pour compter les éléments de la liste :
ls |wc -l
cat (concatenate)
[modifier | modifier le wikicode]Affiche le contenu d'un fichier ou de plusieurs fichiers concaténés sur la sortie standard (l'écran)
$ cat /etc/crontab # affiche le contenu du fichier /etc/crontab $ cat /etc/cron.daily /etc/cron.weekly # concatène les deux fichiers et affiche leur contenu
Pour que les modifications de fichiers s'ajoutent en temps réel sur la sortie standard, utiliser :
tail -f /etc/crontab
mkdir (make directory)
[modifier | modifier le wikicode]Permet de créer un répertoire
$ mkdir rep1 # crée un répertoire rep1 dans le répertoire courant $ mkdir /rep1 # tente de créer un répertoire rep1 à la racine, # le système refuse car je ne suis pas connecté en root
Exercice : je suis dans le répertoire /var/log, je souhaite créer un répertoire rep2 dans le répertoire /home/alex, comment faire ?
J'ai trois possibilités :
$ mkdir ../../home/alex/rep2 # on utilise un adressage relatif à la position où je suis : # on remonte dans l'arborescence jusqu'à la racine puis # on redescend jusqu'au répertoire alex)
$ mkdir /home/alex/rep2 # on utilise un adressage absolu en partant de la racine
$ mkdir ~/rep2 # on utilise ~ pour désigner le répertoire de travail
l'option -p permet de créer le(s) répertoire(s) parent(s).
$ mkdir -p rep1/rep2 # crée un répertoire parent rep1 si il n'existe pas, # et crée dans rep1 un répertoire rep2
rmdir (remove directory)
[modifier | modifier le wikicode]Supprimer un répertoire vide
$ rmdir rep1
cp (copy)
[modifier | modifier le wikicode]Copier un fichier
$ cp /etc/passwd /tmp # copie le fichier /etc/passwd dans le répertoire /tmp
$ cp /etc/passwd /tmp/nouveaunom # copie le fichier /etc/passwd dans le répertoire /tmp # et le renomme en nouveaunom
Attention, si le fichier destination existe déjà, il sera remplacé sans demande de confirmation !
Options courantes :
-i : si le fichier destination existe, demande confirmation avant de remplacer le fichier
Copier un dossier (avec son contenu)
[modifier | modifier le wikicode]cp -Rf mondossier /tmp
rm (remove)
[modifier | modifier le wikicode]Effacer un fichier
$ rm lefichier # efface le fichier lefichier
Attention, le fichier est effacé et sans demander confirmation !
Options courantes :
-i : demande confirmation avant d'effacer le fichier -f : ne demande pas de confirmation (annule -i) -r : supprime les répertoires récursivement
Exemples
[modifier | modifier le wikicode]- Pour supprimer le répertoire "tmp" et son contenu :
rm -rf tmp
- Pour supprimer les fichiers de log de plus de deux jours :
find /var/log* -mtime +2 -exec rm {} \;
mv (move)
[modifier | modifier le wikicode]Déplacer ou renommer des fichiers
$ mv [Option] Source Destination(répertoire)
$ mv [Option] Répertoire Source
$ mv fichier_source fichier_cible # déplacer fichier_source dans fichier_cible
$ mv fichier1 fichier2 # renomme le fichier fichier1 en fichier2
# Attention si fichier2 existe, son contenu sera écrasé et
# remplacé par celui de fichier1
Par précaution, on utilise l'option -i qui permet d'être averti par le système avant l'écrasement du fichier destination si celui-ci existe.
$ mv -i fichier1 fichier2 # demande la confirmation avant d'effacer la destination
$ mv rep1/fic1 rep2/fic2 # déplace le fichier fic1 situé dans le répertoire ''rep1''
# sous le nouveau nom fic2 situé dans le répertoire rep2
$ mv rep1 rep2 # déplace le répertoire rep1 dans le répertoire rep2
# si rep2 n'existe pas, renomme rep1 en rep2
Si le dossier n'est pas vide, utiliser "-f" pour forcer l'écrasement.
Pour inclure les fichiers cachés dans les déplacements *, exécuter avant shopt -s dotglob
.
ln (link)
[modifier | modifier le wikicode]La commande ln permet de créer des liens, c'est à dire des raccourcis vers des fichiers ou des répertoires.
ln -s destination nom_du_lien
Exemple
$ ln -s prog1.0 monprogramme
Cette commande crée le lien suivant :
lrwxrwxrwx 1 alex alex 7 2007-10-26 14:25 monprogramme -> prog1.0
find : recherche par nom de fichier
[modifier | modifier le wikicode]Par exemple pour trouver tous les fichiers .log dans le dossier courant récursivement :
find . -name "*.log"
grep : recherche par contenu de fichier
[modifier | modifier le wikicode]Par exemple pour trouver tous les fichiers qui contiennent "mon texte" dans le dossier courant récursivement :
grep -r "mon texte" .
En regex en ignorant la casse :
grep -rPi "[a-z_]+" .
clear et reset
[modifier | modifier le wikicode]clear
masque les données affichées en console, et on peut les retrouver en remontant l'ascenseur.reset
efface complètement les données affichées en console.