Ich weiß, wie man durch Eingabe das Verzeichnis vom Terminal wechselt
cd <directory>
Aber hier ist das Szenario. Ich habe Terminal verwendet, um in den Ordner meines Git-Repositorys zu wechseln.
- glennRepositories
- glenn-remdroid-repository
Angesichts der obigen Ordnerstruktur möchte ich einschalten, glenn-remdroid-repository
da dies mein Repository ist.
cd glennRepositories
Bevor ich in das glenn-remdroid-repository wechselte, habe ich fälschlicherweise den Befehl eingegeben
cd &
statt cd *
. Ich habe verwendet, cd *
weil der Ordnername für mich lang ist. Tut mir leid, dass ich faul bin.
Wenn ich das ausführe cd &
, antwortet das Terminal
[1] 7519
Wenn ich dies ausführe, ist cd *
dies jetzt geschehen
[1]+ Done cd (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)
Hat jemand was cd &
bedeutet und seine Ausgabe? Google kennt meine Frage nicht :)
shell
cd-command
GLenn
quelle
quelle
cd <TAB>
und der Name des eindeutigen Ordners wird automatisch erweitert.Antworten:
Indem Sie das
&
am Ende der Befehlszeile schreiben , weisen Sie Ihre Shell an, die Befehlspipeline (in diesem Fall einen einzelnen Befehl) in einer Unter-Shell im Hintergrund auszuführen (ohne auf ein Ergebnis zu warten).cd
ist eine eingebaute Bash, aber das ist hier nicht wichtig. Es hat keinerlei Auswirkungen auf Ihre "übergeordnete" Shell, sodass Ihr Arbeitsverzeichnis nicht geändert wird.In dieser Zeile wird gemeldet, dass im Hintergrund ein Job mit der Nummer 1 ausgeführt wird und die Prozess-ID 7519 lautet. Ähnliches wird gedruckt, wenn Sie z. B. ausführen
vim
und dann Ctrl+ drücken Z, um ihn anzuhalten . Wenn der Vorgang abgeschlossen ist, meldet die Shell dies erst im nächsten Verarbeitungszyklus (z. B. Returnerneut drücken) und druckt dann die abgeschlossenen Aktualisierungsauftragsaufträge aus.Für weitere Details lesen Sie bitte
man bash
den AbschnittJOB CONTROL
.Als Referenz die Frage Warum funktioniert das
exit &
nicht? trägt eine gewisse Ähnlichkeit.quelle
fish
undzsh
wird sofort berichtet. Inbash
und anderen POSIX-Shells oder (t) csh hängt dies von der Einstellung dernotify
Option ab (standardmäßig deaktiviert) (zsh
eine POSIX-ähnliche Shell hat ebenfalls einenotify
Option, ist jedoch standardmäßig deaktiviert, es sei denn, sie wird angewiesen, eine andere Shell zu emulieren)Der
&
Bediener sendet einen Prozess an den Hintergrund. wiecd
kann ohne Argumente ausgeführt werden Sie es laufen und es in den Hintergrund zu schicken. Wenn Sie die Manpage nehmen:Sie können sehen, dass die Argumente optional sind. Damit
cd &
wird als verarbeitetcd
und dann in den Hintergrund gesendet. Wenncd
ohne Argument aufgerufen wird, ist keine Verarbeitung erforderlich. Es geht also als "erledigt" (verarbeitet) in den Hintergrund.Einige Informationen zu
&
The Bash&
(kaufmännisches Und) sind ein integrierter Steuerungsoperator, der zum Verzweigen von Prozessen verwendet wird. Auf der Bash-Manpage heißt es: "Wenn ein Befehl vom Steuerungsoperator beendet wird&
, führt die Shell den Befehl im Hintergrund in einer Subshell aus."Wenn Sie in einer interaktiven Shell angemeldet sind, wird dem Prozess eine Auftragsnummer zugewiesen und die untergeordnete PID angezeigt. Die unten stehende Auftragsnummer ist eins.
Beachten Sie, dass beim Verzweigen eines Prozesses die untergeordnete PID in der speziellen Variablen gespeichert wird
$!
Sie können den Job anhand seiner Jobnummer wie folgt beenden:
quelle
cd
ausgeführt und dann in den Hintergrund gesendet. Der Hintergrundprozess wird tatsächlich erstellt, bevor das Programm im Fall eines regulären Befehls ausgeführt wird. Im Falle eines eingebauten wird dieses Verhalten emuliert. Der Befehl wird von diesem Hintergrundprozess ausgeführt und ersetzt ihn. Zweitens,cd
ohne Argumente tut etwas tun: es bringt Sie zu IhremHOME
Verzeichnis. Da Sie es jedoch in den Hintergrund verschoben haben, gibt es in diesem Fall keine Auswirkung.