J'ai récemment rencontré un défi pour afficher la sortie standard (stdout) d'une commande Linux dans l'ordre inverse.
Par exemple; ls -lrt répertorie les fichiers et répertoires en fonction de la date de création/mise à jour, mais souhaite obtenir la sortie dans le sens inverse.
Solution : Le shell Linux regorge de fonctionnalités. Il a une commande intégrée à savoir tac
fait partie des coreutils écrits par Jay Lepreau et David MacKenzie. Il concatène et imprime les fichiers dans l'ordre inverse.
c'est-à-dire que stdout de la commande est donnée comme entrée standard à tac et elle copie l'entrée standard vers la sortie standard en inversant les enregistrements de chaque ligne séparément.
Étape 1 :répertorier les fichiers dans l'ordre par défaut.
[root@ssl httpd]$ ls -rlt total 12 lrwxrwxrwx 1 root root 29 Sep 8 15:58 modules -> ../../usr/lib64/httpd/modules lrwxrwxrwx 1 root root 19 Sep 8 15:58 logs -> ../../var/log/httpd drwxr-xr-x 2 root root 4096 Sep 8 15:58 conf lrwxrwxrwx 1 root root 10 Sep 8 15:58 run -> /run/httpd drwxr-xr-x 2 root root 4096 Nov 28 16:41 conf.modules.d drwxr-xr-x 2 root root 4096 Nov 28 16:41 conf.d
Étape 2 :répertorier les fichiers dans l'ordre inverse de leur ordre par défaut.
[root@ssl httpd]$ ls -lrt | tac drwxr-xr-x 2 root root 4096 Nov 28 16:41 conf.d drwxr-xr-x 2 root root 4096 Nov 28 16:41 conf.modules.d lrwxrwxrwx 1 root root 10 Sep 8 15:58 run -> /run/httpd drwxr-xr-x 2 root root 4096 Sep 8 15:58 conf lrwxrwxrwx 1 root root 19 Sep 8 15:58 logs -> ../../var/log/httpd lrwxrwxrwx 1 root root 29 Sep 8 15:58 modules -> ../../usr/lib64/httpd/modules
Cette commande intégrée tac
peut être utilisé sur n'importe quelle commande Linux ou sur vos propres scripts également.