GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara kerja pola <( cmd ) di bash?

Ini disebut substitusi proses.

3.5.6 Proses Pergantian

Substitusi proses memungkinkan input atau output proses dirujuk menggunakan nama file.

Daftar proses dijalankan secara asinkron, dan input atau outputnya muncul sebagai nama file. Nama file ini diteruskan sebagai argumen ke perintah saat ini sebagai hasil dari perluasan. Jika form>(list) digunakan, menulis ke file akan memberikan input untuk list. Jika formulir <(list) digunakan, file yang diteruskan sebagai argumen harus dibaca untuk mendapatkan output dari list. Perhatikan bahwa tidak boleh ada spasi yang muncul di antara dan tanda kurung kiri, jika tidak, konstruk akan ditafsirkan sebagai pengalihan. Substitusi proses didukung pada sistem yang mendukung pipa bernama (FIFO) atau metode /dev/fd penamaan file terbuka.

Ini bukan hanya bash seperti yang awalnya muncul di ksh tetapi tidak dalam standar posix.

Di bawah tenda, substitusi proses memiliki dua implementasi. Pada sistem yang mendukung /dev/fd (kebanyakan sistem mirip Unix) bekerja dengan memanggil pipe( ) panggilan sistem, yang mengembalikan deskriptor file $fd untuk pipa anonim baru, lalu buat string /dev/fd/$fd , dan gantikan itu di baris perintah. Pada sistem tanpa /dev/fd dukungan, itu memanggil mkfifo dengan nama file sementara yang baru untuk membuat pipa bernama, dan gantikan nama file ini pada baris perintah.


Anda dapat memikirkan <( somecommand ) sebagai nama file dari file sementara yang berisi keluaran somecommand . Dengan kata lain,

utility < <( somecommand )

adalah jalan pintas untuk

somecommand >tempfile
utility <tempfile
rm -f tempfile

Dan

utility <( somecommand )

adalah jalan pintas untuk

somecommand >tempfile
utility tempfile  # notice the lack of redirection here (utility expected to read from "tempfile")
rm -f tempfile

Demikian juga >( somecommand ) dapat dianggap sebagai nama file dari file sementara yang akan dimasukkan ke dalam somecommand pada input standarnya. Dengan kata lain,

utility > >( somecommand )

adalah jalan pintas untuk

utility >tempfile
somecommand <tempfile
rm -f tempfile

Dan

utility >( somecommand )

mungkin bisa menjadi jalan pintas untuk

mkfifo temppipe
somecommand <temppipe &
utility temppipe  # utility is expected to write to "temppipe"
rm -f temppipe

(atau yang serupa)


Linux
  1. Apa itu NGINX? Bagaimana cara kerjanya?

  2. Dalam Skrip Bash Bagaimana Perintah Lanjutkan Bekerja Dengan Loop Tertanam?

  3. Ssh – Bagaimana Tcp-keepalive Bekerja Di Ssh?

  1. Bagaimana Perintah Keluar Bekerja Pada Terminal Unix?

  2. Bagaimana cara kerja cat << EOF di bash?

  3. Bagaimana rm bekerja? Apa yang rm lakukan?

  1. Bagaimana Cara Kerja Awk ‘!a[$0]++’?

  2. Pencocokan pola tidak berfungsi dalam skrip bash

  3. Bagaimana cara kerja perintah ps?