如何在命令行中获取前一个命令的第 n 个参数?
How do you get nth argument of a previous command at command line?
如果您在进行互动 shell 并且键入类似以下内容:
echo this is it
然后你可以展开第一个参数:
echo !^ #=> echo this
或者你可以展开最后一个参数:
echo !$ #=> echo it
但现在我想知道:
我如何访问第 n 个参数?我浏览了 a related bash question,但似乎只有在脚本中才有效,因为 !n
只是浏览了我的命令历史记录(而不是我的参数历史记录)——例如
echo !1 #=> echo ls
这是有道理的,因为
history | grep -E '^\s+1 ' #=> 1 ls
但我想要的是echo !(some correct index) #=> echo is
这样:
~ $ echo this is it
~ $ echo !!:2
echo is
is
!!:n
是第 n 个参数
!!:n-$
是从第 n 到最后的 args
注意:!!
扩展到最后一个命令
根据 OP 的编辑 ():
倒数第二个命令的第二个参数:
~ $ echo foo bar baz # This one is the target
foo bar baz
~ $ echo catz ratz batz
catz ratz batz
~ $ echo !-2:2
echo bar
bar
!-n
扩展为当前命令之前 'n' 个命令的命令。
注意:!-1
和!!
是一样的。
如果您在进行互动 shell 并且键入类似以下内容:
echo this is it
然后你可以展开第一个参数:
echo !^ #=> echo this
或者你可以展开最后一个参数:
echo !$ #=> echo it
但现在我想知道:
我如何访问第 n 个参数?我浏览了 a related bash question,但似乎只有在脚本中才有效,因为 !n
只是浏览了我的命令历史记录(而不是我的参数历史记录)——例如
echo !1 #=> echo ls
这是有道理的,因为
history | grep -E '^\s+1 ' #=> 1 ls
但我想要的是echo !(some correct index) #=> echo is
这样:
~ $ echo this is it
~ $ echo !!:2
echo is
is
!!:n
是第 n 个参数
!!:n-$
是从第 n 到最后的 args
注意:!!
扩展到最后一个命令
根据 OP 的编辑 (
倒数第二个命令的第二个参数:
~ $ echo foo bar baz # This one is the target
foo bar baz
~ $ echo catz ratz batz
catz ratz batz
~ $ echo !-2:2
echo bar
bar
!-n
扩展为当前命令之前 'n' 个命令的命令。
注意:!-1
和!!
是一样的。