【发布时间】:2012-09-10 11:32:08
【问题描述】:
我正在尝试制作一个小脚本来监视文件夹中的最新日志文件并从日志中获取聊天内容,然后将其显示在 tmux 面板中,但由于某种原因它找不到该文件虽然它确实存在
FILENAME=server_logs/$(ls -t1 server_logs | head -n 1)
watch -n3 'grep "\] " '$FILENAME' | tail -n15'
当我运行该文件时,它给了我这个 grep:server_logs/server_log_09_18_12.txt:没有这样的文件或目录
但如果我使用watch -n3 'grep "\] " server_logs/server_log_09_18_12.txt | tail -n15' 它确实有效。
所以我的问题是为什么找不到文件?
【问题讨论】:
-
如何运行脚本?例如,如果你是从 cron 运行它,那么开始部分可能不是你想的那样。
-
我正在使用“bash watch.sh”通过 SSH 运行它。
-
虽然我通常只使用
tail -f ... | grep ...,但您的命令看起来还不错。这是你的完整剧本吗? -
当你指定
server_logs/*的完整路径时,它是否在脚本中正确运行? -
两个想法:简化一点引用 (
watch "cat '$FILENAME' | grep '\] ' | tail -n15") 和使用完整路径 ($(readlink -f $(ls -t1 ... | head )))。不过,您的代码并没有什么问题。