Recientemente encontré un desafío para mostrar la salida estándar (stdout) de un comando de Linux en el orden inverso.
Por ejemplo; ls -lrt enumeraría los archivos y directorios en función de la fecha de creación/actualización, pero le gustaría obtener el resultado en la dirección inversa.
Solución: El shell de Linux es abundante en características. Tiene un comando integrado llamado tac
parte de las coreutils escritas por Jay Lepreau y David MacKenzie. Concatena e imprime archivos en orden inverso.
es decir, la salida estándar del comando se proporciona como entrada estándar a tac y copia la entrada estándar a la salida estándar invirtiendo los registros de cada línea por separado.
Paso 1:Enumere los archivos en el orden predeterminado.
[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
Paso 2:Enumere los archivos en el orden inverso de su orden predeterminado.
[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
Este comando integrado tac
se puede usar en cualquier comando de Linux o también en sus propios scripts.