Linux运维基础之history命令详解

Linux运维基础之history命令详解

Linux 命令 history  是一个方便的工具,它能显示用户之前在终端中执行过的所有命令列表。该列表存储在历史文件中,使用历史命令可以查看该文件,从而更容易回忆和重复使用过去的命令。

该命令通常用于跟踪在终端中执行的操作,尤其是在排除故障或重复复杂命令序列时。它可以让用户快速回忆和重新运行以前的命令,而无需再次键入,从而节省时间和精力。有些用户还利用历史记录来审计或审查系统中的操作,从而有助于系统管理和安全。

history 命令的一般语法:

history [OPTIONS...]

1. 显示使用过的命令

history [number]

这条命令显示一定数量的以前执行过的命令。

示例:

Linux 中的 history 5 命令将显示最近在终端中执行的 5 条命令。下面是输出示例

501  git status
502  cd /var/www/html
503  ls -la
504  nano myfile.txt
505  history 5

每行显示历史记录中的一条命令,前面有一个唯一的数字,代表该命令在历史文件中的位置。在本例中,显示了最后运行的五条命令,包括 history 5 命令本身。

2. 从历史记录列表中删除命令

history -d [number]

使用 -d 选项删除历史记录列表中的命令。

示例:

删除前:

1  ls
2  cd Documents/
3  touch file.txt
4  nano file.txt
5  rm file.txt
6  history

运行 history -d 5

1  ls
2  cd Documents/
3  touch file.txt
4  nano file.txt
5  history

可以看到,第 5 条命令( rm file.txt )已从历史记录中删除。

3. 在历史记录中搜索使用过的命令

history | grep [text]

history | grep 命令可帮助查找与文本模式匹配的命令。

例如:

Linux 中的 history | grep cat 命令将搜索命令历史记录,并显示所有包含单词 “cat” 的行。grep 命令会过滤 history 命令的输出,只显示包含指定模式(本例中为 “cat”)的行。下面是一个输出示例:

42  cat file.txt
73  cat /etc/passwd
100  cat documents/note.txt | more
123  concatenate file1.txt file2.txt > combined.txt
150  cat logs/error.log | grep "ERROR"

在这个示例中,每一行都以代表命令在历史记录中位置的数字开头,然后是命令本身。它包括 “cat” 出现的每一个实例,无论它是 cat 命令本身,还是其他单词或命令的一部分。

4. 清除历史记录列表

history -c

-c (clear) 选项用于清除历史记录列表中的所有命令。

5. 用事件编号执行命令

!number

使用该命令可以执行历史记录列表中带有事件编号的命令。无需编写完整的命令。

示例:

假设历史记录中的第 10 个命令是 ls -l,它以长格式列出当前目录下的文件。如果运行 !10 命令,输出结果可能如下:

total 24
drwxr-xr-x 5 user user 4096 Aug  6 10:00 Documents
drwxr-xr-x 2 user user 4096 Aug  6 09:45 Downloads
drwxr-xr-x 2 user user 4096 Aug  6 09:45 Music
drwxr-xr-x 2 user user 4096 Aug  6 09:45 Pictures

该输出显示了当前目录的内容,就像直接运行 ls -l 命令一样。

6. 将更改写入 bash_history 文件

history -w [filename]

使用此选项可将当前会话中的所有更改写入 bash_history 文件。

示例:

Linux 中的 history -w file.txt 命令不会在终端中产生输出。相反,它会将当前历史命令写入名为 file.txt 的文件。

因此,如果你打开 file.txt,可能会看到如下内容

1 cd /home/user/documents
2 ls -la
3 sudo apt-get update
4 nano file.txt
5 history -w file.txt

现在,该文件包含之前在终端中执行的命令列表,你可以使用任何文本编辑器查看或编辑它。

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作 rmdir · cd · pwd · exa · ls
文件操作 cat · cp · dd · less · touch · ln · rename · more · head
文件系统操作 chown · mkfs · locate
网络 ping · curl · wget · iptables · mtr
搜索和文本处理 find · grep · sed · whatis · ripgrep · fd · tldr
系统信息和管理 env · history · top · who · htop · glances · lsof
用户和会话管理 screen · su · sudo · open

此外,我们还整理 Linux 命令行大全,以帮助大家全面深入地学习 Linux。

评论留言