職場でつかうパイプとリダイレクトとteeコマンド

はじめに

この記事では、職場でつかうパイプリダイレクトteeコマンドを紹介してみます。
「パイプってなんだー」「リダイレクトってなんだー」という方は以下の記事が参考になると思います。

パイプ

コマンドの出力を|ではさむだけで、別のコマンドの入力としてつかえる、それがパイプです。「パイプを使わない日はないのでは?」と思うくらい重要な機能です。

下記のコマンドでは、ルートディレクトリ以下のファイルを詳細表示する出力をteeコマンドの入力としてつかい、ディスプレイ表示&ファイル出力しています。teeコマンドはディスプレイ表示とファイル出力を同時にできて、パイプと一緒につかうことが多いです。

$ ls -l / | tee file.txt

コマンドの結果

total 32
lrwxrwxrwx.   1 root root    7 Sep 14  2016 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Oct 31  2016 boot
drwxr-xr-x   19 root root 2860 Apr 29 17:42 dev
drwxr-xr-x.  93 root root 8192 Apr 29 17:42 etc
drwxr-xr-x.   4 root root   38 Mar 30 10:57 home
lrwxrwxrwx.   1 root root    7 Sep 14  2016 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Sep 14  2016 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   3 root root   15 Sep 14  2016 opt
dr-xr-xr-x  136 root root    0 Apr 29 17:42 proc
dr-xr-x---.   5 root root 4096 Apr 14 23:58 root
drwxr-xr-x   31 root root  900 May  4 08:29 run
lrwxrwxrwx.   1 root root    8 Sep 14  2016 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x   13 root root    0 Apr 29 17:42 sys
drwxrwxrwt.  13 root root 4096 May  5 15:31 tmp
drwxr-xr-x.  13 root root 4096 Sep 14  2016 usr
drwxr-xr-x.  21 root root 4096 Apr 29 17:42 var

file.txtファイルの中身

file.txt
total 32
lrwxrwxrwx.   1 root root    7 Sep 14  2016 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Oct 31  2016 boot
drwxr-xr-x   19 root root 2860 Apr 29 17:42 dev
drwxr-xr-x.  93 root root 8192 Apr 29 17:42 etc
drwxr-xr-x.   4 root root   38 Mar 30 10:57 home
lrwxrwxrwx.   1 root root    7 Sep 14  2016 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Sep 14  2016 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   3 root root   15 Sep 14  2016 opt
dr-xr-xr-x  136 root root    0 Apr 29 17:42 proc
dr-xr-x---.   5 root root 4096 Apr 14 23:58 root
drwxr-xr-x   31 root root  900 May  4 08:29 run
lrwxrwxrwx.   1 root root    8 Sep 14  2016 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x   13 root root    0 Apr 29 17:42 sys
drwxrwxrwt.  13 root root 4096 May  5 15:31 tmp
drwxr-xr-x.  13 root root 4096 Sep 14  2016 usr
drwxr-xr-x.  21 root root 4096 Apr 29 17:42 var

リダイレクト

コマンドの入力先と出力先をキーボード、ディスプレイ、ファイルと変更する、それがリダイレクトです。個人的にはパイプほど使用頻度は高くないのですが、重要な機能であることは間違いないです。

標準入力

入力のリダイレクトはうまく使えてないので、今回は割愛します。
いい使い方を発見したら書きます。

標準出力

標準エラー出力

teeコマンド

teeコマンドでよくつかうオプションは-a(--appedn)です。英訳のとおり、既存のファイルに出力を追加します。パイプで紹介したコマンドに-aオプションをつけて実行します。

$ ls -l / | tee -a file.txt

パイプで紹介したコマンドの出力ファイルfile.txtの末尾に、同じ出力が追加されました。

file.txt 
total 32
lrwxrwxrwx.   1 root root    7 Sep 14  2016 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Oct 31  2016 boot
drwxr-xr-x   19 root root 2860 Apr 29 17:42 dev
drwxr-xr-x.  93 root root 8192 Apr 29 17:42 etc
drwxr-xr-x.   4 root root   38 Mar 30 10:57 home
lrwxrwxrwx.   1 root root    7 Sep 14  2016 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Sep 14  2016 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   3 root root   15 Sep 14  2016 opt
dr-xr-xr-x  134 root root    0 Apr 29 17:42 proc
dr-xr-x---.   5 root root 4096 Apr 14 23:58 root
drwxr-xr-x   31 root root  900 May  4 08:29 run
lrwxrwxrwx.   1 root root    8 Sep 14  2016 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x   13 root root    0 Apr 29 17:42 sys
drwxrwxrwt.  13 root root 4096 May  5 15:57 tmp
drwxr-xr-x.  13 root root 4096 Sep 14  2016 usr
drwxr-xr-x.  21 root root 4096 Apr 29 17:42 var
total 32
lrwxrwxrwx.   1 root root    7 Sep 14  2016 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 Oct 31  2016 boot
drwxr-xr-x   19 root root 2860 Apr 29 17:42 dev
drwxr-xr-x.  93 root root 8192 Apr 29 17:42 etc
drwxr-xr-x.   4 root root   38 Mar 30 10:57 home
lrwxrwxrwx.   1 root root    7 Sep 14  2016 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Sep 14  2016 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Aug 12  2015 media
drwxr-xr-x.   2 root root    6 Aug 12  2015 mnt
drwxr-xr-x.   3 root root   15 Sep 14  2016 opt
dr-xr-xr-x  134 root root    0 Apr 29 17:42 proc
dr-xr-x---.   5 root root 4096 Apr 14 23:58 root
drwxr-xr-x   31 root root  900 May  4 08:29 run
lrwxrwxrwx.   1 root root    8 Sep 14  2016 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Aug 12  2015 srv
dr-xr-xr-x   13 root root    0 Apr 29 17:42 sys
drwxrwxrwt.  13 root root 4096 May  5 16:05 tmp
drwxr-xr-x.  13 root root 4096 Sep 14  2016 usr
drwxr-xr-x.  21 root root 4096 Apr 29 17:42 var

参考資料

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.