আপনি যা চান তা পুনর্নির্দেশ করতে পারেন 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?