我是 Bash 的初学者。我知道该类型
history
可以显示所有命令行,并且 .bash_history 可以保存所有命令行。但如果我想要部分命令行(例如,当前会话)并将它们保存到新文件中,我该怎么做?我检查了
history --help
但仍然不明白该怎么做。提前感谢帮助!
答案1
您需要-a
与文件名一起使用。如中所述help history
:
历史:历史 [-c] [-d 偏移量] [n] 或历史 -anrw [文件名] 或历史 -ps arg [参数...]
(...)
-a 将本次会话的历史记录行附加到历史文件中
后来:
如果给出了 FILENAME,则将其用作历史文件。否则,如果 $HISTFILE 有值,则使用该值,否则为 ~/.bash_history。
例如,开始一个新会话并输入以下内容($
是一个提示符,在您的系统上很可能会有所不同):
$ echo a-new-session started at $(date)
$ history -a /tmp/new-history
在这种情况下/tmp/new-history
将是:
echo a-new-session started at $(date)
history -a /tmp/new-history
答案2
当前会话:
您可以通过在终端中运行以下命令来实现此目的:
history -a ~/current_session.txt
current_session.txt
当前会话的历史记录将保存到您的主目录中名为的文件中。
某些输入:
您还可以搜索特定输入的所有历史记录并将输出保存到文件中。例如,要保存其中包含的所有行install
,请在终端中运行以下命令:
history | grep install > ~/search_results.txt
搜索结果将保存到search_results.txt
您的主目录中名为的文件中。
更改
install
为您想要搜索的内容。要搜索多个输入,请将它们放在两个引号之间
""
,用管道符分隔|
,然后放在-E
它们前面,如下所示:
history | grep -E "install|update|upgrade" > ~/search_results.txt
祝你好运
答案3
虽然答案较差,但确实有效,
键入历史记录以获取历史记录。鼠标滑动以选择要复制的内容,按 ctrl-shift-c 进行复制,按 ctrl-v 进行粘贴到文本编辑器中。
就我而言,终端是 konsole,文本编辑器是 Kate。
这使您可以复制和粘贴历史记录的选定部分。
还可以从历史记录中复制并粘贴到终端中,使用 crtl-shift-v 进行粘贴
答案4
bash
您可以将历史记录放在单独的每个会话文件中,从而跳过上述答案。
请参阅我的回答使用多个终端进行 Bash 历史记录处理