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

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

Embed Size (px)

Citation preview

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

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

NODE-Setagaya#9 2014.04

@laugh_k

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

Profile• 名前

Kei Iwasaki

• Twitter

@laugh_k• 職業

MSP( 監視運用代行 ) の会社で

サーバ・ネットワークエンジニア的なもの• 近況

最近は Infrastructure as Code 的なものに

トライしていきたい年ごろです。

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

さて、みなさん

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

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

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

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

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

今回のテーマは CLI mini Hack と称した主に Unix 系環境におけるコマンドライン Tips

をいくつか紹介していきます。

といっても普段「俺こんな風に使ってるよー」

とい紹介チックな感じになりそうです。

今回の NODE-Setagaya

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

ここで質問

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

このターミナル (?) と

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

このターミナル

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

どっちを使いたい?

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

これはちょっと例が極端ですが見た目が綺麗な感じだと

Terminal 触っている時のモチベーション

全然違います

※ もちろん人によって違うところもあります

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

mini Hack その 1

なんだかんだで見た目大事

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

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

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

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

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

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

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

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

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

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

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

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

• フォントのレンダリングがしょっぱいので gdipp や MacType などのレンダリングを改善してくれる ツールを導入すればいい感じ。• フォントリンク機能でお気に入りの英字フォントと日本語フォントを組み合わせることができるので、案外選択の幅は広い。

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

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

DEMOその 1

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

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

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

mini Hack その 2

シェルとの付き合い方

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

利用するシーンが多いBash

を前提に進めていきます。(zsh など他のシェル使いの方すみません ...)

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

さて、みなさん

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

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

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

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

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

bash(emacs モード ) の最低限覚えておきたいショートカット

• C-a … コマンドの先頭にジャンプ

• C-e … コマンドの文末にジャンプ

• C-w … 1単語を後方削除

• C-k … カーソル位置から文末まで削除

• C-u … カーソル位置から文頭まで削除

• C-y … ショートカットで削除した文字を復元

• C-x C-e … 入力中のコマンドをエディタで編集

• C-r … historyを検索

• !<num> … history番号 $numのコマンドを再実行 “※ C-” は “ Ctrl+” の意味

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

DEMOその 2

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

そしてみなさん

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

シェル芸してますか?

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

マウスも使わずプログラムも書かずGUI ツールを立ち上げる間もなく、あらゆる調査・計算・ファイル処理をコマンド一撃で終わらす。

By USP 友の会 上田隆一 (@ryuichiueda) さん

シェル芸とは

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

ターミナルで過ごす時間が長いとシェル芸ができると色々はかどります

これマジ!

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

mini Hack その 3

シェル芸は身を助くTips の紹介

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

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

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

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

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

DEMOその 3

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

LL言語でスクリプトを書いたほうがいいケースもありますが

障害対応時などの緊急性が高い調査などでは絶大な威力を発揮します

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

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

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

そこでまた質問

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

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

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

古めの環境では特にvi しか入っていない

というケースも多く有りましたが

最近の Linux サーバではVim が入っているケースが増えてきました

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

vi のほうが軽量でよい

という意見もあるとは思いますが、ここでは Vim を押してみたいと思います

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

mini Hack その 4

vi もいいけど Vim も使おう

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

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

• vim -p <file1> <file2> … で複数ファイルタブ編集化。 (:tabe <file> もね )

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

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

• C-x C-f によるファイルパス補完も非常に便利

など

サーバ作業でも Vim を押す理由

SSH経由の場合は Terminalソフトの機能でどうにかなるケースもあるけど

データセンターなどのコンソール越し作業の場合は効率が雲泥の差。

普段から vim の扱いに慣れておくのが吉!

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

DEMOその 4

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

という感じで、

Vim が使える環境であればvi ではなく Vim を使っておくほうが

色々と幸せなケースが多いと思います

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

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

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

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

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

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

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

普段はこれ便利だから使っているんだけどなー

というものが使えない使えなくはないが設定が面倒

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

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

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

そこで

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

mini Hack その 5

自分で手が出せない環境での戦い方 Tips

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

環境設定系

• 環境変数確認

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

• デフォルトエディタの変更 visudo、 crontab -eなどで起動するエディタ。 環境変数 EDITORを編集。

## 時間を追加したい場合

[laughk@devel ~]$ PS1="(\t)$PS1"

(03:58:58)[laughk@devel ~]$

## vim に変更したい

% EDITOR=vim

% env

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

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'

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

Vim,vi 系• 行番号の on/off

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

• <tab>をソフトスペースに変更する。

• ソフトスペースに変更した <tab>の長さを変更

• 新しいタブで別ファイルを開く

:set nu “ 行番号 on

:set nonu “ 行番号 off

:set expandtab

:set tabstop=2 “ <tab> を半角スペース 2 つに変更

:syntax on

:tabe <filename>

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

DEMOその 5

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

最低限これだけでも覚えているといないでは

大きな差があると思います。

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

一方で

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

自分の Laptop や検証用に上げた VM マシンなどは

自分の好きなようにカスタムできるます。

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

やはりインフラサイドとなるとカスタムができない環境で

戦わなきゃ行けないケースもありますが

作業効率があがるのなら自分の環境はカスタムしておくべきです。

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

ということで社内に 24 時間起動可能な

オレオレ Linux サーバを立てた

と仮定した場合の Tips を紹介

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

mini Hack その 6

自分で手が出せる環境をカスタム( ツール紹介 )

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

オレオレサーバに入れておきたいツール• bash-completion

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

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

代わりに GNU screen入れておくのもアリ

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

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

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

DEMOその 6