为什么我们必须使用所有这些快捷方式来退出程序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只是一个纳米键绑定。