it-swarm.asia

الحصول على نتائج ملونة عند استخدام أنبوب من grep إلى أقل

أستخدم خيار - اللون من grep كثيرًا ، لكنني غالباً ما أستخدم أقل. كيف يمكنني توجيه نتائج grep إلى أقل مع الحفاظ على التلوين. (أو هل هذا ممكن؟)

grep "search-string" -R * --colour | less 

EDIT:

أنا أبحث عن حل مباشر أو أي شيء معادل لذلك.

242
Jeremy Powell

عندما تقوم ببساطة بتشغيل grep --color ، فهذا يعني grep --color=auto الذي يكتشف ما إذا كان الإخراج هو محطة وإذا كان الأمر كذلك يمكّن الألوان. ومع ذلك ، عندما يكشف عن أنبوب فإنه يعطل التلوين. الأمر التالي:

grep --color=always -R "search string" * | less

ستقوم دائمًا بتمكين التلوين وتجاوز الاكتشاف التلقائي ، وستحصل على تمييز اللون بـ less.

التحرير: على الرغم من أن استخدام less يعمل فقط بالنسبة لي ، فربما يتطلب الإصدار الأقدم علامة -R للتعامل مع الألوان ، كما هو مقترح.

269
drrlvn

يمكنك وضع هذا في ملف .bashrc الخاص بك:

export GREP_OPTIONS="--color=always"

أو إنشاء اسم مستعار مثل هذا:

alias grepc="grep --color=always"

وستحتاج إلى استخدام خيار -R لـ less ، كما أشار إلى ذلك

27
Dennis Williamson

في مثل هذه الحالة ، أفضل إنشاء ملفات sh الصغيرة ووضعها على /usr/local/bin.
عادةً ما أستخدم grep بطريقة العودية على pwd ، لذلك هذا هو نصي الشخصي:

#!/bin/sh
grep --color=always -r "[email protected]" . | less -R

وبعد ذلك قمت بنسخها على أنها /usr/local/bin/g (نعم ، استخدمها كثيرًا)

8
Iazel

لا اسم مستعار "grep" ، من الأفضل أن يكون الاسم المستعار "أقل" الذي لا تستخدمه القذائف مطلقًا. في .bashrc فقط ضع: alias less="less -r".

1
not2qubit

أحتاج إلى الجري

grep --color=always -R "search string" * | less - r

مع علامة - r بعد أقل ، من أجل هذا لتشغيل.

0
Pierre François