0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

リダイレクトとパイプライン

Last updated at Posted at 2023-12-18

標準出力、標準エラー出力

標準出力をファイルにリダイレクト

$ ls /xxxx > list.txt

標準エラー出力をファイルにリダイレクト

$ ls /xxxx 2> error.txt

標準出力と標準エラー出力を、それぞれ別のファイルにリダイレクト

$ ls /xxxx > list.txt 2> error.txt

標準出力と標準エラー出力をひとつのファイルにリダイレクト

$ ls /xxxx > result.txt 2>&1

上記の意味は>で標準出力をresult.txtへリダイレクトし、標準エラー出力(2>)を、標準出力(&1)へリダイレクトしているので、結果として標準エラー出力もresult.txtへリダイレクトされる。

標準入出力の数値の意味は以下
0: 標準入力
1: 標準出力
2: 標準エラー出力

noclobber

なおリダイレクトで出力したファイルは上書きしてしまう。重要なファイルをうっかり上書きしてしまう危険がある。常に>>を使って、追記しかしないという手もあるが、以下の設定で上書きを防止できる。

set -o noclobber

上記の設定により既存のファイルを上書きしようとすると以下のように表示される。

$ echo abc > file.txt
-bash: file.txt: 存在するファイルを上書きできません

/dev/null

$ ls -l /dev/null
crw-rw-rw-. 1 root root 1, 3 12月 18 08:33 /dev/null

上記はスペシャルファイルと呼ばれる特別なファイルで、

  • 入力先に指定しても、何も内容を返さない。
  • 出力先に指定しても、どこにも保存されない。

入力をクリアしたい場合、出力をどこにもしたくない場合に使用する。例えば、本来標準エラー出力に出力されるエラーが、あらかじめわかっていて不要な場合などに使う。

$ 何らかのコマンド 2> /dev/null

パイプライン

標準出力を次のコマンドに送りたい場合にはパイプラインを使う。

$ history | less

標準出力に加えて標準エラー出力も次のコマンドに送りたい場合は、標準エラー出力を標準出力へリダイレクトして、パイプラインを使う。

$ ls -l / /xxx 2>&1 | less

フィルタ

標準入力を入力として受け取り、標準出力に出力するコマンドをフィルタと呼ぶ。

代表的なフィルタコマンド

  • cat
  • head
  • tail
  • grep
  • sort
  • uniq
  • tac
  • wc

フィルタコマンドの活用例
/binディレクトリ配下ファイルサイズが大きい上位5つを表示

$ du -b /bin/* | sort -n | tac | head -n 5
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?