GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mengenalinya Jika Output Dari Perintah Atau Skrip Shell Adalah Stdout Atau Stderr?

Katakanlah saya menjalankan perintah atau skrip shell, dan itu memberi saya output. Tanpa mengetahui internal dari perintah atau skrip shell ini, bagaimana cara menentukan apakah outputnya berasal dari stderr atau stdout ?

Misalnya,

$ ls -ld /
drwxrwxr-t  35 root  admin  1258 Dec 11 19:16 /

vs

ls -ld /test
ls: /test: No such file or directory

Bagaimana cara memastikan bahwa perintah pertama dicetak ke stdout dan yang kedua ke stderr (berhasil?)?

Jawaban yang Diterima:

Tidak ada cara untuk mengetahui setelah output telah dicetak. Dalam hal ini, keduanya stdout dan stderr terhubung ke terminal, sehingga informasi tentang aliran mana yang ditulis sudah hilang pada saat teks muncul di terminal Anda; mereka digabungkan oleh program sebelum sampai ke terminal.

Apa yang dapat Anda lakukan, dalam kasus seperti di atas, adalah menjalankan perintah dengan stdout dan stderr diarahkan ke tempat yang berbeda dan melihat apa yang terjadi. Atau jalankan dua kali, sekali dengan stdout dialihkan ke /dev/null dan sekali dengan stderr dialihkan ke /dev/null , dan lihat kasus mana yang menghasilkan teks yang muncul.

Anda dapat mengalihkan stdout ke /dev/null dengan menempelkan >/dev/null di akhir baris perintah, dan Anda dapat mengarahkan stderr ke /dev/null dengan menambahkan 2>/dev/null .


Linux
  1. Bagaimana Cara Melewati Argumen Baris Perintah Menjadi Skrip Shell?

  2. Bagaimana Mengenalinya Versi Os X Saya Dari Baris Perintah?

  3. Bagaimana cara menyimpan perintah dalam variabel dalam skrip Shell?

  1. Cara Menetapkan Output dari Perintah Linux ke Variabel

  2. Bagaimana cara mengelola verbositas log di dalam skrip shell?

  3. Cara membersihkan output dari perintah 'skrip' linux

  1. Cara Menyimpan Output Perintah ke File di Linux

  2. Cara Membuat Script Perintah Linux

  3. Cara mencetak Stdout dari perintah dalam urutan terbalik di Linux Shell