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


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

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

تصحيح:

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


216
2017-09-04 21:46


الأصل


ممكن من الازدواجية احصل على ألوان في أمر "أقل" - Ciro Santilli 新疆改造中心 六四事件 法轮功


الأجوبة:


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

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

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

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


247
2017-09-04 22:35



تحتاج إلى استخدام less -R لترميز اللون ليتم تفسيره أقل بشكل صحيح - therefromhere
انها عملت بالنسبة لي مع عادل less، قد يكون إصدار معتمد. - drrlvn
ملحق (مفيد) مفيد: كنت بحاجة إلى استبعاد بعض المباريات ولكن الحفاظ على التلوين ، لذلك انتهى بها الأمر فعلاً grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R، التي تلبي احتياجاتي تماما. (شكرا لك مرة أخرى!) - Owen Blacker
لا أستطيع أن أصدق أنهم نفذوا فقط ميزة معالجة اللون في less وبالتالي فوت فرصة الحصول على فرصة خاصة colorless أداة. للاسم لوحده كان يجب القيام به! ربما ينبغي لي أن أكتب رقعة تستدعي -R تلقائيا عندما يتم تشغيل ثنائي كما colorless. - Christian
OwenBlacker قد لا يكون اسمًا مستعارًا. ربما لديك $LESS مرصع -R. - greyfade


يمكنك وضع هذا في حياتك .bashrc ملف:

export GREP_OPTIONS="--color=always"

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

alias grepc="grep --color=always"

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


27
2017-09-05 10:46



تحذير !: GREP_OPTIONS = "- color = always" قد ينكسر كثير البرامج النصية التي تستخدم grep (أو (e | f) grep). - mctylr
نعم ، من الافضل ان اسماء grep فقط. يمكنك دائما الحصول على نقية grep مع GREPأو تجاوز --color الخيار يدويا. - asmeurer
هذا لا يعمل بالنسبة لي ، لا يعمل الاسم المستعار رغم ذلك. - saeedgnu


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

#!/bin/sh
grep --color=always -r "$@" . | less -R

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


4
2017-09-30 21:48



لماذا لا تستخدم فقط وظائف shell لهذا النوع من الأشياء؟ g() { grep --color=always -r "$@" . | less -R } يعمل بشكل متطابق وربما يعطي (بدقة) أداء أفضل. - 00dani


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


1
2018-01-20 10:28



ليس صحيح تماما. يحتاج المرء إلى استخدام على حد سواء  grep --color=always و less -R. لاحظ أن grep يعلم فقط أنه يجري piped إلى بعض العمليات الأخرى و --color=auto يستخدم الخيار فقط هذه المعلومات لتحديد ما إذا كان سيتم إخراج الألوان أم لا. - brandizzi
لاحظ أن less اختيار -r يختلف عن -R. المحتمل -R هو أكثر أمانا. - Craig McQueen
إذن لماذا يصوتون على الحل. طلب OP على وجه التحديد less مع المثال بالفعل باستخدام الخيار `--color. - not2qubit
ربما يكون الاسم المستعار غير مرغوب فيه هنا. less يدعم أ $LESS متغيرات البيئة. لذلك ، بدلاً من اسم مستعار ، export LESS='-R' قد يكون من الأفضل. - greyfade


أنا بحاجة للركض

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

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


0
2018-01-18 10:51