5

我有一个别名来查看我的 apache 错误日志,它使用 sed 将换行符格式化为换行符以便更好地显示。以下命令在通过命令行输入时可以正常工作,但不能用作别名。每次我运行它时,我都需要打开我的 .profile,复制别名的内容,然后将其粘贴到命令行中。

tail -f /var/log/httpd/my-sandbox-error_log | sed -e 's/\\n/\n/g'

别名:

alias elog="tail -f /var/log/httpd/my-sandbox-error_log | sed -e 's/\\n/\n/g'"

我尝试了多种方法,交换了引号字符,并尝试了很多转义字符。似乎我永远无法让我的别名使用 sed 搜索/替换(错误日志有尾,没有换行格式)。我确信缺少一些微不足道的东西,我对此很天真。我不是 unix/linux 专家。

谁能告诉我为什么这不能用作别名?

4

1 回答 1

10

如果您这样做了set -x,echo alias elog=..alias elog以其他方式让 bash 将结果写回给您,您就会明白为什么它不起作用。\\双引号变成\.

经验法则是,如果你不得不问,你已经超出了别名的用处。改用函数:

elog() {
    tail -f /var/log/httpd/my-sandbox-error_log | sed -e 's/\\n/\n/g'
}

这样您就不需要任何额外的转义。

于 2013-10-16T21:46:53.570 回答