因此,我在玩Zork 1时,我复制了一些文本以显示给我的一个朋友,但是我不小心忘记了按CTRL+ 时按住Shift键C。这停止了命令,我丢失了Zork数据...
是否存在某种“有用的”提示,可以用来防止在按CTRL+ 键时停止命令C?
请注意,Zork在终端内部运行。这是一个基于终端的游戏,您可以在其中发出命令来执行不同的操作。
因此,我在玩Zork 1时,我复制了一些文本以显示给我的一个朋友,但是我不小心忘记了按CTRL+ 时按住Shift键C。这停止了命令,我丢失了Zork数据...
是否存在某种“有用的”提示,可以用来防止在按CTRL+ 键时停止命令C?
请注意,Zork在终端内部运行。这是一个基于终端的游戏,您可以在其中发出命令来执行不同的操作。
Answers:
组合键Ctrl+ C发送字符^C
(字节值3)。这导致终端将SIGINT信号发送到在前台运行的程序¹。该信号的常规操作是中断当前命令:设计为处理连续命令的程序返回其顶级提示,而设计为单批命令或连续交互的程序退出。显然,您使用的程序是根据第二种模型设计的。
该信号发送密钥是内核中通用终端接口的功能,由所有终端仿真器和实际物理终端共享。您可以使用命令配置哪个键发送此信号,以及其他键(最著名的是CtrlZ发送SIGSTOP来挂起前台程序)stty
。要将SIGINT的密钥切换为Ctrl+ _(在当前终端中):
stty intr '^_'
完全禁用它:
stty intr ''
要将所有设置重置为默认值:
stty sane
键不能是任意键组合,它必须是一个单字节值。该stty
设置可以被程序覆盖-某些程序(尤其是全屏文本模式程序)会执行自己的键盘快捷键处理。
CTRL+ C向前台SIGINT
的作业发送一个中断信号(,即信号号2)。您可以通过trap '' 2
在启动Zork之前使用命令“捕获”信号来禁用此功能。
重新启用CTRL+ C(untrap SIGINT
)trap 2
。
提示:您可以在您的产品中添加以下内容~/.bashrc
:
alias zork="(trap '' 2 && cd ~/path/to/zork/ && frotz ZORK1.DAT)"
这样,您将永远不会忘记禁用和重新启用信号,并且只需zork
在终端上键入即可更轻松地开始游戏。
注意:如果更方便,可以使用信号名称代替数字,即trap '' sigint
或trap '' int
。我只是习惯使用数字,例如in kill -9
等。