Command-Line-Interface
配置 GNU 螢幕,以便將命令歷史儲存在文件中
我想配置 GNU 螢幕,以便它將所有不同視窗的命令歷史記錄儲存在不同的文件中。
我知道預設情況下 GNU 螢幕根本不會將命令歷史記錄(其不同視窗的)儲存在文件中(而是將它們儲存在記憶體中),但是可以告訴它將它們儲存在文件中嗎?
不同的命令歷史文件應具有名稱
<session>.<window>.history
或類似名稱。有誰知道如何做到這一點?
(為了清楚起見,我希望每個 GNU 螢幕視窗寫入不同的文件。我喜歡每個視窗都有不同的歷史記錄,並且我通常在不同的視窗中執行不同類型的命令。)
在某處創建一個看起來像這樣的腳本。
~/bin/myshell
#!/bin/bash HISTFILE=~/.bash_history_w$WINDOW # HISTFILE=~/.bash_history_w${WINDOW}_s${STY##*.} # with session name. export HISTFILE exec /bin/bash
用這樣的線調整你的 .screenrc 。
shell ~/bin/myshell
謝謝,但有一個問題:在我關閉視窗之前,文件似乎實際上並沒有被寫入。但就我而言,窗戶將始終處於活動狀態並且永遠不會關閉。如何在不關閉視窗的情況下觸發文件寫入?
您可以通過執行命令手動強制寫入
history -w
。我不相信有任何方法可以讓 bash 在退出時自動送出歷史記錄。不過,在zsh中似乎有一個選項可以執行此操作,請搜尋 INC_APPEND_HISTORY。如果您想要記錄每個會話所做的事情,您可以使用腳本。如果您想使用腳本在腳本下創建每個會話+視窗日誌,您可以像這樣調整 myshell。
#!/bin/bash SHELL=/bin/bash # reset the shell back to bash since screen -s will adjust to to myshell export SHELL script -a -q -f ~/.sessionlog_w${WINDOW}_s${STY##*.}