GNU/Linux >> Belajar Linux >  >> Linux

Bekerja dengan Input Output dan Error Redirection di Linux

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 level      

Operator> 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.txt52

Dalam 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 ditemukan

Mengalihkan 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>&1

Perintah 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 itu

Perhatikan 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 itu

Pada 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,12

Memotong 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.txt

Mengirim 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/null

Catatan :File /dev/null sering disebut bit bucket.

Bacaan yang Disarankan :Cara Menggunakan Kata Sandi Terenkripsi di Linux Bash Shell Script


Linux
  1. Temukan file dan direktori di Linux dengan perintah find

  2. Salin dan tempel di baris perintah Linux dengan xclip

  3. Cara menangkap sesi terminal dan output dengan perintah skrip Linux

  1. Baca dan tulis data dari mana saja dengan pengalihan di terminal Linux

  2. Cara Menyimpan Output Perintah ke File di Linux

  3. Bagaimana cara menafsirkan dan memperbaiki kesalahan Input/output di Linux?

  1. Urutkan Perintah di Linux dengan Contoh

  2. Pengalihan Input/Output di Linux/Unix

  3. Pipes dan Redirection di Linux - Dijelaskan!