標準入力と標準出力
リダイレクトって簡単に使ってたけど、標準入出力先を変更するという意味か、なるほど
標準入力を意識することは、自分でプログラムを作るときに大切
できるだけ標準入力を意識してプログラムを書くと汎用性が高く連携しやすい
catコマンドの挙動の違い
code:cato
# catコマンドが利便性のために用意している「ファイルが指定されたらその内容を対象とする」という機能を使っている
February 2020
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
# catコマンド本来の動き=標準入力を標準出力にそのまま表示する
February 2020
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
標準入力のリダイレクトは、<
標準出力のリダイレクトは、>
間違えるとファイルを上書きしてしまうので恐ろしい
>>を使うと上書きではなく、ファイル末尾に追記になる
標準エラー出力のリダイレクトは、2>を使う
/dev/nullの使い方
入力先として指定しても何も内容を返さない
出力先として指定しても書き込んだデータはどこにも保存されず消えて無くなる
これを利用して、あらかじめ分かっている不要なメッセージを非表示にするために使ったりする
パイプライン
コマンドの標準出力を別のコマンドの標準入力につなぐ機能
ls -l / | less
history | less
フィルタ(=標準入力を入力として受け取り標準出力に出力するコマンドのこと)
head, tail, cat, grep, sort, uniq, tac, wc
パイプラインを組み合わせて複雑な処理を行う
例:指定されたディレクトリ内のファイルサイズを調べて、上位5つを表示する
code:パイプライン
# 結果が多すぎたのでheadで10行だけ表示
128512 /bin/VGAuthService
41544 /bin/[
29200 /bin/addr2line
29 /bin/alias
70176 /bin/applydeltarpm
6 /bin/apropos
62736 /bin/ar
33168 /bin/arch
378080 /bin/as
15856 /bin/aulast
# 数字で昇順に並べる
2 /bin/ex
2 /bin/rvi
2 /bin/rview
2 /bin/unxz
2 /bin/view
2 /bin/xzcat
3 /bin/captoinfo
3 /bin/geqn
3 /bin/gpic
3 /bin/gtar
# 大きい方が欲しいので-rで逆順にする(-r の代わりに、 | tac でもOK)
5354296 /bin/ld.gold
3178200 /bin/dwp
1550088 /bin/systemd-analyze
1062640 /bin/grub2-fstest
1025760 /bin/grub2-mkrescue
1006216 /bin/ld.bfd
964608 /bin/bash
910176 /bin/vi
842904 /bin/grub2-render-label
833888 /bin/grub2-file
# 5つなのでheadにオプションを渡す
5354296 /bin/ld.gold
3178200 /bin/dwp
1550088 /bin/systemd-analyze
1062640 /bin/grub2-fstest
1025760 /bin/grub2-mkrescue