SlideShare a Scribd company logo
1 of 70
Download to read offline
本格的に始めるzsh 
2014/11/30 
三宅 英明(mollifier)
自己紹介 
名前: 三宅 英明 
Twitter: @mollifier 
はてなID: mollifier 
神戸のプログラマ
好きなもの 
zsh 
vim 
vimperator
ブログとか 
はてなブログ 
http://mollifier.hatenablog.com/ 
Twitter 
http://twitter.com/mollifier 
Qiita 
http://qiita.com/mollifier
本格的に始めるzsh 
具体的なzshの使い方を勉強しまし 
ょう
本格的に始めるzsh 
いろんな機能があるけど
本格的に始めるzsh 
今日はこの3つを紹介 
補完 
ディレクトリ移動 
コマンドライン履歴
本格的に始めるzsh 
この3つが使えればだいたいいける
本格的に始めるzsh 
補完 
ディレクトリ移動 
コマンドライン履歴
補完 
zshといえば補完機能が有名。 
これを~/.zshrcに書いて、あとはTabを 
押す。 
autoload -Uz compinit 
compinit
補完 
cd 
ディレクトリだけ補完
補完 
man 
manのページ名を補完
補完 
grep 
–with-filename –recursive とか長いオプ 
ションを補完
補完 
find 
最初はディレクトリを補完。その後は-name 
とか-type dとか、なんでも補完
補完 
chmod 
644のときはすでに644なファイルは補完し 
ない。+xとかでも同様
補完 
tar 
tar xzfのときは.tar.gzファイルだけ補完。そ 
の後は展開対象ファイルをtarの中身から補 
完
補完 
kill 
プロセス名をプロセスIDに展開
補完 
make 
makeのターゲットを補完
補完 
apt-get 
apt-get installの後はインストールできるパ 
ッケージ名を補完
補完 
brew 
brew installの後はインストールできるパッ 
ケージ名を補完
補完 
scp 
コピー元またはコピー先ファイルとして、ssh 
でログインできるリモートサーバーのファイル 
名を補完
補完 
git 
サブコマンドもオプションも、なんでも補完。 
git addの後はaddが必要なファイルだけ補 
完
補完 
他にもいろいろあります。
補完 
使い方もTabを押すだけで簡単。何で 
もTabで補完。
補完 
Tabを押してちゃんと補完できなかっ 
たらバグと思ってよい
補完 
zshを使い始めたら、まずは補完を堪 
能してほしい
補完 
さらに補完を強化したいときは、zsh-completions 
をインストールする
zsh-completionsとは 
標準に含まれていない補完ファイル 
を集めたやつ 
さっき言ったbrewとかもこれを入れ 
ないと補完できない
zsh-completionsをインストー 
ルする 
$HOME/.zsh/の下にインストールす 
る場合の例 
% mkdir $HOME/.zsh/ # ディレクトリがまだない場合は作成する) 
% cd $HOME/.zsh/ 
% git clone git://github.com/zsh-users/zsh-completions.git
zsh-completionsをインストー 
ルする 
その後、~/.zshrcに次を追加 
fpath=($HOME/.zsh/zsh-completions/src(N-/) $fpath) 
注意として、これはcompinitの前に書 
く
zsh-completionsをインストー 
ルする 
または、Macの場合はhomebrewを 
使ってもインストールできる 
% brew install zsh-completions
zsh-completionsをインストー 
ルする 
この後、~/.zshrcに次を追加 
fpath=(/usr/local/share/zsh-completions(N-/) $fpath)
zsh-completionsをインストー 
ルする 
ただし、homebrewで入れるやつは若 
干古いので、GitHubから取ってくる方 
がおすすめ
補完候補をうろうろ選ぶ 
補完候補をうろうろ選ぶやつもあり 
ます 
正式にはメニュー補完と呼びます
補完候補をうろうろ選ぶ 
次を~/.zshrcに書く 
zstyle ':completion:*:default' menu select=2
補完候補をうろうろ選ぶ 
Ctrl+n, Ctrl+fとかEmacs風の操作で 
補完候補が選べる
補完 
これぐらいやっておけば補完はOK
本格的に始めるzsh 
補完 
ディレクトリ移動 
コマンドライン履歴
ディレクトリ移動 
ディレクトリ移動は頻度が高い 
なので重要
ディレクトリ移動 
とりあえずこの設定を使っておけばOK 
setopt auto_cd 
setopt auto_pushd 
setopt pushd_ignore_dups
ディレクトリ移動 
setopt auto_cd 
ディレクトリ名だけでcdする
ディレクトリ移動 
auto_pushd 
cdしたら勝手にpushdする
ディレクトリ移動 
pushd_ignore_dups 
pushdで残るディレクトリ一覧で、重複 
したものは残さないようにする
ディレクトリ移動 
この3つでcdした履歴が残る感じにな 
るので、まあ便利 
setopt auto_cd 
setopt auto_pushd 
setopt pushd_ignore_dups
ディレクトリ移動 
autp_pushdの履歴はzshを終了し 
たら消える 
ディレクトリ移動の履歴を永続化し 
て、終了しても保存されるようにした 
いときは、cdrを使う
cdrを使う 
cdrはzshに標準で含まれているので、 
使うのは簡単 
autoload -Uz add-zsh-hook 
autoload -Uz chpwd_recent_dirs cdr 
add-zsh-hook chpwd chpwd_recent_dirs
cdrを使う 
あとは適当にcdして、cdr のあとTAB 
で移動したディレクトリが補完される
cdrを使う 
なかなか便利なやつ
ディレクトリ移動 
ディレクトリ移動は、まあこれぐらい 
でOK
本格的に始めるzsh 
補完 
ディレクトリ移動 
コマンドライン履歴
コマンドライン履歴 
コマンドライン履歴とは 
実行したコマンドを覚えていて、後 
から使えるやつ
コマンドライン履歴 
過去に入力したコマンドをもう一度 
入力したいことが、けっこうある
コマンドライン履歴 
毎日のように使うコマンドで、決まり 
きったパターンを何回も入力するの 
がめんどう 
だいぶ前に入力したあのコマンドを 
もう一度使いたいけど、引数の指定 
とか忘れてしまった
コマンドライン履歴 
そんなときはコマンドライン履歴を 
使えばOK 
1回入力したコマンドラインを覚えて 
おいて、あとから使える
コマンドライン履歴 
とりあえず基本の設定 
HISTFILE=~/.zsh_history 
HISTSIZE=1000000 
SAVEHIST=1000000
コマンドライン履歴 
HISTFILEはコマンドライン履歴を保 
存するファイル名の指定 
何でもいいけど、~/.zsh_historyと 
している人が多いもよう 
別のファイル名でもいい
コマンドライン履歴 
HISTSIZE、SAVEHISTはコマンドラ 
イン履歴を何行保存するかの設定
コマンドライン履歴 
多めの設定を推奨 
目安としては一生使っても使い切れ 
ないぐらいの量 
100万にしたら普通の人は100年 
ぐらいたっても足りるので、だいたい 
それぐらいでOK 
気前よく1億とかにしてもOK
コマンドライン履歴 
これも足しておいたほうがいい 
setopt share_history 
setopt hist_ignore_all_dups
コマンドライン履歴 
setopt share_history 
同時に起動したzshの間でヒストリ 
を共有する
コマンドライン履歴 
setopt hist_ignore_all_dups 
同じコマンドをヒストリに残さない
コマンドライン履歴の活用(1) 
インクリメンタル検索する 
いろいろあるけど、標準のCtrl+rで 
だいたいOK
コマンドライン履歴の活用(2) 
今の入力を元にコマンドライン履歴か 
ら補完する 
autoload -Uz history-search-end 
zle -N history-beginning-search-backward-end  
history-search-end 
bindkey "^O" history-beginning-search-backward-end
コマンドライン履歴の活用(2) 
言葉では説明しにくいのでデモを見 
せる
コマンドライン履歴の活用(2) 
これが便利 
個人的にはzshの一番好きな機能
コマンドライン履歴の活用(3) 
普通にgrepで検索 
汎用的 
zsh関係ない 
% history 1 | grep 'git' 
153 git commit 
2862 git init 
% !2861
コマンドライン履歴 
とりあえずこれぐらいでOK 
もう、1回入力したコマンドは2度と 
手入力しない 
2回入力してしまったら死ぬ、ぐらい 
の勢いで
まとめ 
zshの機能はいろいろあるけど、この3 
つを設定しておけばだいたい大丈夫っ 
ぽい 
補完 
ディレクトリ移動 
コマンドライン履歴
まとめ 
他の機能はおいおいやっていけば 
いいと思う
本格的に始めるzsh 
ありがとうございました

More Related Content

What's hot

私がPerlを使う理由
私がPerlを使う理由私がPerlを使う理由
私がPerlを使う理由
Yohei Azekatsu
 
CPUをちょっと
CPUをちょっとCPUをちょっと
CPUをちょっと
Tksenda
 

What's hot (12)

私がPerlを使う理由
私がPerlを使う理由私がPerlを使う理由
私がPerlを使う理由
 
クリップボード監視と外部コマンド実行 #chibapm
クリップボード監視と外部コマンド実行 #chibapmクリップボード監視と外部コマンド実行 #chibapm
クリップボード監視と外部コマンド実行 #chibapm
 
CPUをちょっと
CPUをちょっとCPUをちょっと
CPUをちょっと
 
マルチタスクって奥が深い #mishimapm
マルチタスクって奥が深い #mishimapmマルチタスクって奥が深い #mishimapm
マルチタスクって奥が深い #mishimapm
 
今日からはじめるVim入門
今日からはじめるVim入門今日からはじめるVim入門
今日からはじめるVim入門
 
Lt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみたLt駆動開発03 コンパイル時fizz buzzやってみた
Lt駆動開発03 コンパイル時fizz buzzやってみた
 
Ruby(thorライブラリ)
Ruby(thorライブラリ)Ruby(thorライブラリ)
Ruby(thorライブラリ)
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
UbuntuやChromiumの紹介
UbuntuやChromiumの紹介UbuntuやChromiumの紹介
UbuntuやChromiumの紹介
 
Btrfs
BtrfsBtrfs
Btrfs
 
Oscillatorで楽器をつくりたい 2
Oscillatorで楽器をつくりたい 2Oscillatorで楽器をつくりたい 2
Oscillatorで楽器をつくりたい 2
 
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
 

Recently uploaded

Recently uploaded (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

本格的に始めるzsh