Ich führe mehrere Befehle in der Befehlszeile aus, die durch Semikolons getrennt sind:
cmd1; cmd2; cmd3
Wenn ich oben Ctrl+ drücke C, werden alle Befehle beendet, anstatt nur der, der gerade ausgeführt wird.
kartik@kartikpc:~/junk/exp$ ls
test1 test2
kartik@kartikpc:~/junk/exp$ cat; ls
cat is running
cat is running
^C
kartik@kartikpc:~/junk/exp
Aber Ctrl+ Zwürde nur den aktuellen Prozess unterbrechen und mit dem nächsten fortfahren.
kartik@kartikpc:~/junk/exp$ ls
test1 test2
kartik@kartikpc:~/junk/exp$ cat; ls
cat is running
cat is running
^Z
[1]+ Stopped cat
test1 test2
kartik@kartikpc:~/junk/exp$
Warum gibt es eine Unstimmigkeit im Verhalten und gibt es eine Möglichkeit, Ctrl+ dazu zu bringen, Csich wie Ctrl+ zu verhalten Z?
Ich führe einen Server tatsächlich wie folgt über eine tmux-Sitzung aus node app.js; $bash
, und wenn ich ein Ctrl+ mache C, um den Server zu beenden , wird auch Bash beendet. Ich möchte zur Shell zurückkehren. Gibt es eine Alternative, um das gewünschte Verhalten zu erreichen?
[AKTUALISIEREN]
tcsh
verhält sich mit Ctrl+ Cund Ctrl+ gleich Z. Es würde immer auf alle Befehle wirken, genau wie Bash mit onlt Ctrl+ C. Aber den Job mit zurückzubringen fg
würde nur zurückbringen cat
und nicht ls
.
[kartika@vm-kartika-vnc ~/junk]$ ls
file1 file2
[kartika@vm-kartika-vnc ~/junk]$ echo $SHELL
/bin/tcsh
[kartika@vm-kartika-vnc ~/junk]$ cat; ls
cat is running
cat is running
^C
[kartika@vm-kartika-vnc ~/junk]$ cat ; ls
cat is running
cat is running
^Z
Suspended
[kartika@vm-kartika-vnc ~/junk]$ jobs
[1] + Suspended cat
[kartika@vm-kartika-vnc ~/junk]$ fg
cat // Pressing ctrl-d here to exit cat
[kartika@vm-kartika-vnc ~/junk]$
System Information:
kartik@kartikpc:~/junk/exp$ uname -a
Linux kartikpc 3.13.0-70-generic #113-Ubuntu SMP Mon Nov 16 18:34:13 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
kartik@kartikpc:~/junk/exp$ echo $SHELL
/bin/bash
grep SigIgn /proc/$$/status
das 4-Bit in der niedrigsten Position eingeschaltet? Das ist oft der Fall. Anschließend können Sie Control-backslash eingeben, um ein SIGQUIT zu senden, um den Vordergrundjob zu beenden, ohne dass die Shell den Rest der Befehlszeile verwirft. Abhängig von Ihrer Konfiguration kann es jedoch zu einem Core-Dump des Vordergrundjobs kommen.