我有一个别名来查看我的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专家。
任何人都可以告诉我为什么这不能作为别名?
答案 0 :(得分:8)
如果您执行了set -x
,echo alias elog=..
,alias elog
或以其他方式获得bash将结果写回给您,您就会明白为什么它无效。双引号中的\\
变为\
。
经验法则是,如果你不得不问,你已经超出了别名的用处。改为使用函数:
elog() {
tail -f /var/log/httpd/my-sandbox-error_log | sed -e 's/\\n/\n/g'
}
这样您就不需要任何额外的转义。