উত্তর:
পছন্দসই এবং সর্বাধিক ব্যবহৃত একই জিনিস নয়। যদিও printfবিভিন্ন কারণে আরও ভাল, বেশিরভাগ লোকেরা এখনও ব্যবহার করেন echoকারণ বাক্য গঠনটি আরও সহজ।
আপনার কেন পছন্দ করা উচিত তার প্রধান কারণগুলি হ'ল printf:
echo মানক নয়, এটি বিভিন্ন সিস্টেমে আলাদা আচরণ করবে veআপনি যখন আসলে আসলে কী চালাচ্ছেন তা অনুমান করা শক্ত echo foo। উদাহরণস্বরূপ, আমার ডেবিয়ান সিস্টেমে:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
আপনি দেখতে পাচ্ছেন, দুটি পৃথক echoকমান্ড রয়েছে, একটি হ'ল শেল (এই ক্ষেত্রে ব্যাশ) বিল্টিন এবং অন্যটি পৃথক বাইনারি। মনে রাখবেন যে bashএকটি printfবিল্টিন রয়েছে তবে এর আচরণটি আরও মানসম্পন্ন তাই এটি কোনও ইস্যুতে কম নয় (এটি নির্দেশ করার জন্য @ রাদুরাদেনুকে ধন্যবাদ)।
যেহেতু echoসাপোর্ট কমান্ড লাইনটি কিছু (তবে সমস্ত নয়) বাস্তবায়ন করেছে , একটি দিয়ে শুরু হওয়া একটি স্ট্রিং মুদ্রণ করা শক্ত -। যদিও অনেকগুলি প্রোগ্রাম --স্যুইচগুলির সমাপ্তি এবং যুক্তিগুলির সূচনা বোঝাতে সহায়তা করে (উদাহরণস্বরূপ, এতে থাকা grep -- -a fileরেখাগুলি সন্ধান করবে ), না does তো, আপনার কীভাবে প্রিন্ট আছে ?file-aechoecho-n
$ echo -n ## no output
$ echo '-n' ## no output
$ echo "-n" ## no output
$ echo \-n ## no output
$ echo -e '\055n' ## using the ASCII code works but only on implementations
-n ## that support -e
printf এটি সহজেই করতে পারেন:
$ printf -- '-n\n'
-n
$ printf '%s\n' -n
-n
$ printf '\055n\n'
-n
আরও তথ্যের চেয়ে আপনি কি কখনো কেন উপর জানতে চেয়েছিলেন জন্য printfবেশী ভালো echo, উপর একটি অনুরূপ প্রশ্নের এই উত্তর দেখুন http://unix.stackexchange.com :
printfআরও ভাল দোভাষী হিসাবে পছন্দ করতে সহায়তা করে ।
printf(দেখুন type -a)।
printfআরও কঠোরভাবে সংজ্ঞায়িত হয়েছে এবং আমি মনে করি যে বিল্টিন একই মান অনুসরণ করে। POSIX চশমা জন্য echoঅন্যদিকে কম কঠোর এবং এমনকি স্পষ্টভাবে বলে যে সেখানে বাস্তবায়নের এবং যে মধ্যে পার্থক্য হবে? printfপছন্দের দিতে হবে।
echo। এটা কি ঠিক?
echoপরিবর্তে ব্যবহারের একমাত্র কারণ printfহ'ল ফর্মাটি সহজ হতে পারে। আপনি কী মুদ্রণ করছেন তা যদি আপনি জানেন তবে echo fooটাইপ করা দ্রুত এবং সহজ printf 'foo\n'। এগুলি ছাড়াও স্ক্রিপ্টগুলি লেখার সময় যেখানে একটি পরিবর্তনশীল মুদ্রণ করা দরকার সেখানে ব্যবহার করার উপযুক্ত কারণ নেই echo।
কোনটি পছন্দনীয় তা জিজ্ঞাসা করা নিজেই অসম্পূর্ণ।
যদি সকলেরই কাজটি করতে ইচ্ছুক হয় তবে নিউলাইনগুলি দ্বারা টার্মিনেটের এক বা একাধিক লাইন নির্গত হয় , তবে প্রতিধ্বনিতই যথেষ্ট। বিশেষত এমন একটি "আংশিক রেখা" সহ যে আরও নতুন করে চালিত উদ্দেশ্যযুক্ত , যদি নিউলাইন থাকে না, তবে সেই উদ্দেশ্যে প্রিন্টফ সবচেয়ে ভাল ।
echoবাস্তবায়নের উপর নির্ভর করে সহজেই "নতুন লাইন এড়ানো" কাজটি সম্পন্ন হয় echo -n। প্রকৃতপক্ষে, -nপ্রতিধ্বনির বৈশিষ্ট্যগুলির মধ্যে সবচেয়ে বহনযোগ্য। পসিক্সের মতে, এটি সিস্টেমভি থেকে অনুপস্থিত তবে বেশিরভাগ ইউনিয়নে উপস্থিত রয়েছে।
-nBSDs এবং SystemV এর উপর নির্ভর করতে পারেন তবে অন্য কিছু, আমার কোনও ধারণা নেই।