Was bedeutet% 1 in "% 1 töten"?

12

Ich weiß, dass $!die PID des letzten (Hintergrund-) Prozesses gespeichert wird, aber was bedeutet %1das? Ich sehe es oft zusammen mit killund es hat den gleichen Effekt wie kill $!. Kann mir jemand einen Hinweis geben? (Solche kleinen Begriffe sind so schwer zu googeln: - /)

Zardoz
quelle
Nicht wirklich ... google.com/search?q=percent+1+bash (siehe drittes Ergebnis)
Hello71

Antworten:

10

Das % Bezeichner bezieht sich auf die Jobs in der Jobliste der aktuellen Shell und gibt die PID zurück. Versuchen Sie es help jobs.

Ignacio Vazquez-Abrams
quelle
1
Was mich verwirrte, war, dass man killdie Manpage für eine externe Kill-ausführbare Datei, über die nichts aussagt, angezeigt wird %. Aber bash hat auch ein eingebautes System, killdas als eingebautes Vorrang vor dem externen killhat und help killuns sagt, dass wir Jobspezifikationen mit den eingebauten verwenden killkönnen und dass die Möglichkeit, Jobspezifikationen zu verwenden, einer der Gründe dafür ist eingebaut.
Ciro Santilli 法轮功 病毒 审查 六四 事件 7
8

Was Sie zu Google wollen, ist man bash

Es gibt verschiedene Möglichkeiten, auf einen Job in der Shell zu verweisen. Das Zeichen% führt einen Jobnamen ein. Die Auftragsnummer n kann als% n bezeichnet werden. Auf einen Job kann auch mit einem Präfix des Namens verwiesen werden, mit dem er gestartet wurde, oder mit einem Teilstring, der in der Befehlszeile angezeigt wird. Zum Beispiel bezieht sich% ce auf einen gestoppten ce-Job. Wenn ein Präfix mit mehr als einem Job übereinstimmt, meldet bash einen Fehler. Die Verwendung von%? Ce bezieht sich dagegen auf jeden Job, der die Zeichenfolge ce in der Befehlszeile enthält. Wenn der Teilstring mit mehr als einem Job übereinstimmt, meldet bash einen Fehler. Die Symbole %% und% + beziehen sich auf die Vorstellung der Shell vom aktuellen Job. Dies ist der letzte Job, der gestoppt wurde, während er im Vordergrund war oder im Hintergrund gestartet wurde. Auf den vorherigen Job kann mit% - verwiesen werden. Wenn nur der aktuelle Job vorhanden ist, bezieht sich% - auf die Vorstellung der Shell vom aktuellen Job. Bei der Ausgabe von Jobs (z. B. der Ausgabe des Jobbefehls) wird der aktuelle Job immer mit einem + und der vorherige Job mit einem - gekennzeichnet. Ein einzelnes% (ohne zugehörige Jobspezifikation) bezieht sich auch auf den aktuellen Job.

Durch einfaches Benennen eines Jobs kann dieser in den Vordergrund gerückt werden:% 1 ist ein Synonym für '' fg% 1 '' und bringt Job 1 aus dem Hintergrund in den Vordergrund. In ähnlicher Weise setzt ''% 1 & '' Job 1 im Hintergrund fort, was '' bg% 1 '' entspricht.

TL; DR: %1 ist Job Nummer 1.

Orbling
quelle
5
Ich dachte, Qualität sei Job Nummer 1 ...
Ignacio Vazquez-Abrams
1
@Ignacio Vazquez-Abrams: Ja, das und die Anforderungen der Natur.