Command-Line-Interface
在不依賴 .screenrc 的情況下為螢幕輸出指定日誌名稱
在 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