我尝试过: $ echo $HOME | sed 的/$HOME/~/g
但这不起作用,也许是因为正斜杠?
有没有人有一个脚本来执行此操作或者:
- 使用 bash 内置函数
- 使用 sed
谢谢
答案1
有几件事导致您的命令无法正常工作。
首先,bash 永远不会在单引号内执行变量扩展(也不会执行命令扩展等)。您需要使用双引号。
此外,它很可能$HOME
至少包含一个斜杠,因此在sed
命令中使用斜杠符号作为目标字符串和替换字符串之间的分隔符意味着您需要转义 中存在的任何斜杠$HOME
:
$ echo $HOME | sed "s/${HOME//\//\\\/}/~/"
~
回应您下面的评论,是的,您还可以使用bash
's 字符串变量运算符来完成此操作,并且更简洁:
$ echo $A
/home/jim/screenshot.png
$ echo "${A/$HOME/\~}"
~/screenshot.png