Bash:在Linux,OS X和Unix上重新发出并重复长命令而无需重新执行命令

时间:2020-01-09 10:46:05  来源:igfitidea点击:

在Linux,Apple OS X或者类似Unix的系统中,如何在不重新输入命令的情况下重新发出或者重复长命令?

您需要使用history命令在Linux或者类似Unix的系统上显示或者操作历史记录列表。该命令显示以前用行号执行的命令列表,并在每个修改的条目前加上一个" *"前缀。 bash shell支持历史扩展功能,该功能类似于csh中的历史扩展。

显示先前执行的命令的列表

只需执行以下命令:

history
history 10
history | less
history | grep 'command-name-here'

如何重新发出长命令而不重新输入命令?

要在bash/csh/tcsh/zsh shell中重新发出命令,请执行"!"感叹号,后跟要运行或者重复的命令编号。
例如,如果您想从上述输出(即命令80)重新发出ssh [email protected]命令,请执行:

!80

滚动浏览命令行历史记录

您也可以简单地通过使用[up][down]箭头键来浏览命令行历史记录。

搜索命令行历史

在shell提示下按[CTRL-r]在历史记录缓冲区或者文件中向后搜索命令。
在按[CTRL-r]之后,只需执行前几个命令字母,例如ssh:

(reverse-i-search)`ssh ': ssh -X Hyman@nas01

要搜索所有与ssh相关的命令,请再次按[CTRL-r]

要重复上一条命令,只需执行!在shell提示下

假设您执行一个长命令:

ssh -X -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/veryv/.ssh/google_compute_engine -A -p 22 [email protected] -

要再次重复相同的最后一条命令,只需执行!!:

!!

或者,您也可以使用以下命令引用上一条命令:

!-1

要重复以ssh开头的最新命令,请执行:

!ssh