pwd
がくれます
/data/users/me/some/random/folder
入手する簡単な方法はありますか
~/some/random/folder
pwd
から
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 %~
(これはプロンプト拡張をオンにします。%~
の$PS1
は、$HOME
を~
に置き換えて現在のディレクトリに展開しますが、他の名前付きディレクトリも処理します他のユーザーのホームディレクトリ、または自分で定義した名前付きディレクトリなど)。
Bash変数の部分文字列置換機能を使用できます。
$ pwd
/home/vagrant/foo/bar
$ echo ${PWD/#$HOME/'~'}
~/foo/bar
sed
の使用:
pwd | sed "s|^$HOME|~|"
アイデアは、sed
正規表現の区切り文字として、ホームディレクトリパスに出現する可能性が低い任意の文字を使用することです。上記の例では、|
を使用しています。
この手法の良い点は、実際にはシェルに依存しないことです。
pwd
を/bin/pwd | sed "s|$HOME|~|"
にエイリアスして、pwd
を使用している可能性がある他のスクリプトでこの動作を実行することもできます。
_tilde=\~${PWD#~}
_
それがあなたの望みだと思いますか?
ティルダの優れた点は、引用符を必要としないパターンとして展開されるときです。引用符なしで同じ方法で_$HOME
_を使用すると、構成文字がパターン文字になる可能性があるため、予期しない結果が表示され、必ずしも期待どおりの結果が表示されるとは限りません。
しかし、ティルダ展開は、引用符で囲まれた展開の結果であるかのように常に発生するため、その結果は予測可能です。これは、何らかの理由で_ksh93
_とcase
の両方の注目すべき例外を除いて、mksh
パターンとパラメーターパターンの両方についてテストしたほぼすべてのシェルに当てはまるようです。その容量。
これに関するもう1つの優れた点は、_$HOME
_を再定義して、すべてのディレクトリをまったく同じ方法で処理できることです。例えば:
_cd ~
HOME=/some/prefix/I/would/like/to/trim
#or, perhaps more usefully, some scripted means of arriving at same
tilde=\~${OLDPWD#~}
HOME=$PWD
_
次に別の例を示します。
_set 1 2 3 4 5 \~
cd ~; cd -; HOME= IFS=/
for d do shift
HOME=${*#~/}/$d
set ~ "$d" $HOME
done; cd -; HOME=$PWD
printf %s\\n "$@"
5/4/3/2/1/2/3/4/5/~/1/2/3/4/5/~
~
5
4
3
2
1
2
3
4
5
~
1
2
3
4
5
~
_
不要な部分をsed
に置き換えてみてください。
pwd | sed 's,^/data/users/me,~,'
またはさらに良い:
pwd | sed "s,^$HOME,~,"