Setiap proses di Linux dilengkapi dengan tiga file terbuka (biasanya disebut deskriptor file). File-file ini adalah file input, output, dan kesalahan standar. Secara default :
- Masukan Standar adalah keyboard, diabstraksikan sebagai file untuk memudahkan penulisan skrip shell.
- Keluaran Standar adalah jendela shell atau terminal tempat skrip dijalankan, diabstraksikan sebagai file untuk kembali membuat penulisan skrip &program lebih mudah
- Kesalahan standar sama dengan keluaran standar:jendela shell atau terminal tempat skrip dijalankan.
Deskriptor file hanyalah angka yang merujuk ke file yang terbuka. Secara default, deskriptor file 0 (nol) mengacu pada input standar &sering disingkat sebagai stdin . Deskriptor file 1 mengacu pada keluaran standar (stdout ) dan deskriptor file 2 mengacu pada kesalahan standar (stderr ). Angka-angka ini penting ketika Anda perlu mengakses file tertentu , terutama ketika Anda ingin mengarahkan file-file ini ke lokasi lain, Nomor deskriptor file naik dari nol.
Mengarahkan Output Standar
Sintaks untuk mengarahkan output perintah ke file.
# Command_options_and_arguments> output_file
Contoh :
[email protected]:~$ cat /proc/cpuinfo> command.txt
Kita dapat melihat data yang akan ditampilkan di layar dengan perintah lebih lanjut :
[email protected]:~$ more command.txt processor :0vendor_id :GenuineIntelcpu family :6model :37model name :Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHzstepping :6144 KB id fisik :0siblings :2core id :0cpu core :2apicid :0initial apicid :0fpu :yesfpu_exception :yescpuid levelOperator> memberitahu shell untuk mengarahkan output dari perintah ke file yang diberikan. Jika file tersebut ada , isi file lama akan dihapus dan diganti dengan output dari perintah.
Mengalihkan Input Perintah
Sintaks untuk mengarahkan ulang input perintah yang berasal dari file.
# Command_options_and_arguments
Gunakan operator
[email protected]:~$ wc -l <command.txt52Dalam contoh ini, masukan ke 'wc ' perintah berasal dari file bernama command.txt. Shell mengirimkan konten file command.txt sebagai input standar untuk perintah wc.
Catatan : Kami juga dapat menggabungkan kedua pengalihan dengan sintaks berikut:
# command_options_and_agruments
output_file. Mengarahkan Kesalahan Standar
Selain mengarahkan input dan output standar untuk skrip atau perintah, kami juga dapat mengarahkan kesalahan standar. Meskipun kesalahan standar secara default pergi ke tempat yang sama dengan keluaran standar – jendela shell atau terminal. Ada alasan bagus mengapa stdout dan stderr diperlakukan secara terpisah. Alasan utamanya adalah kita dapat mengarahkan output dari suatu perintah atau perintah ke file tetapi Anda tidak memiliki cara untuk mengetahui apakah terjadi kesalahan. Memisahkan stderr dari stdout memungkinkan pesan kesalahan muncul di layar Anda saat output masih masuk ke file.
Sintaks untuk mengarahkan ulang stderr dari perintah ke file.
# command_options_and_agruments 2> output_file.
2 di 2> mengacu pada deskriptor file 2, nomor deskriptor untuk stderr.
Contoh:
[email protected]:~$ lsash /usr/bin 2> commands-error.txt[email protected]:~$ cat commands-error.txtTidak ada perintah 'lsash' yang ditemukan, maksud Anda:Command 'sash' from paket 'sash' (universe)lsash:perintah tidak ditemukanMengalihkan Output Standar &Kesalahan Standar
Gunakan 2>&1 Sintaks untuk mengarahkan kesalahan standar ke lokasi yang sama dengan keluaran standar .
Contoh:1
[email protected]:~$ ls /usr/bin> command.txt 2>&1Perintah di atas memiliki tiga bagian.
- ls /usr/bin adalah perintah yang dijalankan
- > command.txt mengarahkan ulang output dari perintah ls
- 2>&1 mengirimkan output dari file descriptor 2, stderr , ke lokasi yang sama dengan file descriptor 1, stdout.
Contoh:2
[email protected]:~$ ls /usr2222/bin> command.txt 2>&1[email protected]:~$ more command.txtls:tidak dapat mengakses /usr2222/bin:Tidak ada file atau direktori seperti ituPerhatikan bahwa contoh di atas mengasumsikan bahwa sistem Anda tidak memiliki nama direktori “/usr2222/bin”
Mengalihkan stderr &stdout Sekaligus
[email protected]:~$ ls /usr2222/bin &> command.txt[email protected]:~$ more command.txtls:tidak dapat mengakses /usr2222/bin:Tidak ada file atau direktori seperti ituPada perintah di atas ls adalah perintah , /usr2222/bin adalah argumen untuk 'ls ' perintah dan '&> command.txt ' redirect stdout dan stderr ke file bernama command.txt.
Menambahkan ke File
Gunakan operator '>>' untuk mengarahkan output dari perintah , tetapi tambahkan ke file , jika ada. Sintaksnya diberikan di bawah ini :
# Perintah>> file_to_append.
Contoh:
[email protected]:~$ uptime>> sysload.txt[email protected]:~$ uptime>> sysload.txt[email protected]:~$ uptime>> sysload.txt[email protected]:~$ more sysload.txt11:49:17 naik 1:22, 3 pengguna, memuat rata-rata:0,28, 0,12, 0,1111:49:28 naik 1:22, 3 pengguna, memuat rata-rata:0,40, 0,15, 0,1211:49:36 naik 1:23, 3 pengguna, memuat rata-rata:0,33, 0,14, 0,12Memotong File :
Kita dapat menggunakan sintaks singkatan untuk memotong file dengan menghilangkan perintah sebelum> operator . Sintaks diberikan di bawah ini :
#> nama_file
Kami juga dapat menggunakan format alternatif dengan titik dua :
# :> nama_file
Kedua perintah tanpa perintah ini akan membuat file jika tidak ada dan memotong file menjadi nol byte jika file ada.
[dilindungi email]:~$ ls /usr/bin> command.txt[dilindungi email]:~$ ls -l command.txt-rw-rw-r-- 1 linuxtechi linuxtechi 19713 Des 2 12:18 perintah .txt[email protected]:~$> command.txt[email protected]:~$ ls -l command.txt-rw-rw-r-- 1 linuxtechi linuxtechi 0 Des 2 12:18 command.txtMengirim Keluaran ke Mana Saja dengan Cepat
Ada beberapa skenario di mana Anda tidak hanya ingin mengarahkan output dari command , Anda juga ingin membuang outputnya. Anda dapat melakukannya dengan mengarahkan output perintah ke file null “/dev/null” File null menggunakan semua output yang dikirim ke sana , seolah-olah /dev/null adalah bintang lubang hitam.
[email protected]:~$ ls /usr/bin> /dev/nullCatatan :File /dev/null sering disebut bit bucket.
Bacaan yang Disarankan :Cara Menggunakan Kata Sandi Terenkripsi di Linux Bash Shell Script
25 Pertanyaan dan Jawaban Wawancara Linux Shell Scripting Cara Menggunakan if else Conditionals Statement di Bash ScriptLinux