আমি যখন অন্য কোনও প্রক্রিয়াতে পাইপ করি তখন আমার এএনএসআই এস্কেপ কোডগুলি কোথায় যায়? আমি কি তাদের রাখতে পারি?


36

আমি কোনও এক সময় রঙ-কোডেড আউটপুটটি কোনও প্রক্রিয়া থেকে বের করে আনতে চাই eg গ্রেপ ... তবে যখন আমি এটি অন্য প্রক্রিয়াতে পাইপ করি, যেমন। সেড, রঙ কোডগুলি হারিয়ে গেছে ...

থিস কোডগুলি অক্ষত রাখার কিছু উপায় কি?

এখানে একটি উদাহরণ যা রঙিন আউটপুট হারায়:

echo barney | grep barney | sed -n 1,$\ p   

4
পিএস .. সাধারণ তথ্য হিসাবে .. আমি সবেমাত্র আবিষ্কার করেছি যে lesstree -C ~/ |less -Rls -lR --color=always . |less -R
বর্ণযুক্ত

উত্তর:


40

অনেকগুলি প্রোগ্রাম যা রঙিন আউটপুট জেনারেট করে তারা কোনও টিটিওয়াইতে লিখতে থাকে কিনা তা সনাক্ত করে এবং না থাকলে রঙগুলি স্যুইচ করে off এর কারণ হ'ল রঙের কোডগুলি বিরক্ত হয় যখন আপনি কেবল পাঠ্যটি ক্যাপচার করতে চান তাই তারা স্বয়ংক্রিয়ভাবে "সঠিক জিনিসটি করার" চেষ্টা করে।

এর মতো প্রোগ্রাম থেকে রঙ আউটপুট ক্যাপচার করার সহজ উপায় হ'ল এটি কোনও টিটিওয়াইয়ের সাথে সংযুক্ত না থাকলেও রঙ লিখতে বলা। প্রোগ্রামটির ডকুমেন্টেশনগুলি পড়তে হবে এটিতে বিকল্প রয়েছে কিনা তা জানতে। (যেমন, grepহয়েছে --color=alwaysবিকল্প।)

আপনি expectস্ক্রিপ্টটি unbufferএটির মতো ছদ্ম-টিটি তৈরি করতেও ব্যবহার করতে পারেন:

echo barney | unbuffer grep barney | sed -n 1,$\ p

2
টিটিওয়াই সনাক্তকরণ এবং আনফার জাল আউট সম্পর্কে সেই তথ্যের জন্য ধন্যবাদ!
শেল্টার 16

@ সিজেএম .. এটি এখানে কাজ করছে না (উবুন্টু ১০.০৪ / বাশ ৪.১.৫ এ) ... তবে আমার ১০.০৪ টি রেপোতে কেবলমাত্র একটি দেব-সংস্করণ রয়েছে, এবং ব্যাকপোর্টগুলিতে কিছুই নেই ... এখানে কিছুটা দেরি হয়েছে, তাই আমি দেখব আগামীকাল আবার ... তবে আপনি যেমন বলেছিলেন, এই রঙিনকরণ প্রোগ্রামগুলি সম্ভবত আউটপুট গন্তব্য অনুসারে টগল করবে (এমএইচএইচইচ তবে তারা কীভাবে জানবে যে এটি তাত্পর্যপূর্ণ কোনও বিষয় নয়) .. এবং তাদের কাছে জোর করার বিকল্প থাকতে পারে এটি .. ধন্যবাদ ,,,
পিটার.ও

@ ফ্রেড, তারা সাধারণত কোথায় চলছে তা খুঁজে বের করার জন্য ইস্পাত ব্যবহার করে stdout। আমি unbufferযখন প্রোগ্রামে পাশাপাশি পাইপিংয়ের সময় কাজ করি তখন আমি আসলে নিশ্চিত নই ; চেষ্টা করার জন্য আমার এখানে এটি ইনস্টল করা নেই।
সিজেএম

unbufferতথ্যের জন্য ধন্যবাদ , এটি শেল মধ্যে আউটপুট মত আমার আইআরসি বট এর আউটপুট সাহায্য।
লিউইয়ান 研 研

4

এটা আমার জন্য কাজ করে ;-! (বর্তমান মিংডব্লিউ পরিবেশে)

echo barney | grep --color=always barney | sed -n '1,$p'
**barney**

# বার্নি লাল পাঠ্য হিসাবে প্রদর্শিত হয়

$ grep --version
GNU grep 2.5.4

$ sed --version
GNU sed version 4.2.1

@ শেল্টার ... হ্যাঁ, এই বিশেষ গ্রেপ উদাহরণটি আমার পক্ষেও কার্যকর ... আপনি উত্তর পোস্ট না করা পর্যন্ত আমি সেই বিকল্প সম্পর্কে অবগত ছিলাম না, তাই এর জন্য ধন্যবাদ ... তবে। আমি এখনও ভাবছি যে এটি করার কোনও সাধারণ উপায় আছে কিনা .... উদাহরণস্বরূপ tree is colorized a-la dircolors if the LS_COLORS environment variable is set and output is to tty ... সম্ভবত (?) কোনও পাইপ এটি কোনও টিটিওয়াইয়ের কাছে আউটপুট করছে কিনা তা ভাবার উপায় আছে .. বা এরকম কিছু সাধারণ কর্মক্ষেত্র রয়েছে। ।
পিটার.ও

আমি সবেমাত্র যাচাই করেছি man tree... -C
এটিরও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.