最近、Linuxコマンドの標準出力(stdout)を逆の順序で表示するという課題に遭遇しました。
たとえば; ls -lrtは、作成/更新された日付に基づいてファイルとディレクトリを一覧表示しますが、逆方向に出力を取得したいと考えています。
解決策: Linuxシェルには豊富な機能があります。コマンドが組み込まれています。つまり、tac
JayLepreauとDavidMacKenzieによって作成されたcoreutilsの一部。ファイルを逆の順序で連結して印刷します。
つまり、コマンドのstdoutはtacへの標準入力として指定され、標準入力を標準出力にコピーして、各行のレコードを個別に反転します。
ステップ1:デフォルトの順序でファイルを一覧表示します。
[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
ステップ2:デフォルトの順序とは逆の順序でファイルを一覧表示します。
[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
この組み込みコマンドtac
任意のLinuxコマンドまたは独自のスクリプトで使用できます。