hex*_*ide 20 bash command-line gnu-screen
如果我开始使用屏幕会话screen -dmS name
,我将如何使用脚本访问该屏幕会话的命令历史记录?
使用↑,即使在屏幕中也会显示最后执行的命令.
Nat*_*igh 23
我在我的系统上使用默认的bash shell,因此可能无法与其他shell一起使用.
这就是我在~/.screenrc
文件中的内容,以便每个新的屏幕窗口都有自己的命令历史记录:
要打开一组默认屏幕窗口,每个窗口都有自己的命令历史记录文件,您可以将以下内容添加到~/.screenrc
文件中:
screen -t "window 0" 0 bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
screen -t "window 1" 1 bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
screen -t "window 2" bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
Run Code Online (Sandbox Code Playgroud)
默认屏幕设置意味着您使用Ctrl+a c
或创建新窗口Ctrl+a Ctrl+c
.但是,只有~/.screenrc
文件中的上述内容,这些将使用默认~/.bash_history
文件.要解决此问题,我们将覆盖用于创建新窗口的键绑定.将其添加到您的~/.screenrc
文件中:
bind c screen bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
bind ^C screen bash -ic 'HISTFILE=~/.bash_history.${WINDOW} bash'
Run Code Online (Sandbox Code Playgroud)
现在,无论何时创建新的屏幕窗口,它实际上都会启动一个bash shell,将HISTFILE
环境变量设置为包含当前屏幕窗口的数字($WINDOW
)的内容.
命令历史文件将在具有相同窗口编号的屏幕会话之间共享.
$HISTFILE
执行与正常的bash行为一样,历史记录仅$HISTFILE
在退出shell/screen窗口时写入文件.但是,如果你想命令写入之后执行的命令,从而立即与同一窗口数量等屏幕会话,您可以添加这样的事情你对历史文件~/.bashrc
的文件:
export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"
Run Code Online (Sandbox Code Playgroud)
screen
不会保留您键入的命令的历史记录.你的shell可能会也可能不会保留历史记录.由于您似乎使用bash
,您可以使用该history
命令.
screen
看起来似乎有一个粗略的历史搜索近似值(它只是在回滚缓冲区中搜索命令行.请参阅screen
"history"命令下的手册页(C-a {
默认绑定).
归档时间: |
|
查看次数: |
23287 次 |
最近记录: |