我知道Esc +。给出最后一个命令的最后一个参数。
但我对最后一个命令的第一个参数感兴趣。 是否有一个键绑定来这样做?
在同一行中,是否有从最后一个命令中获取第n个参数的通用方法? 我知道在bash脚本中,您可以使用$0,$1等,但这些在命令行上不起作用。
同样,如果遍历前面命令的第0个参数,就像我们连续按Esc +对最后一个参数所做的那样,会怎么样呢?
我知道Esc +。给出最后一个命令的最后一个参数。
但我对最后一个命令的第一个参数感兴趣。 是否有一个键绑定来这样做?
在同一行中,是否有从最后一个命令中获取第n个参数的通用方法? 我知道在bash脚本中,您可以使用$0,$1等,但这些在命令行上不起作用。
同样,如果遍历前面命令的第0个参数,就像我们连续按Esc +对最后一个参数所做的那样,会怎么样呢?
当前回答
您还可以从历史记录中的任何命令获取参数! $ echo a b c d f g A b c d e f g $ echo build/libs/jenkins-utils-all-0.1.jar 建立/ libs / jenkins-utils-all-0.1.jar $ history | tail -5 601 echo build/libs/jenkins-utils-all-0.1.jar 602历史|尾巴-10 603回声a b c d e f g 604 echo build/libs/jenkins-utils-all-0.1.jar 605历史|尾巴-5 $ echo !-3:4 回声d d $ echo !604:1 构建/ libs / jenkins-utils-all-0.1.jar回响 建立/ libs / jenkins-utils-all-0.1.jar
其他回答
^可能是第一个参数的命令。我不确定是否有办法得到第n个。
在接受的答案后面描述的方法对我来说也适用于第0个参数。在我的~/.inputrc中有这些行:
"\en": "\e0\e."
"\em": "\e1\e."
"\e,": "\e2\e."
\ e2 \ e。与\e2\e\C-y相比,它的优点是,如果重复按下它,它会循环执行前面的命令,而不是多次插入前面命令的第二个参数。
要插入之前的整个命令,可以输入!!\e^。\e^是history-expand-line。
基本上,它用于提取之前(命令的)参数。
例如,如果发出以下命令:
echo Hello, world how are you today?
那么,你好,将是第一个论点,而今天呢?第六个,也就是最后一个;这意味着它可以通过输入来引用:
Alt+6后跟Ctrl-Alt-6
Ctrl传统上表示为帽子字符^加在键名前,Alt为M-这是元前缀。
所以上面的快捷方式可以被重新定义为^My来yank。
此外,在命令行中有hats替换快捷方式:
echo Hello, world!
^Hello^Bye
Bye, world!
替换上一个命令的第一个匹配的字符串,即:
Hello, world! Hello, people!
^Hello^Bye
会导致:
Bye, world! Hello, people!
保留第二个匹配(hello)不变。
注意:帽子之间不要留有空隙,否则无法操作。
以上只是一个快捷方式:
!:s/Hello/Bye
事件级(*)替换前面命令中第一个找到的(匹配的)字符串,同时在第一部分前面加上g开关将全局应用于整行:
echo Hello, world! Hello, people!
!:gs/Hello/Bye
Bye, world! Bye, people!
通常在其他相关命令中执行,如sed、vi和regex(正则表达式)-搜索(匹配字符串)的标准方式。
不,你不能这样做!:sg/Hello/Bye或!:s/Hello/Bye/g,这就是语法!
! 是为了事件;事件可以理解为命令历史记录中的命令输出或操作。
这是我通过自己使用和自己尝试从各种来源(包括手册页、博客和论坛)中了解到的。
希望它能让我们了解bash、Bourne- again shell(源自sh shell,它本身以其发明者的姓氏命名为Bourne shell)的神秘方式,它是许多发行版(包括服务器(服务器操作系统))中的默认shell。
要使用第一个参数,可以使用!^或!:1
例子:
$ echo a b c d e
a b c d e
$ echo !^
echo a
a
$ echo a b c d e
a b c d e
$ echo !:1
echo a
a
既然你的问题是关于使用其他论点的,这里有一些有用的论点:
!^ first argument
!$ last argument
!* all arguments
!:2 second argument
!:2-3 second to third arguments
!:2-$ second to last arguments
!:2* second to last arguments
!:2- second to next to last arguments
!:0 the command
!! repeat the previous line
前四种形式更常用。形式!:2-有点违反直觉,因为它不包括最后一个参数。
您还可以从历史记录中的任何命令获取参数! $ echo a b c d f g A b c d e f g $ echo build/libs/jenkins-utils-all-0.1.jar 建立/ libs / jenkins-utils-all-0.1.jar $ history | tail -5 601 echo build/libs/jenkins-utils-all-0.1.jar 602历史|尾巴-10 603回声a b c d e f g 604 echo build/libs/jenkins-utils-all-0.1.jar 605历史|尾巴-5 $ echo !-3:4 回声d d $ echo !604:1 构建/ libs / jenkins-utils-all-0.1.jar回响 建立/ libs / jenkins-utils-all-0.1.jar