【问题标题】:tail: cannot open ''$'\033''[35m/home/test/yr9.log'$'\033''[39m' for reading: No such file or directorytail: 无法打开 ''$'\033''[35m/home/test/yr9.log'$'\033''[39m' 供阅读:没有这样的文件或目录
【发布时间】:2020-06-08 16:46:07
【问题描述】:

我在 Linux 终端中运行了“永久列表”命令,该命令返回以下输出

info:    Forever processes running
data:        uid  command       script             forever pid  id logfile                          uptime
data:    [0] yr9 /usr/bin/node /home/test/index.js 1370    1377    /home/test/yr9.log 6:9:17:4.829000000027008

这里我只想使用以下命令提取“/home/test/yr9.log”的“日志文件”路径

path=$(forever list | cut -d' '  -f17 | sed '/^$/d') 

我将路径存储在一个变量中。

现在我只想从日志文件中取出最后一行,并尝试了以下命令

last=$(tail -1 "$path")

但它会引发以下错误

tail: cannot open ''$'\033''[35m/home/trnd2020/.forever/_yr9.log'$'\033''[39m' for reading: No such file or directory

请帮我解决这个问题。

【问题讨论】:

  • 你有 ANSI 序列的内容
  • 是的,当我将输出保存到文件时,它看起来像下面``` GNU nano 2.9.3 list.txt ^[[32minfo^[[39m: Forever processes running ^[[90mdata^ [[39m: ^[[37m ^[[39m ^[[37muid^[[39m ^[[90mcommand^[[39m ^[[90mscript^[[39m ^[[37mforever^[[39m ^[[37mpid^[ [3$ ^[[90mdata^[[39m: [0] _yr9 ^[[90m/usr/bin/node^[[39m ^[[90m/home/test/index.js^[[39m 1370 1377 ^[ [35m/home/test/_yr9.log^[[```

标签: linux shell


【解决方案1】:

您的 forever 命令返回一些样式选项终端样式(文本着色等)。你在运行命令之前尝试过export TERM=xterm-mono 吗?

如果您使用的是https://github.com/foreversd/forever,也许您应该尝试使用forever logs

【讨论】:

  • 我现在尝试了“export TERM=xterm-mono”,但仍然是同样的问题。日志文件为“紫色”。
  • 你必须以任何方式禁用颜色
【解决方案2】:

我通过“使用 sed 删除颜色代码(特殊字符)”解决了这个问题 sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

预期的命令: path=$(forever list | cut -d' ' -f17 | sed '/^$/d' | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")

【讨论】:

    【解决方案3】:

    “永远”装饰 CLI 上的输出。 为了使命令行输出丰富多彩。“永远”使用ANSI颜色。 如https://github.com/foreversd/forever 所述。 根据您的要求使用以下选项。

    --colors 为颜色输出,--no-colors 将禁用输出着色

    --plain 禁用命令行颜色

    下面的代码对我很有效,同时让 shell 脚本永远打印进程日志

    myarr=($(forever logs --plain | tail -n +3 | awk '{printf "%s\n",$4}'))
    for f in "${myarr[@]}"
    do
       :
      echo "$f"
      tail -n 100 $f # You can use.. cat $f
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 2023-04-06
      • 2019-04-07
      • 2017-05-04
      相关资源
      最近更新 更多