如果我按键盘上的向上或向下箭头,然后修改我的历史记录中的某些内容,它就会永远改变。即使我按 Ctrl-C 然后尝试再次调出它,它仍然会改变——我已经在我的历史记录中丢失了那个条目。
我怎样才能防止这种情况发生?
sar*_*old 20
你想要 readline 设置:
set revert-all-at-newline on
Run Code Online (Sandbox Code Playgroud)
你可以把它放进去~/.inputrc(见下面的注释),或者把bind 'revert-all-at-newline on'你的~/.bashrc.
演示:
set revert-all-at-newline on
Run Code Online (Sandbox Code Playgroud)
更多详细信息在Bash 联机帮助页中:
revert-all-at-newline如果设置为 '
on',Readline 将在执行 accept-line 时在返回之前撤消对历史行的所有更改。默认情况下,历史行可以被修改并在调用 readline 时保留单个撤消列表。默认值为“off”。
笔记:
如果
~/.inputrc为了设置而创建了一个新文件revert-all-at-newline,请注意 bash 将使用该文件中的 readline 设置,而不是该文件中可能存在的任何设置/etc/inputrc。也就是说, 中指定的任何设置/etc/inputrc将不再有效。因此,如果/etc/inputrc文件存在,最好从~/.inputrc以下行开始:
$include /etc/inputrc
我输入:
ls /tmp
Run Code Online (Sandbox Code Playgroud)
- 精彩的。现在我不想进入
ls /temp
Run Code Online (Sandbox Code Playgroud)
并且可以防止它进入历史记录,因此如果我以空白开始命令,则可以防止它覆盖 ls /tmp:
ls /temp
Run Code Online (Sandbox Code Playgroud)
很难看到,但如果你知道......
它由控制
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
Run Code Online (Sandbox Code Playgroud)
ignoreups 只忽略重复的命令,ignoreboth 忽略行首的空格,这对于隐藏其他未隐藏的密码很有用。
但也许您正在寻找一种解决方案,在那里您以两个命令结束,未修改的旧命令和新命令。我的 bash 或设置版本的行为是这样的,但我不知道,你的有什么不同。
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |