如何在csh和bash中调用之前的命令参数?

7

我通常使用csh(实际上我的/bin/csh链接到tcsh,这是csh的改进版),并经常使用!$来引用最后一个命令的最后一个参数。
但是有时候我想使用前一个命令的最后两个参数。我该怎么办?我猜我可以访问任何之前命令的参数。

我已经阅读了如何调用上一个bash命令的参数?,但没有找到答案。 我们如何引用前一个命令的倒数第二个参数?

例如,如果我输入echo tiger rabbit,如何在下一个命令中引用tiger? csh的答案最好,但我也很好奇bash的情况。


在先前的命令中,如何使用全局替换命令将字符串“x”替换为字符串“y”,然后执行它。我已经能够替换字符串的第一个出现,但不是所有出现。$> ls DF DF$> ^DF^DA^ls DA DF当我真正想要的是使用单个替换将“ls DF DF”转换为“ls DA DA”。首选Tcsh解决方案,但bash也可以。谢谢! - user3014653
1个回答

14

使用历史命令扩展,您可以从历史记录中选择特定的命令,按原样执行它或根据需要修改并执行它。 ! 开始历史命令扩展。

  • !! 重复上一个命令
  • !10 重复历史记录中的第10个命令
  • !-2 重复历史记录中倒数第2个命令
  • !string 重复以“string”开头的命令
  • !?string 重复包含单词“string”的命令
  • ^str1^str2^ 用 str2 替换前一个命令中的 str1 并执行它
  • !!:$ 获取前一个命令的最后一个参数。
  • !string:n 获取以“string”开头的命令中的第n个参数。

  • !^ 前一个命令的第一个参数

  • !$ 前一个命令的最后一个参数
  • !* 前一个命令的所有参数
  • !:2 前一个命令的第二个参数
  • !:2-3 前一个命令的第二到第三个参数
  • !:2-$ 前一个命令的第二个到最后一个参数
  • !:2* 前一个命令的第二个到最后一个参数
  • !:2- 前一个命令的第二个到倒数第二个参数
  • !:0 命令本身

最后但并非最不重要的,我也建议您按下 Alt + . 以访问您输入的任何先前命令的最后一个参数。


1
哇,谢谢!我记得看到其中一些,但这是完整的列表! - Chan Kim
我们能否将上一个命令中所有模式的出现替换为新命令?例如,如果我输入了 ls DA DA,我如何通过在先前的命令中将 DA 替换为 DE 来运行 ls DE DE^DA^DE^ 仅替换第一个,使其变为 ls DE DA - Chan Kim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接