SlideShare a Scribd company logo
1 of 60
Download to read offline
Cli mini Hack!#1
~Terminal との親睦を深めよう ~
NODE-Setagaya#9 2014.04
@laugh_k
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 を検索
• !<num> … 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 }'
hoge
hogehoge ## ^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 その 4
vi もいいけど Vim も使おう
• C-v からヴィジュアルモードに入れ、矩形編集ができる。
• vim -p <file1> <file2> …
で複数ファイルタブ編集化。 (:tabe <file> もね )
• 設定ファイルの 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
• シンタックスが効かない場合
• <tab> をソフトスペースに変更する。
• ソフトスペースに変更した <tab> の長さを変更
• 新しいタブで別ファイルを開く
:set nu “ 行番号 on
:set nonu “ 行番号 off
:set expandtab
:set tabstop=2 “ <tab> を半角スペース 2 つに変更
:syntax on
:tabe <filename>
DEMO
その 5
最低限これだけでも
覚えているといないでは
大きな差があると思います。
一方で
自分の Laptop や
検証用に上げた VM マシンなどは
自分の好きなようにカスタムできるます。
やはりインフラサイドとなると
カスタムができない環境で
戦わなきゃ行けないケースもありますが
作業効率があがるのなら
自分の環境はカスタムしておくべきです。
ということで
社内に 24 時間起動可能な
オレオレ Linux サーバを立てた
と仮定した場合の Tips を紹介
mini Hack その 6
自分で手が出せる環境をカスタム
( ツール紹介 )
オレオレサーバに入れておきたいツール
• bash-completion
bash の補完を強化するツール
bash 派は必須。
• tmux
CUI 版ウィンドウマネージャーのようなもの
接続が切れてもプロセスが残っていればセッションを
再開できる。自動ロギングを仕込んだりもできる。
代わりに GNU screen 入れておくのもアリ
• GNU screen
tmux があれば必要ないが、好みで入れるのはアリ
• mosh
ざっくり言うと次世代 SSH 。
セッションが切れても再接続するため、ネットワーク
が細い無線環境からの接続も安心
DEMO
その 6

More Related Content

What's hot

Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPADPuppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
 

What's hot (20)

実"戦"CakePHP Plugin
実"戦"CakePHP Plugin実"戦"CakePHP Plugin
実"戦"CakePHP Plugin
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5PHPコアから読み解くPHP5.5
PHPコアから読み解くPHP5.5
 
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPADPuppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
 
シェル入門
シェル入門シェル入門
シェル入門
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
PHP AST 徹底解説
PHP AST 徹底解説PHP AST 徹底解説
PHP AST 徹底解説
 
FuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみたFuelPHPで3種のprofilerを使ってみた
FuelPHPで3種のprofilerを使ってみた
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
 

Viewers also liked

Awards and recognition
Awards and recognitionAwards and recognition
Awards and recognition
Natalie Munoz
 
2 moore prague-presentation
2 moore prague-presentation2 moore prague-presentation
2 moore prague-presentation
ifa2012_2
 
Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...
Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...
Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...
Alexander Erlikh
 
Skriveni svijet - Natura 2000
Skriveni svijet - Natura 2000Skriveni svijet - Natura 2000
Skriveni svijet - Natura 2000
hhdhyla
 
แนวทางการดูแลรักษา
แนวทางการดูแลรักษาแนวทางการดูแลรักษา
แนวทางการดูแลรักษา
tarn23
 

Viewers also liked (20)

Awards and recognition
Awards and recognitionAwards and recognition
Awards and recognition
 
2 moore prague-presentation
2 moore prague-presentation2 moore prague-presentation
2 moore prague-presentation
 
Redvolucion
RedvolucionRedvolucion
Redvolucion
 
ANGIE RAMIREZ NORMAL SUPERIOR
ANGIE RAMIREZ NORMAL SUPERIORANGIE RAMIREZ NORMAL SUPERIOR
ANGIE RAMIREZ NORMAL SUPERIOR
 
KAROL DAYANA GALINDO
KAROL DAYANA GALINDOKAROL DAYANA GALINDO
KAROL DAYANA GALINDO
 
Erika rocio vargas 2
Erika rocio vargas 2Erika rocio vargas 2
Erika rocio vargas 2
 
Bidang yang dinilai dlm skpm standars 1 dan 2
Bidang yang dinilai dlm skpm standars 1 dan 2Bidang yang dinilai dlm skpm standars 1 dan 2
Bidang yang dinilai dlm skpm standars 1 dan 2
 
Classic American Cars
Classic American CarsClassic American Cars
Classic American Cars
 
Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...
Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...
Исследование удовлетворенности изменениями в работе поликлиник зелао (презент...
 
Kone root
Kone rootKone root
Kone root
 
Andres bladimir daza ibañez1
Andres bladimir daza ibañez1Andres bladimir daza ibañez1
Andres bladimir daza ibañez1
 
Skriveni svijet - Natura 2000
Skriveni svijet - Natura 2000Skriveni svijet - Natura 2000
Skriveni svijet - Natura 2000
 
Lina marcela baron
Lina marcela baronLina marcela baron
Lina marcela baron
 
Merly yuliana garcía moreno
Merly yuliana garcía morenoMerly yuliana garcía moreno
Merly yuliana garcía moreno
 
Diris edilsa garcia
Diris edilsa garciaDiris edilsa garcia
Diris edilsa garcia
 
แนวทางการดูแลรักษา
แนวทางการดูแลรักษาแนวทางการดูแลรักษา
แนวทางการดูแลรักษา
 
Viviana veloza santamaria (1)
Viviana veloza santamaria (1)Viviana veloza santamaria (1)
Viviana veloza santamaria (1)
 
Accenture fjord-trends-2015
Accenture fjord-trends-2015Accenture fjord-trends-2015
Accenture fjord-trends-2015
 
Omay Milena Rojas Martinez 1
Omay Milena Rojas Martinez 1Omay Milena Rojas Martinez 1
Omay Milena Rojas Martinez 1
 
Edwar Ferney Martinez
Edwar Ferney MartinezEdwar Ferney Martinez
Edwar Ferney Martinez
 

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

MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LTMySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
Tomohiro Ikeda
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
icchy
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Hisateru Tanaka
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
 

Similar to Cli mini Hack!#1 ~Terminalとの親睦を深めよう~ (20)

ゆるかわPhp
ゆるかわPhpゆるかわPhp
ゆるかわPhp
 
Haikara
HaikaraHaikara
Haikara
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
Programming camp Codereading
Programming camp CodereadingProgramming camp Codereading
Programming camp Codereading
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LTMySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
 
Zabbix study5lt
Zabbix study5ltZabbix study5lt
Zabbix study5lt
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
卒研発表
卒研発表卒研発表
卒研発表
 
シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)シェル芸初心者によるシェル芸入門 (修正版)
シェル芸初心者によるシェル芸入門 (修正版)
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたので
 

More from Kei IWASAKI

More from Kei IWASAKI (9)

コロナ渦とキャリアの話 / my carrier and covid-19
コロナ渦とキャリアの話 / my carrier and covid-19コロナ渦とキャリアの話 / my carrier and covid-19
コロナ渦とキャリアの話 / my carrier and covid-19
 
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
 
Elasticbeanstalk で Ansible を使っている話
Elasticbeanstalk で Ansible を使っている話Elasticbeanstalk で Ansible を使っている話
Elasticbeanstalk で Ansible を使っている話
 
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
 
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoPelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 Tokyo
 
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
 
Vagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみようVagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみよう
 
障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識
 
監視のススメ
監視のススメ監視のススメ
監視のススメ
 

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