Cara Menggunakan Operator Redirect pada Bash

Operator redirect merupakan salah satu konsep penting dalam pemrograman Bash, salah satu kegunaan operator redirect ini adalah untuk mengirim hasil output dari suatu perintah ke dalam sebuah file.

Operator >

Salah satu penggunaan redirect adalah untuk mengirim hasil keluaran (output) ke suatu file.

Misalnya, kalian dapat mengirim hasil output dari perintah ls ke dalam file bernama list.txt seperti pada perintah berikut:

$ ls > list.txt

Kemudian tampilkan isi file list.txt dengan perintah cat.

$ cat list.txt

Operator > berfungsi untuk mengirim standard output dari perintah yang di jalankan ke sebuah file, operator > dapat ditulis juga sebagai 1> seperti pada contoh berikut:

$ ls 1> list.txt

Untuk mengirim standard error dari perintah yang dijalankan, kalian dapat menggunakan operator 2> seperti pada contoh berikut ini:

$ ls $RANDOM 2> list.txt

Dan yang terakhir, untuk mengirim standard output dan standard error ke dalam satu file, kalian dapat menggunakan perintah di bawah ini:

$ ls $PWD $RANDOM > list.txt 2>&1

Atau bisa dengan versi lebih pendek.

$ ls $PWD $RANDOM &> list.txt

Operator >>

Perbedaan operator > dan >>, untuk yang operator > jika file output sudah ada, maka file tersebut akan ditimpa dengan hasil output baru.

Sedangkan, untuk operator >>, jika file output sudah ada, maka file tersebut tidak akan ditimpa dengan hasil output baru, tetapi hasil output baru tersebut akan ditambahkan di akhiran file tersebut.

Bisa kalian coba dengan menjalankan perintah berikut ini untuk mengetahui perbedaannya.

Contoh dengan operator ”>“:

$ echo Hello > hello.txt
$ echo World > hello.txt
$ cat hello.txt
World

Contoh dengan operator ”>>“:

$ echo Hello >> hello.txt
$ echo World >> hello.txt
$ cat hello.txt
Hello
World

Kalian juga dapat mengirim standard error ke dalam file.

$ ls $RANDOM 2>> list.txt
$ ls $RANDOM 2>> list.txt

Operator <

Kita dapat menggunakan operator ”<” untuk mengirim isi suatu file ke standard input suatu perintah.

Misalnya, contoh perintah berikut untuk meng-encode isi konten dari text hello.txt menjadi berbentuk base64.

$ base64 < hello.txt
SGVsbG8gd29ybGQK

Perintah di atas sama dengan perintah di bawah, bedanya perintah di bawah ini menggunakan operator | untuk mengirim hasil standard output dari perintah cat ke standard input perintah base64:

$ cat hello.txt | base64
SGVsbG8gd29ybGQK

Operator <<

Dengan operator << dan <<< bisa mengirim sesuatu ke stdin tanpa perlu membuat file terlebih dahulu.

Misalnya, kalian dapat menggunakan operator untuk mengirim beberapa baris teks ke stdin seperti pada contoh di bawah ini:

$ sed 's/o/0/g' <<EOL
Hello world
Halo donya
EOL

Fungsi perintah sed di atas untuk mengganti semua huruf o menjadi 0.

Jangan lupa untuk menambahkan EOL di awal baris dan akhir baris teks jika hendak menggunakan operator <<.

Operator <<<

Operator <<< digunakan untuk mengirim teks yang terdiri atas satu baris ke perintah tertentu.

Misalnya.

$ sed 's/o/0/g' <<< "Hello World"

Operator <<< ini sangat berguna ketika kita hendak mengirim isi dari sebuah variabel ke perintah lain melalui standard input.

Misalnya, biasanya untuk mengirim ke stdin perintah lain, kita dapat menggunakan kombinasi perintah echo dan operator pipe (|).

$ hello="Hello World"
$ echo "$hello" | base64

Kita dapat memperoleh hasil yang sama dengan operator <<< seperti pada contoh berikut ini:

$ hello="Hello World"
$ base64 <<< "$hello"

> /dev/null

Kalian dapat mengabaikan semua hasil output agar tidak ditampilkan pada layar terminal dengan mengirimnya ke /dev/null.

Misalnya, perintah berikut untuk mengabaikan standard error saja.

$ ls $PWD $RANDOM 2> /dev/null

Jika ingin mengabaikan standard output dan standard error sekaligus, gunakan perintah di bawah ini.

$ ls $PWD $RANDOM &> /dev/null