清除 Linux / UNIX BASH Shell 命令行缓存 / 历史记录
我刚刚注意到有关清除 DNS 缓存的教程,我的 bash shell 缓存中存储了许多命令。您能告诉我从 shell 提示符中清除命令历史记录或缓存的命令吗?
许多程序一次一行地读取用户的输入。GNU 历史库可以跟踪这些行,将数据与每行任意关联,并利用前几行的信息编写新行。Bash 和其他 shell 可能会使用此历史库。默认文件是 ~/.history 或 ~/.bash_history,用于存储您的 bash 命令历史记录。历史记录是 bash/ksh 和 POSIX shell 的重要功能之一。
许多程序一次一行地读取用户的输入。GNU 历史库可以跟踪这些行,将数据与每行任意关联,并利用前几行的信息编写新行。Bash 和其他 shell 可能会使用此历史库。默认文件是 ~/.history 或 ~/.bash_history,用于存储您的 bash 命令历史记录。历史记录是 bash/ksh 和 POSIX shell 的重要功能之一。
要显示带行号的历史记录列表,请输入
$ history
输出:
.... .. 4 cd /tmp/ 5 wget http://downloads.wordpress.org/plugin/cleaner-dashboard.1.1.zip 6 unzip cleaner-dashboard.1.1.zip 7 su - 8 vi /etc/httpd/testing.lan.example.com.conf 9 service httpd restart ..... .. 997 vnstat -m -i eth1 998 date 999 yum update 1000 w 1001 ~/scripts/clean.cache rss squid web 1002 history
要查看历史记录中的最后 10 条命令,请运行:
$ history 10
示例输出:
1998 df -H 1999 dmesg 2000 cbz_wp_admin on 2001 cbz_wp_admin off 2002 file_replication --check --status 2003 ~/bin/purge.cache --key=XXXXXX 2004 echo $HISTFILE 2005 echo $HISTFILE 2006 cbz_wp_admin --uploads on 2007 history 10
您可以通过键入以下grep 命令来搜索历史记录中包含“cf.purge.sh”的行:
另一个选项是键入CTRL+r在历史记录中向后搜索。
$ history | grep "commmand-to-search"
$ history | grep "cf.purge.sh'
如何从我的 bash 历史记录中运行命令
现在您知道了如何显示历史列表以及行号。要执行命令 #2002 ( file_replication --check --status),请运行:
$ !2002
我刚刚通过前面带有感叹号的编号调用了上一个历史命令。要调用上一个命令,请键入:
$ !!
例如,由于我忘记添加 sudo,因此以下命令将失败:
$ systemctl restart httpd
只需输入sudo !!,命令将在其前面重新执行 sudo:
$ sudo !!
如何滚动浏览 bash 历史记录
只需按向上或向下箭头键即可分别在历史记录中向前和向后滚动。
如何清除历史记录,输入:
$ history -c
要从历史文件中删除偏移量为 100 的命令号处的历史条目:
$ history -d 100
-c 选项将删除所有条目,从而清除历史列表。有关更多信息,请输入:
$ help history
示例输出:
-c clear the history list by deleting all of the entries -d offset delete the history entry at offset OFFSET. -a append history lines from this session to the history file -n read all history lines not already read from the history file -r read the history file and append the contents to the history list -w write the current history to the history file and append them to the history list -p perform history expansion on each ARG and display the result without storing it in the history list -s append the ARGs to the history list as a single entry
解释如何使用 history bash 命令获取所有命令的历史记录,并列出日期和时间。
本篇文章是Bash HISTORY 教程系列中的第 4 篇(共5 篇)。继续阅读本系列的其他文章:
- 如何在 Linux 中禁用 bash shell 历史记录
- 如何从 Linux/Unix Bash shell 的历史记录中删除单个命令
- 在 Ubuntu Linux 中清除 Shell 历史记录
- 清除 Linux / UNIX BASH Shell 命令行缓存 / 历史记录
- Bash History:显示每个命令的日期和时间