অপারেটর অগ্রাধিকার সহ ক্লাসিক দৃশ্যে আপনার মত লাইন রয়েছে:
(cd ~/screenshots/ && ls screenshot* | head -n 5)
আর তুমি যদি এটা পার্স জানিনা ((A && B) | C)
বা (A && B | C)
...
প্রায় সরকারী ডকুমেন্টেশন পাওয়া এখানে তালিকায় নল তালিকাভুক্ত না তাই আমি কেবল টেবিল চেক করতে পারবে না।
ব্যাশ ছাড়াও, (
কেবলমাত্র ক্রিয়াকলাপের ক্রম পরিবর্তন করার জন্য নয় এটি একটি সাবশেল তৈরি করে , তাই আমি 100% নিশ্চিত নই যে এই লাইনগুলি আগের লাইনের সমতুল্য:
((cd ~/screenshots/ && ls screenshot*) | head -n 5)
আরও সাধারণভাবে, কীভাবে বাশ লাইনের এএসটি জানবেন ? পাইথনে আমার একটি ফাংশন রয়েছে যা আমাকে গাছ দেয় যাতে আমি সহজেই অপারেশনের ক্রমটি ডাবল করতে পারি।
bash
কোনও ইয়্যাক পার্সার ব্যবহার করছে কিছু অ্যাডহক জিনিস নয়; আপনি চালাতে যে মাধ্যমে yacc -v
এটা দিতে হবে y.output
একটা চমৎকার ব্যাকরণ যে অনুষ্ঠান &&
এবং ||
তালিকা একত্রিত করা, এবং তালিকা অবশেষে পাইপলাইনগুলি আপ করা হয় (এবং বিপরীত); TL; ড; A && B | C
হিসাবে একই A && { B | C; }
আশানুরূপ। B
এবং এর মধ্যে মৃত্যুদণ্ড কার্যকর করার কোনও আদেশ অনুমান করবেন না C
; পাইপলাইনে কমান্ড সমান্তরালভাবে চালিত হয় ।
[...]
পরীক্ষা এবং $((...))
পাটিগণিত মূল্যায়নের অভ্যন্তরে ব্যবহৃত অপারেটরদের সম্পর্কে ; বিশেষত ||
এবং &&
শেল ল্যাঙ্গুয়েজে কমান্ড তালিকার সাথে যেমন ব্যবহার করা হয়েছে তেমনই প্রাধান্য পেয়েছে C
, গাণিতিক মূল্যায়নের ক্ষেত্রে বা অপারেটরগুলির &&
তুলনায় (যেখানে আরও শক্ত করে বাঁধাই করা হয় ||
)।
|
সংযোগকারী যা এইচএইচএস স্টিডিনের সাথে এলএইচএস স্টাডাউটের সাথে মানানসই তা জানতে সাহায্য করতে পারে । সুতরাং যদিcd
আপনার উদাহরণের কমান্ডটি ব্যর্থ হয় তবে এটি কোনও আউটপুট প্রেরণ করবে নাhead
, তবেhead
বাস্তবে এখনওexecute
কিছুই পার্স করবে না এবং কোনও আউটপুট ফেরত দেবে না।