👋

1つ上のディレクトリ名をとるShellコマンド

2021/09/18に公開

1 つ上のディレクトリ path をとる

~/.ghq/github.com/elzup/anozonbiyori
$ basename ${PWD%/*}
elzup

現在のディレクトリ path をとる

~/.ghq/github.com/elzup/anozonbiyori
$ basename $PWD
anozonbiyori

2 ディレクトリをとる

$
~/.ghq/github.com/elzup/anozonbiyori
echo `basename ${PWD%/*}`/`basename $PWD`
elzup/anozonbiyori

補足

${PWD%/*} という部分は文字列置換が働いてます。

参考: bash の変数内文字列置換まとめ - Qiita

$ pwd
/Users/hiro/.ghq/github.com/elzup/anozonbiyori

$ echo ${PWD%/*} # 末尾から/までの非貪欲マッチ部分を削除
/Users/hiro/.ghq/github.com/elzup

$ basename ${PWD%/*}
elzup

$ echo ${${PWD%/*}##*/}
elzup

おまけ: alias 化

推奨はしないよ!

title=.zshrc
alias basename-current='basename ${PWD}'
alias basename-parent='echo `basename ${PWD%/*}`/`basename $PWD`'
alias reponame=basename-parent
GitHubで編集を提案

Discussion