pwd
me donne
/data/users/me/some/random/folder
Y a-t-il un moyen facile d'obtenir
~/some/random/folder
de pwd
?
Si vous utilisez Bash, alors le dirs
intégré a le comportement souhaité:
dirs +0
~/some/random/folder
(Noter +0
, ne pas -0
.)
Avec zsh
:
dirs
~/some/random/folder
Pour être exactement, nous avons d'abord besoin d'effacer la pile d'annuaires, sinon dirs
imprimerait tous les contenus:
dirs -c; dirs
Ou avec zsh
's print
intégré:
print -rD $PWD
ou
print -P %~
(celui-ci tourne expansion rapide sur. %~
dans $PS1
Développe au répertoire actuel avec $HOME
remplacé par ~
mais gère également autre nommé répertoires comme le répertoire de base d'autres utilisateurs ou annuaires que vous vous définissez).
Vous pouvez utiliser la fonctionnalité de remplacement de la sous-chaîne de la variable Bash:
$ pwd
/home/vagrant/foo/bar
$ echo ${PWD/#$HOME/'~'}
~/foo/bar
En utilisant sed
:
pwd | sed "s|^$HOME|~|"
L'idée est d'utiliser n'importe quel caractère moins susceptible d'apparaître dans un chemin de répertoire de maison comme délimiteur dans sed
regex. Dans l'exemple ci-dessus, j'utilise |
.
La bonne chose à propos de cette technique est qu'elle est en fait indépendante de Shell.
Vous pouvez également alias pwd
à /bin/pwd | sed "s|$HOME|~|"
Pour obtenir ce comportement dans d'autres scripts qui pourraient utiliser pwd
.