Sur mon hôte Linux, Ctrl+ Cne semble pas fonctionner et je ne sais pas comment procéder pour le faire fonctionner. J'utilise Ubuntu 10.04 avec bash 4.1.5 (1) et travaille dans Gnome-terminal.
Lorsque j'ai appuyé sur Ctrl+ Cpendant l'exécution de ce script, il ne l'a pas forcé à se fermer.
#!/bin/bash
for i in `seq 500`
do
ps -e > /dev/null
echo $i
done
ubuntu
keyboard-shortcuts
signals
gnome-terminal
Ankur Agarwal
la source
la source
stty -a
sortie contient-elleintr=^C
? Comment exécutez-vous le script?Réponses:
Essayez de faire ça
et voyez si cela résout le problème, vérifiez également si l'intr est correctement défini à l'aide de
Si vous trouvez que ce
intr
paramètre est différent de ^ C, vous pouvez également le corriger en tapantla source
Puisqu'il ressemble à une
gnome-terminal
configuration cassée , vous pouvez essayer de le laisser restaurer les valeurs par défaut en utilisant(Vous devrez redémarrer le terminal pour voir les effets.)
Si tout va bien après cela, faites un
rm -rf .gconf/apps/gnome-terminal-BROKEN
.la source
Les paramètres par défaut dans
gnome-terminal
lient les touchesCtrl-C
etCtrl-V
pour émuler le comportement de copier-coller de Windows. C'était censé être une fonctionnalité et non un bug :)Pour désactiver cela, sur le gnome-terminal,
Menubar -> Edit -> Keyboard Shortcuts
New Accelerator...
.Disabled
apparaît maintenant dans la colonne Clé de raccourci.Notez que ce changement sera immédiatement effectif sur tous les terminaux gnome.
Astuce:
gnome-terminal --show-menubar
forcera gnome-terminal à afficher la barre de menus si elle n'est pas affichée.la source
Je vais faire une supposition ici: Ctrl-C fonctionne, mais parce qu'il
ps -e
faut beaucoup de temps pour s'exécuter par rapport au reste du script, tout ce que vous faites est d'envoyer SIGINT au processus "ps". "ps" se ferme et le script reprend avec une autre itération dans le code de la boucle.Faites un
sleep 10
dans votre fenêtre bash, pendant qu'il s'exécute, contrôlez-le. Voyez si cela fonctionne. Si c'est le cas, exécutez votre script d'origine et contrôlez-le plusieurs fois. Tôt ou tard, vous aurez de la chance et le processus bash qui interprète le script obtiendra le SIGINT.la source