命令提示符中的 (arg: n) 是什么意思?

命令提示符中的 (arg: n) 是什么意思?

在 Codecademy 上命令行课程,当尝试在命令提示符中使用键盘快捷键Alt+Shift+#(应该注释当前行)时,它将提示符从 切换$(arg: 3),而不是在行首添加破折号。Alt+Shift+@将使其显示(arg: 2),等等。请参阅下面屏幕截图中的最后一行。在我击中之前,Alt+Shift+#它只是$

截屏

该快捷方式在我的机器上运行良好。

  1. 这是什么(arg: n)
  2. 键盘快捷键依赖什么来工作?键盘布局?操作系统发行版?终端模拟器?默认 CLI?什么?

答案1

这是当您输入数字参数时 readline 库的提示。通过AltShift@在键盘上打字,您显然正在输入Alt2哪个映射到M-2,哪个运行digit-argument阅读线默认情况下,并开始输入数字参数。如果您随后按Alt3AltShift#在您的情况下对应),您将看到提示更改为(arg: 23);您可以继续使用任意Alt数字组合。

这些参数用于某些 readline 函数,例如yank-nth-arg.要查看实际效果,请运行

echo Hello my friend

然后Alt2CtrlAltY;您将看到(arg: 2)提示出现,然后消失,并且上一个命令的第二个参数(“my”)将被附加到您当前的命令行。

有关详细信息,请参阅上面的链接文档。 Bash 使用 readline 来处理其输入;其他 shell 不会显示相同的行为。

一些终端仿真器使用其中一些组合键来达到自己的目的;例如在 GNOME 终端中,Alt -digit 切换到n选项卡。您需要禁用这些组合才能使用 readline 函数。

就您而言,Codecademy 基于网络的终端模拟器似乎不能AltShift很好地处理组合。如果您不需要数字参数快捷方式,您可以通过运行来重新调整它们的用途

bind Meta-3:insert-comment

理论上你应该能够通过添加来永久存储它

Meta-3: insert-comment

到一个~/.inputrc文件,但我无法让它在 Codecademy 上工作。

相关内容