`buruh pelabuhan log foo | less` tidak dapat dicari atau digulir tetapi `buruh pelabuhan log foo 2> & 1 | less` adalah


10

Menggunakan salah satu memberikan teks yang dapat dibaca. Tetapi hanya dengan pengarahan stderr dapat satu gulir atau ketik / somepattern dan mendapatkan kecocokan.

Tanpa itu pencarian memberi "Tidak ada untuk mencari (tekan RETURN)" dan kolom ~ 's.

Mengingat, stderr dan stdout tidak sama tetapi mengapa kurang menunjukkannya sampai saya mulai melakukan sesuatu dalam waktu kurang?

Ini mungkin beberapa hal aneh multi-jendela vim yang saya tidak mengerti. Pikiran?

Jawaban:


7
+--------------------+        +------+       +----------+
|             stdout |·······→| less |——————→|          |
| somecommand        |        +------+       | terminal |
|             stderr |——————————————————————→|          |
+--------------------+                       +----------+

Jika somecommandmencetak teks ke kesalahan standar saja, maka ketika Anda menjalankan somecommand | less, somecommanddan lesskeduanya ditampilkan ke terminal. Output dari perintah pada stderrnya tidak akan less, itu akan langsung ke terminal, karena tidak diarahkan. Pertama-tama output dari somecommandgulungan dengan kurang menginisialisasi dan menunjukkan baris promptnya; maka ketika somecommandselesai pemberitahuan kurang bahwa inputnya selesai (karena pipa ditutup). Anda mungkin ingin bereksperimen sedikit: jalankan

{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }

dan variasi waktu tidur untuk somecommandmenghasilkan keluaran sebelum atau sesudah kurang siap dan untuk melihat apa yang terjadi ketika pipa ditutup.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.