GNU/Linux >> Belajar Linux >  >> Linux

lulus stdout sebagai nama file untuk utilitas baris perintah?

Solusi 1:Menggunakan substitusi proses

Cara paling nyaman untuk melakukan ini adalah dengan menggunakan substitusi proses. Dalam bash sintaks terlihat sebagai berikut:

foo -o >(other_command)

(Perhatikan bahwa ini adalah bashism. Ada solusi serupa untuk shell lain, tetapi intinya adalah ini tidak portabel.)

Solusi 2:Menggunakan pipa bernama secara eksplisit

Anda dapat melakukan hal di atas secara eksplisit/manual sebagai berikut:

  1. Buat pipa bernama menggunakan mkfifo perintah.

    mkfifo my_buf
    
  2. Luncurkan perintah Anda yang lain dengan file itu sebagai input

    other_command < my_buf
    
  3. Jalankan foo dan biarkan ia menulis hasilnya ke my_buf

    foo -o my_buf
    

Solusi 3:Menggunakan /dev/stdout

Anda juga dapat menggunakan file perangkat /dev/stdout sebagai berikut

foo -o /dev/stdout | other_command

Anda dapat menggunakan keajaiban UNIX dan membuat pipa bernama :)

  1. Buat pipa

    $ mknod -p mypipe
    
  2. Mulai proses yang membaca dari pipa

    $ second-process < mypipe
    
  3. Mulai proses, yang menulis ke dalam pipa

    $ foo -o mypipe
    

Demi membuat stackoverflow senang, izinkan saya menulis kalimat yang cukup panjang karena solusi yang saya usulkan hanya sepanjang 18 karakter, bukan 30+

yang diperlukan
foo -o /dev/stdout

Pipa bernama bekerja dengan baik, tetapi Anda memiliki sintaks yang lebih bagus dan lebih langsung yang tersedia melalui substitusi proses bash yang memiliki manfaat tambahan karena tidak menggunakan pipa bernama permanen yang nantinya harus dihapus (substitusi proses menggunakan pipa bernama sementara di belakang layar):

foo -o >(other command)

Juga, jika Anda ingin mem-pipe output ke perintah Anda dan juga menyimpan output ke file, Anda dapat melakukan ini:

foo -o >(tee output.txt) | other command


Linux
  1. Perintah Linux wc Dijelaskan untuk Pemula (6 Contoh)

  2. Titan – Pengelola Kata Sandi baris Perintah Untuk Linux

  3. ppl – Buku Alamat Baris Perintah Untuk Linux

  1. 8 tips untuk baris perintah Linux

  2. menjalankan perintah terhadap setiap baris dalam file teks

  3. Bagaimana Melewati Isi File Sebagai Parameter Baris Perintah?

  1. Bagaimana Cara Memecah File Seperti Split To Stdout Untuk Piping Ke Perintah?

  2. Buang Stdout Of A Command Selama T Detik?

  3. Untuk apa Linux test -a command test?