Command-Line-Interface

在不依賴 .screenrc 的情況下為螢幕輸出指定日誌名稱

  • December 9, 2020

在 Bash 腳本中,我使用“screen -L”以彩色記錄執行的命令。例如:

screen -L tree

然後我們讀取日誌文件less -R

執行此腳本時,其他螢幕可能正在執行,因此我們不知道哪個 screenlog.* 包含我們的輸出。我不能要求使用者自定義他/她的.screenrc.

有沒有辦法在命令行上指定日誌名稱或讀取特定.screenrc命令?

我對此有幾個想法。-c首先,請注意,您可以在通過命令行開關呼叫 screen 時控制啟動 screenrc 。其次,您可以在 .screenrc 中使用環境變數。把這一切放在一起,這是一個 shell 腳本來做你想做的事情:

#!/bin/bash

cat << EOF >/tmp/screenrc.$$
logfile /tmp/screenlog.$$
EOF

screen -c /tmp/screenrc.$$ -L
rm /tmp/screenrc.$$

echo "logfile is /tmp/screenlog.$$"

該腳本覆蓋使用者 screenrc 並將輸出放在特定文件中。在這種情況下,我使用$$通過附加腳本程序名稱來生成文件名。請注意,您通常應該使用它mktemp來創建安全的臨時文件,但我現在很懶惰。

這也完全取代了使用者.screenrc。如果您仍想從該文件中讀取設置,則應將生成的配置文件更改為如下內容:

logfile /tmp/screenlog.$$
source $HOME/.screenrc

引用自:https://serverfault.com/questions/248193