আমি প্রতিটি গ্রেপ কমান্ডের ফলাফলটি ভিন্ন বর্ণের হাইলাইট করার চেষ্টা করছি। আমি এটির মতো একটি লাইন দিয়ে ম্যানুয়ালি এটি করতে পারি:
ls -l GREP_COLORS='mt=01;32' grep c | GREP_COLORS='mt=01;31' grep o | GREP_COLORS='mt=01;34' grep n | GREP_COLORS='mt=01;36' grep f
প্রতিটি c
চরিত্র সবুজতে হাইলাইট হবে এবং প্রতিটি o
চরিত্রকে লাল, ইত্যাদিতে হাইলাইট করা হবে ...
এই উদাহরণটি কাজ করার জন্য আপনাকে সর্বদা
--color=always
আপনার গ্রেপ কমান্ডের মধ্যে রয়েছে তা নিশ্চিত করতে হবে । আমি এটি আমার.bashrc
এতক্ষণে সেট করে রেখেছি গ্রেপটিতে সবসময় রঙ থাকবে:
export GREP_OPTIONS='--color=always'
আমি যেটি সম্পাদন করার চেষ্টা করছি তা হ'ল একটি উপকরণ দিয়ে এই কার্যকারিতাটি মোড়ানো যাতে আমি কেবল একবার কল করতে পারি grep
এবং GREP_COLORS
প্রতিবার একটি আলাদা মান পেতে পারি। আমি প্রতিটি নতুন পাইপযুক্ত গ্রেপের জন্য একাধিক শেলের বিবেচনা বুঝতে পেরেছি এবং এগুলি ইতিমধ্যে ব্যবহৃত হয়েছে তা বোঝাতে কিছু ফাইল (প্রতিটি রঙের জন্য একটি) তৈরি করে আমি এটি ব্যবহার করার চেষ্টা করছি।
আমি কিছু চেষ্টা করেছি তবে আশ্চর্যের বিষয়, এটি "সেরা" হিসাবে কাজ করে বলে মনে হচ্ছে। আমার মধ্যে এটি আছে .bashrc
:
alias mg="mygrep"
mygrep(){
# define possible colors
COLORS=("01;32" "01;31" "01;34" "01;36")
COUNTER=0
NUM=0
# as long as the color has already been used, keep searching
while [ -f /home/lior/Desktop/mygrep_$NUM ]; do
# get a random index
let NUM=`shuf --input-range=0-$(( ${#COLORS[*]} - 1 )) | head -1`
wait ${!}
$(( COUNTER+=1 ))
if [ "$COUNTER" -ge ${#COLORS[@]} ]; then
# remove all color locks
rm /home/lior/Desktop/mygrep_*
wait ${!}
fi
done
# mark this color as used
touch /home/lior/Desktop/mygrep_$NUM
wait ${!}
# lets go!
GREP_COLORS="mt=${COLORS[$NUM]}" grep "$@"
}
আমি এই উপনামটি এর মতো ব্যবহার করছি:
ll | mg c | mg o | mg n | mg f
ফলাফলগুলি বেশ দুর্দান্ত। তবে কিছু ত্রুটি রয়েছে যা প্রতিবারের চেয়ে কিছুটা আলাদা। এখানে বেশ কয়েকটি স্ক্রিনশট রয়েছে:
মনে হচ্ছে শেল প্রতিটি পাইপ কমান্ড দিয়ে চলেছে, পূর্ববর্তী ফাংশনটি এখনও এটি কার্যকর করে নি। এটি এমন ফাইলগুলি সরানোর চেষ্টা করে যা আর অস্তিত্বহীন। এই অন্যান্য command not found
ত্রুটিগুলি কোথা থেকে এসেছে তা আমি নিশ্চিত নই ।
আপনি দেখতে পাচ্ছেন, wait
ফাইল ম্যানিপুলেশনটি সম্পূর্ণ করার চেষ্টা করার জন্য আমি কয়েকটি কমান্ড রেখেছি তবে এটি খুব ভালভাবে কাজ করছে বলে মনে হচ্ছে না। আর একটি জিনিস যা আমি ইতিমধ্যে চেষ্টা করেছি /dev/shm
তা হ'ল শেয়ার্ড মেমোরি ব্যবহার করা তবে এটি একই রকম ফলাফল পেয়েছে।
আমি কীভাবে ফলাফল পেতে চাই?
বিঃদ্রঃ:
আমি এমন উত্তরগুলির সন্ধান করছি যা কেবল গ্রেপ কমান্ডটি মোড় করে দেয় কারণ এতে প্রচুর কার্যকারিতা রয়েছে যা আমি পাইপগুলির মধ্যে অন্যান্য যুক্তি সন্নিবেশ করানোর এবং ব্যবহার করতে চাইছিলাম, তাই আমি একবারে সমস্ত অনুসন্ধানের পদ সরবরাহ করতে চাই না। আমি অন্যান্য "গ্রেপ লাইক" সরঞ্জামগুলিও খুঁজছি না। @Terdon এর জন্য দুঃখিত যারা ইতিমধ্যে দুর্দান্ত একটি পার্ল পরামর্শ পোস্ট করেছেন।
alias mg="mygrep; grep"
?
mygrep;
একটি নতুন কমান্ডে পরিণত হয় এবং ডেটা স্ট্রিমটি হারিয়ে যায়। এর থেকে আগত পাইপ গ্রেপ না ls
হয়ে পাস হবে mygrep;
। কমপক্ষে এটি আমি এটি বুঝতে পারি।
--color=always
আপনার সমস্ত গ্রেপ কমান্ডে আপনার রয়েছে তা নিশ্চিত করা দরকার । আমি আমার বিশ্বব্যাপী সেট .bashrc
। আমি পোস্টে এটি সম্পাদনা করেছি।