history
命令显示所有结果,但我们可以过滤以使用history | grep searchingCommand
. 这真的很有帮助。
但问题是它也显示了那些输入错误或不成功的命令。然后确定正确的真的很痛苦。我检查了这个链接:终端中的选择性命令历史?但这不是我的解决方案。
那么有没有办法从历史记录中删除那些在输入时间或以后不正确的命令?
小智 157
用:
history -d OFFSET
Run Code Online (Sandbox Code Playgroud)
OFFSET
即使在将历史条目添加到您的 bash 历史文件之前,也可以删除偏移处的历史条目。要找出正确的OFFSET
,您只需要运行history
命令。它是包含要删除的历史条目的行开头的编号。
并保存对历史使用的修改:
history -w
Run Code Online (Sandbox Code Playgroud)
在本指南中查看更多详细信息。
bla*_*899 23
编辑文件~/.bash_history
并删除有错别字的一次
例如,插入以下命令:
gedit ~/.bash_history
Run Code Online (Sandbox Code Playgroud)
编辑您喜欢的内容,然后保存文件并重新启动终端。根命令是:
sudo -i
inser your password
gedit ~/.bash_history
Run Code Online (Sandbox Code Playgroud)
如果你想删除所有history -c
应该做的伎俩
句法
Run Code Online (Sandbox Code Playgroud)history history [n] history -c history -d offset history [-anrw] [filename] history -ps arg
钥匙
-c 清除历史列表。这可以与其他选项结合以完全替换历史列表。
-d offset 删除位置偏移处的历史条目。应在显示历史记录时指定偏移量。
-a 将新的历史行(自当前 Bash 会话开始以来输入的历史行)追加到历史文件中。
-n 将尚未从历史文件中读取的历史行追加到当前历史列表中。这些是自当前 Bash 会话开始以来附加到历史文件的行。
-r 读取当前历史文件并将其内容附加到历史列表中。
-w 将当前历史写入历史文件。
-p 对 args 执行历史替换并将结果显示在标准输出上,而不将结果存储在历史列表中。
-s 参数作为单个条目添加到历史列表的末尾。
来源:
Ste*_*cke 22
我想添加另一种修改(或删除)历史条目的方法,这是我在使用 bash 时偶然发现的:
为了演示这一点,首先在 bash 中执行以下三个命令:
$ echo 1
1
$ echo 2
2
$ echo 3
3
Run Code Online (Sandbox Code Playgroud)
您现在可以使用箭头键或Ctrl+p和Ctrl+再次选择这些命令n。
假设您要修改前两个命令。在历史记录中移动,直到echo 1
出现并将其更改为echo 1 - changed
,但不要按 ENTER。如果您现在进一步浏览您的历史记录,该行将保持其修改状态,您可以移开和移回它。现在移到该行echo 2
并将其更改为echo 2 - changed
,再次不要按回车键。为了保存对这些行的更改,选择历史记录中除这两条之外的任何命令,然后点击Ctrl+ c。
当然,除了修改历史条目之外,您还可以将其删除,这将导致该条目处出现空行。要删除当前在提示符下显示的行,请按Ctrl+ e(跳到行尾),然后按Ctrl+ u(删除从行首到光标的文本)。
另请参阅https://unix.stackexchange.com/questions/195668/what-can-cause-an-item-to-be-deleted-from-my-bash-history/195726#195726以获得更详细的解释技术背景。
最简单的方法:
注意:
这仅更改当前会话命令。如果我们想更改旧命令并保存更改,我们需要在关闭终端之前运行以下命令:
history -w
Run Code Online (Sandbox Code Playgroud)
Sto*_*rux 16
如果你想立即从同一个终端中删除它,你必须将以下内容添加到你的 ~/.bashrc 文件中。
PROMPT_COMMAND='history -a'
Run Code Online (Sandbox Code Playgroud)
并重新启动您的终端。
您可以将它添加到 .bashrc 文件中的任何位置。我已添加如下以及其他与历史相关的内容。
通常在 bash 会话期间,执行的命令不会写入 .bash_history,直到会话终止,因此PROMPT_COMMAND='history -a'
将命令输入到 .bash_history 中。
现在,每当您在命令中犯错误或错误并想删除它时,只需执行以下命令
sed -i '$d' ~/.bash_history
Run Code Online (Sandbox Code Playgroud)
和tada 它将被删除。
为了使它更简单,您可以将其别名为更简单的东西并使用它,例如
alias rh ='sed -i '\''$d'\'' ~/.bash_history'
Run Code Online (Sandbox Code Playgroud)
因此执行rh
将从历史记录中删除最后执行的命令。
以上是临时别名,仅持续一个会话。要使其永久或持久添加
alias rh = 'sed -i '\''$d'\'' ~/.bash_history'
Run Code Online (Sandbox Code Playgroud)
到 .bashrc
笔记
两边不应该有任何空间 =
如果您不想别名,那么您还可以执行以下操作
创建一个命令名称rh
并将其放在/bin
目录中:
打开一个文件说rh
并粘贴以下代码,保存并关闭:
sed -i '$d' ~/.bash_history
制作rh
可执行文件并将其放在/bin
目录中:
chmod +x rh 须藤cp rh / bin
现在使用rh
命令从历史记录中删除最近的命令。
归档时间: |
|
查看次数: |
84799 次 |
最近记录: |