【发布时间】:2016-01-30 08:57:09
【问题描述】:
我遇到了一个我觉得应该很简单的问题,但我似乎无法找出答案。
我正在尝试使用 '~' 来缩写 bash 中的路径,类似于提示符的方式。
例如,如果我有路径
/home/user/temp/file1
我想把它变成
~/temp/file1
有没有简单的方法来做到这一点?还是我需要弄清楚如何比较字符串的各个部分?
【问题讨论】:
我遇到了一个我觉得应该很简单的问题,但我似乎无法找出答案。
我正在尝试使用 '~' 来缩写 bash 中的路径,类似于提示符的方式。
例如,如果我有路径
/home/user/temp/file1
我想把它变成
~/temp/file1
有没有简单的方法来做到这一点?还是我需要弄清楚如何比较字符串的各个部分?
【问题讨论】:
对于当前用户,可以使用子串替换操作符:
$ path=/home/user/foo/bar
$ echo $HOME
/home/user
$ echo ${path/#$HOME/\~}
~/foo/bar
对于任意用户,我不知道一个简单的解决方案。
【讨论】:
~ 扩展的事实...? path=/home/user/foo/bar; home_other_user=~other_users_username; echo ${path/#$home_other_user/\~}