pushd と dirs を peco でちょっと便利に使う
6 日目担当の @tsubasaogawa です。5 日目は @yk-m さんの「iOS11 / iPhone X 対応をした話」でした。
この記事は以下について書かれています
- Bash における pushd と dirs の使い方
- peco を使って両者をちょっと便利に使う tips
解決したいこと
- 過去に移動したディレクトリへ戻りたい
- けど打つのが面倒
- むしろパスの一部を忘れた
解決案: pushd と dirs
各コマンドについて
- pushd: 基本的には
cd
と同じ。これに加えて、カレントディレクトリの絶対パスを スタック する
- dirs: スタックした一覧を表示
- 過去に移動したディレクトリへ戻りたい
- けど打つのが面倒
- むしろパスの一部を忘れた
解決案: pushd と dirs
各コマンドについて
- pushd: 基本的には
cd
と同じ。これに加えて、カレントディレクトリの絶対パスを スタック する
- dirs: スタックした一覧を表示
cd
と同じ。これに加えて、カレントディレクトリの絶対パスを スタック するpopd
というコマンドもありますが、今回は使いません。
使い方
$ pushd /var
/var
$ pushd cache/
/var/cache /var
(中略)
$ pushd epel/
/var/cache/yum/x86_64/6/epel /var/cache/yum/x86_64/6 /var/cache/yum/x86_64 /var/cache/yum /var/cache /var
$ pwd
/var/cache/yum/x86_64/6/epel
$ dirs -v
0 /var/cache/yum/x86_64/6/epel
1 /var/cache/yum/x86_64/6
2 /var/cache/yum/x86_64
3 /var/cache/yum
4 /var/cache
5 /var
pushd +[番号]
で一気にジャンプできます。
$ pushd +4
/var/cache /var /var/cache/yum/x86_64/6/epel /var/cache/yum/x86_64/6 /var/cache/yum/x86_64 /var/cache/yum
$ pwd
/var/cache
dirs ~ pushd +[番号] するのが地味に面倒です。
peco を使って少しラクに移動する
peco について
- お馴染みのあの娘です。詳しくは 公式 へ
.bashrc にエイリアスとファンクションを追加
- pushd へのエイリアス
pd
- 普段の移動はコレ
- pushd + dirs + peco を使ったファンクション
pds
- 過去のディレクトリに戻りたくなったらコレ
.bashrc
alias pd='pushd'
# 慣例に習うなら関数名は peco-pushd がいいかも
function pds() {
# peco が無ければ何もしない
! which peco >/dev/null 2>&1 && echo 'please install peco' 1>&2 && return 1
# dirs -v の結果を peco でフィルタリングして、キューの番号を取得
local pushd_number=$(dirs -v | peco | perl -anE 'say $F[0]')
# peco が強制終了されたら何もしない
[[ -z $pushd_number ]] && return 1
# 移動
pushd +$pushd_number
return $?
}
実行例
pd
- 普段の移動はコレ
pds
- 過去のディレクトリに戻りたくなったらコレ
.bashrc
alias pd='pushd'
# 慣例に習うなら関数名は peco-pushd がいいかも
function pds() {
# peco が無ければ何もしない
! which peco >/dev/null 2>&1 && echo 'please install peco' 1>&2 && return 1
# dirs -v の結果を peco でフィルタリングして、キューの番号を取得
local pushd_number=$(dirs -v | peco | perl -anE 'say $F[0]')
# peco が強制終了されたら何もしない
[[ -z $pushd_number ]] && return 1
# 移動
pushd +$pushd_number
return $?
}
さいごに
- 工夫次第でまだまだ改善の余地があります。peco を普段の作業にどう組み込むと便利か? について考えると楽しいです。fzf 版も試してみたいです。
- zsh では
cd
+ 補完機能で実現できるようです (zshでディレクトリスタックを手軽に移動する)
- 参考: ディレクトリの移動は cd コマンドよりも pushd コマンドのほうが便利!
- そして書いてから気付く、本記事の車輪の (再^n) 発明感 (さらに高度な) ご参考:
cd
+ 補完機能で実現できるようです (zshでディレクトリスタックを手軽に移動する)明日 7 日目は @esu_eichi さんです。お楽しみに。
Author And Source
この問題について(pushd と dirs を peco でちょっと便利に使う), 我々は、より多くの情報をここで見つけました https://qiita.com/tsubasaogawa/items/f1c9de7062bf3ee165a8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .