Terminal Jumaat: Aliran Standard

Selamat datang ke hari Jumaat yang lain ...

Sudah tiba masanya untuk mengetahui sebahagian kecil terminal. Setelah banyak berfikir, saya memutuskan untuk membuat catatan mengenai aliran standard; Walaupun akan dangkal, saya rasa ia adalah sesuatu yang mesti diketahui oleh semua orang.

Aliran Piawai

Aliran Piawai Ini terdiri dari beberapa saluran komunikasi antara pengguna dan terminal. "Saluran" Input / Output ini memaparkan atau menangkap maklumat ketika perintah dijalankan.

Gambarajah pantas pada aliran standard.

Gambarajah pantas pada aliran standard.

3 sambungan I / O adalah: stdin Input standard, stdout Keluaran standard, stderr Kesalahan biasa.

stdin: Input standard

Input standard adalah cara kita menangkap maklumat dari perintah, baik melalui paip, pengalihan, papan kekunci, dll. Kami mengenalinya dengan deskriptor fail 0.

Deskriptor adalah petunjuk untuk mengakses - dalam kes ini - saluran input dan output. Ini adalah nilai int, biasanya 0, 1, dan 2.

Contoh stdin ialah:

urutkan <penyenaraian

Ia mengambil semua maklumat yang ada dalam senarai - dalam hal ini nombor ditulis secara rawak - dan ketika mengarahkan fail ke perintah ls, ia menyusun senarai angka mengikut abjad. Dalam contoh ini bendera tersirat.

stdout: Keluaran standard

Output standard, seperti namanya, memaparkan output perintah melalui konsol. Sekiranya kita menulis ls, semua maklumat yang ditunjukkan pada skrin adalah output standard. Ia diwakili oleh deskriptor 1.

Sekarang saya akan cuba memberi contoh stdin dan stdout dengan skrip yang ditulis dalam bash, hanya kerana saya suka bash hahaha. 🙂

ujian.sh

#! / bin / bash jika [-t 0]; kemudian gema "Anda menggunakan stdout" elif [-t 1]; kemudian gema "Anda menggunakan stdin" lain gema "Kesalahan kejam" fi

Sekarang tangkapan skrin yang menunjukkan cara menggunakan skrip. Semasa mengarahkan atau menggunakan paip dengan penggunaan skrip ujian -t untuk mengetahui apakah hanya skrip stdout yang dijalankan, dan jika tidak, itu jelas stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Skrip yang dimaksudkan dan outputnya ...

Skrip yang dimaksudkan dan outputnya ...

Ingatlah untuk mengubah perintah dan berlatih supaya anda belajar.

stderr: Kesalahan standard

Ralat Piawai adalah cara program memaparkan kesalahan atau diagnostik. Ia diwakili oleh deskriptor 2.

Untuk memahami konsep, ini adalah situasi: ketika kita ingin menyimpan ralat perintah, perkara pertama yang kita fikirkan adalah mengalihkan output ke teks biasa.

ls> info.txt

Ini akan berfungsi, maklumat perintah akan disimpan dalam fail teks biasa. Tetapi semasa menyimpan ralat, ia tidak menyimpannya, tetapi menunjukkannya di skrin dan fail teks biasa kosong.

Sebaliknya jika kita menggunakan 2> untuk menunjukkan untuk menyimpan stderr dalam fail:

ls foo 2> info.txt

Sekarang ia akan menyimpan maklumat kesalahan dalam fail teks.

Kebanyakannya Shell izinkan stderr dan stdout disimpan dalam satu arahan arahan dengan &> di mana Foo adalah direktori yang tidak ada

ls Muat turun Foo &> info.txt

Fail ini akan mengandungi maklumat kesalahan semasa menjalankan ls di Foo dan akan menyenaraikan direktori di bawah Muat turun.

Dan akhirnya, apa yang terkenal 2> & 1?

Mudah, ubah arah stderr ke stdout. Itu & di tengah> dan 1 bermaksud ia akan dialihkan ke stdout. Sekiranya tidak ada, itu seperti ... "halakan kesalahan ke fail 1".

Dan dengan ini adalah mungkin untuk mengarahkan:

  • masuk ke fail
  • stderr ke fail
  • stdout ke stderr
  • stderr hingga stdout
  • stderr dan stdout ke fail
  • antara lain

Itu untuk orang hari ini. Kami membaca dan terima kasih kerana berhenti. 😀


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   eliotime3000 kata

    Menarik. Terima kasih kepada tutorial anda, saya lebih suka Bash.

  2.   Magoo Quincy kata

    Sayang, menarik, namun anda mempunyai kesilapan dalam baris berikut:

    "Dan ketika mengarahkan file ke perintah ls", seharusnya "dan ketika mengarahkan fail ke perintah sort".

    Sesuatu ucapan.

  3.   Miguel kata

    Terdapat ralat pada awal teks, apabila anda menunjukkan perintah "ls", ia harus "sort":
    "Ambil semua maklumat yang ada dalam senarai - dalam hal ini angka ditulis secara rawak - dan ubah fail ke arahan ls (di sini akan disusun)"

    Salam dan terima kasih kerana berkongsi karya anda

  4.   pengembara kata

    Ini bagus untuk cron, di mana anda mahu outputnya dibuang (/ dev / null) tetapi kesalahan disimpan dalam fail. Apabila saya melakukan ini, saya biasanya menggunakan arahan tarikh untuk menentukan dengan tepat kapan mereka gagal.

    Bash (sh) mempunyai alat ini sehingga dikembangkan oleh falsafah Unix "lakukan satu perkara, dan lakukan dengan baik"

  5.   Lolo kata

    Saya tidak menemui apa-apa

    1.    Suara kata

      Haha baik dijelaskan dengan baik, apa yang anda belum faham?