📅  最后修改于: 2023-12-03 15:32:41.742000             🧑  作者: Mango
在Linux命令行中,有许多命令都支持历史选择功能,这些命令能够让你在历史命令中查找、编辑、执行你之前输入过的命令。历史选择功能可以提高linux命令行的使用效率和方便性。
在Linux命令行中,使用上下箭头可以很方便地查看之前输入过的命令。但是,如果你只需要编辑上一个命令的某一个部分,怎么办呢?这时候就可以使用以下的命令:
!!
命令!!
命令的作用是将上一个命令再次执行一遍,它等同于!-1
。
$ whoami
alice
$ sudo !!
[sudo] password for alice:
root
在上面的例子中,我们先使用whoami
命令查看当前用户,然后使用sudo !!
命令将上一个命令再次执行,并且在前面加上sudo
。这里的!!
等同于whoami
。
!n
命令!n
命令的作用是将第n个命令再次执行一遍,其中n
是一个数字。例如,!10
表示将第10个命令再次执行。
$ ls
file1.txt file2.txt file3.txt
$ vi !3
在上面的例子中,我们先使用ls
命令查看当前目录下的文件列表,然后使用vi !3
命令将第3个命令再次执行,并且在前面加上vi
。这里的!3
表示第3个命令是ls
命令。
!string
命令!string
命令的作用是在历史命令中查找包含指定字符串的命令,并且将查找到的第一个命令执行一遍。这里的string
可以是一个命令的部分字符串。
$ history | grep ls
168 ls
170 ls -al
$ !ls
file1.txt file2.txt file3.txt
$ !ls -al
total 0
drwxr-xr-x 1 alice alice 0 Apr 11 17:07 .
drwxr-xr-x 1 alice alice 0 Apr 11 17:07 ..
-rw-r--r-- 1 alice alice 0 Apr 11 17:07 file1.txt
-rw-r--r-- 1 alice alice 0 Apr 11 17:07 file2.txt
-rw-r--r-- 1 alice alice 0 Apr 11 17:07 file3.txt
在上面的例子中,我们先使用history
命令查看历史命令列表,然后使用grep
命令查找包含ls
字符串的命令,最后使用!ls
和!ls -al
命令将查找到的第一个和第二个命令分别执行一遍。
除了上面的基本命令,还有一些高级命令可以帮助你更加灵活地使用历史选择功能。
Ctrl+R
命令Ctrl+R
命令的作用是在历史命令中搜索包含指定字符串的命令,并且将查找到的最近一个命令作为当前命令。输入Ctrl+R
之后,会出现一个提示符reverse-i-search:
,你可以在此输入要查找的字符串,然后按下Enter
键即可。
(reverse-i-search)`ls': ls -al
在上面的例子中,我们输入了Ctrl+R
命令,并且输入了要查找的字符串ls
,然后按下了Enter
键。注意,这里的提示符reverse-i-search:
是由系统自动添加的,并不需要手工输入。
Ctrl+P
和 Ctrl+N
命令Ctrl+P
命令和Ctrl+N
命令的作用分别是向上和向下遍历历史命令。这两个命令相当于上下箭头键的快捷方式。
Alt+. (Alt+.)
命令Alt+.
命令的作用是将上一个命令的最后一个单词复制到当前命令中。如果你输入了一长串的命令,然后发现某一个单词需要重复使用,那么这个命令就可以帮助你复制该单词,而不必手工重新输入它。
$ ls /usr/local/bin
$ echo "this is the result of the previous command: `Alt+.`"
this is the result of the previous command: /usr/local/bin
在上面的例子中,我们先使用ls
命令查看/usr/local/bin
目录下的文件列表,然后使用echo
命令输出一个字符串,其中使用了Alt+.
命令复制了上一个命令的最后一个单词/usr/local/bin
。
历史选择命令是Linux命令行中非常实用的功能之一。熟练掌握这些命令,可以极大地提高你在Linux命令行中的操作效率和方便性。在实际使用中,你可以根据具体情况选择适合自己的命令。