Auf meinem Linux-Host scheint Ctrl+ Cnicht zu funktionieren, und ich weiß nicht, wie ich vorgehen soll, damit es funktioniert. Ich benutze Ubuntu 10.04 mit Bash 4.1.5 (1) und arbeite im Gnome-Terminal.
Wenn ich Ctrl+ drückte, Cwährend dieses Skript ausgeführt wurde, wurde es nicht beendet.
#!/bin/bash
for i in `seq 500`
do
ps -e > /dev/null
echo $i
done
ubuntu
keyboard-shortcuts
signals
gnome-terminal
Ankur Agarwal
quelle
quelle
stty -a
Ausgabeintr=^C
? Wie führen Sie das Skript aus?Antworten:
Versuchen Sie dies zu tun
und prüfen Sie, ob das Problem dadurch behoben wird. Überprüfen Sie auch, ob das intr mit richtig eingestellt ist
Wenn Sie feststellen, dass dies
intr
auf etwas anderes als ^ C eingestellt ist, können Sie es auch durch Eingabe behebenquelle
Da es sich um eine fehlerhafte
gnome-terminal
Konfiguration handelt, können Sie versuchen, die Standardeinstellungen mithilfe von wiederherzustellen(Sie müssen das Terminal neu starten, um die Auswirkungen zu sehen.)
Wenn danach alles in Ordnung ist, machen Sie a
rm -rf .gconf/apps/gnome-terminal-BROKEN
.quelle
Die Standardeinstellungen in
gnome-terminal
binden die TastenCtrl-C
undCtrl-V
, um das Kopier- und Einfügeverhalten von Windows zu emulieren. Es sollte ein Feature sein, kein Bug :)Um dies zu deaktivieren, am Gnome-Terminal,
Menubar -> Edit -> Keyboard Shortcuts
New Accelerator...
.Disabled
jetzt in der Spalte Tastenkombination angezeigt wird.Beachten Sie, dass diese Änderung sofort auf allen Gnome-Terminals wirksam wird .
Tipp:
gnome-terminal --show-menubar
Erzwingt, dass das Gnome-Terminal die Menüleiste anzeigt, wenn sie nicht angezeigt wird.quelle
Ich werde hier eine Vermutung anstellen: Strg-C funktioniert, aber da
ps -e
die Ausführung im Vergleich zum Rest des Skripts sehr lange dauert, müssen Sie nur SIGINT an den "ps" -Prozess senden. "ps" wird beendet und das Skript wird mit einer weiteren Iteration durch den Schleifencode aufgenommen.Führen Sie
sleep 10
in Ihrem Bash-Fenster ein Control aus, während es ausgeführt wird. Sehen Sie, ob das funktioniert. Wenn dies der Fall ist, führen Sie Ihr ursprüngliches Skript aus und steuern Sie es mehrmals. Früher oder später haben Sie Glück und der Bash-Prozess, der das Skript interpretiert, erhält das SIGINT.quelle