Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Apa itu stdin, stdout, dan stderr di Linux?

Posted on October 16, 2023

Quick Links
Streams Menggabungkan Dua PoinStreaming Standar Linux: stdin, stdout, stderrStreams Ditangani Seperti FileBereaksi terhadap Pipa dan RedirectsRedirecting stdout dan stderrRedirecting Baik stdout dan stderrRedirecting stdout dan stderr ke File yang SamaMendeteksi Pengalihan Dalam ScriptStreams Of ConsciousnessKey TakeawaysPerintah
Linux membuat tiga aliran data ( stdin , stdout, dan stderr) yang dapat digunakan untuk mentransfer data tentang suatu perintah stdin adalah aliran masukan, stdout adalah aliran keluaran, dan stderr adalah aliran kesalahan di Linux. Pengalihan memungkinkan Anda mengarahkan keluaran atau kesalahan ke tujuan berbeda, seperti file atau pipa.

stdin, stdout, dan stderr adalah tiga aliran data yang dibuat saat Anda meluncurkan perintah Linux. Anda dapat menggunakannya untuk mengetahui apakah skrip Anda sedang disalurkan atau dialihkan. Kami tunjukkan caranya.

Streams Menggabungkan Dua Poin

Segera setelah Anda mulai belajar tentang Linux dan sistem operasi mirip Unix, Anda akan menemukan istilah stdin, stdout, dan stederr . Ini adalah tiga aliran standar yang dibuat ketika perintah Linux dijalankan. Dalam komputasi, aliran adalah sesuatu yang dapat mentransfer data. Dalam kasus aliran ini, datanya berupa teks. Aliran data, seperti aliran air, memiliki dua ujung. Mereka memiliki sumber dan arus keluar. Perintah Linux apa pun yang Anda gunakan menyediakan satu ujung dari setiap aliran. Ujung lainnya ditentukan oleh shell yang meluncurkan perintah. Ujung itu akan terhubung ke jendela terminal, terhubung ke pipa, atau diarahkan ke file atau perintah lain, sesuai dengan baris perintah yang meluncurkan perintah.

Aliran Standar Linux: stdin, stdout, stderr

Di Linux, stdin adalah aliran masukan standar. Ini menerima teks sebagai masukannya. Output teks dari perintah ke shell dikirimkan melalui aliran stdout (standard out). Pesan kesalahan dari perintah dikirim melalui aliran stderr (kesalahan standar).

Jadi Anda dapat melihat bahwa ada dua aliran keluaran, stdout dan stderr, dan satu aliran masukan, stdin. Karena pesan kesalahan dan keluaran normal masing-masing memiliki salurannya sendiri untuk membawanya ke jendela terminal, keduanya dapat ditangani secara terpisah satu sama lain.

Stream Ditangani Seperti File

Stream di Linux—seperti hampir semua hal lainnya—diperlakukan seolah-olah itu adalah file. Anda dapat membaca teks dari file, dan Anda dapat menulis teks ke dalam file. Kedua tindakan ini melibatkan aliran data. Jadi konsep menangani aliran data sebagai file tidaklah terlalu rumit.

Setiap file yang terkait dengan suatu proses dialokasikan nomor unik untuk mengidentifikasinya. Ini dikenal sebagai deskriptor file. Setiap kali suatu tindakan diperlukan untuk dilakukan pada suatu file, deskriptor file digunakan untuk mengidentifikasi file tersebut.

Nilai-nilai ini selalu digunakan untuk stdin, stdout, dan stderr:

0: stdin 1: stdout 2: stderr Bereaksi terhadap Pipa dan Pengalihan

To memudahkan pengenalan seseorang terhadap suatu subjek, teknik yang umum adalah mengajarkan versi topik yang disederhanakan. Misalnya, dengan tata bahasa, kita diberitahu bahwa aturannya adalah “I sebelum E, kecuali setelah C.” Namun sebenarnya, ada lebih banyak pengecualian terhadap aturan ini daripada kasus-kasus yang mematuhinya.

Dalam nada yang sama, ketika berbicara tentang stdin, stdout, dan stderr akan lebih mudah untuk menguraikan aksioma yang diterima bahwa suatu proses tidak mengetahui atau peduli di mana lokasinya. tiga aliran standar dihentikan. Haruskah suatu proses memperhatikan apakah outputnya menuju terminal atau dialihkan ke file? Bisakah ia mengetahui apakah masukannya berasal dari keyboard atau disalurkan ke dalamnya dari proses lain?

Sebenarnya, suatu proses mengetahui—atau setidaknya dapat mengetahui, haruskah ia memilih untuk memeriksa—dan dapat ubah perilakunya sesuai jika pembuat perangkat lunak memutuskan untuk menambahkan fungsionalitas itu.

Kita dapat melihat perubahan perilaku ini dengan sangat mudah. Coba dua perintah ini:

ls

ls | cat

Perintah ls berperilaku berbeda jika outputnya (stdout) disalurkan ke perintah lain. Ini adalah ls yang beralih ke keluaran kolom tunggal, ini bukan konversi yang dilakukan oleh cat. Dan ls melakukan hal yang sama jika keluarannya dialihkan:

ls > capture.txt

cat capture.txt

Redirecting stdout dan stderr

Ada keuntungan jika pesan kesalahan dikirimkan melalui aliran khusus. Ini berarti kita dapat mengarahkan output perintah (stdout) ke file dan masih melihat pesan kesalahan (stderr) di jendela terminal. Anda dapat bereaksi terhadap kesalahan tersebut jika diperlukan, saat kesalahan tersebut terjadi. Ini juga menghentikan pesan kesalahan agar tidak mencemari file tempat stdout dialihkan.

Ketik teks berikut ke dalam editor dan simpan ke file bernama error.sh.

#!/bin/bashecho”Tentang mencoba mengakses file itu tidak ada”catbad-filename.txt

Jadikan skrip dapat dieksekusi dengan perintah ini:

chmod +x error.sh

Baris pertama skrip menggemakan teks ke jendela terminal, melalui aliran stdout. Baris kedua mencoba mengakses file yang tidak ada. Ini akan menghasilkan pesan kesalahan yang dikirimkan melalui stderr.

Jalankan skrip dengan perintah ini:

./error.sh

Kita dapat melihat bahwa kedua aliran keluaran, stdout dan stderr, telah ditampilkan di jendela terminal.

Mari kita coba mengarahkan ulang keluaran ke file:

./error.sh > capture.txt

Pesan kesalahan yang dikirimkan melalui stderr masih dikirim ke jendela terminal. Kita dapat memeriksa isi file untuk melihat apakah keluaran stdout masuk ke file.

cat capture.txt

Output dari stdin dialihkan ke file seperti yang diharapkan.

Simbol pengalihan > berfungsi dengan stdout secara default. Anda dapat menggunakan salah satu deskriptor file numerik untuk menunjukkan aliran keluaran standar mana yang ingin Anda alihkan.

Untuk mengarahkan ulang stdout secara eksplisit, gunakan instruksi pengalihan ini:

1>

Untuk mengarahkan ulang stderr secara eksplisit, gunakan instruksi pengalihan ini:

2>

Mari kita coba pengujian kami lagi , dan kali ini kita akan menggunakan 2>:

./error.sh 2> capture.txt

Pesan kesalahan dialihkan dan pesan stdoutecho dikirim ke jendela terminal:

Mari kita lihat apa yang ada di file capture.txt.

cat capture .txt

Pesan stderr ada di capture.txt seperti yang diharapkan.

Redirecting Stdout dan stderr

Tentu saja, jika kita dapat mengarahkan ulang stdout atau stderr ke file secara independen satu sama lain, kita harus dapat mengarahkan keduanya secara bersamaan, ke dua file berbeda?

Ya, kami bisa. Perintah ini akan mengarahkan stdout ke file bernama capture.txt dan stderr ke file bernama error.txt.

./error.sh 1> capture.txt 2> error.txt

Karena kedua aliran keluaran–keluaran standar dan kesalahan standar- –dialihkan ke file, tidak ada output yang terlihat di jendela terminal. Kita dikembalikan ke prompt baris perintah seolah-olah tidak ada yang terjadi.

Mari kita periksa isi setiap file:

cat capture.txt

cat error.txt

Mengarahkan ulang stdout dan stderr ke File yang Sama

Itu bagus, kita sudah menjalankan masing-masing aliran keluaran standar ke file khusus miliknya sendiri. Satu-satunya kombinasi lain yang dapat kita lakukan adalah mengirim stdout dan stderr ke file yang sama.

Kita dapat mencapainya dengan perintah berikut:

./error.sh > capture.txt 2>&1

Mari kita uraikan.

./error. sh: Meluncurkan file skrip error.sh. > capture.txt: Mengalihkan aliran stdout ke file capture.txt. > adalah singkatan dari 1>. 2>&1: Ini menggunakan instruksi &> redirect. Instruksi ini memungkinkan Anda memberi tahu shell agar satu aliran mencapai tujuan yang sama dengan aliran lainnya. Dalam hal ini, kami mengatakan “redirect stream 2, stderr, ke tujuan yang sama dengan stream 1, stdout, yang sedang dialihkan.”

Tidak ada keluaran yang terlihat. Itu menggembirakan.

Mari kita periksa file capture.txt dan lihat apa yang ada di dalamnya.

cat capture.txt

Baik aliran stdout dan stderr telah dialihkan ke satu file tujuan.

Agar keluaran aliran dialihkan dan dibuang secara diam-diam, arahkan keluarannya ke /dev/null.

Mendeteksi Pengalihan Dalam Skrip

Kami membahas bagaimana sebuah perintah dapat mendeteksi jika ada aliran yang dialihkan, dan dapat memilih untuk mengubah perilakunya. Bisakah kita mencapai hal ini dengan skrip kita sendiri? Ya kita bisa. Dan ini adalah teknik yang sangat mudah untuk dipahami dan diterapkan.

Ketik teks berikut ke dalam editor dan simpan sebagai input.sh.

#!/bin/bashif[ -t 0 ]; thenecho stdin berasal dari keyboardelse echo stdin berasal dari pipa atau filefi

Gunakan perintah berikut untuk membuatnya dapat dieksekusi:

chmod +x input.sh

Bagian pintarnya adalah pengujian dalam tanda kurung siku. Opsi -t (terminal) mengembalikan nilai true (0) jika file yang terkait dengan deskriptor file berakhir di jendela terminal. Kami telah menggunakan deskriptor file 0 sebagai argumen pengujian, yang mewakili stdin.

Jika stdin terhubung ke jendela terminal, pengujian akan terbukti benar. Jika stdin terhubung ke file atau pipa, pengujian akan gagal.

Kita dapat menggunakan file teks apa pun yang mudah digunakan untuk menghasilkan masukan ke skrip. Di sini kita menggunakan yang disebut dummy.txt.

./input.sh < dummy.txt

Outputnya menunjukkan bahwa skrip mengenali bahwa input tersebut tidak berasal dari keyboard, melainkan berasal dari file. Jika Anda mau, Anda dapat memvariasikan perilaku skrip Anda.

Itu dengan pengalihan file, mari kita coba dengan pipe.

cat dummy.txt | ./input.sh

Skrip mengenali bahwa masukannya sedang disalurkan ke dalamnya. Atau lebih tepatnya, ia mengenali sekali lagi bahwa aliran stdin tidak terhubung ke jendela terminal.

Mari kita jalankan skrip tanpa pipa atau pengalihan.

./input.sh

Aliran stdin terhubung ke jendela terminal, dan skrip melaporkan hal ini karenanya.

Untuk memeriksa hal yang sama dengan aliran keluaran, kita memerlukan skrip baru. Ketik yang berikut ini ke dalam editor dan simpan sebagai output.sh.

#!/bin/bashif[ -t 1 ]; thenecho stdout akan menuju ke jendela terminalelseecho stdout sedang dialihkan atau dipipetfi

Gunakan perintah berikut untuk membuatnya dapat dieksekusi:

chmod +x input.sh

Satu-satunya perubahan signifikan pada skrip ini adalah pengujian dalam tanda kurung siku. Kami menggunakan digit 1 untuk mewakili deskriptor file untuk stdout.

Mari kita mencobanya. Kami akan menyalurkan output melalui cat.

./output | cat

Skrip mengenali bahwa outputnya tidak langsung ke jendela terminal.

Kami juga dapat menguji skrip dengan mengarahkan output ke file.

./output.sh > capture.txt

Tidak ada output ke jendela terminal, kami diam-diam kembali ke prompt perintah. Seperti yang kita harapkan.

Kita dapat melihat ke dalam file capture.txt untuk melihat apa yang ditangkap. Gunakan perintah berikut untuk melakukannya.

cat capture.sh

Sekali lagi, pengujian sederhana dalam skrip kita mendeteksi bahwa aliran stdout tidak dikirim langsung ke jendela terminal.

Jika kita menjalankan skrip tanpa pipa atau pengalihan apa pun, skrip tersebut akan mendeteksi stdout tersebut sedang dikirim langsung ke jendela terminal.

./output.sh

Dan itulah yang kita lihat.

Aliran Kesadaran

Mengetahui cara mengetahui apakah skrip Anda terhubung ke jendela terminal, atau pipa, atau sedang dialihkan, memungkinkan Anda untuk sesuaikan perilakunya. Nbsp

Logging dan output diagnostik bisa lebih atau kurang rinci, tergantung pada apakah itu masuk ke layar atau ke file. Pesan kesalahan dapat dicatat ke file yang berbeda dari keluaran program normal.

Seperti biasanya, lebih banyak pengetahuan membawa lebih banyak opsi.

Perintah Linux

Files

tar·pv·cat·tac·chmod·grep·diff·sed·ar·man·pushd· popd·fsck·testdisk·seq·fd·pandoc·cd·$PATH·awk·join·jq·fold·uniq·journalctl·tail·stat·ls·fstab·echo·less·chgrp·chown·rev·look·strings ·ketik·ganti nama·zip·unzip·mount·umount·install·fdisk·mkfs·rm·rmdir·rsync·df·gpg·vi·nano·mkdir·du·ln·patch·convert·rclone·shred·srm·scp ·gzip·chattr·potong·temukan·umask·wc· tr

Proses

alias·layar·atas·bagus·renice·kemajuan·strace·systemd·tmux·chsh·history·di·batch·gratis·yang·dmesg·chfn·usermod·ps ·chroot·xargs·tty·pinky·lsof·vmstat·timeout·wall·yes·kill·sleep·sudo·su·time·groupadd·usermod·groups·lshw·shutdown·reboot·halt·poweroff·passwd·lscpu·crontab ·date·bg·fg·pidof·nohup·pmap

Networking

netstat·ping·traceroute·ip·ss·whois·fail2ban·bmon·dig·finger·nmap·ftp·curl·wget·who·whoami·w·iptables·ssh-keygen ·ufw·arping·firewalld

Terbaru

  • Inilah Cara Zakat Crypto Kalian Bisa Jadi Pengurang Pajak Berdasarkan Aturan Resmi Pemerintah!
  • Inilah Perbandingan Airwallex vs Payoneer 2026: Jangan Sampai Profit Kalian Ludes Gara-Gara Biaya Admin!
  • Inilah Roadmap 7 Tahap Bangun Bisnis Digital dari Nol Biar Nggak Cuma Putar-Putar di Tempat!
  • Inilah Cara Tetap Gajian dari YouTube Meski View Masih Ratusan, Penasaran?
  • Inilah Alasan Akun TikTok Affiliate GMV 270 Juta Kena Banned Permanen!
  • Inilah Bahaya Astute Beta Server APK, Jangan Sembarang Klik Link Download FF Kipas 2026!
  • Inilah Bahaya Nonton Film di LK21 dan IndoXXI, Awas Data Pribadi dan Saldo Rekening Kalian Bisa Ludes!
  • Inilah Kronologi & Video Lengkap Kasus Sejoli Tambelangan Sampang Viral, Ternyata Gini Awal Mulanya!
  • Inilah Alasan Kenapa Koin Nego Neko Shopee Nggak Bisa Dipakai Bayar Full dan Cara Rahasia Dapetinnya!
  • Inilah Cara Menjawab Pertanyaan Apakah di Sekolahmu Sudah Ada IFP/PID dengan Benar dan Profesional
  • Inilah Fakta Isu Roblox Diblokir di Indonesia 2026, Benarkah Akan Ditutup Total?
  • Inilah Penyebab dan Cara Mengatasi FF Kipas My ID Verify UID Biar Akun Tetap Aman
  • Inilah Deretan HP RAM 8GB Harga di Bawah 2 Juta Terbaik 2026, Spek Dewa Tapi Nggak Bikin Kantong Jebol!
  • Contoh Cara Buat SK Panitia TKA 2026
  • Inilah Cara Download Point Blank ID Versi Terbaru 2026, Gampang Banget Ternyata!
  • Inilah Persiapan Lengkap Gladi Bersih TKA 2026 SD dan SMP: Jadwal, Teknis Proktor, dan Aturan yang Wajib Kalian Tahu
  • Inilah Aturan Lengkapnya, Apakah Zakat dalam Bentuk Barang Bisa Mengurangi Pajak Penghasilan Kalian?
  • Inilah Kenapa KBLI Sangat Penting Buat Bisnis Digital dan Gini Caranya Biar Kalian Nggak Salah Pilih Kode
  • Inilah Fitur Keren ONLYOFFICE Docs 9.3, Cara Baru Edit PDF dan Dokumen Lebih Efisien!
  • Inilah Cara Banjir Komisi Shopee Affiliate Hanya Dalam 7 Hari Saja
  • Cara Download Aplikasi BUSSID Versi 3.7.1 Masih Dicari dan Link Download Aman Mediafire
  • Inilah Cara Lengkap Mengajukan SKMT dan SKBK di EMIS GTK 2026, Biar Tunjangan Cair Tanpa Drama!
  • Inilah Kenapa Bukti Setor Zakat Kalian Harus Ada NPWP-nya, Jangan Sampai Klaim Pajak Ditolak!
  • Inilah Cara Jadi Clipper Video Sukses Tanpa Perlu Tampil di Depan Kamera
  • Inilah Cara Upload NPWP dan Rekening di EMIS GTK Madrasah Terbaru, Jangan Sampai Tunjangan Terhambat!
  • Inilah Fakta di Balik Video Ukhti Sholat Mukena Pink Viral yang Bikin Geger Media Sosial
  • Belum Tahu? Inilah Langkah Pengisian Survei Digitalisasi Pembelajaran 2026 Biar Nggak Salah
  • Ini Kronologi Video Viral Ibu Tiri vs Anak Tiri Ladang Sawit Tiktok
  • Inilah Caranya Update Chromebook Sekolah Agar Siap Digunakan untuk TKA SD dan SMP
  • Inilah Caranya Menghindari Mafia Kontraktor Renovasi Nakal Supaya Budget Nggak Boncos
  • How to Run Windows Apps on Linux: A Complete Guide to WinBoat, WINE, and Beyond
  • Build Your Own AI Development Team: Deploying OpenClaw and Claude Code on a VPS!
  • How to Measure Real Success in the Age of AI: A Guide to Software Metrics That Actually Matter
  • Kubernetes Traffic Tutorial: How to Create Pod-Level Firewalls (Network Policies)
  • This Is Discord Malware: Soylamos; How to Detect & Prevent it
  • How to Importing and Exporting Memory in Claude
  • How to Create Professional Business Guides and One-Pagers in Seconds with Venngage AI!
  • How to the OWASP Top 10 Security Risks, Attacking LLM
  • How to Create Visual Storytelling with Higgsfield Soul 2.0
  • How to Use the Tiiny AI Pocket Lab to Run Local Large Language Models
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

©2026 emka.web.id | Design: Newspaperly WordPress Theme