GNU/Linux >> Znalost Linux >  >> Linux

The Bash ‘?

Tato odpověď na Security StackExchange používá zajímavou syntaxi bash ke generování souboru v řádku:

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

Tento kousek je obzvláště zajímavý:

<(openssl ecparam -name secp384r1)

Běží jen:

echo <(openssl ecparam -name secp384r1)

Dostávám zpět /dev/fd/63

Zdá se tedy, že to vytváří dočasný deskriptor souboru s obsahem souboru.

Jak se to nazývá?

Přijatá odpověď:

Říká se tomu substituce procesů a je to vlastnost bash, zsh a ksh (a možná i dalších, nevím). Není to POSIX a neměli byste to používat v přenosném kódu, ale je to velmi užitečné.

Zde je příslušná část manuálu bash:

3.5.6 Náhrada procesu

Náhrada procesů je podporována na systémech, které podporují pojmenované kanály
(FIFO) nebo metodu /dev/fd pro pojmenování otevřených souborů. Má formu
z

  <(list) 

nebo

  >(list) 

Seznam procesů se spouští se svým vstupem nebo výstupem připojeným k FIFO nebo nějakému souboru v /dev/fd. Název tohoto souboru je v důsledku rozšíření předán jako argument
aktuálnímu příkazu.
Pokud je použit tvar>(seznam), zápis do souboru poskytne vstup pro seznam. Pokud je použit <(list) formulář, měl by být soubor předaný jako argument
přečten, aby se získal výstup seznamu. Všimněte si, že mezi a levou závorkou se nesmí objevit žádná mezera
, jinak by byl konstrukt
interpretován jako přesměrování.

Je-li k dispozici, provádí se nahrazování procesu současně s
rozšířením parametrů a proměnných, nahrazením příkazů a aritmetickým
rozšířením.


Linux
  1. Je MV Atomic na Fs?

  2. Úplný pohled na to, kde je v Bash nastavena proměnná cesty?

  3. Bash skript k odstranění nejstaršího souboru ze složky?

  1. Jak vypsat seznam N’th Youngest File (bez analýzy Ls!)?

  2. Jak poznám název souboru skriptu ve skriptu Bash?

  3. Vytiskněte soubor s vynecháním prvních X řádků v Bash

  1. Procházení obsahu souboru v Bash

  2. Jak vypsat velikost každého souboru a adresáře a seřadit podle sestupné velikosti v Bash?

  3. Jak získám absolutní adresář souboru v bash?