NODE-Setagaya#9 (http://www.zusaar.com/event/4877003) で話した時に使ったシートです。
Cli mini Hack!#1~Terminal との親睦を深めよう ~NODE-Setagaya#9 2014.04@laugh_k
View Slide
Profile•名前Kei Iwasaki•Twitter@laugh_k•職業MSP( 監視運用代行 ) の会社でサーバ・ネットワークエンジニア的なもの•近況最近は Infrastructure as Code 的なものにトライしていきたい年ごろです。
さて、みなさん
Terminal(SSH クライアント含む )使ってますかー!?
僕はこんな感じです! ( 多分これでも少なめ )
今回のテーマは CLI mini Hack と称した主に Unix 系環境におけるコマンドライン Tipsをいくつか紹介していきます。といっても普段「俺こんな風に使ってるよー」とい紹介チックな感じになりそうです。今回の NODE-Setagaya
ここで質問
このターミナル (?) と
このターミナル
どっちを使いたい?
これはちょっと例が極端ですが見た目が綺麗な感じだとTerminal 触っている時のモチベーション全然違います※ もちろん人によって違うところもあります
mini Hack その 1なんだかんだで見た目大事
個人的には以下のような感じで設定するのがオススメ•背景は黒系だと目が疲れにくいとはいえ完全に黒よりはなにか色が入ったほうがいい•厨二全開の半透明は「 Terminal 使ってる俺かっけー」ってなって結構やる気が出るのでおすすめ。 ( とはいえやり過ぎるかえってと文字が読みづらいので注意 )•vim とか emacs である“ Solarized” や ” Molokai” などの有名なカラースキームは各種 Terminal でも設定ファイルがWeb 上に転がってるので探してみるといいかも。•フォントは個人的にアンチエイリアス有りをすすめる。•最近のフォントマイブームは Ricty, DejaVu Sans Mono
Windows だと以下も注意するといいかも•cmd.exe は辛いので ckw-mod や console2 などのフロントエンド (?) を使うと少し幸せになれる。•vim や emacs のエディタに PATH を通しておこう。•mintty(cygwin) いいけど、 Windows との違いには注意•フォントのレンダリングがしょっぱいのでgdipp や MacType などのレンダリングを改善してくれるツールを導入すればいい感じ。•フォントリンク機能でお気に入りの英字フォントと日本語フォントを組み合わせることができるので、案外選択の幅は広い。•個人的には Windows だとMeiryo_Consolas( 等幅メイリオ ) + Consolas 押し
DEMOその 1
僕個人的にはやはり Solarized Dark 押し
mini Hack その 2シェルとの付き合い方
利用するシーンが多いBashを前提に進めていきます。(zsh など他のシェル使いの方すみません ...)
Bash のショートカットどれくらい使ってますか?
実はこれだけあったりします。( もちろんこれも一部 )
bash(emacs モード ) の最低限覚えておきたいショートカット•C-a … コマンドの先頭にジャンプ•C-e … コマンドの文末にジャンプ•C-w … 1 単語を後方削除•C-k … カーソル位置から文末まで削除•C-u … カーソル位置から文頭まで削除•C-y … ショートカットで削除した文字を復元•C-x C-e … 入力中のコマンドをエディタで編集•C-r … history を検索•! … history 番号 $num のコマンドを再実行“※ C-” は “ Ctrl+” の意味
DEMOその 2
そしてみなさん
シェル芸してますか?
マウスも使わずプログラムも書かずGUI ツールを立ち上げる間もなく、あらゆる調査・計算・ファイル処理をコマンド一撃で終わらす。By USP 友の会 上田隆一 (@ryuichiueda) さんシェル芸とは
ターミナルで過ごす時間が長いとシェル芸ができると色々はかどりますこれマジ!
mini Hack その 3シェル芸は身を助くTips の紹介
シェル芸 Tips## 重複処理% cat hoge | sort | uniq% cat hoge | sort | uniq -c ## 重複数カウント## sed の基礎 (aaa => bbb 全置換 )% sed -i 's/aaa/bbb/g' hoge.txt% sed -i.bak 's;aaa;bbb;g' hoge.txt ## バックアップ有り## 改行を取っ払う% cat hoge | tr -d '\n'•## for 文基礎 (in で指定したスペース区切りの文字でループ )% for var in “a b c d” ; do> echo $var ## ここに繰り返し処理> done## while 基礎 (1 行ごとにループ )% cat hoge | while read line ; do> echo $line ## ここに繰り返し処理> done
シェル芸 Tips## awk 芸基礎% echo 'a b c' | awk '{print $2}'b ## 単純なセパレータの抽出% echo 'a b c' | awk '{print $NF}'c ## 最後のセパレータ抽出% cat hoge | awk '/^hoge/ { print $1 }'hogehogehoge ## ^hoge にマッチした部分だけセパレート抽出## find + xargs による定期的ログ圧縮% find ~/myapps/logs \> -ctime +7 -a \> -name “*.log” \> -type f |> xargs gzip
DEMOその 3
LL 言語でスクリプトを書いたほうがいいケースもありますが障害対応時などの緊急性が高い調査などでは絶大な威力を発揮します
とはいいつつも、やはり設定ファイルの編集などはではエディタを使って編集したいものです
そこでまた質問
Vim (not vi) 使ってますか?
古めの環境では特にvi しか入っていないというケースも多く有りましたが最近の Linux サーバではVim が入っているケースが増えてきました
vi のほうが軽量でよいという意見もあるとは思いますが、ここでは Vim を押してみたいと思います
mini Hack その 4vi もいいけど Vim も使おう
•C-v からヴィジュアルモードに入れ、矩形編集ができる。•vim -p …で複数ファイルタブ編集化。 (:tabe もね )•設定ファイルの syntax が効くので読みやすくなる•C-n による補完がプラグインなしでも結構強力•C-x C-f によるファイルパス補完も非常に便利などサーバ作業でも Vim を押す理由SSH 経由の場合は Terminal ソフトの機能でどうにかなるケースもあるけどデータセンターなどのコンソール越し作業の場合は効率が雲泥の差。普段から vim の扱いに慣れておくのが吉!
DEMOその 4
という感じで、Vim が使える環境であればvi ではなく Vim を使っておくほうが色々と幸せなケースが多いと思います
もし、vi しか入っていなかった環境の場合は
シェル芸も駆使しながら頑張りましょう
ところで vim に限らずお客さんの環境などで作業を行う際
普段はこれ便利だから使っているんだけどなーというものが使えない使えなくはないが設定が面倒
というケースが少なくないです
そこで
mini Hack その 5自分で手が出せない環境での戦い方 Tips
環境設定系•環境変数確認•プロンプト変更bash の場合は環境変数 PS1 を変更する。•デフォルトエディタの変更visudo 、 crontab -e などで起動するエディタ。環境変数 EDITOR を編集。## 時間を追加したい場合[laughk@devel ~]$ PS1="(\t)$PS1"(03:58:58)[laughk@devel ~]$## vim に変更したい% EDITOR=vim% env
alias 系•view を vi ではなく vim の読み込み専用として使うalias するのも手•ls がカラーでない場合の対処 (GNU 系の場合のみ )% vim -R /etc/hosts% alias view='vim -R'% view /etc/hosts## カラー ON にする場合% alias ls='ls –color=auto'## カラーの代わりに文末のシンボルを ON にする% alias ls='ls -F'
Vim,vi 系•行番号の on/off•シンタックスが効かない場合• をソフトスペースに変更する。•ソフトスペースに変更した の長さを変更•新しいタブで別ファイルを開く:set nu “ 行番号 on:set nonu “ 行番号 off:set expandtab:set tabstop=2 “ を半角スペース 2 つに変更:syntax on:tabe
DEMOその 5
最低限これだけでも覚えているといないでは大きな差があると思います。
一方で
自分の Laptop や検証用に上げた VM マシンなどは自分の好きなようにカスタムできるます。
やはりインフラサイドとなるとカスタムができない環境で戦わなきゃ行けないケースもありますが作業効率があがるのなら自分の環境はカスタムしておくべきです。
ということで社内に 24 時間起動可能なオレオレ Linux サーバを立てたと仮定した場合の Tips を紹介
mini Hack その 6自分で手が出せる環境をカスタム( ツール紹介 )
オレオレサーバに入れておきたいツール•bash-completionbash の補完を強化するツールbash 派は必須。•tmuxCUI 版ウィンドウマネージャーのようなもの接続が切れてもプロセスが残っていればセッションを再開できる。自動ロギングを仕込んだりもできる。代わりに GNU screen 入れておくのもアリ•GNU screentmux があれば必要ないが、好みで入れるのはアリ•moshざっくり言うと次世代 SSH 。セッションが切れても再接続するため、ネットワークが細い無線環境からの接続も安心
DEMOその 6