গ্রেপ থেকে কমতে কোনও পাইপ ব্যবহার করার সময় রঙিন ফলাফল পাওয়া


246

আমি প্রচুর গ্রেপের --colour বিকল্পটি ব্যবহার করি তবে আমি প্রায়শই কম ব্যবহার করি। আমি কীভাবে গ্রেপ ফলাফলগুলিকে কম করে পাইপ করতে পারি এবং রংটি সংরক্ষণ করতে পারি। (নাকি এটা সম্ভব?)

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

সম্পাদনা :

আমি সরাসরি সমাধান বা এর সমতুল্য কিছু খুঁজছি।



কি করে *? গ্রেপের ম্যান পেজ থেকে: *: The preceding item will be matched zero or more times.তবে আমি এখনও বুঝতে পারি না ..! @ জেরেমি পোওয়েল
শায়ান

উত্তর:


274

আপনি যখন চালান কেবল grep --colorএটি বোঝায় grep --color=autoযে আউটপুটটি টার্মিনাল কিনা তা সনাক্ত করে এবং যদি রঙ সক্ষম করে। যাইহোক, এটি যখন পাইপ সনাক্ত করে এটি রঙিন অক্ষম করে। নিম্নলিখিত আদেশ:

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

রঙটি সর্বদা সক্ষম করবে এবং স্বয়ংক্রিয় সনাক্তকরণকে ওভাররাইড করবে এবং আপনি রঙটি হাইলাইট করে পাবেন less

সম্পাদনা: যদিও শুধুমাত্র lessআমার জন্য কাজ করে , সম্ভবত পুরানো সংস্করণে -Rরঙগুলি হ্যান্ডেল করার জন্য পতাকাটির প্রয়োজন হয় , যেহেতু এখানে পরামর্শ দেওয়া হয়েছে।


143
less -Rরঙের এনকোডিংটি কম সঠিকভাবে ব্যাখ্যা করার জন্য আপনাকে ব্যবহার করতে হবে
সেখান থেকে

1
এটি আমার সাথে ন্যায়সঙ্গতভাবে কাজ করেছে less, এটি সংস্করণ নির্ভর হতে পারে।
drrlvn

1
এ (আশাকরি) দরকারী সংযোজন: আমার কয়েকটি ম্যাচ বাদ দিতে হবে তবে রঙ বজায় রাখা দরকার, তাই আমি আসলে শেষ করেছিলাম grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R, যা আমার প্রয়োজনগুলি পুরোপুরি পূরণ করে। (আবারও ধন্যবাদ!)
ওভেন ব্ল্যাকার

7
আমি বিশ্বাস করতে পারি না যে তারা কেবল রঙ-হ্যান্ডলিং বৈশিষ্ট্যটি কার্যকর করেছে lessএবং তাই একটি বিশেষ colorlessসরঞ্জাম পাওয়ার সুযোগটি হাতছাড়া করেছে । একা নামের জন্যই করা উচিত ছিল! আমার সম্ভবত একটি প্যাচ লিখতে হবে যা বাইনারি হিসাবে চালিত হওয়ার পরে স্বয়ংক্রিয়ভাবে -আর আহ্বান করবে colorless
খ্রিস্টান

2
@ ওউইন ব্ল্যাকার এটি একটি উপনাম নাও হতে পারে। আপনি $LESSসেট করতে পারে -R
গ্রেফ্যাড

27

আপনি এটি আপনার .bashrcফাইলে রাখতে পারেন:

export GREP_OPTIONS="--color=always"

অথবা এর মতো একটি নাম তৈরি করুন:

alias grepc="grep --color=always"

এবং এখান থেকে নির্দেশিত হিসাবে আপনার -Rজন্য বিকল্পটি ব্যবহার করতে হবেless


29
সতর্কবাণী !: GREP_OPTIONS = "- রঙ = সর্বদা" ভঙ্গ করতে পারে অনেক স্ক্রিপ্ট, grep (| চ), grep বা (ঙ) ব্যবহার করুন।
mctylr

4
হ্যাঁ, কেবলমাত্র ওরফে গ্রেপ করা ভাল। আপনি সর্বদা খাঁটি grepহয়ে উঠতে পারেন GREP, বা --colorবিকল্পটিকে ম্যানুয়ালি ওভাররাইড করতে পারেন ।
asmeurer

এটি আমার পক্ষে কাজ করে না, যদিও ওরফে কাজ করে।
সাeedদগনু

9

এর মতো ক্ষেত্রে, আমি প্রকৃতপক্ষে ছোট ছোট ফাইল তৈরি করতে পছন্দ করি /usr/local/bin
আমি সাধারণত grepপুনরুক্তি উপায়ে ব্যবহার করি pwd, তাই আমার ব্যক্তিগত স্ক্রিপ্টটিতে:

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

এবং তারপরে আমি এটিকে কেবল অনুলিপি করেছি /usr/local/bin/g(হ্যাঁ, আমি এটি প্রচুর ব্যবহার করি)


2
কেন এই ধরণের জিনিসগুলির জন্য কেবল শেল ফাংশন ব্যবহার করবেন না? g() { grep --color=always -r "$@" . | less -R }অভিন্নভাবে কাজ করে এবং সম্ভবত (মিনিট) আরও ভাল পারফরম্যান্স দেবে।
00dani

1
@ 00 দানি হ্যাঁ, এটিও একটি বৈধ বিকল্প এবং কখনও কখনও আমি এটি ব্যবহার করি। দয়া করে নোট করুন যে এই ক্ষেত্রে, বেশিরভাগ সময় আইওতে ব্যয় করা হয় এবং তাই কোনও অনুমানযোগ্য পারফরম্যান্স বাড়ানো যায় না: অন্য পার্থক্যটি হ'ল একবার আপনার পাঠ্যপথের পরে, এই স্ক্রিপ্টটি অন্যান্য শেল স্ক্রিপ্ট এবং উপকরণগুলির সাথেও ব্যবহার করা যেতে পারে; পরিবর্তে ফাংশনটি স্পষ্টভাবে লোড করা দরকার
ইয়াজেল

1

"গ্রেপ" উপনাম রাখবেন না, উপন্যাস "কম" এর চেয়ে ভাল যা শেল কখনও ব্যবহার করে না। আপনার .bashrcশুধু করা: alias less="less -r"


3
একদম ঠিক না। এক এবং উভয় ব্যবহার করা প্রয়োজন । নোট করুন যে গ্রেপ কেবলমাত্র এটি জানে যে এটি অন্য কোনও প্রক্রিয়াতে পাইপ করা হচ্ছে এবং বিকল্পটি কেবল এই তথ্যটি ব্যবহার করে রঙগুলি আউটপুট দেয় কিনা তা সিদ্ধান্ত নিতে কেবল এটি ব্যবহার করে। grep --color=alwaysless -R--color=auto
ব্র্যান্ডিজি

3
নোট করুন যে lessবিকল্পটি -rতুলনায় পৃথক -R। সম্ভবত -Rনিরাপদ।
ক্রেগ ম্যাককুইন

1
তাহলে কেন আমার সমাধানটি ডাউন-ভোট করুন। ওপি বিশেষত lessইতিমধ্যে `--color বিকল্পটি ব্যবহার করে উদাহরণটি জিজ্ঞাসা করবে।
not2qubit

3
একটি উপনাম সম্ভবত এখানে অনাকাঙ্ক্ষিত। পরিবেশের পরিবর্তনশীলকে lessসমর্থন করে $LESS। সুতরাং, একটি উপনামের পরিবর্তে, export LESS='-R'পছন্দসই হতে পারে।
গ্রেফ্যাড

0

আমাকে দৌড়াতে হবে

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

কম পরে -r পতাকা সহ, এটি চালানোর জন্য।


কি করে *? গ্রেপের ম্যান পেজ থেকে: *: The preceding item will be matched zero or more times.তবে আমি এখনও বুঝতে পারি না ..!
শায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.