Linux Command #06: I/O Redirection β€” Mengalirkan Output, Error, dan Lubang Hitam /dev/null

  • 23 Sep, 2026
  • 7 min read

Pernahkah Anda bertanya-tanya, ketika kita mengetik ls, dari mana data teks itu berasal dan ke mana teks itu mengalir sehingga bisa tampil di layar monitor Anda?

Di episode 5 kemarin, kita sempat melihat trik kecil saat menggunakan echo:

echo "Port: 8080" > server.conf

Tanda panah > di atas bukan sekadar simbol biasa. Itu adalah pintu masuk menuju salah satu konsep paling kuat dalam arsitektur sistem operasi Unix dan Linux: Input/Output (I/O) Redirection.

Bayangkan setiap perintah di terminal adalah sebuah mesin pompa air. Mesin tersebut memiliki satu saluran pipa masuk (input) dan dua saluran pipa keluar (output normal dan output error). Secara default, kedua pipa keluar itu diarahkan ke layar monitor Anda.

Namun dengan Redirection, Anda bisa memasang selang fleksibel untuk membelokkan aliran air tersebut ke dalam ember, wadah penyimpanan berkas (file), atau bahkan membuangnya ke lubang pembuangan tanpa jejak.


🎯 Apa yang Akan Kita Pelajari?

  1. Tiga Aliran Standar Linux: Mengenal stdin (0), stdout (1), dan stderr (2).
  2. Standard Output: Perbedaan krusial antara menimpa (>) dan menyambung (>>).
  3. Standard Error: Cara memisahkan pesan kesalahan dengan 2>.
  4. Menggabungkan Output & Error: Teknik &> dan trik legendaris 2>&1.
  5. Misteri /dev/null: Lubang hitam (black hole) digital di Linux.
  6. Standard Input: Mengalirkan isi berkas ke dalam perintah menggunakan <.
  7. Skenario Nyata: Membuat script audit server dengan log sukses dan log error terpisah.

1. Tiga Aliran Data Standar (Standard Streams)

Di Linux, setiap kali sebuah program atau proses berjalan, sistem operasi secara otomatis membuka tiga saluran komunikasi standar yang disebut File Descriptors:

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  0 ──>β”‚              │──> 1 (stdout) ──> Layar Terminal
stdin  β”‚   PERINTAH   β”‚
       β”‚              │──> 2 (stderr) ──> Layar Terminal
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
File DescriptorNama AliranNomor IDSumber / Tujuan DefaultFungsi
stdinStandard Input0KeyboardMengirimkan data masuk ke perintah
stdoutStandard Output1Layar TerminalMengirimkan hasil keluaran normal
stderrStandard Error2Layar TerminalMengirimkan pesan peringatan & kesalahan

Secara default, baik stdout (hasil sukses) maupun stderr (pesan error) sama-sama dicetak ke layar monitor. Akibatnya, jika ada puluhan pesan error bercampur dengan hasil normal, terminal Anda akan berantakan.

Di sinilah kita memanfaatkan operator pengalihan (redirection).


2. Mengarahkan Output Normal (> vs >>)

1. Menimpa Berkas dengan > (Overwrite)

Operator > (atau 1>) mengambil keluaran stdout dari suatu perintah dan menyimpannya ke dalam file. Jika file tujuan sudah ada isinya, seluruh isi lama akan dihapus dan ditimpa!

# Simpan daftar isi direktori ke file daftar.txt
ls -la /var/log > daftar.txt

# Intip isinya
cat daftar.txt

Jika Anda menjalankan:

echo "Catatan Baru" > daftar.txt
cat daftar.txt

Hasil dari ls -la tadi akan lenyap seketika, berganti dengan tulisan β€œCatatan Baru”.

2. Menyambung Berkas dengan >> (Append)

Jika Anda ingin menambahkan baris baru di bagian paling bawah file tanpa menghapus isi sebelumnya, gunakan tanda panah ganda >>:

# Tambahkan entri baru tanpa menghapus data sebelumnya
date >> aktivitas.log
echo "Backup database berhasil" >> aktivitas.log

cat aktivitas.log

Output:

Wed Sep 23 15:00:00 UTC 2026
Backup database berhasil
Tip

Aturan Ingatan Cepat:

  • > = Ganti / Tulis Ulang dari Nol (Hati-hati, isi lama terhapus!).
  • >> = Sambung di Bawahnya (Aman untuk file catatan / log berkala).

3. Memisahkan Pesan Error dengan 2>

Pernahkah Anda mencari file atau menjalankan perintah pemindaian, lalu layar Anda dipenuhi pesan β€œPermission denied”?

Mari kita simulasikan:

ls /root /home

Karena direktori /root membutuhkan akses administrator, terminal akan mencetak dua jenis output sekaligus:

ls: cannot open directory '/root': Permission denied   <-- ini stderr
/home:                                                  <-- ini stdout
fajar  guest

Sekarang, kita pisahkan kedua saluran ini:

# Kirim hasil sukses ke sukses.txt, dan kirim error ke error.log
ls /root /home > sukses.txt 2> error.log

Layar terminal Anda sekarang akan tetap bersih tanpa output apa pun! Mari kita periksa kedua filenya:

cat sukses.txt
/home:
fajar  guest
cat error.log
ls: cannot open directory '/root': Permission denied

Pesan error berhasil ditangkap ke dalam error.log secara rapi menggunakan angka 2> (file descriptor 2 = stderr).


4. Menggabungkan Output & Error Menjadi Satu

Terkadang, kita ingin menyimpan semua keluaran (baik yang sukses maupun yang gagal) ke dalam satu file riwayat yang sama.

Ada dua cara untuk melakukannya:

Cara Modern: &>

Cara paling bersih dan mudah diingat di bash modern:

ls /root /home &> seluruh_output.log

Simbol &> memerintahkan bash untuk mengarahkan stdout DAN stderr sekaligus ke dalam file yang sama.

Cara Klasik: 2>&1

Anda akan sangat sering melihat sintaks ini di forum online atau dokumentasi server lama:

ls /root /home > seluruh_output.log 2>&1

Bagaimana cara membacanya?

  1. > seluruh_output.log = Arahkan output normal (1) ke file seluruh_output.log.
  2. 2>&1 = Arahkan aliran error (2) ke saluran yang sama dengan aliran normal (&1).

5. Mengenal /dev/null: Lubang Hitam Digital

Di Linux, ada sebuah file perangkat (device file) yang sangat unik bernama /dev/null.

Sering dijuluki sebagai β€œThe Black Hole of Linux”, apa pun teks yang Anda buang ke dalam /dev/null akan langsung lenyap selamanya dari muka bumi tanpa menghabiskan ruang penyimpanan harddisk sedikit pun!

Kapan Kita Menggunakannya?

Bayangkan Anda menjalankan pencarian file di seluruh sistem, tetapi tidak ingin melihat ratusan pesan gangguan β€œPermission denied”:

# Buang semua pesan error ke tong sampah abadi!
ls /root /home 2> /dev/null

Output di layar hanya akan menyisakan data yang berhasil:

/home:
fajar  guest

Dan jika Anda ingin menjalankan perintah di background tanpa mengeluarkan teks apa pun sama sekali (senyap total / silent mode):

perintah_saya &> /dev/null

6. Mengarahkan Input dengan <

Jika tanda panah ke kanan (>) mengalirkan teks keluar, maka tanda panah ke kiri (<) mengalirkan teks masuk dari berkas ke dalam suatu perintah sebagai stdin.

Misalnya, kita ingin menghitung jumlah baris dalam berkas menggunakan perintah wc -l:

wc -l < daftar.txt

Output:

42

Perbedaan menarik: jika Anda mengetik wc -l daftar.txt, outputnya adalah 42 daftar.txt (menyebutkan nama file). Tetapi jika menggunakan < daftar.txt, perintah wc hanya menerima aliran data murni tanpa tahu nama filenya, sehingga outputnya hanya mencetak angka 42.


πŸ”„ Skenario Nyata: Script Pemeliharaan Server

Mari kita gabungkan semua teknik ini dalam skenario nyata seorang admin server yang ingin mencatat status berkas ke log harian:

# 1. Catat header waktu eksekusi ke laporan utama
echo "=== AUDIT SERVER TANGGAL $(date +%F) ===" >> audit_server.log

# 2. Jalankan pengecekan direktori penting:
# Hasil sukses dicatat ke audit_server.log
# Pesan kegagalan/error dicatat ke audit_error.log
ls -la /var/log /etc/nginx /root >> audit_server.log 2>> audit_error.log

# 3. Cek apakah ada insiden error hari ini
cat audit_error.log

Dengan teknik pemisahan aliran ini, sistem monitoring server Anda menjadi sangat terorganisir dan tidak pernah kehilangan jejak kesalahan.


⚠️ Kesalahan Umum Pemula

KesalahanAkibat FatalSolusi
Salah pakai > alih-alih >>Seluruh log atau catatan riwayat lama terhapus dan tertimpaSelalu periksa ulang sebelum menekan Enter. Gunakan >> untuk menambah data riwayat.
Menulis spasi di 2 > error.logBash mengira angka 2 adalah argumen perintah, bukan pengarah streamTulis angka menempel pada tanda panah: 2>, bukan 2 >.
Bingung membedakan < dan >Data terhapus atau perintah error karena arah data terbalikSelalu bayangkan panah menunjuk ke tempat tujuan aliran data.

πŸ’‘ Pro Tip: Mengosongkan File Besar Seketika

Jika sebuah file log server membengkak hingga puluhan Gigabyte dan Anda ingin mengosongkannya sampai menjadi 0 byte tanpa menghapus file fisiknya:

# Cara tercepat mengosongkan file log
> access.log

Hanya dengan mengetik > diikuti nama file, bash akan langsung memotong ukuran file menjadi kosong seketika!


πŸ“ Cheatsheet Episode 6

SintaksAliran yang DiarahkanEfek pada Berkas
command > filestdout (1)Tulis baru / Menimpa (overwrite)
command >> filestdout (1)Menyambung di baris bawah (append)
command 2> filestderr (2)Menangkap pesan error ke file
command 2>> filestderr (2)Menyambung pesan error ke baris bawah
command &> filestdout & stderrMenangkap semua output & error sekaligus
command 2> /dev/nullstderr (2)Membuang semua error (membungkam error)
command < filestdin (0)Membaca isi file sebagai input perintah

πŸ”œ Preview Episode 7

Di episode ini, kita sudah mahir mengalirkan teks antara perintah dan berkas.

Namun, bagaimana jika kita ingin mengalirkan hasil output dari suatu perintah LANGSUNG menjadi input bagi perintah lainnya, tanpa perlu repot menyimpan file sementara di harddisk?

Itulah keajaiban terbesar filosofi Unix yang disebut Linux Pipe (|). Di Episode 7, kita akan belajar menghubungkan perintah-perintah kecil menjadi satu rangkaian senjata pemrosesan data yang luar biasa dahsyat!

Sampai jumpa di Episode 7! 🐧

Related Posts

Panduan Lengkap Azure Linux: Pengenalan dan Instalasi di VirtualBox

  • 16 Aug, 2026

Pernahkah Anda membayangkan hari di mana raksasa pembuat Windows, Microsoft, akhirnya merilis sistem operasi Linux mereka sendiri? Jika dulu terdengar seperti lelucon, hari ini hal tersebut adalah ken...

Panduan Lengkap Azure Linux: Pengenalan dan Instalasi di VirtualBoxRead More

Linux Command #01: Berkenalan dengan Terminal Linux

  • 15 Sep, 2026

Sebelum kita mulai mengetik perintah-perintah keren di Linux, ada satu hal yang harus kita pahami dulu: kita akan bekerja di dalam sebuah "ruangan" yang bernama Terminal. Kalau Anda terbiasa dengan Wi...

Linux Command #01: Berkenalan dengan Terminal LinuxRead More

Linux Command #02: Memahami Struktur Filesystem Linux

  • 16 Sep, 2026

Di episode sebelumnya, kita sudah menjalankan perintah pwd dan mendapat hasil seperti /home/fajar. Tapi pernahkah Anda bertanya: kenapa bentuknya seperti itu? Apa arti garis miring-garis miring itu? J...

Linux Command #02: Memahami Struktur Filesystem LinuxRead More