আপনি আপনার পদ্ধতিটি কিছুটা মানিয়ে নিতে পারেন। cowsay
সরাসরি পাইপ না করে, একটি সীমানাঙ্কিত অক্ষর পর্যন্ত আউটপুট পড়ুন, সেই আউটপুটটি প্রেরণ করুন cowsay
, তারপরে প্রতিটি কমান্ডের পরে সেই অক্ষরটি মুদ্রণ করুন:
exec > >(while IFS= read -d '' -r line; do if [[ -n $line ]]; then echo; printf "%s\n" "$line" | cowsay; fi; done)
PROMPT_COMMAND='printf "\0"'
এখানে, আমি ASCII NUL চরিত্রটি ব্যবহার করছি। আপনি অন্য কিছু ব্যবহার করতে পারেন যা কমান্ড আউটপুটে প্রদর্শিত হবে না unlikely
এটি প্রম্পটের পরে মুদ্রণ করা হবে, সুতরাং আউটপুট কুৎসিত হবে:
$ export LC_ALL=C
$ exec > >(while IFS= read -d '' -r line; do if [[ -n $line ]]; then echo; printf "%s\n" "$line" | cowsay; fi; done)
$ PROMPT_COMMAND='printf "\0"'
$ ls
$
______________________________________
/ Desktop Documents Downloads Music \
| Pictures Public Templates Videos
\ examples.desktop /
--------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
$ echo foo
$
______
< foo >
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
দ্রষ্টব্য যে এটি জটিল আউটপুট চেষ্টা করে এমন কোনও কমান্ডকে ভেঙে ফেলবে বা একটি পাঠ্য ব্যবহারকারী ইন্টারফেস রয়েছে (চিন্তা করুন কমান্ড লাইন সম্পাদক, পেজার ইত্যাদি)।
ধরে নিচ্ছি যে আপনি ইতিমধ্যে জানেন কী exec > >(...)
, প্রক্রিয়া প্রতিস্থাপনের অংশটি হ'ল:
while IFS= read -d '' -r line; do ... done
: এটি ASCII NUL চরিত্রের দ্বারা সীমিত করা ডেটা পড়ার পক্ষে মোটামুটি সাধারণ প্রতিমা:
IFS=
আইএফএসকে খালি স্ট্রিংয়ে সেট করে যা ক্ষেত্র বিভাজনকে অক্ষম করে
-r
ইনপুটটিতে বিশেষত read
চিকিত্সা করা থেকে বাধা দেয় \
(সুতরাং \n
উদাহরণস্বরূপ, পড়ুন \n
এবং নতুন লাইনের চরিত্রটিতে রূপান্তরিত হয়নি)।
-d ''
read
NUL চরিত্র না হওয়া পর্যন্ত পড়তে বলার উপায়
সম্ভব হিসাবে যতটা সম্ভব ইনপুট সামগ্রী সংরক্ষণ করার সময় পুরো জিনিসটি NUL- সীমাবদ্ধ বিভাগগুলিতে ইনপুট থেকে যায়।
if [[ -n $line ]]; then ... fi; done
- কেবলমাত্র তখনই কাজ করুন যদি এখনও পর্যন্ত পড়া ইনপুটটি খালি না থাকে।
echo; printf "%s\n" "$line" | cowsay;
- একটি নেতৃস্থানীয় খালি লাইন মুদ্রণ করুন, যাতে প্রসম্পটের সাথে গরুয়ের আউটপুট সংঘাত না ঘটে এবং তারপরে এতক্ষণে ইনপুট পাঠান গরুতে send printf
তুলনায় আরও নির্ভরযোগ্য এবং নিরাপদ echo
।
-n
পতাকা ব্যবহারcowsay
করা দরকারী; এটি এটিকে সাদা স্থান রক্ষা করে।