tilde=\~${PWD#~}
Saya pikir itu yang Anda inginkan?
Yang rapi tentang tilde adalah ketika diperluas sebagai pola yang tidak perlu dikutip. Menggunakan $HOME
dengan cara yang sama tanpa tanda kutip itu akan memberikan hasil yang tidak dapat diprediksi karena salah satu karakter penyusunnya bisa berupa karakter pola, sehingga mungkin tidak selalu memberikan hasil yang diharapkan.
Tetapi ekspansi tilde ditentukan untuk selalu terjadi seolah-olah itu adalah hasil dari ekspansi yang dikutip, dan hasilnya dapat diprediksi. Hal ini tampaknya berlaku di hampir setiap shell yang telah saya uji untuk kedua case
pola dan pola parameter dengan pengecualian keduanya ksh93
dan mksh
untuk alasan apa pun - tak satu pun yang tampaknya menghormati aspek kutip dari tilde dalam kapasitas itu.
Hal lain yang rapi tentang ini adalah Anda dapat mendefinisikan ulang $HOME
untuk menangani direktori apa pun dengan cara yang sama. Sebagai contoh:
cd ~
HOME=/some/prefix/I/would/like/to/trim
#or, perhaps more usefully, some scripted means of arriving at same
tilde=\~${OLDPWD#~}
HOME=$PWD
Ini contoh lain:
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
~