![我想创建在终端中输入的所有命令的日志](https://linux22.com/image/807898/%E6%88%91%E6%83%B3%E5%88%9B%E5%BB%BA%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E8%BE%93%E5%85%A5%E7%9A%84%E6%89%80%E6%9C%89%E5%91%BD%E4%BB%A4%E7%9A%84%E6%97%A5%E5%BF%97.png)
我想要记录在终端上输入的所有命令。
我检查了“脚本”,但这会生成一个包含命令和响应的文件。有没有办法只包含命令?
答案1
如果你使用默认 shell,所有命令都已记录到 $HOME/.bash_history 。有几个环境变量会影响历史记录保存,你可以阅读以下内容:
info bash
Type: / HIST
如果您想将该设置应用于所有用户,请编辑 /etc/profile。
例子:
export HISTFILESIZE=5000
答案2
用户手动输入到终端的所有内容都会保存到 中~/.bash_history
,其中~
是当前登录用户主目录的简写。还请注意,以 开头的文件.
是隐藏的;在 Nautilus 中,您可以通过按Ctrl+来显示它们H。
通过输入来查看
cat .bash_history
要查看以连续数字注释的历史记录,请键入
history
您可以通过键入来再次执行在那里看到的命令!2129
,例如,它将执行命令编号 2129,如history
命令所示。
请注意,该history
命令会显示第二条日志,但.bash_history
仅在您从终端注销后才会保存。
一些有趣的信息:
- 以空格开头的命令不会保存到
.bash_history
。如果您运行类似 的命令rm -R mydir/
,您可能需要在其前面加上空格,以防止意外按向上箭头再次运行它。
正如Joāo所说,可以使用来控制已保存历史记录的大小export HISTFILESIZE=5000
。
答案3
您还可以在终端中使用CTRL+来搜索历史记录。R
- CTRL+R
- 输入搜索词(例如输入“sudo apt-get”)
- 按CTRL+R循环浏览每场比赛
答案4
我为此编写了一个函数:
function begin_install_log() {
if [ $# -eq 0 ]
then
echo "No arguments supplied"
HIST_NUM=""
else
HIST_NUM=$(history|tail -n 1|awk '{ print $1 }')
HIST_NUM=$((HIST_NUM + 2))
OUTPUT_FILE=$HOME/environment/ansible/.install_cache/${1}
fi
}
function capture_install_log() {
if [ ! $HIST_NUM ]
then
echo "run 'begin_install_log' first"
else
history|grep -A999 $HIST_NUM|awk '{$1=""; print $0}' >> $OUTPUT_FILE
HIST_NUM=""
fi
用法:
$ begin_install_log some_file_name
$ blah
$ blah
$ blah
$ capture_install_log
当然,您必须更改 OUTPUT_FILE 变量以满足您的需要。
干杯!