在大多数终端中默认情况下您可以按下来ctrl\向进程发送 SIGQUIT 信号。
但是在我的键盘上输入反斜杠时,你必须这样做:altshift7
这样做ctrlaltshift7不起作用,那么我该如何使用键盘快捷键呢?
答案1
今天,我不得不用德语键盘和 Ubuntu 来解决完全相同的问题。所以我想出了下面的脚本。找到正确的键仍然需要反复试验,但这样就很简单了。
顺便说一下,Ctrl-4对我来说很有效。
#!/usr/bin/bash
# Shows character codes while typing. More to the point, it also captures signals.
# Trap function
sig() {
printf '\t\t\t%s\t(re-enabled now, works next time)\n' "$1"
# A trap disables itself after being called once.
trap - $1
}
# Setting traps for all signals
mapfile -t signals < <(trap -l | grep -Eo SIG[-+A-Z0-9]+)
for signal in "${signals[@]}"; do
trap "sig $signal" "$signal"
done
# Display characters
printf "Start typing to examine characters and signals. Exit with Ctrl-C (twice).\n\n"
printf "Char\tDec\t Hex\tSignal\n"
while IFS= read -rN 1 char; do
LC_CTYPE=C printf '\t%3d\t0x%02X\n' "'$char" "'$char"
done
答案2
我不知道您如何输入Ctrl+ \,但我可以为您提供另一种从键盘生成 SIGQUIT 的方法。找到一个可以作为简单组合键输入的字符。这可能需要映射到(单个)ASCII 字符(即单个字节);例如Ctrl+ A。然后输入
stty quit ^A
可以是
stty
quit
Ctrl+ A Enter
(如果收到错误消息,请尝试在 + 之前输入+ )Ctrl或字面意思 (如果收到错误消息,请尝试将 放在引号中)。然后输入命令,如,按下组合键(即+ ),并查看程序是否按+ 的预期退出。VCtrlAsttyquit
^A Enter^A
sleep 9
CtrlACtrl\
如果您找到可行的组合,请将其(命令stty quit
)放入.login
、、或您使用的任何初始化命令文件.profile
中。.bashrc
答案3
我和法国人也遇到了同样的问题阿泽蒂“ 键盘。
要获取反斜杠字符\
,我必须按altshift/。
但是按下ctrlaltshift/不会发送任何信号,它只是.
在终端中插入一个点。
我发现按下ctrl`(反引号或反引号键)确实会发送SIGQUIT
信号:
$ sleep 9
^\Quit: 3
按压ctrlshift`也有效。
请注意,在法语键盘上,“移动”反引号字符(即按shift`)会产生磅号符号£。
您可以使用以下命令获取所有信号的列表kill -l
:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE
9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG
17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD
21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGINFO 30) SIGUSR1 31) SIGUSR2
答案4
您是否尝试过映射不同的键到^\
?
例如(在 macOS 终端中):
转到“终端 -> 首选项 -> 设置 -> 键盘”,单击并将++
之类的内容映射到。controlf4\034