文
章
目
录
章
目
录
Linux系统通过history
命令来记录用户执行过的命令,并将这些历史记录存储在特定文件中,比如~/.bash_history
(针对Bash shell)或~/.zsh_history
(针对Zsh shell) 。接下来,就为大家详细介绍Linux历史命令的各种常用操作及相关配置方法。
一、查看历史命令
- 查看所有命令:想要查看之前执行过的所有命令,只需在终端输入:
history
# 执行该命令后,系统会列出所有先前执行的命令,并且每条命令前都会显示对应的行号,方便后续操作。
- 显示最新10条命令:如果只想查看最近执行的10条命令,可以使用如下命令:
history 10
- 搜索命令历史:当你想查找包含特定关键词的命令时,利用
grep
命令就能轻松实现:
history | grep "keyword"
例如,查找包含ls
的命令,输入:
history | grep ls
- 使用反向搜索(
CTRL + R
):这是一种更便捷的搜索方式。按下CTRL + R
组合键后,开始输入部分命令内容,系统会自动搜索匹配的命令。继续按CTRL + R
可以循环搜索,找到想要的命令后,按下Enter
键就能直接执行。
二、执行历史命令
- 执行指定编号的命令:若知道某个命令在历史记录中的编号,可通过以下方式执行:
!<command_number>
比如,要执行历史记录中第100号命令,输入:
!100
- 重新运行最后一个命令:在很多情况下,我们可能需要再次执行上一条命令,这时使用
!!
命令就非常方便:
!!
- 运行以特定单词开头的最后一个命令:假设你想运行最后一条以
ls
开头的命令,输入:
!ls
三、管理历史记录
- 清除当前会话历史记录:如果不想让当前会话中的命令记录被保留,可以使用:
history -c
- 删除指定命令:想要删除某条特定的历史命令,可按如下操作:
history -d <command_number>
例如,删除编号为50的命令:
history -d 50
# 这条命令执行后,编号50的历史命令就会从历史记录中删除。
- 永久清除历史记录:如果想要彻底清除历史记录,可以使用以下两种方法:
> ~/.bash_history
# 或者
cat /dev/null > ~/.bash_history
四、历史记录相关配置
- 变更历史文件位置:有时候,我们可能需要修改历史文件的存储位置。通过修改
HISTFILE
变量就能实现:
export HISTFILE=~/.my_custom_history
- 设置存储命令的数量:可以分别设置内存中存储的命令数和历史文件中存储的命令数:
export HISTSIZE=1000 # 设置内存中存储1000条命令
export HISTFILESIZE=2000 # 设置历史文件中存储2000条命令
- 忽略特定命令:有些命令可能不想让它们出现在历史记录中,比如
ls
、pwd
、exit
等,可通过如下命令设置:
export HISTIGNORE="ls:pwd:exit"
# 这样,列出的这些命令就不会被保存在历史记录里了。
- 忽略重复项:为了让历史记录更简洁,可设置忽略重复的命令:
export HISTCONTROL=ignoredups
如果还想忽略那些带有前导空格的重复命令,可以使用:
export HISTCONTROL=ignoreboth
- 实时将所有命令记录到文件中:希望每条命令执行后立即被记录到历史文件中,可使用:
export PROMPT_COMMAND='history -a'
# 此后,每个命令执行后都会马上被追加到历史记录文件里。
- 保存时间戳在历史记录中:想要在历史记录中显示命令执行的时间戳,设置如下:
export HISTTIMEFORMAT="%F %T "
设置完成后,历史记录就会像这样显示:
1 2024-03-31 10:15:30 ls
2 2024-03-31 10:15:35 cd /home
- 防止其他用户查看你的历史记录:为了保护隐私,可修改历史文件的权限,让其他用户无法查看:
chmod 600 ~/.bash_history
五、不同Shell中的历史记录查看
不同的Shell查看历史记录的方式和存储文件略有不同:
- Bash:使用
history
命令查看,历史记录存储在~/.bash_history
文件中。 - Zsh:同样使用
history
命令,历史记录文件为~/.zsh_history
。 - Fish:通过
history
命令查看,历史记录存放在~/.local/share/fish/fish_history
。
掌握这些Linux历史命令的操作技巧,非常实用,赶紧动手试试吧!