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.
Perintah dapat memiliki lebih dari satu input dan lebih dari satu output, tetapi itu adalah materi untuk hari lain.