Terminal Jumat: Aliran Standar

Selamat datang di hari Jumat lainnya ...

Saatnya untuk mengenal bagian kecil dari terminal. Setelah berpikir panjang, saya memutuskan untuk membuat postingan tentang aliran standar; Meskipun akan dangkal, saya pikir itu adalah sesuatu yang harus diketahui semua orang.

Aliran Standar

Aliran Standar Itu terdiri dari beberapa saluran komunikasi antara pengguna dan terminal. "Saluran" Input / Output ini menampilkan atau menangkap informasi ketika perintah dijalankan.

Diagram cepat pada aliran standar.

Diagram cepat pada aliran standar.

3 koneksi I / O adalah: stdin Input standar, stdout Keluaran standar, stderr Kesalahan standar.

stdin: Masukan standar

Input standar adalah cara kami menangkap informasi dari sebuah perintah, baik melalui pipa, pengalihan, keyboard, dll. Kami mengidentifikasinya dengan deskriptor file 0.

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

Contoh stdin adalah:

urutkan <daftar

Ini mengambil semua informasi yang ada dalam daftar -dalam hal ini nomor yang ditulis secara acak-, dan ketika mengarahkan file ke perintah ls, itu mengurutkan daftar numerik menurut abjad. Dalam contoh ini, bendera bersifat implisit.

stdout: Output standar

Output standar, seperti namanya, menampilkan output dari sebuah perintah melalui konsol. Jika kita menulis ls, semua informasi yang ditampilkan di layar adalah keluaran standar. Itu diwakili oleh deskriptor 1.

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

tes.sh

#! / bin / bash if [-t 0]; lalu echo "You're using stdout" elif [-t 1]; lalu echo "Anda menggunakan stdin" lain echo "Kesalahan brutal" fi

Sekarang tangkapan layar yang menunjukkan cara menggunakan skrip. Saat mengarahkan atau menggunakan pipa dengan penggunaan skrip tes -t untuk mengetahui apakah hanya skrip stdout yang dijalankan, dan jika tidak, jelas stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Skrip yang dimaksud dan keluarannya ...

Skrip yang dimaksud dan keluarannya ...

Ingatlah untuk mengubah perintah dan praktik agar Anda belajar.

stderr: Kesalahan standar

Kesalahan Standar adalah cara program menampilkan kesalahan atau diagnostik. Itu diwakili oleh deskriptor 2.

Untuk memahami konsep, inilah situasinya: ketika kita ingin menyimpan kesalahan perintah, hal pertama yang kita pikirkan adalah mengarahkan output ke teks biasa.

ls> info.txt

Ini akan berhasil, informasi perintah akan disimpan dalam file teks biasa. Tetapi ketika menyimpan kesalahan, itu tidak menyimpannya, tetapi menampilkannya di layar dan file teks biasa kosong.

Sebaliknya jika kita menggunakan 2> untuk menunjukkan untuk menyimpan stderr di file:

ls foo 2> info.txt

Sekarang ini akan menyimpan informasi kesalahan di file teks.

paling Kulit izinkan stderr dan stdout disimpan dalam satu perintah perintah dengan &> di mana Foo adalah direktori yang tidak ada

ls Download Foo &> info.txt

File ini akan berisi informasi kesalahan saat menjalankan ls di Foo dan akan mencantumkan direktori di bawah Download.

Dan akhirnya, apa yang terkenal itu 2> & 1?

Sederhana, alihkan stderr ke stdout. Itu & di tengah> dan 1 berarti itu akan dialihkan ke stdout. Jika tidak ada, itu akan menjadi sesuatu seperti ... "redirect error ke file 1".

Dan dengan ini dimungkinkan untuk mengalihkan:

  • stdout ke file
  • stderr ke file
  • stdout ke stderr
  • stderr ke stdout
  • stderr dan stdout ke file
  • antara lain

Sekian untuk hari ini. Kami membaca dan terima kasih sudah mampir. 😀


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   eliotime3000 dijo

    Menarik. Berkat tutorial Anda, saya lebih menyukai Bash.

  2.   Quincy magoo dijo

    Yang terhormat, menarik, namun Anda mengalami kesalahan di baris berikut:

    "Dan saat mengarahkan file ke perintah ls", itu harus "dan saat mengarahkan file ke perintah sortir".

    Sebuah ucapan.

  3.   Miguel dijo

    Ada kesalahan di awal teks, saat Anda menunjukkan perintah "ls", seharusnya "sort":
    «Dibutuhkan semua informasi yang ada dalam daftar -dalam hal ini angka-angka yang ditulis secara acak-, dan ketika mengarahkan file ke perintah ls (di sini akan diurutkan)»

    Salam dan terima kasih telah berbagi pekerjaan Anda

  4.   pengendara jalan dijo

    Ini bagus untuk cron, di mana Anda ingin keluarannya di-flush (/ dev / null) tetapi kesalahannya disimpan dalam file. Juga, ketika saya melakukan ini, saya biasanya menggunakan perintah tanggal untuk menentukan dengan tepat kapan mereka gagal.

    Bash (sh) memiliki alat ini yang dikembangkan oleh filosofi Unix "lakukan satu hal, dan lakukan dengan baik"

  5.   Lolo dijo

    Nah, saya belum menemukan apa-apa

    1.    Suara dijo

      Haha baiklah dijelaskan dengan cukup baik, apa yang belum Anda mengerti?