GNU/Linux >> Belajar Linux >  >> Linux

Apa Yang Dimaksud Dengan Menghubungkan Stdout Dan Stdin?

Saya sedang membaca buku, katanya:

Setiap proses memiliki setidaknya tiga saluran komunikasi yang tersedia untuknya:“input
standar” (STDIN), “output standar” (STDOUT), dan “kesalahan standar” (STDERR).

Sebagian besar perintah menerima inputnya dari STDIN dan menulis outputnya ke STDOUT.
Perintah tersebut menulis pesan kesalahan ke STDERR. Konvensi ini memungkinkan Anda merangkai
perintah bersama-sama seperti blok penyusun untuk membuat pipeline komposit.

Shell menafsirkan simbol < , > , dan >> sebagai instruksi untuk merutekan ulang input atau output perintah ke atau dari file.

Untuk menghubungkan STDOUT dari satu perintah ke STDIN yang lain, gunakan |
simbol, umumnya dikenal sebagai pipa.

ps -ef | grep httpd

Jadi pada dasarnya apa yang dikatakan adalah bahwa input standar adalah perintah yang memungkinkan pengguna untuk menulis ke file, sedangkan output standar adalah perintah yang memiliki output tulis bash shell ke shell, dan kesalahan standar seperti output tetapi hanya dipanggil ketika ada kesalahan dalam sistem file. Kemudian kita sampai pada bagian menghubungkan STDOUT dan STDIN dan saya tersesat.

Jawaban yang Diterima:

Input standar dan output standar bukanlah perintah.

Bayangkan perintah sebagai mesin di pabrik dengan jalur perakitan. Sebagian besar mesin dirancang untuk memiliki satu sabuk konveyor untuk memasukkan data dan satu sabuk konveyor untuk mengeluarkan data; mereka adalah input standar dan output standar masing-masing. Kesalahan standar adalah bukaan di sisi mesin di mana ia dapat mengeluarkan barang yang ditolak.

+-------+     +------------------+       +------------------+     +------+
| input |     |    machine A     |       |    machine B     |     |output|
| reser ­­­|=====|<stdin     stdout>|=======|<stdin     stdout>|=====|bucket|
| ‑voir |  →  |      stderr      |   →   |      stderr      |  →  |      |
+-------+     +------------------+       +------------------+     +------+
                      ||                          ||

Diagram di atas menunjukkan ban berjalan yang melewati dua mesin. Data berasal dari reservoir input di sebelah kiri, diumpankan ke mesin A, kemudian outputnya disampaikan lebih lanjut ke mesin B (untuk itu inputnya), dan output mesin B disimpan di bucket output di sebelah kanan.

Dalam istilah unix, ini disebut pipa. Metaforanya adalah perpipaan:pipa menghubungkan mesin A ke mesin B. Sintaks shell untuk pipa di atas adalah

<input-file.txt commandA | commandB >output-file.txt

< simbol redirection memberitahu shell untuk menghubungkan commandA input standar ke file input-file.txt sebelum meluncurkan commandA . (Anda dapat menempatkan pengalihan sebelum atau sesudah nama perintah.) > simbol redirection memberitahu shell untuk menghubungkan commandB keluaran standar ke output-file.txt . Pipa (“| “) simbol di tengah memberitahu shell untuk menghubungkan commandA keluaran standar ke commandB masukan standar sebelum meluncurkannya.

Terkait:Menghubungkan 2 GND dengan perbedaan tegangan relatif?

Perintah dapat memiliki lebih dari satu input dan lebih dari satu output, tetapi itu adalah materi untuk hari lain.


Linux
  1. Cara Mengarahkan Output ke File dan Stdout di Linux

  2. Konfigurasikan Shell Untuk Mencetak Stderr Dan Stdout Dalam Berbagai Warna?

  3. Output Ke Stdout Dan Pada Saat Yang Sama Grep Ke File?

  1. Cara Mengarahkan Keluaran Program Dan Masih Melanjutkannya ke Stdout?

  2. Redirect Dan Output Pipa?

  3. Iptables Dan Proxy Transparan?

  1. Tampilkan Hanya Stderr Di Layar Tetapi Tulis Stdout Dan Stderr Ke File?

  2. Mengapa Deis dan apa itu?

  3. Cara mengarahkan output ke file dan stdout