今回の内容
Zsh/Bash での pwdコマンド(フルパスの表示)の出力に $HOME が含まれる場合に、 ~ を使った表記にするという方法の話です。
コマンド
今回の結果を得られるコマンドの一例は、以下になります。
echo "${PWD/#$HOME/~}"
この後で、内容を補足します。
コマンドに関する補足
PWD は /【Users や home】/【username】/【続きのパス】 という内容になり、 HOMEは /【Users や home】/【username】 という内容になります。
そして 【処理対象の文字列】/#【置きかえ対象の文字列】/【置きかえ後の文字列】 という部分は、 # が使われていることにより、「 【処理対象の文字列】 から先頭一致で 【置きかえ対象の文字列】 を探し、 【置きかえ後の文字列】 に置きかえる」という挙動になります。
それで、 PWD の /【Users や home】/【username】/【続きのパス】 という文字列に対して、 HOMEの /【Users や home】/【username】 となる文字列が ~ に置き換わります。
その結果、 ~/【続きのパス】 となる文字列が出力されるという仕組みです。
(補足説明が見づらい感じになってる...)
実際に試した例
以下は、実際に試した例です。水色の矩形の部分は 【Users や home】/【username】 にあたる部分です。その部分が、 echo "${PWD/#$HOME/~}" というコマンドを使ったことで、 ~ になることが確認できました。
参照した情報
●Shell scriptにおける, '', "", , ``, $()まとめ #Terminal - Qiita
https://qiita.com/shyum/items/6bbdef9b7474cea1622b
●【pwd】Linuxでカレントディレクトリを表示するコマンド | UX MILK
https://uxmilk.jp/27622
