3

我是 shell 编程新手

我有一个sed -i '$d' ~/.bash_history运行良好的命令。我想给它起别名,所以我把它写成

alias rh='sed -i "$d" ~/.bash_history'

当我执行rh它时,它执行没有错误,但不会从文件中删除任何内容。我觉得它与引号有关。

我究竟做错了什么?

4

3 回答 3

6

Bash 计算 "$d" 的值,如果 $d 未定义,则将其替换为 ""。尝试这个:

alias rh='sed -i '\''$d'\'' ~/.bash_history'
于 2013-09-12T17:48:57.493 回答
2

使用函数使引用更容易:

rh () { sed -i '$d' ~/.bash_history; }
于 2013-09-12T18:23:24.203 回答
1

就我而言,我必须实现一个混合解决方案,相当于:

alias rh='function _rh(){ sed -i '\''$d'\'' ~/.bash_history ; };_rh'
于 2016-03-24T06:43:14.460 回答