Opsi warna default Grep

11

grep adalah salah satu perintah yang paling umum digunakan di linux. Rasanya bagi saya bahwa fitur dasarnya untuk menyorot string yang Anda cari pada baris output. ini bisa dicapai dengan opsi --color.

Mengetik --color setiap kali mengganggu dan juga tidak produktif. Apakah ada cara untuk mengubah grep untuk berperilaku sebagai grep --color.

Saya mencoba menulis skrip kecil dengan nama grepd dan menambahkan ini ke variabel PATH saya. Tetapi skrip tidak bekerja pada input grepd . Mohon saran.

#!/bin/bash
grep --color $1 $2
Srujan Kumar Gulla
sumber

Jawaban:

21

Cukup tambahkan alias berikut ke file konfigurasi shell Anda, mis. .bashrcAtau .bash_profile(tergantung yang Anda gunakan, lihat di sini ):

alias grep='grep --color=auto'

Anda cukup menggunakannya sebagai grep.

Biasanya tidak perlu membuat skrip ketika alias perintah sederhana melakukan hal yang sama dengan baik. Bahkan skrip Anda tidak akan berfungsi jika Anda ingin memberikan lebih banyak opsi grep. Jika Anda membutuhkan potongan kecil yang dapat menangani argumen, Anda harus menggunakan fungsi .

slhck
sumber
9
Atau ekivalen, tetapkan GREP_OPTIONSvariabel lingkungan:export GREP_OPTIONS='--color=always'
Jérôme
Ini tidak menambahkan opsi warna jika Anda menggunakan fgrep atau egrep, Anda perlu alias terpisah untuk itu. @ Jérôme: GREP_OPTIONS juga ditandai sebagai usang di halaman grep man.
Thayne
@Thayne hanya untuk GNU grep dan bukan yang lain seperti FreeBSD grep. Dan sejauh yang saya tahu, sudah 4 tahun sejak itu diubah dan masih didukung. Depresiasi bukan berarti dihilangkan.
cde
Inilah yang biasanya saya lakukan, tetapi dalam beberapa kasus tidak berfungsi dengan baik. Misalnya: some_command | xargs grep footidak akan diwarnai karena xargs tidak menggunakan alias.
TM.
2
#!/bin/sh
exec grep --color "$@"

Ini menggambarkan cara standar "membungkus" suatu perintah dengan skrip shell, ketika perintah tersebut tidak bekerja dengan cara yang Anda sukai.

The execMenghindari menciptakan proses tambahan (satu untuk script dan satu untuk grep). Anda bisa meninggalkannya jika Anda mau.

The "$@"digantikan oleh semua argumen script ini, tidak peduli berapa banyak ada. Itu benar mempertahankan argumen dengan spasi dan karakter lain yang khusus untuk shell.

Kenster
sumber
"Exec grep" harus "exec / bin / grep"
Berend de Boer
2
@BerenddeBoer Tidak juga. "exec grep" akan bekerja dengan baik. Tidak ada yang salah dengan mencari jalan untuk grep.
Kenster
-1

coba export GREP_COLORS='AUTO'masukkan ~ / .bashrc Anda - bagi saya itu berhasil.

dari man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.
mroz
sumber
5
GREP_COLORSadalah mengatur warna yang sebenarnya. Pengaturan untuk AUTOtidak menampilkan warna. export GREP_OPTIONS = '- color = auto' harus menjadi jawabannya.
user137369