যেমন পুনঃনির্দেশ "|>" কেবল একটি ত্রুটি বা এর অর্থ কিছু?


9

আমি ভুল করে এটি টাইপ করেছি তবে বাশ কোনও ত্রুটি মুদ্রণ করেনি (তবে একটি খালি ফাইল তৈরি করেছে) তাই আমি ভেবেছিলাম সম্ভবত এটির অর্থ কিছু? (যেমন তারিখ |> tmp.txt)


1
আপনি কি নিশ্চিত যে কমান্ডটি ফর্মের নয় date |> tmp.txt cmd2? কারণ এটি উত্তর পরিবর্তন করে।
কনরাড রুডলফ

উত্তর:


17

এটি কেবল একটি পাইপলাইন বলে মনে হচ্ছে যেখানে দ্বিতীয় অংশটি খালি কমান্ড, কেবল পুনর্নির্দেশটি ধারণ করে। এটি হিসাবে লিখলে এটি date | >fileব্যাখ্যা করা সহজ হয়। খালি কমান্ড ফাইলটি তৈরি করে পুনঃনির্দেশ প্রক্রিয়াজাতকরণ ব্যতীত কিছুই করে না।

date >| fileঅন্যদিকে noclobberশেল বিকল্পের জন্য ওভাররাইড হিসাবে কাজ করবে , যা নিয়মিত >বিদ্যমান ফাইলগুলিকে ওভাররাইট করা থেকে বিরত রাখে।

$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo       # works

1

হ্যাঁ, এটি ত্রুটি ছুঁড়ে ফেলবে না কারণ বাশ > 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]$ 

হাস্যকর. Zsh এর আলাদা আচরণ রয়েছে: কমান্ডের পরে, my_fileএর আউটপুট থাকে date
এনআই

12
@ নাজিবআইড্রিসি, zshযখন কেবলমাত্র পুনর্নির্দেশগুলি থাকে এবং কোনও আদেশ থাকে না, কেবলমাত্র ইনপুট পুনর্নির্দেশগুলি উপস্থিত থাকলে কমান্ডটি ( ডিফল্টরূপে) বা (একটি পেফলার ডিফল্ট দ্বারা ) zshচালায় । $NULLCMDcat$READNULLCMD
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.