CTRL+C 用于返回命令行是否不正确?

Use*_*841 27 linux bash

当我使用tail -f并且我想返回到 shell 时,我总是使用CTRL+C. 或者,当我键入一个命令并想中止它并重新开始时,我只是CTRL+C回到一个空的命令行提示符。这被认为是不好的做法吗?我有时觉得可能有更好的方法来摆脱某些东西,但真的不知道。

Chr*_*s S 36

Ctrl+C向程序发送 SIGINT。这告诉程序您要中断(并结束)它的进程。大多数程序正确地捕捉到这一点并干净地退出。所以,是的,这是结束大多数程序的“正确”方式。

还有其他键盘快捷键可以将其他信号发送到程序,但这是最常见的。

  • 还有 Ctrl+D 用于读取用户输入的程序。Ctrl+D 关闭程序的 STDIN。为了优雅地退出 shell,这也可用(与键入 exit 完全相同)。 (9认同)
  • 帕特里克,三个方面都错了。第一:Control+D 对管道没有这个意义。第二:EOF 特殊字符不会关闭任何东西。它会导致从当前的“read()”系统调用_一次_返回零字节(假设行缓冲区为空)。下一个 `read()` 不受影响。第三:**这些都不适用于**将线路规则置于非规范模式的程序,例如过去几十年的_大多数 shell 程序_以及任何其他使用库(例如 GNU `readline`)的程序。 (9认同)
  • @Patrick Ctrl+D 实际上向流发送文件结束指示符。由程序做出适当的响应(通常是关闭文件流)。 (2认同)

Sve*_*ven 13

这个方法很好,真的。


use*_*own 11

要在键入时中止长命令,我有时会跳到行首,并在按 Enter 之前插入注释符号:

Home#Enter

Pos1#Return

这很有用,例如,如果我输入了一个长路径的复制命令,同时观察到,我首先需要创建目录,但之后想重复该命令。然后我只需要从历史记录中取出它,删除哈希,然后输入它。

在 Bash 中,您可以使用快捷方式

Alt+#

如评论中指出的那样重新标记您的命令(谢谢,@Zorawar)。

  • 您还可以使用“Ctrl-A”,而无需将手指从主行移开。 (6认同)
  • 在 bash 中,您只需按 `Alt-#` 即可实现相同的功能:它会将注释放入并运行命令(因此将其放入您的历史记录中)。 (2认同)

Zor*_*war 8

一般而言,当程序不提供交互式终止方式时,使用Ctrl+C是可以的(设计原因,或者更频繁地,因为它已冻结或变得无法使用)。请记住,在交互模式下,您真正​​想要的组合键可能是Ctrl+ D,它会发送一个EOF,表示输入结束。