দুটি এম্পারস্যান্ড এবং একটি আধা-কোলন ব্যাশে কীভাবে কাজ করে তার মধ্যে পার্থক্য রয়েছে?


71

যদি আমি একটি লাইনে দুটি পৃথক কমান্ড চালাতে চাইতাম তবে আমি এটি করতে পারি:

cd /home; ls -al

অথবা এটা:

cd /home && ls -al

এবং আমি একই ফলাফল পেতে। যাইহোক, এই দুটি পদ্ধতি নিয়ে পটভূমিতে কী চলছে? তাদের মধ্যে কার্যকরী পার্থক্য কি?

উত্তর:


88

;শুধু আরেকটি থেকে মাত্র একটি কমান্ড আলাদা করে। দ্য &&কেবলমাত্র নিচের কমান্ডটি প্রয়োগ বলে পূর্ববর্তী সফল হয়েছে যদি

cd /home; ls -al

এটি হবে cd /homeএবং এমনকি যদি cdকমান্ডটি ব্যর্থ হয় ( /homeঅস্তিত্ব নেই, আপনার এটি পাস করার অনুমতি নেই, ইত্যাদি), এটি চলবে ls -al

cd /home && ls -al

এটি কেবল তখনই চালিত হবে ls -alযদি cd /homeসফল হয়েছিল।


2
; যেমন ব্যবহার করা সত্যই বিপজ্জনক (কমপক্ষে rm কমান্ড সহ) cd /some/dir; rm -fr ./*। সুতরাং এই জাতীয় ধ্বংসাত্মক অপারেশনের সাথে আপনাকে অবশ্যই নিশ্চিত হতে হবে যে আরএম কার্যকর করার আগে আপনি সঠিক জায়গায় আছেন in ডান কমান্ডটি হ'লcd /some/dir && rm -fr ./*
ALex_hha

70
a && b

যদি কোনও শূন্য প্রস্থান কোড দেয়, তবে কার্যকর করা হয়।

a || b

যদি কোনও শূন্য-বহির্গমন প্রস্থান কোড দেয়, তবে কার্যকর করা হয়।

a ; b

a এক্সিকিউট করা হয় এবং তারপরে b এক্সিকিউট হয়।


16
cd /fakedir; ls -al

রান lsবর্তমান ডিরেক্টরির মধ্যে কারণ cd /fakedirব্যর্থ হবে এবং শেল প্রস্থান অবস্থা যে শূন্য নয় উপেক্ষা করা হবে।

cd /fakedir && ls -al

কারণ &&অপারেটর কেবল তখনই চলতে থাকবে যদি পূর্ববর্তী কমান্ডটি স্বাভাবিকভাবে (শূন্যের স্থিতি) থেকে প্রস্থান হয়, কোনও lsঅপারেশন করা হবে না।

অন্যান্য অপারেটর রয়েছে, যেমন &কোনও প্রক্রিয়া ব্যাকগ্রাউন্ড করবে। কমান্ডের শেষে প্রায়শই রাখা হলেও এটি একটি শৃঙ্খলের মাঝখানে স্থাপন করা যেতে পারে।


4

if..then..elseচেইন কমান্ড লজিকের মতো আপনিও তাদের সাথে যোগ দিতে পারেন ।

উদাহরণ:

ls file.ext && echo "file exists" || echo "file does not exist"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.