GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Die Bash‘?

Diese Antwort auf Security StackExchange verwendet eine interessante Bash-Syntax, um eine Datei inline zu generieren:

openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650

Dieses Bit ist besonders interessant:

<(openssl ecparam -name secp384r1)

Läuft gerade:

echo <(openssl ecparam -name secp384r1)

Ich bekomme /dev/fd/63 zurück

Dies scheint also einen temporären Dateideskriptor mit dem Inhalt der Datei zu erstellen.

Wie heißt das?

Akzeptierte Antwort:

Es heißt Prozesssubstitution und ist ein Feature von bash, zsh und ksh (und möglicherweise anderen, ich weiß es nicht). Es ist nicht POSIX und Sie sollten es nicht in portablem Code verwenden, aber es ist sehr nützlich.

Hier ist der relevante Abschnitt des Bash-Handbuchs:

3.5.6 Prozessersetzung

Die Prozesssubstitution wird auf Systemen unterstützt, die Named Pipes
(FIFOs) oder die Methode /dev/fd zum Benennen offener Dateien unterstützen. Es hat die Form
von

  <(list) 

oder

  >(list) 

Die Prozessliste wird so ausgeführt, dass ihre Eingabe oder Ausgabe mit einem FIFO oder einer Datei in /dev/fd verbunden ist. Der Name dieser Datei wird als Ergebnis der Erweiterung als
Argument an den aktuellen Befehl übergeben.
Wenn die Form>(Liste) verwendet wird, liefert das Schreiben in die Datei eine Eingabe für die Liste. Wenn die Form <(list) verwendet wird, sollte die als Argument übergebene Datei
gelesen werden, um die Ausgabe von list zu erhalten. Beachten Sie, dass zwischen und der linken Klammer kein Leerzeichen
stehen darf, sonst würde das Konstrukt
als Umleitung interpretiert.

Wenn verfügbar, wird die Prozessersetzung gleichzeitig mit
Parameter- und Variablenerweiterung, Befehlsersetzung und arithmetischer
Erweiterung durchgeführt.


Linux
  1. Anpassen der Bash-Shell

  2. Warum erkennt das Bash-Skript keine Aliase?

  3. Ist Mv Atomic auf den Fs?

  4. Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner?

  5. Wie listet man die N-te jüngste Datei auf (ohne Ls zu analysieren!)?

Bash:In Datei schreiben

Bash-Quellbefehl

Bash:An Datei anhängen

35 Bash-Skriptbeispiele

Die Liste nützlicher Bash-Tastaturkürzel

Bash For Loop – Die praktischste Anleitung