কারণ এটি হ'ল এভাবেই।
<(...)
bash
প্রক্রিয়া প্রতিস্থাপনের জন্য বাক্য গঠন রয়েছে in এটি একই অপারেটর থেকে অনুলিপি করা হয়েছে ksh
।
<
, (
, )
, |
, &
, ;
বিশেষ আভিধানিক টোকেন হয় bash
যে বিভিন্ন সমন্বয় বিশেষ অপারেটার গঠন করতে ব্যবহৃত হয়। <
, <(
, <<
, <&
... প্রতিটি তাদের ভূমিকা আছে। <
পুনঃনির্দেশের জন্য। <file
, < file
একটি ফাইল থেকে ইনপুট পুনর্নির্দেশ হবে। <'(file)'
নামক কোনও ফাইল থেকে ইনপুট পুনর্নির্দেশ করবে (file)
তবে <(file)
এটি একটি ভিন্ন অপারেটর যা কোনও পুনঃনির্দেশ অপারেটর নয়।
< (file)
হবে <
দ্বারা অনুসরণ (file)
। সেই প্রসঙ্গে, ইন bash
, (file)
বৈধ নয়। (...)
কিছু প্রসঙ্গে যেমন একক টোকেন হিসাবে বৈধ হতে পারে:
(sub shell)
func () {
...
}
var=(foo bar)
কিন্তু না
sort < (cmd)
ইন fish
শেল, এটা আলাদা। ইন fish
, (...)
কমান্ড প্রতিকল্পন (সমতুল্য জন্য $(...)
মধ্যে bash
)। এবং <
বোর্নের মতো শেলগুলির মতো ইনপুট পুনঃনির্দেশের জন্য।
সুতরাং fish
:
sort <(echo file)
যেমন হবে:
sort < (echo file)
এটাই:
sort < file
তবে এটি bash
প্রক্রিয়া বিকল্পের থেকে সম্পূর্ণ আলাদা ।
ইন yash
শেল, অন্য POSIX শেল, <(...)
জন্য নয় প্রক্রিয়া প্রতিকল্পন কিন্তু প্রক্রিয়া ফেরৎ
সেখানে,
sort <(ls -l)
খুব ছোট:
sort 0<(ls -l)
একটি পুনঃনির্দেশ অপারেটর। এটি কমবেশি সমান:
ls -l | sort
যদিও bash
, <(ls -l)
একটি নল পথ প্রসারিত হয়, তাই এটি আরো মত:
ls -l | sort /dev/fd/0
ইন zsh
, (...)
একটি গ্লোব্বিং অপারেটর হিসাবে ওভারলোড হয় ( (*.txt|*.png)
প্রসারিত হবে txt
এবং png
ফাইলগুলি) এবং গ্লোব কোয়ালিফায়ার হিসাবে ( *(/)
উদাহরণস্বরূপ ডিরেক্টরি ফাইলগুলিতে প্রসারিত হয়)।
ইন zsh
, ইন:
sort < (ls -l)
এটি (ls -l)
গ্লোব কোয়ালিফায়ার হিসাবে বিবেচিত হবে। l
উল্লিখিত glob সংযোগগুলি সংখ্যার উপর মেলে এবং পরে একটি সংখ্যা আশা কোয়ালিফায়ার l
(হিসাবে ls -ld ./*(l2)
2 লিঙ্কগুলি সহ ফাইল তালিকা প্রস্তুত হবে), যাতে কেন আপনি একটি পেতে zsh: number expected
ত্রুটি।
sort < (w)
zsh: no matches found: (w)
পরিবর্তে (w)
লেখার যোগ্য খালি নামের ফাইলগুলির সাথে মেলে হিসাবে একটি ত্রুটি দিয়েছিল ।
sort < (w|cat)
বর্তমান ডিরেক্টরিতে w
এবং / অথবা cat
ফাইলগুলির সামগ্রী বাছাই করা হত ...