我可以让 shell 有时但不总是忽略命令行吗?

Gee*_*eek 0 command-line command-not-found command

出于调试目的,有时我会通过 VNC 访问远程 Linux 机器。那时其他人可能正在通过 VNC 在同一个 Linux 机器上工作,而我可能没有能力与那个人聊天。所以基本上发生的事情是我在 GNOME 中启动一个新选项卡并输入如下消息:

[xxx@slc04lyo abc]$ Hi this is X. I will use the box for some time
Hi: Command not found.
Run Code Online (Sandbox Code Playgroud)

是否可以不让shell 打印以下内容?

Hi: Command not found.
Run Code Online (Sandbox Code Playgroud)

如果是,我怎么能有选择地而不是总是这样做呢?以便在需要时我可以将外壳用作原始聊天平台?

PS:我不需要看到输出。另一个用户已经在 VNC 中,可以看到我输入的内容。所以输出是多余的。

Lik*_*eyn 7

只需通过#在它前面添加 a来注释您的消息。这样,您编写的任何内容都不会被 shell 处理或扩展。

[xxx@slc04lyo abc]$ # Hello, this is dog. I will use the box for some time
Run Code Online (Sandbox Code Playgroud)

注意:如果你忘记写第#一个,你可以点击Alt+#注释掉当前行,然后一步回到提示。这适用于使用的提示GNU Readline,例如bashkshmysqlpythonzsh等。

这是GNU readline 的键盘快捷键的简短摘要。


Jen*_*y D 6

按 结束该行Ctrl+C。它看起来像

[user@box ~]$ Are you there?^C
Run Code Online (Sandbox Code Playgroud)

ETA: Ctrl+C发送信号SIGINT,在这种情况下,它基本上意味着“停止我正在做的事情并给我一个提示”。这与您从提示符运行程序并按下时相同Ctrl+C- 它会终止正在运行的程序并返回您的提示。除非在这种情况下,您实际上并未启动该程序。

这在其他情况下也很有用,例如当猫在键盘上跳舞时......


Mar*_*ick 5

有一个:命令什么都不做并且忽略它的参数(回到过去,它被用来标记goto命令使用的标签。)

$ : Hi this is X. I will use the box for some time
$
Run Code Online (Sandbox Code Playgroud)

[编辑:正如@llua 指出的那样,shell 仍会解析命令行,因此任何不平衡的大括号、引号、反引号等都会导致继续提示,分号、管道等将终止命令。]

如果您想与其他用户进行双向聊天,请输入cat >/dev/null然后输入您想要的所有内容;除了您键入的内容外,不会有任何输出。键入Ctrl-C以终止cat.

$ cat >/dev/null
Are you there?
yes I am.
^C
Run Code Online (Sandbox Code Playgroud)

  • 正常解析仍然发生,所以`: Mark's answer` 将导致shell 等待结束`'`。 (3认同)