আমি ভুল করে এটি টাইপ করেছি তবে বাশ কোনও ত্রুটি মুদ্রণ করেনি (তবে একটি খালি ফাইল তৈরি করেছে) তাই আমি ভেবেছিলাম সম্ভবত এটির অর্থ কিছু? (যেমন তারিখ |> tmp.txt)
আমি ভুল করে এটি টাইপ করেছি তবে বাশ কোনও ত্রুটি মুদ্রণ করেনি (তবে একটি খালি ফাইল তৈরি করেছে) তাই আমি ভেবেছিলাম সম্ভবত এটির অর্থ কিছু? (যেমন তারিখ |> tmp.txt)
উত্তর:
এটি কেবল একটি পাইপলাইন বলে মনে হচ্ছে যেখানে দ্বিতীয় অংশটি খালি কমান্ড, কেবল পুনর্নির্দেশটি ধারণ করে। এটি হিসাবে লিখলে এটি date | >fileব্যাখ্যা করা সহজ হয়। খালি কমান্ড ফাইলটি তৈরি করে পুনঃনির্দেশ প্রক্রিয়াজাতকরণ ব্যতীত কিছুই করে না।
date >| fileঅন্যদিকে noclobberশেল বিকল্পের জন্য ওভাররাইড হিসাবে কাজ করবে , যা নিয়মিত >বিদ্যমান ফাইলগুলিকে ওভাররাইট করা থেকে বিরত রাখে।
$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo # works
হ্যাঁ, এটি ত্রুটি ছুঁড়ে ফেলবে না কারণ বাশ > fileমানেই কোনও ফাইলকে পুনর্নির্দেশ করে file। আপনার ক্ষেত্রে যেমন ফাইলে পুনঃনির্দেশ করার মতো কিছুই নেই, তেমন কিছু নেই বলে ব্যাশ কেবল একটি ফাইলের নাম তৈরি fileকরবে।
[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$
my_fileএর আউটপুট থাকে date।
zshযখন কেবলমাত্র পুনর্নির্দেশগুলি থাকে এবং কোনও আদেশ থাকে না, কেবলমাত্র ইনপুট পুনর্নির্দেশগুলি উপস্থিত থাকলে কমান্ডটি ( ডিফল্টরূপে) বা (একটি পেফলার ডিফল্ট দ্বারা ) zshচালায় । $NULLCMDcat$READNULLCMD
date |> tmp.txt cmd2? কারণ এটি উত্তর পরিবর্তন করে।