Ubah arah stdout dan stderr ke Fail

Redirect Stdout Stderr File



Apabila anda mengalihkan output perintah ke fail, anda akan melihat bahawa mesej ralat dicetak pada tetingkap terminal. Apa-apa arahan yang dijalankan dalam shell Linux, seperti bash, menggunakan tiga aliran I / O biasa. Penjelaskan fail berangka digunakan untuk mewakili setiap aliran.

  • Aliran input standard (stdin): 0
  • Aliran output standard (stdout): 1
  • Aliran ralat standard (stderr): 2

Dalam catatan ini, kami akan memahami maklumat yang terdapat di bawah pengalihan stdout dan stderr ke fail.







Keluaran standard (stdout):

Setiap sistem operasi berdasarkan Linux mempunyai keyakinan tentang tempat lalai untuk perintah yang dilaksanakan. Semua orang merujuk pengertian ini sebagai output biasa atau standard untuk menjadikannya lebih mudah. Shell Bash atau Zsh anda sentiasa mencari lokasi output lalai. Apabila shell mengesan output baru, ia memaparkannya di skrin terminal untuk anda melihatnya. Jika tidak, ia akan menghantar output ke lokasi lalai.



Kesalahan standard (stderr):

Kesalahan standard atau stderr serupa dengan input dan output standard, tetapi digunakan untuk menyimpan mesej ralat. Kesalahan standard dapat diarahkan ke baris perintah atau fail menggunakan terminal. Sekiranya anda ingin merakam atau menyimpan mesej dalam fail log yang berasingan atau menyembunyikan mesej ralat, mengarahkan stderr akan membantu anda. Sekarang mari menuju ke arah praktikal pengalihan stdout dan stderr.



Mengalihkan stdout dan stderr ke fail:

Sebagai pengalihan adalah kaedah menangkap output program dan mengirimkannya sebagai input ke perintah atau file lain. Aliran I / O dapat diarahkan dengan menggunakan operator n> yang digunakan, di mana n adalah nombor deskriptor fail. Untuk mengarahkan stdout, kami menggunakan 1> dan untuk stderr, 2> ditambahkan sebagai operator.





Kami telah membuat fail bernama sample.txt untuk menyimpan output yang diarahkan ke direktori semasa kami.



Fail (perintah>) dianggap sebagai pengendali pengalihan klasik yang hanya mengarahkan output standard dengan ralat standard yang ditunjukkan di terminal. Kami akan menunjukkan pilihan yang berbeza untuk mengalihkan stderr juga.

Mengalihkan stderr dan stdout untuk memisahkan fail:

Di bawah ini adalah sintaks arahan untuk mengarahkan stdout dan stderr untuk memisahkan fail.

arahan >keluar2>kesilapan

Perintah yang diberikan di bawah akan mengalihkan output ke fail keluar dan mesej ralat ke fail ralat.

$kucingcontoh.txt>keluar2>kesilapan

Mengarahkan stderr ke stdout:

Ini adalah amalan biasa untuk mengarahkan stderr dengan output standard program untuk menyimpan semuanya dalam satu fail. Berikut adalah sintaks arahan untuk mengarahkan stderr ke stdout:

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

$kucingsamplefile.txt

> keluar redirects mengarahkan stdout ke samplefile.txt, dan 2> & 1 akan mengarahkan stderr ke lokasi stdout semasa.

Sekiranya stderr diarahkan ke stdout terlebih dahulu, gunakan perintah yang diberikan di bawah untuk mengarahkan stdout ke fail.

arahan 2> &1 > fail$ls -kepada 2> &1 >samplefile.txt

$kucingsamplefile.txt

&> juga digunakan untuk fungsi yang sama yang berfungsi 2> & 1.

arahan &> fail$ls &>samplefile.txt

$kucingsamplefile.txt

Mengalihkan stdout dan stderr ke satu fail:

Semua cangkang tidak menyokong pengalihan bentuk ini, tetapi bash dan Zsh menyokongnya. Stdout dan stderr dapat dialihkan dengan menggunakan sintaks berikut.

arahan &>keluar$kucingcontoh.txt&>keluar

Pada bahagian artikel yang akan datang, kami akan melihat contoh yang terpisah untuk pengalihan stdout dan stderr.

Mengalihkan stdout ke fail:

Output standard ditunjukkan oleh 1 dalam senarai nombor deskriptor fail. Untuk arahan pengalihan tanpa nombor penjelasan fail, terminal menetapkan nilainya menjadi 1. Sintaks untuk mengarahkan stdout ke fail diberikan sebagai berikut:

arahan > fail

Kami menggunakan sample.file untuk menyimpan output standard arahan ls -al

$ls -kepada >contoh.txt

$kucingcontoh.txt

arahan 1> fail$ls 1>contoh.txt

$kucingcontoh.txt

Mengarahkan stderr ke fail:

Gunakan operator 2> untuk mengarahkan stderr ke fail.

arahan 2> fail $ls -kepada 2>contoh.txt

Kita boleh menggabungkan pelaksanaan untuk stderr dan stdout dalam satu arahan pengalihan.

arahan 2>ralat.txt1>output.txt

Dalam contoh yang diberikan di bawah, mesej ralat akan disimpan di error.txt, di mana output.txt akan mempunyai output standard perintah ls.

$ls 2>ralat.txt1>output.txt

$kucingoutput.txt

Kesimpulan:

Mempunyai konsep pengalihan dan deskriptor fail untuk aliran I / O sangat berharga semasa bekerja di terminal Linux. Dalam catatan ini, kami telah membincangkan aliran I / O biasa, termasuk stdout dan stderr. Bahagian pertama siaran ini membawa anda maklumat terperinci mengenai pengalihan, aliran I / O, dan penerangan fail berangka. Seterusnya, anda telah melihat contoh praktikal untuk pelbagai bentuk pengalihan stdout dan stderr.