বাশ: "> |" কি করে?


148

আমি এই নিচে লেখা দেখেছি;

$ some-command >| /tmp/output.txt

উল্লম্ব পাইপগুলি স্ট্যান্ডার্ড পুনঃনির্দেশগুলিতে "পাইপিং" করে একটি কমান্ডের অন্য আদেশের আউটপুট ব্যবহার করা হয় >|, বাস্তবে এটি সম্পূর্ণরূপে অকেজো যেহেতু এটি >এই দৃশ্যের মতোই হবে ?



উত্তর:


220

এটি অকেজো নয় - এটি সরল >পুনর্নির্দেশ অপারেটরের একটি বিশেষ ফর্ম (এবং সম্ভবত বিভ্রান্তিকরভাবে পাইপগুলির সাথে কিছুই করার নেই)। bashএবং বেশিরভাগ আধুনিক শেলগুলির একটি বিকল্প রয়েছে noclobber, যা পুনর্নির্দেশটিকে ইতিমধ্যে বিদ্যমান ফাইলকে ওভাররাইট করা বা ধ্বংস করতে বাধা দেয়। উদাহরণস্বরূপ, যদি noclobberএটি সত্য হয় এবং ফাইলটি /tmp/output.txtইতিমধ্যে বিদ্যমান থাকে, তবে এটি ব্যর্থ হওয়া উচিত:

$ some-command > /tmp/output.txt

তবে, আপনি পুনঃনির্দেশ অপারেটরের noclobberসাথে স্পষ্টভাবে সেটিংসকে ওভাররাইড করতে পারেন >|- noclobberসেট করে থাকলেও পুনঃনির্দেশটি কাজ করবে ।

noclobberআপনার বর্তমান পরিবেশে সেট করা আছে কিনা তা আপনি জানতে পারবেন set -o

Noteতিহাসিক নোটের জন্য, "নোক্লোবার" বিকল্প এবং এর বাইপাস বৈশিষ্ট্যগুলি উভয়ই csh(70 এর দশকের শেষভাগ) থেকে আসে । kshএটি অনুলিপি করেছেন (80 এর দশকের শুরুর দিকে) তবে >|পরিবর্তে ব্যবহৃত হয়েছিল >!। পসিক্স kshসিনট্যাক্সটি নির্দিষ্ট করে (সুতরাং কয়েকটি সিস্টেমে sh হিসাবে ব্যবহৃত নতুন ছাই ডেরিভেটিভস সমর্থন করে এমন ব্যাশ সহ সমস্ত পসিক্স শেল এটি সমর্থন করে)। Zsh উভয় বাক্য গঠন সমর্থন করে। আমার মনে হয় না এটি কোনও বোর্ন শেল বৈকল্পিকের সাথে যুক্ত হয়েছিল তবে আমি ভুল হতে পারি।


3
@sch - আপনার ঐতিহাসিক নোট পুনরায় (অতিরিক্ত তথ্যের জন্য ধন্যবাদ, BTW) - FreeBSD 'র এর shরয়েছে noclobber, মে 2002. সম্পর্কে যেহেতু
D_Bye
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.