Exercice : Appliquer la notion
On souhaite lister le contenu de 3 dossiers de la machine dans un fichier files.txt :
/etc/network/(qui devrait exister)/var/lib/apt(qui devrait exister)/etc/fake-folder(qui ne devrait pas exister)
Le fichier files.txt devra contenir uniquement la liste des fichiers, et les éventuelles erreurs doivent être écrites dans un fichier errors.txt.
Question
Donnez la commande pour réaliser cette opération.
Indice
On utilisera ls -l et quelques redirections.
Solution
On utilise la commande ls -l avec les 3 dossiers en paramètres pour lister le contenu des dossiers. L'opérateur > permet de rediriger la sortie standard (donc la liste des fichiers) dans le fichier files.txt tandis que l'opérateur 2> redirige les erreurs dans le fichier errors.txt.
ls -l /etc/network /var/lib/apt /etc/fake-folder > files.txt 2> errors.txt
On peut constater que le résultat a été correctement redirigé, et que l'erreur du dossier n'existant pas se trouve bien à part.
$ cat files.txt /etc/network:
total 24drwxr-xr-x 2 root root 4096 7 déc. 16:16 if-down.d
drwxr-xr-x 2 root root 4096 7 déc. 16:16 if-post-down.d
drwxr-xr-x 2 root root 4096 7 déc. 16:16 if-pre-up.d
drwxr-xr-x 2 root root 4096 7 déc. 16:16 if-up.d
-rw-r--r-- 1 root root 313 3 oct. 2016 interfaces
drwxr-xr-x 2 root root 4096 13 mars 2015 interfaces.d
lrwxrwxrwx 1 root root 12 26 nov. 2015 run -> /run/network
/var/lib/apt:
total 240-rw-r--r-- 1 root root 269 26 nov. 2015 cdroms.list
-rw-r--r-- 1 root root 0 8 déc. 12:30 daily_lock
-rw-r--r-- 1 root root 188799 7 déc. 19:01 extended_states
-rw-r--r-- 1 root root 12288 7 déc. 16:14 listchanges.db
-rw-r--r-- 1 root root 12288 30 nov. 09:51 listchanges-old.db
drwxr-xr-x 4 root root 12288 7 déc. 16:36 lists
drwxr-xr-x 3 root root 4096 26 nov. 2015 mirrors
drwxr-xr-x 2 root root 4096 10 juin 2015 periodic
$ cat errors.txt ls: impossible d'accéder à '/etc/fake-folder': Aucun fichier ou dossier de ce type