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 24
drwxr-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