Saya perlu mengekstrak shasum. Ini berfungsi, tetapi adakah yang bisa menjelaskan mengapa?
sed 's/^.*= //' -< <(openssl dgst -sha256 filename)
Saya kenal dengan $( )
konstruk, tetapi tidak dapat menemukan dokumen untuk <( )
, ditambah dengan -<
, yang saya asumsikan mengarahkan ke sed
STDIN.
Saya tahu ada cara yang lebih mudah, tetapi konstruk ini menghindari saya.
openssl ... | sed '...'
The
<( COMMAND )
Bash membangun disebut proses substitusi .Ini mengevaluasi bagian
COMMAND
dalam dan mengalihkan outputnya ke FIFO, sebuah pipa bernama yang mendapatkan deskriptor file virtual di dalam/dev/fd
ditugaskan. Kerjanya seperti file sementara yang berisi output dari perintah yang dievaluasi.The
<
Bash membangun disebut redirection masukan .Dibutuhkan deskriptor file di sisi kanan dan mengarahkan kontennya ke STDIN (input standar) dari perintah di sisi kiri.
Ini
-
bukan konstruk Bash tetapi argumen untuksed
itu menentukan file inputnya. Nilai khusus-
berarti membaca dari STDIN (yang juga merupakansed
standar, sehingga dapat dihilangkan).Baris ini pertama kali berjalan
openssl dgst -sha256 filename
dan menyimpan outputnya dalam FIFO. Deskriptor file yang mewakili pipa bernama ini diperlakukan sebagai file input yang akan dialihkan ke STDIN darised 's/^.*= //' -
.sed
Perintah ini membaca dari STDIN dan menghapus setiap karakter sebelum simbol "=" diikuti oleh spasi.sumber