シェルコマンドでよく使う引数を書き留める
TL;DR
シェルコマンドの中で、しばしば自分が使っていて便利な引数、毎回検索するも忘れてしまって前回打ったコマンドをback-i-search
で探そうとするも見つからなくて困るものなどを記す。
diff
diff -y -B -b -i -W 200
- -y : 結果を2行に表示
- -W 200: 各行の幅を表示
- -B : 空行を無視
- -b : 空白スペースを無視
- -i : 大文字・小文字の違いを無視
sort
sort -n -r -k 3,3
- -n : 数値順に評価
- -r : 逆順にする
- -k : 並び替えるフィールドを指定する。上記の例だと3フィールド目。
tr
標準入力から標準出力へ、文字を変換・削除するなどして流し込むコマンド。
tr -d '\n'
- -d : 引数の文字を削除する
less
less -N -S -s +F
- -N : 行番号を付ける
- -S : 長い行を折り返さず、1行で表示
- -s : 空行を1行にまとめる
- +F : 更新をリアルタイムに見る
time
/usr/bin/time -p -o FILE [cmd]
- /usr/bin/time : シェル組み込みのtimeではなく、GNU timeを使う
- -p : 互換性のある出力にする
- -o FILE : 出力のファイル名を指定する
du
フォルダの容量を表示する
du -h --max-depth=2 [dir]
tar
tar czvf file.tar.gz file
tar xzvf file.tar.gz
curl
curl -H 'Content-Type:application/json' -d "{\"session\": \"test\"}" -u user:pass [url]
- -H : header
- -d : パラメータをつける
- -u : BasicAuthのユーザー情報
ps
プロセスを見る。
ps aux
- a : 自分以外のプロセスも見る
- u : ユーザー名が出る
- x : 端末を持たないプロセスも見る
convert
ImageMagickのコマンド。identify
もそうだが、パッケージ名とコマンド名が一致しないので注意。
タイル状に切り抜く時のコマンド。
convert -crop 64x64 +repage in.png out.png
こうすると、64x64でタイル状に左上から切り取ってくれる。ただし、割り切れずに端数がでる場合は端数サイズのファイルが出力されてしまうし、出力ファイル名はout-1.png
,out-2.png
のようになるので、sortするときに文字順で並べるとout-1.png
,out-10.png
,out-11.png
...のように並んで困ることになる場合もある。
xargs
xargs -P 22 -n 2 -t -I {} [cmd]
- -P : 指定した個数のプロセスを立ち上げて並列実行
- -n : cmdに渡す引数の個数
- -t : コマンドの実行内容を表示
- -I : [cmd]の部分に引数で渡した{}を使うと、その部分にxargsで渡される引数が入る。
- -i : -iも-Iと同様で、引数を省略すると自動で{}が採用されるが、deplecated.
ただしxargsからパイプでファイルに書き込みたいと思って、> output.txt
などと書いても、プロセスを並列化していると複数のプロセスから同時に書き込まれるので、1つのプロセスから書き込まれる内容が別々の行にばらけてしまうことがある。そういった諸々の問題が面倒なので、下のコマンドを使うこともある。
parallel
xargsより高性能に並列処理を行ってくれるコマンド。このGNU parallelは、apt-get
などで別途導入する。
シェルスクリプト(bash)
bash -x hoge.sh
- -x : 実行するコマンドも同時に出力する
- -c : 引数の文字列をシェルコマンドとして実行する
モニタリングツール
htop
プロセスをモニタリングするtopコマンドの拡張で、見やすい。
htop 上でキーをたたくと、表示様式を変更することができる。F1
キーをたたけばヘルプが見られる。
- u : ユーザーを限定してプロセスを表示
- H : ユーザープロセスのスレッドを隠すか表示させるかをトグルする
- l :
lsof
で開いているファイルを読む - s :
strace
で読んだシステムコールを読む
iostat
ioの状況を表示するコマンド
bmon
ネットワークアダプタの状況を表示するコマンド
その他
80 Linux Monitoring Tools for SysAdmins - Server Density Blog