GNU/Linux >> Belajar Linux >  >> Linux

Ke mana Kode Ansi Escape Pergi Saat Saya Memindahkan Ke Proses Lain? Bisakah Saya Menjaga Mereka?

Saya kadang-kadang ingin menyalurkan keluaran berkode warna dari suatu proses, mis. grep… tetapi ketika saya menyalurkannya ke proses lain, mis. sed, kode warna hilang…

Apakah ada cara untuk menjaga agar kode ini tetap utuh?

Berikut adalah contoh yang kehilangan output berwarna:

echo barney | grep barney | sed -n 1,$\ p   

Jawaban yang Diterima:

Banyak program yang menghasilkan keluaran berwarna mendeteksi jika mereka menulis ke TTY, dan mematikan warna jika tidak. Ini karena kode warna mengganggu saat Anda hanya ingin menangkap teks, jadi kode tersebut mencoba "melakukan hal yang benar" secara otomatis.

Cara paling sederhana untuk menangkap keluaran warna dari program seperti itu adalah dengan memerintahkannya untuk menulis warna meskipun tidak terhubung ke TTY. Anda harus membaca dokumentasi program untuk mengetahui apakah ia memiliki opsi itu. (mis., grep memiliki --color=always pilihan.)

Anda juga dapat menggunakan expect skrip unbuffer untuk membuat pseudo-tty seperti ini:

echo barney | unbuffer grep barney | sed -n 1,$\ p

Linux
  1. Apa Artinya Dalam Keluaran Dari Ps?

  2. Ke Mana File Pergi Saat Perintah Rm Dikeluarkan?

  3. Mengapa Saya Dapat Melihat Output Dari Proses Latar Belakang?

  1. Bisakah ID utas dari proses multithreaded sama dengan ID proses dari proses lain yang sedang berjalan?

  2. Bagaimana saya bisa mengetahui jalur absolut dari proses yang sedang berjalan?

  3. Terminal yang mendukung kode pelarian miring ANSI?

  1. Apa yang harus dilakukan ketika Ctrl + C tidak dapat menghentikan proses?

  2. Bagaimana cara mengurai output dari perintah find ketika nama file memiliki spasi di dalamnya?

  3. Apa arti pipa linux | melakukan?