$30 off During Our Annual Pro Sale. View Details »

Cli mini Hack!#1 ~Terminalとの親睦を深めよう~

Cli mini Hack!#1 ~Terminalとの親睦を深めよう~

NODE-Setagaya#9 (http://www.zusaar.com/event/4877003) で話した時に使ったシートです。

Kei Iwasaki

April 13, 2014
Tweet

More Decks by Kei Iwasaki

Other Decks in Technology

Transcript

  1. Cli mini Hack!#1
    ~Terminal との親睦を深めよう ~
    NODE-Setagaya#9 2014.04
    @laugh_k

    View Slide

  2. Profile

    名前
    Kei Iwasaki

    Twitter
    @laugh_k

    職業
    MSP( 監視運用代行 ) の会社で
    サーバ・ネットワークエンジニア的なもの

    近況
    最近は Infrastructure as Code 的なものに
    トライしていきたい年ごろです。

    View Slide

  3. さて、みなさん

    View Slide

  4. Terminal(SSH クライアント含む )
    使ってますかー!?

    View Slide

  5. 僕はこんな感じです! ( 多分これでも少なめ )

    View Slide

  6. 今回のテーマは CLI mini Hack と称した
    主に Unix 系環境におけるコマンドライン Tips
    をいくつか紹介していきます。
    といっても普段
    「俺こんな風に使ってるよー」
    とい紹介チックな感じになりそうです。
    今回の NODE-Setagaya

    View Slide

  7. ここで質問

    View Slide

  8. このターミナル (?) と

    View Slide

  9. このターミナル

    View Slide

  10. どっちを使いたい?

    View Slide

  11. これはちょっと例が極端ですが
    見た目が綺麗な感じだと
    Terminal 触っている時のモチベーション
    全然違います
    ※ もちろん人によって違うところもあります

    View Slide

  12. mini Hack その 1
    なんだかんだで見た目大事

    View Slide

  13. 個人的には以下のような感じで設定するのがオススメ

    背景は黒系だと目が疲れにくい
    とはいえ完全に黒よりはなにか色が入ったほうがいい

    厨二全開の半透明は「 Terminal 使ってる俺かっけー」って
    なって結構やる気が出るのでおすすめ。 ( とはいえやり過ぎる
    かえってと文字が読みづらいので注意 )

    vim とか emacs である“ Solarized” や ” Molokai” など
    の有名なカラースキームは各種 Terminal でも設定ファイルが
    Web 上に転がってるので探してみるといいかも。

    フォントは個人的にアンチエイリアス有りをすすめる。

    最近のフォントマイブームは Ricty, DejaVu Sans Mono

    View Slide

  14. Windows だと以下も注意するといいかも

    cmd.exe は辛いので ckw-mod や console2 などの
    フロントエンド (?) を使うと少し幸せになれる。

    vim や emacs のエディタに PATH を通しておこう。

    mintty(cygwin) いいけど、 Windows との違いには注意

    フォントのレンダリングがしょっぱいので
    gdipp や MacType などのレンダリングを改善してくれる
    ツールを導入すればいい感じ。

    フォントリンク機能でお気に入りの英字フォントと日本語フォン
    トを組み合わせることができるので、案外選択の幅は広い。

    個人的には Windows だと
    Meiryo_Consolas( 等幅メイリオ ) + Consolas 押し

    View Slide

  15. DEMO
    その 1

    View Slide

  16. 僕個人的にはやはり Solarized Dark 押し

    View Slide

  17. mini Hack その 2
    シェルとの付き合い方

    View Slide

  18. 利用するシーンが多い
    Bash
    を前提に進めていきます。
    (zsh など他のシェル使いの方すみません ...)

    View Slide

  19. さて、みなさん

    View Slide

  20. Bash のショートカット
    どれくらい使ってますか?

    View Slide

  21. 実はこれだけあったりします。
    ( もちろんこれも一部 )

    View Slide

  22. 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+” の意味

    View Slide

  23. DEMO
    その 2

    View Slide

  24. そしてみなさん

    View Slide

  25. シェル芸してますか?

    View Slide

  26. マウスも使わず
    プログラムも書かず
    GUI ツールを立ち上げる間もなく、
    あらゆる調査・計算・ファイル処理を
    コマンド一撃で終わらす。
    By USP 友の会 上田隆一 (@ryuichiueda) さん
    シェル芸とは

    View Slide

  27. ターミナルで過ごす時間が長いと
    シェル芸ができると色々はかどります
    これマジ!

    View Slide

  28. mini Hack その 3
    シェル芸は身を助く
    Tips の紹介

    View Slide

  29. シェル芸 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

    View Slide

  30. シェル芸 Tips
    ## awk 芸基礎
    % echo 'a b c' | awk '{print $2}'
    b ## 単純なセパレータの抽出
    % echo 'a b c' | awk '{print $NF}'
    c ## 最後のセパレータ抽出
    % cat hoge | awk '/^hoge/ { print $1 }'
    hoge
    hogehoge ## ^hoge にマッチした部分だけセパレート抽出
    ## find + xargs による定期的ログ圧縮
    % find ~/myapps/logs \
    > -ctime +7 -a \
    > -name “*.log” \
    > -type f |
    > xargs gzip

    View Slide

  31. DEMO
    その 3

    View Slide

  32. LL 言語でスクリプトを書いたほうが
    いいケースもありますが
    障害対応時などの
    緊急性が高い調査などでは
    絶大な威力を発揮します

    View Slide

  33. とはいいつつも、
    やはり設定ファイルの編集などはでは
    エディタを使って編集したいものです

    View Slide

  34. そこでまた質問

    View Slide

  35. Vim (not vi) 使ってますか?

    View Slide

  36. 古めの環境では特に
    vi しか入っていない
    というケースも多く有りましたが
    最近の Linux サーバでは
    Vim が入っているケースが増えてきました

    View Slide

  37. vi のほうが軽量でよい
    という意見もあるとは思いますが、
    ここでは Vim を押してみたいと思います

    View Slide

  38. mini Hack その 4
    vi もいいけど Vim も使おう

    View Slide


  39. C-v からヴィジュアルモードに入れ、矩形編集ができる。

    vim -p …
    で複数ファイルタブ編集化。 (:tabe もね )

    設定ファイルの syntax が効くので読みやすくなる

    C-n による補完がプラグインなしでも結構強力

    C-x C-f によるファイルパス補完も非常に便利
    など
    サーバ作業でも Vim を押す理由
    SSH 経由の場合は Terminal ソフトの機能でどうにかなるケースもあるけど
    データセンターなどのコンソール越し作業の場合は効率が雲泥の差。
    普段から vim の扱いに慣れておくのが吉!

    View Slide

  40. DEMO
    その 4

    View Slide

  41. という感じで、
    Vim が使える環境であれば
    vi ではなく Vim を使っておくほうが
    色々と幸せなケースが多いと思います

    View Slide

  42. もし、
    vi しか入っていなかった環境の場合は

    View Slide

  43. シェル芸も駆使しながら頑張りましょう

    View Slide

  44. ところで vim に限らず
    お客さんの環境などで作業を行う際

    View Slide

  45. 普段は
    これ便利だから使っているんだけどなー
    というものが使えない
    使えなくはないが設定が面倒

    View Slide

  46. というケースが少なくないです

    View Slide

  47. そこで

    View Slide

  48. mini Hack その 5
    自分で手が出せない環境での戦い方 Tips

    View Slide

  49. 環境設定系

    環境変数確認

    プロンプト変更
    bash の場合は環境変数 PS1 を変更する。

    デフォルトエディタの変更
    visudo 、 crontab -e などで起動するエディタ。
    環境変数 EDITOR を編集。
    ## 時間を追加したい場合
    [laughk@devel ~]$ PS1="(\t)$PS1"
    (03:58:58)[laughk@devel ~]$
    ## vim に変更したい
    % EDITOR=vim
    % env

    View Slide

  50. 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'

    View Slide

  51. Vim,vi 系

    行番号の on/off

    シンタックスが効かない場合

    をソフトスペースに変更する。

    ソフトスペースに変更した の長さを変更

    新しいタブで別ファイルを開く
    :set nu “ 行番号 on
    :set nonu “ 行番号 off
    :set expandtab
    :set tabstop=2 “ を半角スペース 2 つに変更
    :syntax on
    :tabe

    View Slide

  52. DEMO
    その 5

    View Slide

  53. 最低限これだけでも
    覚えているといないでは
    大きな差があると思います。

    View Slide

  54. 一方で

    View Slide

  55. 自分の Laptop や
    検証用に上げた VM マシンなどは
    自分の好きなようにカスタムできるます。

    View Slide

  56. やはりインフラサイドとなると
    カスタムができない環境で
    戦わなきゃ行けないケースもありますが
    作業効率があがるのなら
    自分の環境はカスタムしておくべきです。

    View Slide

  57. ということで
    社内に 24 時間起動可能な
    オレオレ Linux サーバを立てた
    と仮定した場合の Tips を紹介

    View Slide

  58. mini Hack その 6
    自分で手が出せる環境をカスタム
    ( ツール紹介 )

    View Slide

  59. オレオレサーバに入れておきたいツール

    bash-completion
    bash の補完を強化するツール
    bash 派は必須。

    tmux
    CUI 版ウィンドウマネージャーのようなもの
    接続が切れてもプロセスが残っていればセッションを
    再開できる。自動ロギングを仕込んだりもできる。
    代わりに GNU screen 入れておくのもアリ

    GNU screen
    tmux があれば必要ないが、好みで入れるのはアリ

    mosh
    ざっくり言うと次世代 SSH 。
    セッションが切れても再接続するため、ネットワーク
    が細い無線環境からの接続も安心

    View Slide

  60. DEMO
    その 6

    View Slide