【发布时间】:2011-03-23 05:26:47
【问题描述】:
在 Bash 中有没有办法调用上一个命令的参数?
我通常使用vi file.c,然后是gcc file.c。
在 Bash 中有没有办法调用上一个命令的参数?
【问题讨论】:
在 Bash 中有没有办法调用上一个命令的参数?
我通常使用vi file.c,然后是gcc file.c。
在 Bash 中有没有办法调用上一个命令的参数?
【问题讨论】:
您可以使用$_ 或!$ 来调用上一条命令的最后一个参数。
还可以使用Alt + . 调用任何先前命令的最后一个参数。
【讨论】:
!!:1,!!:2等(!!:0是前面的命令本身。)见gnu.org/software/bash/manual/bashref.html#History-Interaction
!$,第一个参数使用!^。
Alt + . 在 vi 模式下不起作用。仅供参考,对于在这里感到困惑的其他人。
!$在运行时会在第一行打印完整的命令,而$_不会。
如果前面的命令有两个参数,像这样
ls a.txt b.txt
如果你想要第一个,你可以输入
!:1
给予
a.txt
或者如果你想要两者,你可以输入
!:1-2
给予
a.txt b.txt
您可以将其扩展到任意数量的参数,例如:
!:10-12
【讨论】:
-bash: :1-2: bad word specifier跨度>
ls a.txt 第 2 行 ll !:1-2
!!:n 其中n 是您想要的参数的从 0 开始的位置。
例如:
echo 'one' 'two'
# "one two"
echo !!:2
# "two"
! 前缀用于访问之前的命令。
其他有用的命令:
!$ - 上一个命令的最后一个参数!^ - 前一个命令的第一个参数(在程序/内置/脚本之后)!* - 来自上一个命令的所有参数!! - 上一个命令(通常发音为“bang bang”)!n - 命令号 n 来自 history
!pattern - 与 pattern 匹配的最新命令
!!:s/find/replace - 最后一个命令,将 find 替换为 replace
【讨论】:
!!:s/find/replace,你也可以^find^replace。
!* - 来自上一个命令的所有参数(在程序/内置/脚本之后)。例如:ls *.tmp *.cache rm !*
在命令行中,您可以按 alt+. 或 esc-.
循环遍历您之前命令的最后一个参数。
【讨论】:
↑ 和 ↓ 键也可以工作。
如果您知道特定命令的历史记录中给出的数字,您几乎可以使用以下术语在该命令中获取任何参数。
使用以下命令从历史记录中的第三个命令中获取第二个参数,
!3:2
使用以下命令从历史记录中的倒数第五个命令中获取第三个参数,
!-5:3
使用减号,您要求它从历史的最后一条命令开始遍历。
【讨论】:
!* 使用所有先前的参数运行一个新命令。
ls /tmp
cd !*
#you are now in /tmp
【讨论】:
$_。
是的,您可以使用!$ 来调用前面命令的最后一个参数。
【讨论】: