我有一个别名来查看我的 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 专家。
谁能告诉我为什么这不能用作别名?
最佳答案
如果您执行了 set -x
、echo alias elog=..
、alias elog
或以其他方式让 bash 将结果写回你,你会明白为什么它不起作用。双引号中的 \\
变为 \
。
经验法则是,如果你不得不问,你就已经超出了别名的用处。改用函数:
elog() {
tail -f /var/log/httpd/my-sandbox-error_log | sed -e 's/\\n/\n/g'
}
这样你就不需要任何额外的转义了。
关于apache - 在带有引号和转义字符的 Alias 中使用 sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412839/