個人的なShellTipsをまとめてみた
naoya_itoの火を噴いたシェルtips - Togetter
これを読んでふと書きたくなったので。ちなみに僕はbash使っています。
CTRLを使った便利系
まず、UNIXな操作あたり。
キーバインド | 意味 |
---|---|
CTRL + s | |
CTRL + q | 上記解除 |
CTRL + z | バックグラウンドに. fgで戻る |
CTRL + l | 画面をクリア。clearと同等 |
CTRL + c | 現在の処理を停止 |
CTRL + d | exitと同等 |
CTRL + r | historyからコマンド検索 |
emacsっぽいやつ
どっちかというとキー操作に近い。基本はemacs。metaは僕はoptionに割り当ててる。とりあえず触りたい人はESCでOK。
キーバインド | 意味 |
---|---|
CTRL + a | 行頭 |
CTRL + e | 行末 |
CTRL + f | → |
CTRL + b | ← |
CTRL + p | ↑ |
CTRL + n | ↓ |
CTRL + k | いまいるカーソルから後ろを切り取り |
CTRL + y | 貼り付け |
CTRL + j / CTRL + m | returnと同等 |
meta + f | ワードジャンプ(前) |
meta + b | ワードジャンプ(後) |
よくつかう地味なコマンド
コマンドというかtips的なもの。
ワンライナーで条件式
||とか&&で条件書く。ディレクトリがなければmkdirみたいなときに使う。以下のような感じ。
test -d ~/foo || mkdir ~/foo
ファイルのバックアップをラクに
fooというファイルのバックアップをとるときに以下のようにして書ける。
cp -ip foo{,.bak}
さらに日付を付けたい場合はこんな感じで書く。
cp -ip foo{,.`date +%Y%m%d`}
標準出力からrootでファイルを作りたいときはtee
リダイレクトでやってもいいんだけど、ちょっとハマるのでteeコマンドを使うことが多い。
echo hogehoge | sudo tee /path/to/file
こんなかんじでヒアドキュメントと組み合わせることもある。手順書を書くときなんかは便利。手順書でviとか勘弁。
sudo tee /path/to/file << EOF hogehoge fugafuga EOF
xargsで1行ずつ実行したい
find . | xargs echo
みたいにやると、echoの引数に全部わたってきてしまう。1行ずつ実行したい場合は以下のようにしてやる。
find . | xargs -n1 echo
xargsなくてもfindだけでexec
xargsネタになるとfindだけでできるよ的な話になるのでこっちも。こんな感じで書ける。
find . -exec echo {} \;
特定のPIDファイルのプロセスチェック
pidファイルからプロセス調べたいときってある。
ps `cat /var/run/httpd.pid `
名前解決にはhostコマンド
名前をひくときにちゃんと見たいときはdigとかつかうけど、ただ単純にIPアドレスを引っ張りたいときはこっちのほうがラク。そういえば、nslookupはやめようねって10年くらい前に言われた。
host nanapi.jp
pushd / popd
一旦他のディレクトリに移動してから戻りたいときとかよく使う。pushdでカレントディレクトリがスタックにたまっていく。
grep -ir
findしてgrepしてる人見かけるけど、grepだけでできる。まぁagつかうけど。
grep -ir foo *
resetコマンド
バイナリファイルを間違ってcatしたりしてしまってターミナル上の表示がおかしくなった時。resetを打てばOKです。
reset
emacsをdaemon化しておく
emacsは--daemonというオプションでdaemon化できる。あとはemacsclientからつなぐだけ。以下の記述をbashrcに入れている。
alias emd="emacs --daemon" alias emc="emacsclient -c" alias ekill="emacsclient -e '(progn (defun yes-or-no-p (p) t) (kill-emacs))'"
とりあえず思いついたあたりでこんなところ。