La commande ls permet d'afficher le contenu d'un répertoire.
ls -l
Afficher les informations de manière détaillée.
ls -a
Afficher les fichiers cachés.
ls -h
Afficher la taille des fichiers de facon lisible.
ls -r
Tri inversé.
ls -t
Trier les fichiers par date du plus récent au plus ancien.
ls -S
Trier par taille décroissante.
ls -la
Afficher tous les fichiers y compris les fichiers cachés.
ls -lhS
Afficher les informations des fichiers, avec des tailles lisibles le tout ordonné du plus grand au plus petit.
La navigation d’un répertoire à un autre s’effectue avec la commande cd succédée du nom du répertoire.
cd /
Permet de se retrouver à la racine du disque.
cd ~
ou cd
Accéder directement au répertoire de l’utilisateur.
cd /var/www/
Aller dans le répertoire /var/www.
cd ..
Remonter dans le répertoire parent à partir de là où vous êtes.
cd -
Permet de revenir au répertoire précédent.
pwd
Renvoyer le chemin absolu du répertoire courant ce qui est utile puisqu’en général le shell n’affiche que le nom du répertoire courant.
Pour créer une copie d’un fichier, on utilise la commande cp.
cp foo/bar.txt baz/
Copier le fichier bar.txt dans le répertoire baz.
cp -r foo/ baz/
Copier des répertoires entiers (note : si baz existe, la cible sera baz/foo/).
Déplacer un fichier est aussi simple que de le copier, pour cela il faut utiliser la commande mv. Cette commande permet aussi de renommer vos fichiers.
mv foo/bar.txt baz/
Déplacer le fichier bar.txt dans le répertoire baz.
mv foo_bar.txt foo_baz.txt
Renommer le fichier foo_bar.txt en foo_baz.txt.
Pour effacer un fichier ou un répertoire on utilise la commande rm.
rm *.txt
Supprimer tous les fichiers ayant pour extension txt.
rm foo.txt bar.txt
Supprimer les fichiers foo.txt et bar.txt.
rm -rf baz/
Supprimer le répertoire baz et tout son contenu.
Pour créer un répertoire il suffit d’utiliser la commande mkdir. Celle-ci vous permettra de créer un répertoire à l’emplacement où vous êtes ou l’emplacement précisé en argument de la commande.
mkdir -v
Retourner des informations lors de la création d'un répertoire.
mkdir -p
Cette option permet de créer une arborescence complète.
mkdir foo
Créer le répertoire foo.
mkdir -v foo /tmp/bar
Créer les répertoires foo et /tmp/bar.
mkdir -p foo/bar/baz
Créer l’arborescence foo/bar/baz.
La commande chown permet de changer le propriétaire d'un fichier ou d'un répertoire.
chown bob:admin foo.txt
Attribuer l’utilisateur bob et le groupe admin au fichier foo.txt.
La commande chmod permet de changer les droits d'un fichier ou d'un répertoire. Pour exécuter cette commande vous devez être le propriétaire du fichier ou être logué en root.
chmod u+w fichier
Ajouter les droits d'écriture au propriétaire (user, write)
chmod g+r fichier
Ajouter les droits de lecture au groupe du fichier (group, read)
chmod o-x fichier
Supprimer les droits d'exécution aux autres utilisateurs (other, execution)
chmod a+rw dossier
Ajouter les droits de lecture / écriture à tous (all)
chmod -R a+rx files
Ajouter les droits de lecture et d'exécution à tout ce que contient le repertoire dossier.
chmod 764 dossier
Tous les droits pour le propriétaire (7xx), lecture et ecriture pour le groupe (x6x) et lecture uniquement pour les autres (xx4).
chmod -R 755 dossier
Donner au propriétaire tous les droits (7xx), alors que seuls les droits de lecture et d'accès seront donnés aux autres (x55). Grace à l'option -R ces droits seront appliqués à tous les fichiers et dossiers contenus dans ce répertoire.
Droit | Valeur alphanumérique | Valeur octale |
---|---|---|
aucun droit | --- | 0 |
exécution seulement | --x | 1 |
écriture seulement | -w- | 2 |
ecriture et exécution | -wx | 3 |
lecture seulement | r-- | 4 |
lecture et exécution | r-x | 5 |
lecture et écriture | rw- | 6 |
tous les droits (lecture, écriture et exécution) | rwx | 7 |
La commande ssh permet de se connecter de façon sécurisée à une machine distante.
ssh [[email protected]](/cdn-cgi/l/email-protection)
Connexion à la machine distante avec le login john.
ssh -l john remotehost.example.com
Equivaut à la commande précédente.
ssh-keygen -t dsa
Génération d'une clé DSA (à faire sur la machine locale).
ssh-copy-id -i ~/.ssh/id_dsa.pub [[email protected]](/cdn-cgi/l/email-protection)
Copie de la clé publique sur la machine distante.
La commande scp permet de copier des fichiers entre le serveur et le client ssh de manière sécurisée.
scp foo.txt [[email protected]](/cdn-cgi/l/email-protection):
Transfère le fichier foo.txt situé dans le répertoire courant vers le home du compte john de la machine remotehost.example.com.
scp [[email protected]](/cdn-cgi/l/email-protection):foo.txt ./
Récupère le fichier foo.txt situé dans le home du répertoire du compte john pour le copier dans le répertoire courant.
scp [[email protected]](/cdn-cgi/l/email-protection):/backups/*.sql backups/
Récupérer les fichiers .sql situés dans le répertoire backups pour le copier dans le sous-répertoire backups.
scp -P 17654 john@remotehost:/files/ files/
Récupérer les fichiers via un autre port (17654) que le port par défaut (22).
scp -r mails/ john@remotehost:
Transfère l'intégralité du répertoire mails.
Grâce à la commande rsync vous pouvez copier des fichiers et des dossiers depuis ou vers un hôte à distance. Grâce à cela vous pouvez faire de la synchronisation de fichiers.
Quelques options :
rsync source/ destination/
Synchroniser les fichiers sources vers une destination.
rsync -azv [[email protected]](/cdn-cgi/l/email-protection):source/ destination/
Récupère les nouveaux fichiers et fichiers modifiés du répertoire distant vers le répertoire local.
rsync -azv --delete source/ destination/
Synchroniser tous les fichiers, supprime aussi les fichiers qui n'existent plus sur la source.
rsync -azv --exclude="dump/*.sql.gz" files/ backup/
Synchroniser tout le répertoire files sauf les fichiers .sql.gz.
rsync --rsh='ssh -p1234' ource/ destination/
Effectuer un rsync sur un port spécifique.
Note : en général, on suffixe toujours par un /
le nom des répertoires sources et de destination.
La commande sed est un utilitaire qui parcourt un fichier texte ligne par ligne afin de lui appliquer un traitement ou un remplacement lorsque l'expression régulière est vérifiée.
sed 's/foo/bar/' file.txt
Transformer la première occurence 'foo' de chaque ligne par 'bar'.
sed 's/\t/ /g' file.txt
Transformer toutes les tabulations par deux espaces.
sed '/^#/ d' file.txt
Supprimer toutes les lignes commancant par #.
sed '/^Bonjour/,/^Au revoir/d' file.txt
Supprimer toutes les lignes comprises entre les deux motifs.
sed -n '/foo/p' file.txt
Afficher uniquement les lignes où l'expression est trouvée.
La commande grep permet de rechercher une chaîne de caractères ou un motif dans un fichier.
Quelques options :
grep 'text' foo.txt
Recherche l'occurence 'text' dans le fichier foo.txt.
grep -nri 'foobar' /project
Recherche toutes les occurences de 'foobar' dans le repertoire /project.
grep -nri '\(foo\|bar\|baz\)' /project
Recherche toutes les occurences à 'foo', 'bar' et 'baz' dans le repertoire /project.
La commande find permet de chercher des fichiers et éventuellement d'exécuter des commandes dessus.
Quelques options :
find myfile* -print
Rechercher un fichier commençant par "myfile"
find -name *myfile*.txt -print
Rechercher un fichier contenant "myfile" et ayant pour extention ".txt"
find /usr -type d -print
Afficher tous les répertoires de /usr
find $HOME \( -name '*.txt' -o -name '*.pdf' \)
Afficher tous les fichiers .txt ou .pdf dans le répertoire home de l'utilisateur.
find $HOME -name *.txt -atime +7 -exec rm {} \;
Supprimer tous les fichiers .txt qui n'ont pas été consultés depuis plus de 7 jours dans le répertoire home de l'utilisateur.
find $HOME -name '*.txt' -size +4k -exec ls -l {} \;
Afficher la taille de tous les fichiers de plus de 4 kilos
La commande uniq est utilisée avec la commande sort très puissante, notamment pour l’analyse de fichiers de logs. Elle permet de trier et d’afficher des entrées en supprimant les doublons.
uniq
réclame que le fichier d’entrée soit trié car il ne compare que les lignes consécutives.
Sans argument, la commande uniq ne va pas afficher les lignes identiques qui se suivent du fichier prenoms.txt :
$ sort prenoms.txt | uniq
antoine
patrick
xavier
Pour n’afficher que les lignes n’apparaissant qu’une seule fois, il faut utiliser l’option -u :
$ sort prenoms.txt | uniq -u
patrick
À l’inverse, pour n’afficher que les lignes apparaissant au moins deux fois dans le fichier, il faut utiliser l’option -d :
$ sort prenoms.txt | uniq -d
antoine
xavier
Pour simplement supprimer les lignes qui n’apparaissent qu’une seule fois, il faut utiliser l’option -D :
$ sort prenoms.txt | uniq -D
antoine
antoine
antoine
xavier
xavier
Enfin, pour compter le nombre d’occurrences de chaque ligne, il faut utiliser l’option -c :
$ sort prenoms.txt | uniq -c
3 antoine
1 patrick
2 xavier
$ sort prenoms.txt | uniq -cd
3 antoine
2 xavier
La commande watch exécute régulièrement une commande et affiche le résultat dans le terminal en plein écran.
watch -n
Spécifier le nombre de secondes entre chaque exécution de la commande.
watch -n 5 tail -n 5
Afficher les 5 dernieres lignes toutes les 5 secondes.
watch -n 1 'ls -l | wc -l'
Afficher le nombre de fichier dans un dossier.
watch -t -n 1 date
Afficher la date, mise à jour toutes les secondes.
La commande test permet de récupérer les arguments en sortie de la commande précédente et de les traiter à travers un pipe.
Elle permet d'éviter des structures lourdes comme :
[commande] | while read param
do
[traitement]
done
À la place, nous avons quelque chose de plus simple, de plus condensé :
[commande] | xargs [traitement]
Copier la liste des fichiers .txt dans un répertoire :
ls -1 ${repertoire_source}/*.txt | xargs -i -t cp {} ${repertoire_cible}
Copier la liste des fichiers .txt dans un répertoire cible depuis un répertoire relatif :
ls -1 ${repertoire_source}/*.txt | xargs -i -t cp {} ${repertoire_cible}
Copier un fichier dans plusieurs répertoires :
echo ${répertoire_1} ${répertoire_2} | xargs -n 1 cp -v ${fichier_à_copier}
Renommer tous les fichiers *.txt d'un répertoire :
ls -1 ${repertoire}/*.txt | xargs -I {} -t mv {}.csv
Déplacer (sans renommer) tous les fichiers *.txt vers un autre répertoire :
ls -1 ${repertoire}/*.txt | xargs -I {} -t mv {} ${repertoire_cible}
Supprimer tous les fichiers *.txt d'un répertoire :
ls -1 ${repertoire}/*.txt | xargs rm -f
Dans certains cas, lorsque le nombre de fichiers à supprimer est trop important, le commande rm retourne une erreur : /bin/rm: Argument list too long.
Dans ce cas, xargs permet de résoudre le problème en passant, par exemple, par find :
find . -type f -name "motif" -print | xargs rm -f
La commande basename n'apprécie pas trop les tubes (pipes). Pour remédier à ce problème, après un ls, par exemple, il faut :
ls -1 ${repertoire}/*.txt | xargs -n1 basename
Tuer tous les processus contenant un motif donné :
ps -ax | grep "${motif}" | grep -v "grep" | awk '{print $1}'| xargs kill -9
Lister les informations des fichiers et répertoire contenant un motif donné :
find . -type f -name "*.txt" -print | xargs ls -l -D %Y-%m-%d
Rechercher un motif dans un fichier.
Par exemple, ici, le motif n.nspname dans tous les fichiers .sql :
find . -type f -name '*.sql' | xargs grep 'n.nspname'
Pour changer récursivement les droits de fichiers ou répertoires.
Pour changer les droits sur les répertoires uniquement :
find /path/to/base/dir -type d -print0 | xargs -0 chmod 755
Pour changer les droits sur les fichiers uniquement :
find /path/to/base/dir -type f -print0 | xargs -0 chmod 644
Il est aussi possible d'utiliser find pour l'opération, de la façon suivante :
find /path/to/base/dir -type d -exec chmod 755 {} +
find /path/to/base/dir -type f -exec chmod 644 {} +
La commande test permet comparer des chaines de caractères, des nombres et vérifier certaines propriétés de fichiers. Il est possible de simplifier son écriture en la remplaçant par des crochets [ ].
test -e foo.txt
tester si le fichier foo.txt existe.
test -d foo
tester que foo soit un répertoire.
test -w foo.txt
tester si le fichier est accessible en écriture.
test -x foo.txt
tester si le fichier est exécutable.
[ "string1" != "string2" ]
vérifier que la chaine string1 n'est pas égale à string2.
[ int1 != int2 ]
vérifier que le nombre int1 est inférieur à int2.
La commande history affiche une liste des commandes précédemment émises.
Quelques options :
history -c
tester que foo soit un répertoire.
history -d
tester que foo soit un répertoire.
history -a
tester que foo soit un répertoire.
history -r
tester que foo soit un répertoire.
history -n
tester que foo soit un répertoire.
history -w
tester que foo soit un répertoire.
history -s "<command>"
tester que foo soit un répertoire.
history -p
tester que foo soit un répertoire.
history -f
tester que foo soit un répertoire.
La commande who permet d'obtenir des informations sur l'utilisateur actuellement connecté au système. Si vous ne fournissez aucune option ou argument, la commande affiche les informations suivantes pour chaque utilisateur connecté.
who
Permet d'obtenir le nom de connexion , son terminal, la date et heure de connexion et le nom d'hôte distant de l'utilisateur
whoami
Affiche le nom d'utilisateur du système
id
Affiche l'identification de l'utilisateur (les informations réelles et efficaces sur les identifiants de l'utilisateur et du groupe).
groups
Cette commande est utilisée pour afficher tous les groupes auxquels l'utilisateur appartient.
finger
Utilisé pour vérifier les informations de tous les utilisateurs actuellement connectés. C'est-à-dire qu'il affiche l'heure de connexion des utilisateurs, tty (nom), le temps d'inactivité, le répertoire personnel, le nom de l'interpréteur de commandes, etc.
users
Affiche les noms d'utilisateur de tous les utilisateurs actuellement connectés au système.
w
est un utilitaire en ligne de commande qui affiche des informations sur les utilisateurs actuellement connectés et ce que chaque utilisateur fait.
L'installation et la désinstallation de paquets sous Debian, Ubuntu et distribution dérivées peut se faire grâce à la commande apt.
apt-get update
Mettre à jour la liste des fichiers disponibles dans les dépôts APT.
apt-get install samba
Installer du paquet Samba.
apt-get install foo=2.2-1
Installer du paquet foo dans sa version 2.2-1.
apt-get remove samba
Désinstallation du paquet Samba tout en laissant les fichiers de configuration.
apt-get purge samba
Suppression complète du paquet Samba et de ses fichiers de configuration.
apt-cache policy php5
Récupération d'informations sur l'état du paquet php5
dpkg -l | grep php
Lister tous les paquets php installés sur la machine
Que ce soit pour compresser ou décompresser des fichiers ou des dossiers, cela se fait avec la commande tar.
Quelques options :
tar -cvf archive.tar fichier1
Création d’une archive nommée archive.tar contenant le fichier fichier1.
tar -cvf archive.tar fichier1 fichier2
Création d’une archive contenant deux fichiers fichier1 et fichier2.
tar -cvf archive.tar repertoire/
Création d’une archive a partir d’un répertoire.
tar -czvf archive.tar.gz repertoire/
Création d’une archive au format tar.gz.
tar -cjvf archive.tar.bz2 repertoire/
Création d’une archive au format tar.bz2.
tar -xzvf archive.tar.gz
Extraction de l’archive tar.gz.
tar -xjvf archive.tar.bz2
Extraction de l’archive tar.bz2.
tar -tf mon_fichier.tar
Liste tous les fichiers contenus dans une archive.
du -sh dossier1 dossier2
connaitre l'espace disque utilisé des deux répertoires (disk usage).
du -hc --max-depth=1
afficher l'espace disque utilisé des fichiers et répertoires contenu dans un répertoire.
df -h
afficher l'espace disque disponible (disk free).
top
Classement en live des processus en cours triés par utilisation Proc, Mem ou Temps CPU.
free
Afficher la mémoire libre.
ps aux
Afficher tous les processus exécutés.
ps faux
Afficher tous les processus exécutés affiché sous forme.
kill pid
Arrêter un processus.
kill 9 pid
Tuer violemment le processus (déconseillé).