Redirect stdout dan stderr ke File

Redirect Stdout Stderr File



Saat Anda mengarahkan output perintah apa pun ke file, Anda akan melihat bahwa pesan kesalahan dicetak di jendela terminal. Perintah apa pun yang dijalankan di shell Linux apa pun, seperti bash, menggunakan tiga aliran I/O reguler. Deskriptor file numerik digunakan untuk mewakili setiap aliran.

  • Aliran input standar (stdin): 0
  • Aliran keluaran standar (stdout): 1
  • Aliran kesalahan standar (stderr): 2

Dalam posting ini, kami akan memahami informasi yang ada di bawah mengarahkan stdout dan stderr ke file.







Keluaran standar (stdout):

Setiap sistem operasi berbasis Linux memiliki keyakinan tempat default untuk perintah yang dieksekusi. Semua orang menyebut gagasan ini sebagai stdout atau keluaran standar untuk membuatnya terdengar lebih mudah. Shell Bash atau Zsh Anda terus-menerus mencari lokasi keluaran default. Ketika shell mendeteksi output baru, shell akan menampilkannya di layar terminal agar Anda dapat melihatnya. Jika tidak, itu akan mengirim output ke lokasi default.



Kesalahan standar (stderr):

Kesalahan standar atau stderr mirip dengan input dan output standar, tetapi digunakan untuk menyimpan pesan kesalahan. Kesalahan standar dapat diarahkan ke baris perintah atau file menggunakan terminal. Jika Anda ingin merekam atau menyimpan pesan dalam file log terpisah atau menyembunyikan pesan kesalahan, mengarahkan ulang stderr akan membantu Anda. Sekarang mari kita menuju sisi praktis dari stdout dan stderr redirection.



Mengarahkan stdout dan stderr ke file:

Sebagai redirection adalah metode menangkap output program dan mengirimkannya sebagai input ke perintah atau file lain. Aliran I/O dapat dialihkan dengan menggunakan operator n>, di mana n adalah nomor deskriptor file. Untuk mengarahkan ulang stdout, kami menggunakan 1> dan untuk stderr, 2> ditambahkan sebagai operator.





Kami telah membuat file bernama sample.txt untuk menyimpan output yang dialihkan di direktori kami saat ini.



(perintah > file) dianggap sebagai operator pengalihan klasik yang hanya mengarahkan ulang keluaran standar dengan kesalahan standar yang ditunjukkan di terminal. Kami akan mendemonstrasikan opsi berbeda untuk mengarahkan ulang stderr juga.

Mengarahkan stderr dan stdout ke file terpisah:

Di bawah ini adalah sintaks perintah untuk mengarahkan stdout dan stderr ke file terpisah.

memerintah >keluar2>kesalahan

Perintah yang diberikan di bawah ini akan mengarahkan output ke file keluar dan pesan kesalahan ke file kesalahan.

$kucingcontoh.txt>keluar2>kesalahan

Mengarahkan stderr ke stdout:

Ini adalah praktik umum untuk mengarahkan ulang stderr dengan output standar suatu program untuk menyimpan semuanya dalam satu file. Berikut adalah sintaks perintah untuk mengarahkan stderr ke stdout:

memerintah >keluar2> &1$ls >samplefile.txt2> &1

$kucingsamplefile.txt

> pengalihan keluar mengarahkan stdout ke samplefile.txt, dan 2>&1 akan mengarahkan ulang stderr ke lokasi stdout saat ini.

Jika stderr diarahkan ke stdout terlebih dahulu, gunakan perintah yang diberikan di bawah ini untuk mengarahkan ulang stdout ke file.

memerintah 2> &1 > mengajukan$ls -kepada 2> &1 >samplefile.txt

$kucingsamplefile.txt

&> juga digunakan untuk fungsi yang sama yang dilakukan oleh2>&1.

memerintah &> mengajukan$ls &>samplefile.txt

$kucingsamplefile.txt

Mengarahkan stdout dan stderr ke satu file:

Semua shell tidak mendukung pengalihan formulir ini, tetapi bash dan Zsh mendukungnya. Stdout dan stderr dapat diarahkan dengan menggunakan sintaks berikut.

memerintah &>keluar$kucingcontoh.txt&>keluar

Di bagian artikel yang akan datang, kita akan melihat contoh terpisah untuk pengalihan stdout dan stderr.

Mengarahkan stdout ke file:

Output standar diwakili oleh 1 dalam daftar nomor deskriptor file. Untuk perintah redirect tanpa nomor deskriptor file, terminal menetapkan nilainya ke 1. Sintaks untuk mengarahkan stdout ke file diberikan sebagai berikut:

memerintah > mengajukan

Kami menggunakan sample.file untuk menyimpan output standar dari perintah ls -al

$ls -kepada >contoh.txt

$kucingcontoh.txt

memerintah 1> mengajukan$ls 1>contoh.txt

$kucingcontoh.txt

Mengarahkan stderr ke file:

Gunakan operator 2> untuk mengarahkan stderr ke file.

memerintah 2> mengajukan $ls -kepada 2>contoh.txt

Kita dapat menggabungkan eksekusi untuk stderr dan stdout dalam satu perintah pengalihan.

memerintah 2>error.txt1>keluaran.txt

Dalam contoh yang diberikan di bawah ini, pesan kesalahan akan disimpan di error.txt, di mana output.txt akan memiliki output standar dari perintah ls.

$ls 2>error.txt1>keluaran.txt

$kucingkeluaran.txt

Kesimpulan:

Memiliki konsep pengalihan dan deskriptor file untuk aliran I/O sangat berharga saat bekerja di terminal Linux. Dalam posting ini, kita telah berbicara tentang aliran I/O reguler, termasuk stdout dan stderr. Bagian pertama dari posting ini memberi Anda informasi terperinci tentang pengalihan, aliran I/O, dan deskriptor file numerik. Selanjutnya, Anda telah melihat contoh praktis untuk berbagai bentuk pengalihan stdout dan stderr.