標準入出力
標準入出力とはデフォルトの入力元・出力先のことで、通常Linuxでは標準入力はキーボード、標準出力はディスプレイになっている。これらの入出力をユーザは自由に変更する事が出来る。
例えば、コマンドへの指示をファイルから入力したり、実行結果をファイルに保存したりでき、これを「リダイレクト」と呼ぶ。
また、コマンドの標準出力を別のコマンドの標準入力へ繋げることを「パイプ」と呼ぶ。
※コマンドには標準出力以外に「標準エラー出力」というものもあり、正常な実行結果以外の出力(エラーメッセージなど)がされる。
| xargs 「オプション」 「コマンド」 「引数」 |
|
コマンドの標準出力を他のコマンドの引数として使用
-n 引数の数:1回のコマンド実行でしようできる引数の数を制限 |
代表的なリダイレクトとパイプの使用例
| コマンド > file | コマンドの標準出力をfileに書き込む |
| コマンド >> file | コマンドの標準出力をfileに追記する |
| コマンド < file | コマンドはfileの内容を標準入力として受け取る |
| コマンド << 終了文字 | 終了文字を入力するまでキーボードから入力を続ける |
| コマンド 2> file | コマンドの標準エラー出力をfileに書き込む |
| コマンド 2>> file | コマンドの標準エラー出力をfileに追記する |
| コマンド > file 2>&1 | コマンドの標準出力と標準エラー出力をfileに書き込む |
| コマンド >> file 2>&1 | コマンドの標準出力と標準エラー出力をfileに追記する |
| コマンドA | コマンドB | コマンドAの標準出力をコマンドBの標準入力に渡す |
| コマンド | tee file | コマンドの標準出力を表示するとともにfileに書き込む |
$ ls -l > ls.txt
←結果が表示されない
$ cat ls.txt
←「ls.txt」の内容表示
合計 16
drwxr-xr-x 2 root root 4096 1月 23 21:02 defconf
-rw-r--r-- 1 root root 144 4月 15 15:04 hpbackup.sh
drwxrwxr-x 2 user user 4096 6月 30 15:35 lpic
drwxrwxr-x 2 user user 4096 6月 30 15:32 lpic1
-rw-rw-r-- 1 user user 0 7月 1 18:46 ls.txt
↑「ls -l」コマンドの結果がファイルに書き込まれている
$ ls -l lpic >> ls.txt
$ cat < ls.txt
合計 16
drwxr-xr-x 2 root root 4096 1月 23 21:02 defconf
-rw-r--r-- 1 root root 144 4月 15 15:04 hpbackup.sh
drwxrwxr-x 2 user user 4096 6月 30 15:35 lpic
drwxrwxr-x 2 user user 4096 6月 30 15:32 lpic1
-rw-rw-r-- 1 user user 0 7月 1 18:46 ls.txt
合計 8 ↓追記されている
-rw-rw-r-- 1 user user 15 6月 30 15:29 101.txt
-rw-rw-r-- 1 user user 15 6月 30 15:30 102.txt
-rw-rw-r-- 1 user user 0 6月 30 15:26 201.txt
-rw-rw-r-- 1 user user 0 6月 30 15:26 202.txt
-rw-rw-r-- 1 user user 0 6月 30 15:27 321.txt
-rw-rw-r-- 1 user user 0 6月 30 15:27 322.txt
-rw-rw-r-- 1 user user 0 6月 30 15:27 323.txt
$ ls -l nodata 2> lserr.txt
$ cat lserr.txt
ls: nodata: そのようなファイルやディレクトリはありません
↑エラーメッセージがファイルに書き込まれている
$ nodata 2>> lserr.txt
$ cat lserr.txt
ls: nodata: そのようなファイルやディレクトリはありません
-bash: nodata: command not found
←追記されている
$ ls -al | sort
←実行結果を昇順に並べ替え
-rw------- 1 user user 5160 7月 1 14:03 .bash_history
-rw-r--r-- 1 user user 24 1月 5 2004 .bash_logout
-rw-r--r-- 1 user user 124 1月 5 2004 .bashrc
-rw-r--r-- 1 user user 191 1月 5 2004 .bash_profile
-rw-r--r-- 1 user user 5542 1月 5 2004 .canna
-rw-r--r-- 1 root root 144 4月 15 15:04 hpbackup.sh
-rw-rw-r-- 1 user user 90 7月 1 19:09 lserr.txt
-rw-rw-r-- 1 user user 683 7月 1 18:46 ls.txt
drwx------ 2 user user 4096 4月 13 03:55 .ssh
drwx------ 6 user user 4096 7月 1 19:09 .
drwxr-xr-x 2 root root 4096 1月 23 21:02 defconf
drwxr-xr-x 6 root root 4096 1月 23 20:05 ..
drwxrwxr-x 2 user user 4096 6月 30 15:32 lpic1
drwxrwxr-x 2 user user 4096 6月 30 15:35 lpic
合計 96
↑1データ=1行の為、先頭の文字で並べ替えられている
$ ls -al lpic1 | tee ls.txt
合計 20
←結果表示される
drwxrwxr-x 2 user user 4096 6月 30 15:32 .
drwx------ 6 user user 4096 7月 1 19:09 ..
-rw-rw-r-- 1 user user 15 6月 30 15:32 101.txt
-rw-rw-r-- 1 user user 15 6月 30 15:32 102.txt
-rw-rw-r-- 1 user user 0 6月 30 15:32 201.txt
-rw-rw-r-- 1 user user 0 6月 30 15:32 202.txt
$ cat ls.txt
合計 20
←ファイルにも書き込まれている
drwxrwxr-x 2 user user 4096 6月 30 15:32 .
drwx------ 6 user user 4096 7月 1 19:09 ..
-rw-rw-r-- 1 user user 15 6月 30 15:32 101.txt
-rw-rw-r-- 1 user user 15 6月 30 15:32 102.txt
-rw-rw-r-- 1 user user 0 6月 30 15:32 201.txt
-rw-rw-r-- 1 user user 0 6月 30 15:32 202.txt
|