<Sebelumnya | Konten | Selanjutnya>
Mengarahkan Output Standar
Pengalihan I/O memungkinkan kita mendefinisikan ulang kemana perginya keluaran standar. Untuk mengarahkan output standar ke file lain selain layar, kami menggunakan operator pengalihan “>” diikuti dengan nama file. Mengapa kita ingin melakukan ini? Seringkali berguna untuk menyimpan keluaran perintah dalam sebuah file. Misalnya, kita dapat memberitahu shell untuk mengirimkan output dari ls perintah ke file ls-output.txt alih-alih layar:
[saya@linuxbox ~]$ ls -l /usr/bin > ls-output.txt
[saya@linuxbox ~]$ ls -l /usr/bin > ls-output.txt
Di sini, kami membuat daftar panjang / usr / bin direktori dan mengirimkan hasilnya ke file
ls-output.txt. Mari kita periksa keluaran perintah yang diarahkan:
[saya@linuxbox ~]$ ls -l ls-keluaran.txt
-rw-rw-r-- 1 saya saya 167878 2016-02-01 15:07 ls-output.txt
[saya@linuxbox ~]$ ls -l ls-keluaran.txt
-rw-rw-r-- 1 saya saya 167878 2016-02-01 15:07 ls-output.txt
Bagus; file teks yang bagus dan besar. Jika kita melihat file dengan kurang, kita akan melihat file itu
ls-output.txt memang berisi hasil dari perintah ls kita:
[saya@linuxbox ~]$ lebih sedikit ls-output.txt
[saya@linuxbox ~]$ lebih sedikit ls-output.txt
Sekarang, mari kita ulangi tes pengalihan kita, tapi kali ini dengan variasi. Kami akan mengubah nama direktori menjadi yang tidak ada:
[saya@linuxbox ~]$ ls -l /bin/usr > ls-output.txt
ls: tidak dapat mengakses /bin/usr: Tidak ada file atau direktori seperti itu
[saya@linuxbox ~]$ ls -l /bin/usr > ls-output.txt
ls: tidak dapat mengakses /bin/usr: Tidak ada file atau direktori seperti itu
Kami menerima pesan kesalahan. Hal ini masuk akal karena kita menentukan direktori yang tidak ada /bin/usr, tetapi mengapa pesan kesalahan ditampilkan di layar daripada dialihkan ke file ls-output.txt? Jawabannya adalah bahwa ls program tidak mengirimkan pesan kesalahannya ke keluaran standar. Sebaliknya, seperti kebanyakan program Unix yang ditulis dengan baik, ia mengirimkan pesan kesalahannya ke kesalahan standar. Karena kami hanya mengarahkan keluaran standar dan bukan kesalahan standar, pesan kesalahan masih terkirim ke layar. Kita akan lihat caranya
Mengarahkan Output Standar
untuk mengalihkan kesalahan standar hanya dalam satu menit, tapi pertama-tama, mari kita lihat apa yang terjadi pada file keluaran kita:
[saya@linuxbox ~]$ ls -l ls-keluaran.txt
-rw-rw-r-- 1 saya saya 0 2016-02-01 15:08 ls-output.txt
[saya@linuxbox ~]$ ls -l ls-keluaran.txt
-rw-rw-r-- 1 saya saya 0 2016-02-01 15:08 ls-output.txt
File tersebut sekarang memiliki panjang nol! Hal ini karena, ketika kita mengarahkan keluaran dengan operator pengalihan “>”, file tujuan selalu ditulis ulang dari awal. Sejak kita ls perintah tidak menghasilkan hasil dan hanya pesan kesalahan, operasi pengalihan mulai menulis ulang file dan kemudian berhenti karena kesalahan, mengakibatkan pemotongannya. Faktanya, jika kita perlu memotong file (atau membuat file baru yang kosong), kita dapat menggunakan trik seperti ini:
[saya@linuxbox ~]$ > ls-output.txt
[saya@linuxbox ~]$ > ls-output.txt
Cukup menggunakan operator pengalihan tanpa perintah sebelumnya akan memotong file yang sudah ada atau membuat file baru yang kosong.
Jadi, bagaimana kita bisa menambahkan output yang dialihkan ke file alih-alih menimpa file dari awal? Untuk itu, kami menggunakan operator pengalihan “>>”, seperti:
[saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt
[saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt
Menggunakan operator “>>” akan menghasilkan output yang ditambahkan ke file. Jika file belum ada, maka file tersebut dibuat seolah-olah operator “>” telah digunakan. Mari kita uji:
[saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [saya@linuxbox ~]$ ls -l ls-keluaran.txt
-rw-rw-r-- 1 saya saya 503634 2016-02-01 15:45 ls-output.txt
[saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [saya@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [saya@linuxbox ~]$ ls -l ls-keluaran.txt
-rw-rw-r-- 1 saya saya 503634 2016-02-01 15:45 ls-output.txt
Kami mengulangi perintah tersebut tiga kali sehingga menghasilkan file keluaran tiga kali lebih besar.