標準入力
プログラムの基本的な入力。通常はキーボードからの入力
標準出力
プログラムの標準的な出力。通常は端末ディスプレイに出力
標準エラー出力
プログラムのエラーメッセージを出力するための出力。通常は端末ディスプレイに出力
リダイレクト
標準入出力先を変更することをリダイレクトと呼ぶ。
標準入力のリダイレクト
# 通常のcatコマンドの動き
# この動きはcatコマンドに用意された動きで、ファイルが指定された場合はファイルの内容を表示する
cat ファイル名
# リダイレクトを利用した場合
# キーボードからの入力ではなくファイルの内容を入力先として指定している
cat < ファイル名
# 上記の出力結果は同じだが中身の動きが違う
標準出力のリダイレクト
# 通常のlsコマンドの動き
ls
=> 画面に表示される
# リダイレクトを利用した場合
# 結果を画面に表示ではなくlist.txtファイルに出力する
ls > list.txt
# > だけではもしlist.txtが既に存在した場合上書きされてしまうため >> とすると末尾に追記となる
# ファイルが存在しない場合もこの書き方は有効
ls >> list.txt
標準エラー出力のリダイレクト
# 通常のエラー表示(lsコマンドに存在しないファイル名を渡す)
ls /xxx
# => エラー文言
# リダイレクトを利用する
# 結果を画面にではなくerror.txtファイルに出力する
ls /xxxx 2> error.txt
標準出力と標準エラー出力をまとめる
# > list.txt で標準出力をlist.txtにリダイレクト
# 2>&1 2(標準エラー出力)を&1(標準出力)にリダイレクト
ls /xxxx > list.txt 2>&1
dev/nullファイル
スペシャルファイルと言われる特殊なファイル。
- 入力先として指定しても何も内容を返さない
- 出力先として指定しても書き込んだデータは保存されない
という特性を持っていてコマンドの結果をどこにも表示、保存したくないときに利用する
# この場合エラーが出た時のみ標準エラー出力として画面に表示される
ls /xxxx > /dev/null
# この場合エラー自体もリダイレクトして/dev/nullに出力される
ls /xxxx > /dev/null 2>&1
パイプライン
複数のコマンドを連携させる仕組み。次のように書く
コマンド | コマンド | コマンド
# ls コマンドの標準出力をlessコマンドに渡すことで、行数が長くなっても一ページづつ閲覧できるようになる
ls / | less
# 間にcat -nを挟み、番号つきで出力する
ls / | cat -n | less
標準エラー出力も同じように出力する
ls / 2>&1 | cat -n |less
フィルタ
catコマンドのように標準入力を入力として受け取り、標準出力に出力するコマンドのこと。
代表的なフィルタコマンド
コマンド | 役割 | 使用例 |
---|---|---|
cat |
ファイルの内容をそのまま出力する。複数ファイルの内容を結合して表示するのにも使える。 | cat file.txt |
head |
ファイルの先頭数行を表示する。デフォルトは10行。 | head -n 5 file.txt |
tail |
ファイルの末尾数行を表示する。リアルタイム更新も可能(-f オプション)。 |
tail -n 10 file.txt |
grep |
指定した文字列や正規表現に一致する行を検索し、表示する。 | grep "error" file.txt |
sort |
ファイルの内容を行ごとに昇順または降順に並べ替える。 | sort file.txt |
uniq |
連続して重複する行を削除する(sort と組み合わせて使うことが多い)。 |
`sort file.txt |
tac |
ファイルの内容を逆順(最後の行から最初の行)に表示する。 | tac file.txt |
wc |
ファイルの行数、単語数、文字数をカウントする。 | wc file.txt |