pwdの結果を「〜」と表示しますか?

pwdの結果を「〜」と表示しますか?

pwd私にください

/data/users/me/some/random/folder

簡単に入手できる方法はありますか?

~/some/random/folder

からpwd

答え1

Bashを使用している場合、組み込み関数は目的のdirsアクションを実行します。

dirs +0
~/some/random/folder

(ノート+0、いいえ-0.)

そしてzsh

dirs
~/some/random/folder

正確に言うと、まずディレクトリスタックを消去する必要があります。それ以外の場合は、dirsすべての内容が印刷されます。

dirs -c; dirs

または内蔵zsh機能を使用してください。print

print -rD $PWD

または

print -P %~

(その番急速な拡張存在する。%~inは次の代わりに$PS1現在のディレクトリに展開しますが、他のディレクトリも処理します。$HOME~名前ディレクトリ他のユーザーのホームディレクトリと同じ名前ディレクトリあなたが定義する)。

答え2

Bash変数サブストリング置換関数を使用できます。

$ pwd
/home/vagrant/foo/bar
$ echo ${PWD/#$HOME/'~'}
~/foo/bar

答え3

使用sed:

pwd | sed "s|^$HOME|~|"

sedホームディレクトリパスに表示される可能性がないすべての文字を正規表現の区切り文字として使用するのがアイデアです。上記の例では|

この技術の利点は、事実上シェルに依存しないことです。

また、エイリアスを使用して使用できる他のスクリプトからこの動作を取得することもできますpwd/bin/pwd | sed "s|$HOME|~|"pwd

答え4

不要な部品を次のように交換してみることができますsed

pwd | sed 's,^/data/users/me,~,'

または、より良い方法は次のとおりです。

pwd | sed "s,^$HOME,~,"

関連情報