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