为什么我们在终端中使用 ctrl + c / ctrl + x / ctrl + z?

为什么我们在终端中使用 ctrl + c / ctrl + x / ctrl + z?

为什么我们必须使用所有这些快捷方式来退出程序terminal

例如 :

  • ctrl+c退出top
  • ctrl+z退出man
  • ctrl+x退出nano

ctrl+c难道不应该终止该程序吗?

答案1

因为它是在 POSIX(类 Unix 计算机系统的 IEEE 规范)中指定的。

查看10.2 输出设备和终端类型POSIX.1 2008(最新)规范中所有可用的快捷方式。

为了回答您的问题,以下是对这些快捷方式的实际作用的简要解释。

当您按下Ctrl-[字母] 时,实际上是在向进程发送信号。信号是您向进程提供的“标志”,该标志会被解释并与操作相关联。

  • Ctrl-C发送 SIGINT,一个导致进程终止的信号。

  • Ctrl-Z发送 SIGTSTP,该信号会导致进程暂停执行。在这种情况下,它是可恢复的 - 尝试执行一个需要一段时间的命令,然后按Ctrl- Z;您将在以下行中看到一些内容

    [1]+ Stopped [your command]

    在终端中输入fg,您将看到该进程正在恢复(如果它在恢复之前没有结束)。

  • Ctrl- X,在本例中,是 nano 退出进程的快捷方式。顺便说一句,有一个与Ctrl-关联的信号x,但它与 nano 无关。

TL;DR 它在 POSIX 中指定。

答案2

+z+c是 shell 信号。

ctrl+z不会终止程序,而是向其发送信号 ( SIGTSTP)暂停。输入fg以恢复。ctrl+c是另一个信号,这次SIGINT终止.kbd+x只是一个纳米键绑定。

相关内容