আপনি যা চান তা পুনর্নির্দেশ করতে পারেন echo
তবে এটি এটি দিয়ে কিছুই করবে না। echo
এটির স্ট্যান্ডার্ড ইনপুটটি পড়ে না। এটি কেবল স্ট্যান্ডার্ড আউটপুটে লেখার জন্য তার আর্গুমেন্টগুলিকে একটি স্পেস অক্ষর দ্বারা পৃথক করে এবং একটি নিউলাইন চরিত্র দ্বারা সমাপ্ত করা হয় (এবং কিছু echo
প্রয়োগের সাথে কিছু এ্যাসিক সিকোয়েন্সগুলি প্রসারিত এবং / অথবা যুক্তিগুলি -
সম্ভবত বিকল্প হিসাবে বিবেচিত হয়)।
আপনি যদি echo
কোনও ফাইলের বিষয়বস্তু প্রদর্শন করতে চান তবে আপনাকে সেই বিষয়বস্তুটির পক্ষে যুক্তি হিসাবে পাস করতে হবে echo
। কিছুটা এইরকম:
echo "$(cat my_file.txt)"
লক্ষ্য করুন $(...)
চিহ্ন newline অক্ষর রেখাচিত্রমালা গুলি যে আউটপুট থেকে cat
কমান্ড, এবং echo
যোগ করে এক ফিরে।
আরও মনে রাখবেন যে বাদ দিয়ে zsh
আপনি কোনও কমান্ডের আর্গুমেন্টগুলিতে NUL অক্ষরগুলি পাস করতে পারবেন না, যাতে উপরেরগুলি সাধারণত বাইনারি ফাইলগুলির সাথে কাজ করে না। yash
বৈধ অক্ষরের অংশ নয় এমন বাইটগুলিও সরিয়ে ফেলবে।
তাহলে যে কাজ করতে অনুপস্থিত জন্য কারণ কারণ আপনি চান echo
প্রসারিত করতে \n
, \b
, \0351
... ফাইলে পালাবার ক্রম (Unix conformant যেমন echo
বাস্তবায়নের না, কিন্তু সব ), তারপর আপনি বরং ব্যবহার করতে চাই printf
পরিবর্তে :
printf '%b\n' "$(cat my_file.txt)"
বিপরীতে echo
, এটি পোর্টেবল এবং ফাইলের সামগ্রীটি শুরু হলে সমস্যা হবে না -
।
বিকল্প হিসেবে $(cat file)
, সঙ্গে ksh
, zsh
এবং bash
, এক এছাড়াও করতে পারেন: $(<file)
। এটি একটি বিশেষ অপারেটর যার মাধ্যমে শেল বিপরীতে cat
ফাইলের সামগ্রীটি পড়ার বিপরীতে । এটি এখনও পিছনে থাকা নতুন লাইনের রেখাচিত্রগুলি বাদ দেয় এবং এ ছাড়া এন ইউ এল বাইটগুলিকে চোক করে zsh
। ইন bash
, এটি এখনও একটি অতিরিক্ত প্রক্রিয়া কাঁটাচামচ করে। এছাড়াও মনে রাখবেন যে একটি পার্থক্য হ'ল সেই ধরণের ডিরেক্টরি টাইপের ডিরেক্টরি পড়ার চেষ্টা করলে আপনি কোনও ত্রুটি পাবেন না। এছাড়াও, $(< file)
বিশেষ হওয়ার সময় , $(< file; other command)
এটি ( অন্তর্নিহিত কমান্ডটি (সাধারণত পেজার)) চালিয়ে zsh
অন্য শেলটি অনুকরণ না করার সময় এটির বিষয়বস্তু প্রসারিত করতে পারে ।file
$READNULLCMD
echo
?