управляйте перенаправлением вывода с помощью '-<<(…)'

Я должен был извлечь shasum. Это работает, но кто-либо может объяснить почему?

sed 's/^.*= //' -< <(openssl dgst -sha256 filename)

Я знаком с $( ) создайте, но не может найти документы для <( ), вместе с -<, то, которое я принимаю, перенаправляет к sed STDIN.

Я знаю, что существуют более легкие пути, но эта конструкция ускользает от меня.

9
задан 10 July 2016 в 13:42

2 ответа

<(openssl dgst -sha256 filename)

конструкция замена процесса . Это создает файл (или FIFO) негласно и пасует назад его имя к последовательности команды.

< 

регулярное перенаправление файла, перенаправление содержания закулисного файла к stdin и

-

является заполнителем, распознанным sed, чтобы указать, что его вход прибывает от stdin.

С тех пор sed совершенно способно к чтению из файлов, эти -< кажется ненужным в этом контексте;

sed 's/^.*= //' <(openssl dgst -sha256 filename)

должен работать точно также.

9
ответ дан 23 November 2019 в 04:51

<( COMMAND ) Конструкцию Bash называют заменой процесса.

Это оценивает COMMAND внутри и перенаправления его вывод к FIFO, именованный канал, который получает виртуальный дескриптор файла внутри /dev/fd присвоенный. Это действует как временный файл, который содержит вывод оцененной команды.


< Конструкцию Bash называют перенаправлением ввода.

Это берет дескриптор файла на правой стороне и перенаправляет ее содержание к STDIN (стандартный вход) команды на левой стороне.


- не конструкция Bash, а аргумент в пользу sed это указывает его входной файл. Специальное значение - средства читать из STDIN (который является также sedзначение по умолчанию, таким образом, это могло быть опущено).


sed 's/^.*= //' - < <(openssl dgst -sha256 filename)

Эта строка сначала работает openssl dgst -sha256 filename и кэши его вывод в FIFO. Дескриптор файла, представляющий этот именованный канал, рассматривают как входной файл, который перенаправляется к STDIN sed 's/^.*= //' -. Это sed управляйте чтениями от STDIN, и удаляет каждый символ перед "=" символ, сопровождаемый пространством.

8
ответ дан 23 November 2019 в 04:51

Другие вопросы по тегам:

Похожие вопросы: