在别名中使用带引号和转义字符的sed

时间:2013-10-16 20:09:04

标签: apache bash sed alias profile

我有一个别名来查看我的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专家。

任何人都可以告诉我为什么这不能作为别名?

1 个答案:

答案 0 :(得分:8)

如果您执行了set -xecho alias elog=..alias elog或以其他方式获得bash将结果写回给您,您就会明白为什么它无效。双引号中的\\变为\

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

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

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