Saya bermain-main dengan pengaturan GREP_OPTIONS
dan tidak bisa membuatnya bekerja. Hanya ingin tahu mengapa.
Output perintah uji sederhana:
richard@ubuntu:~$ echo $GREP_OPTIONS
richard@ubuntu:~$
richard@ubuntu:~$ ls | grep o
Desktop
downloads
Dropbox
ebooks
workspace
richard@ubuntu:~$ ls | grep o --color=always | less -R
richard@ubuntu:~$ export GREP_OPTIONS="--color=always"
richard@ubuntu:~$ ls | grep o | less -R
- Grep pertama menghasilkan terminal berwarna (masing-masing 'o' berwarna merah)
- Grep ke-2 menghasilkan warna yang lebih sedikit (sama dengan 1)
- Tetapi output grep ke-3 menjadi lebih sedikit tetapi dalam warna hitam & putih - tetapi ini harus berwarna.
Jadi tampaknya grep mengabaikan GREP_OPTIONS
. Apakah itu bug atau saya melakukan sesuatu yang salah?
(Ubuntu 12.04.2, GNU grep 2.10)
grep v3.1
keras mengeluh tentangGREP_OPTIONS
setiap doa:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'
untuk menyoroti dalam warna kuning.Jawaban:
Jika
grep o
menghasilkan keluaran warna, makagrep
merupakan alias kegrep --color=auto
ataugrep --color=always
(atau mungkin lebih banyak opsi), atauGREP_OPTIONS
disetel ke nilai yang mengandung--color=auto
atau--color=always
. Karena$GREP_OPTIONS
kosong, itu pasti alias.Karena
grep o | less -R
tidak menunjukkan warna, alias harus kegrep --color=auto
(pilihan yang masuk akal). Dengan alias,grep
perintah selalu menerima--color
opsi di baris perintah, dan ini lebih diutamakan dari variabel lingkungan.Jika Anda ingin menggunakan variabel lingkungan, hapus definisi alias dari Anda
~/.bashrc
, atau untuk satu sesi sesiunalias grep
. Anda dapat menggantinyaalias grep='grep --color=auto'
denganexport GREP_OPTIONS='--color=auto'
: mereka pada dasarnya memiliki arti yang sama, kecuali bahwa:GREP_OPTIONS
ke nilai yang berbeda hanya menimpa yang terakhir;grep
dari shell interaktif, sedangkan pengaturanGREP_OPTIONS
juga berlaku ketikagrep
dijalankan dari skrip dan aplikasi lainnya.Jangan pernah menaruh
--color=always
atau kebanyakan opsi lain diGREP_OPTIONS
: itu akan merusak banyak program yang mengurai outputgrep
.--color=auto
adalah satu-satunya pilihan yang aman untuk dimasukkanGREP_OPTIONS
. Untuk hal lain, gunakan alias. Versi GNU grep yang akan datang akan menjatuhkan dukungan untuk opsi karena alasan ini.Perhatikan bahwa definisi alias masuk ke
~/.bashrc
(itu adalah pengaturan shell), sedangkan definisi variabel lingkungan masuk ke~/.profile
(itu adalah pengaturan sesi). Lihat Apakah ada file setara ".bashrc" yang dibaca oleh semua shell?Jika Anda ingin menjalankan perintah unaliased sekali saja, jalankan
\grep
alih-alihgrep
(mengutip bagian mana pun dari nama bypass alias pencarian).sumber
GREP_OPTIONS
sudah usang karenaalias
varian.