SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
zshでコマンドライン
履歴を活用する2015/05/04
三宅 英明(mollifier)
自己紹介
名前: 三宅 英明
Twitter: @mollifier
はてなID: mollifier
神戸のプログラマ
好きなもの
zsh
vim
vimperator
ブログとか
はてなブログ
http://mollifier.hatenablog.com/
Twitter
http://twitter.com/mollifier
Qiita
http://qiita.com/mollifier
zshでコマンドライン履歴を活用
する
コマンドライン履歴とは
実行したコマンドを覚えていて、後
から使えるやつ
コマンドライン履歴
過去に入力したコマンドをもう一度
入力したいことが、けっこうある
コマンドライン履歴
毎日のように使うコマンドで、決まり
きったパターンを何回も入力するの
がめんどう
だいぶ前に入力したあのコマンドを
もう一度使いたいけど、引数の指定
とか忘れてしまった
コマンドライン履歴
そんなときはコマンドライン履歴を
使えばOK
1回入力したコマンドラインを覚えて
おいて、あとから使える
コマンドライン履歴を保存する
とりあえず基本の設定
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000
コマンドライン履歴を保存する
HISTFILEはコマンドライン履歴を保
存するファイル名の指定
何でもいいけど、~/.zsh_historyと
している人が多いもよう
別のファイル名でもいい
コマンドライン履歴を保存する
HISTSIZE、SAVEHISTはコマンドラ
イン履歴を何行保存するかの設定
普通は同じ値を設定しておけばOK
コマンドライン履歴を保存する
多めの設定を推奨
1万とか、なんかセコい
コマンドライン履歴を保存する
目安としては一生使っても使い切れ
ないぐらいの量
100万にしたら普通の人は100年
使っても足りるので、だいたいそれ
ぐらいでOK
気前よく1億とかにしてもOK
コマンドライン履歴を保存する
これでコマンドライン履歴が保存さ
れるようになる
コマンドライン履歴のためのオ
プション
これも足しておいたほうがいい
setopt share_history
setopt hist_ignore_all_dups
コマンドライン履歴のためのオ
プション
setopt share_history
同時に起動したzshの間でヒストリ
を共有する
コマンドライン履歴のためのオ
プション
setopt hist_ignore_all_dups
同じコマンドをヒストリに残さない
コマンドライン履歴
これで準備完了
コマンドライン履歴を活用する
保存するだけでは意味がない
保存したやつを後から便利に使う
方法を紹介する
コマンドライン履歴の活用(1)
コマンドライン履歴を閲覧するには、
historyコマンドを使う
% history
2880 cd
2881 ls
2882 cd work
2883 git status
コマンドライン履歴の活用(1)
historyコマンドで、最近16件の履
歴が表示される
コマンドライン履歴の活用(1)
全件表示したいときは引数を付ける
% history 1
1 mkdir work
2 ls
3 cd work
...
コマンドライン履歴の活用(1)
history 番号で、表示を開始する
番号を指定する
マイナスの番号も指定できる。例え
ばhistory -10で最近10件の履歴
を表示する
コマンドライン履歴の活用(1)
特にhistory 1で、すべてのコマン
ドライン履歴を表示する
コマンドライン履歴の活用(1)
もう一つ大事なオプション。history -
nで、履歴の番号を表示しなくなる
% history -n
cd
ls
cd work
git status
コマンドライン履歴の活用(1)
これで履歴を表示して、grepで検索す
る
% history -n 1 | grep 'git'
git commit
git init
git commit --ammend
...
コマンドライン履歴の活用(1)
汎用的。シェルの種類は関係ない
あんまりお手軽ではない
でも、正規表現で細かく条件を指定
して探せる
コマンドライン履歴の活用(1)
こんなaliasを設定しておくと便利
alias history-all='history -n 1'
コマンドライン履歴の活用(2)
インクリメンタル検索する
標準のCtrl+rで使える
コマンドライン履歴の活用(2)
デモ
コマンドライン履歴の活用(2)
これを~/.zshrcに書くと、インクリメンタ
ル検索でパターンマッチが使えるよう
になる
bindkey '^R' history-incremental-pattern-search-backward
コマンドライン履歴の活用(2)
記号としては、次の2つを覚えておけば
OK
記号 意味
* 長さ0以上の任
意の文字列
^ コマンドラインの
先頭
コマンドライン履歴の活用(3)
今の入力を元にコマンドライン履歴か
ら補完する
autoload -Uz history-search-end
zle -N history-beginning-search-backward-end 
history-search-end
bindkey "^O" history-beginning-search-backward-end
コマンドライン履歴の活用(3)
言葉では説明しにくいのでデモを見
せる
コマンドライン履歴の活用(3)
これが便利
キーバインドはお好みで
コマンドライン履歴を活用する
grepで全件から検索
インクリメンタル検索
今の入力を元に履歴から補完
とりあえずこれぐらいでOK
コマンドライン履歴を活用する
コマンドライン履歴は、自分がシェ
ルを使った記録が保存されている
大事なデータ
ブックマークやスニペットのようなも
の
コマンドライン履歴を活用する
もう、1回入力したコマンドは2度と
手入力しない
2回入力してしまったら死ぬ、ぐらい
の勢いで
コマンドライン履歴を活用する
細かい引数とかを覚えてなくてもコ
マンドが使えるようになる
シェルの操作が速く、確実になるの
で、上手に活用してください
zshでコマンドライン履歴を活用
する
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能についてshigeki_ohtsu
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?Teppei Sato
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解したtorisoup
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介Yuma Ohgami
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 

Was ist angesagt? (20)

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
Marp入門
Marp入門Marp入門
Marp入門
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
 
【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介【2000行弱!】x86用自作カーネルの紹介
【2000行弱!】x86用自作カーネルの紹介
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 

Andere mochten auch

Andere mochten auch (8)

宇宙zsh #2
宇宙zsh #2宇宙zsh #2
宇宙zsh #2
 
今から始めるzsh
今から始めるzsh今から始めるzsh
今から始めるzsh
 
vcs_infoを使おう
vcs_infoを使おうvcs_infoを使おう
vcs_infoを使おう
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
Antigenを使おう
Antigenを使おうAntigenを使おう
Antigenを使おう
 
pecoを使おう
pecoを使おうpecoを使おう
pecoを使おう
 
oh-my-zshを使うのは止めよう
oh-my-zshを使うのは止めようoh-my-zshを使うのは止めよう
oh-my-zshを使うのは止めよう
 
peco活用術
peco活用術peco活用術
peco活用術
 

Kürzlich hochgeladen

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (9)

IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

zshでコマンドライン履歴を活用する