Jika saya menjalankan, ls
saya mendapatkan keluaran berwarna yang menurut saya cukup mudah untuk dengan cepat melihat jenis file tersebut. Ketika saya mencoba untuk pipa less
bahkan dengan bendera -r
dan -R
warna selalu hilang. Saya menggunakan zsh
versi 5.0.7. Ada ide? Terima kasih.
sunting: Saya menggunakan OS X.
ls
sedang dipanggil--color
? Coba menangguhkan pipa (^Z
) atau menggunakanps
dari terminal lain. Output apa yangwhich ls
dihasilkan?less -r
sehingga bukan masalah denganless
tetapi denganls
ls
hasilnya tergantung pada stdout). Yang saya ingat adalah unix.stackexchange.com/questions/157285/... yang itu sendiri ditandai sebagai duplikat unix.stackexchange.com/questions/10421/…ls --color=auto
berarti menggunakan warna hanya ketika menulis ke terminal (yaitu, ketika output standar adalah terminal), dan bukan ketika itu file atau pipa.Jawaban:
Ini sesuai rancangan: program yang menghasilkan keluaran berwarna biasanya hanya melakukannya ketika keluarannya masuk ke terminal, bukan ketika dikirim ke pipa atau ke file biasa. Alasannya adalah bahwa data yang dikirim pada terminal mungkin dibaca oleh manusia, sedangkan data yang disalurkan ke program atau ditulis ke file kemungkinan akan diuraikan oleh beberapa program, sehingga tidak boleh mengandung konten asing seperti urutan pelepasan yang berubah warna. .
GNU
ls
menampilkan keluaran berwarna pada terminal saat Anda melewati opsi--color
(atau--color=auto
). Untuk memaksakan keluaran berwarna terlepas dari jenis file keluaran standar, lewati--color=always
atau--color=yes
(mereka sinonim). Konvensi ini telah diikuti oleh perintah lain, seperti GNU grep, FreeBSD grepgit diff
,, dll.Dengan versi FreeBSD
ls
(juga ditemukan di OSX, dan tersedia sebagaicolorls
port pada OpenBSD dan NetBSD), berikan opsi-G
untuk menampilkan warna ketika output adalah terminal. Atur lingkunganCLICOLOR_FORCE
untuk menampilkan warna terlepas dari jenis file output.sumber
Masalah yang paling mungkin adalah bahwa
ls
program Anda telah menetapkan opsi--color=auto
yang pada dasarnya berarti bahwa output harus diwarnai hanya jika terhubung ke terminal, jika tidak (output terhubung ke pipa atau file) tidak ada warna yang dipancarkan.Jika Anda ingin memiliki warna, Anda harus mengatur
--color
opsialways
, jadi cobalahJika perilaku ini seperti yang Anda harapkan sepanjang waktu, buat saja alias:
sumber
ls
tidak berasalbash
, ini adalah program mandiri. Jalankanls --version
untuk memeriksa versinya. Milik saya adalah GNU coreutils) 8.21 .ls
versi saya tidak memiliki--version
bendera. Saya menggunakan yang standar dari OS X, tidak yakin apakah itu membantu.Saya tidak dapat mengomentari jawaban @jimmij, karena saya memiliki kurang dari 50 perwakilan, tetapi saya ingin menjelaskan apa yang berhasil untuk saya di Bash.
Jika Anda berlari
Anda akan melihat semua entri-
man
halaman untuk lingkungan shell spesifik Anda (dalam kasus kamibash
).Bagi saya penyesuaian berikut berguna:
sumber
-G
bendera tidak ada hubungannya dengan bagaimanals
mengelola keluaran berwarna. Itu hanya menghapus grup dari outputls -l
. Itu mempengaruhi output warna dalam BSD ls (yang digunakan pada OSX juga), apakah itu yang Anda maksud? Bagaimanapun, saya tidak berpikir itu akan menunjukkan warna ketika diarahkan ke file, itu hanya akan menunjukkan warna pada baris perintah.