লিনাক্স ব্যাশ সিনট্যাক্স: &&, \, এবং - এর অর্থ


14

বাশ কমান্ডের শেষে ' &&', ' \' এবং ' -' এর অর্থ কী?

বিশেষত, আমি নীচের লাইনগুলির সংমিশ্রণটি ঘটিয়েছি যেগুলি উবুন্টুর প্রবণতা প্যাকেজ ম্যানেজারে পাবলিক কী যুক্ত করার কথা রয়েছে, সেই অক্ষরগুলি এখানে কী জন্য ব্যবহৃত হয়?

    জিপিজি - কীসার্ভার কীসারবার.উবন্টু.কম --recv 26C2E075 && \
    জিপিজি - রফতানি - আর্মার 26 সি 2 ই075 | sudo অ্যাপ-কী যুক্ত করুন - && \
    sudo অ্যাপটি-আপডেট আপডেট

"/" "\" এর মতো নয়
টমাস

থমাস: তার পোস্ট স্থির করে
কাইল ব্র্যান্ড্ট

এখানকার ব্যাকস্ল্যাশগুলির প্রয়োজন নেই যেহেতু &&& লাইন ধারাবাহিকতা বোঝাতেও যথেষ্ট। ব্যাকস্ল্যাশ ব্যবহার করে অবশ্য পঠনযোগ্যতা।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

উত্তর:


37

"এবং&" একসাথে কমান্ড শৃঙ্খলে ব্যবহৃত হয়, যেমন পূর্ববর্তী কমান্ডটি ত্রুটি ছাড়াই প্রস্থান করা হয় কেবল তখনই (এবং, আরও সঠিকভাবে, 0 এর রিটার্ন কোড সহ প্রস্থান করা হয়) যদি পরবর্তী কমান্ডটি চালিত হয়।

একটি রেখার শেষে নিজেই "\" হ'ল একত্রিত করে একত্রিত করার জন্য lines সুতরাং নিম্নলিখিত দুটি লাইন:

gpg --keyserver keyserver.ubuntu.com --recv 26C2E075 && \
gpg --export --armor 26C2E075

লাইনটি একক লাইন হিসাবে লেখা ছিল ঠিক ঠিক একইভাবে প্রক্রিয়া করা হয়:

gpg --keyserver keyserver.ubuntu.com --recv 26C2E075 && gpg --export --armor 26C2E075

"-" হ'ল একটি নির্দিষ্ট বাশ ফাংশন সহ একটি কমান্ড লাইন আর্গুমেন্ট। ঠিক কীভাবে এটি পরিচালনা করা হয় তা চালানো কমান্ডের উপর নির্ভরশীল (এই ক্ষেত্রে অ্যাপটি-কী )। প্রসঙ্গের উপর নির্ভর করে, এটি সাধারণত " ফাইলের চেয়ে স্ট্ডিনের ডেটা পড়ুন " বা " লাইনটির বাকী অংশটি কমান্ড লাইন আর্গুমেন্টের পরিবর্তে ডেটা হিসাবে প্রক্রিয়াকরণ " নির্দেশ করতে ব্যবহৃত হয় ।


5
এই ক্ষেত্রে, '-' সুডোর একটি প্যারামিটার নয় বরং 'এপট-কী' এর অর্থ, কোনও কী ফাইলের পরিবর্তে 'অ্যাপ্ট-কী' তার স্টিডিনে পাইপ ('|') এর মাধ্যমে আগত ডেটা ব্যবহার করছে একটি চাবি হিসাবে "- আউটপুট a_file_name.key 'ছাড়াই" gpg --export "বিকল্পটি, পাইপ (' | ') এর মাধ্যমে' অ্যাপটি-কী 'ইজির স্টিডিনে জিপিজি স্টাডাউটের বাইরে একটি নতুন কী টিপুন: - )
এডোমোর

2
উপস। অর্ধেক ঘুমন্ত অবস্থায় আমি প্রশ্নের উত্তর পেতে পারি। স্থির করেছি।
সোনারপিউডো

7
&& == if the first command succeeded, run the next one
\ == the next line is part of the first line, not two seperate lines
- == read the input from stdin (console)

6

&& হ'ল যৌক্তিক AND: এবং& লজিকাল অ্যান্ড
প্রকাশ করার একটি উপায় যা এর উভয় পক্ষই সত্য হয় তবেই সম্পূর্ণ অভিব্যক্তিটি সত্য। যুক্তি হিসাবে এটি সম্পূর্ণ বিবৃতি (পিএন্ডকিউ) কেবল তখনই সত্য হয় যখন পি এবং কিউ উভয়ই সত্য হয়।

এর ফলস্বরূপ, কম্পিউটারগুলি সাধারণত পি ও কিউকে একটি শর্ট সার্কিট মূল্যায়ন হিসাবে বিবেচনা করে । সুতরাং যেহেতু পুরো বিবৃতিটি কেবলমাত্র সত্য হবে যদি পি এবং কিউ উভয়ই সত্য হয়, তবে পি যদি মিথ্যা হয় তবে বিবৃতি Q এর মূল্যায়ন হয় না । মূলত কম্পিউটারগুলি অলস (দক্ষ), এবং কিউ না থাকলে Q মূল্যায়ণ করতে বিরক্ত করবেন না। এটি লজিক্যাল OR এর ক্ষেত্রেও সত্য, আগের লিঙ্কটি দেখুন।

বাশের মধ্যে তিনটি বিষয়বস্তু:

1) একটি কমান্ডের প্রস্থান স্থিতির সাথে শর্ট সার্কিট মূল্যায়ন ব্যবহার:
প্রতিটি কমান্ডের একটি প্রস্থান স্থিতি থাকে। যদি কোনও কমান্ডের ত্রুটি থাকে তবে এর একটি প্রস্থান স্থিতি থাকে যা শূন্য নয়। সুতরাং যদি প্রস্থান স্থিতি শূন্য হয় না এবং && এর সাথে একটি বিবৃতিতে শৃঙ্খলাবদ্ধ শৃঙ্খলা ব্যবহার করা হয়, তবে পূর্ববর্তীগুলির 0 (সত্য) এর প্রস্থান স্থিতি না থাকলে পরবর্তী কমান্ডগুলির মূল্যায়ন (সম্পাদিত) করা হবে না। এটি শর্ট সার্কিট মূল্যায়নের কারণে। সুতরাং আপনার যদি:

P && Q

পি সত্য না হলে Q কার্যকর করা হবে না (পি যদি 0 এর বাইরেও কোনও কিছুর স্ট্যাটাস নিয়ে বের হয় তবে এটি সত্য নয়)। ঠিক তেমন:

./configure && make

কনফিগারটিতে ত্রুটি থাকলে মেকটি কার্যকর করা হবে না, সত্য ছিল না। সুতরাং মূলত, তারপরে লেখার একটি উপায় হয়ে শেষ হয় যদি বিবৃতি:

if ./configure ; then
   make
fi

মনে রাখবেন তবে বেশিরভাগ প্রসঙ্গে 0 টি মিথ্যা, তবে এটি যখন প্রস্থান স্থিতি আসে তখন নয়।

2) বাশ-এর ​​নির্মিত [[]] পরীক্ষা কমান্ডে && ব্যবহার করা যেতে পারে:

বাশ [[]] -তে অন্তর্নির্মিত পরীক্ষা কমান্ডের অভ্যন্তরেও কম্যান্ডের সংমিশ্রণের মতো একই ফ্যাশনে ভাবটি একত্রিত করতে && ব্যবহার করা যেতে পারে। পুরো পরীক্ষার অপারেশনটি কেবল তখনই সত্য হবে যদি && এর উভয় অপারেশন (পক্ষ) সত্য হয়, উদাহরণস্বরূপ:

if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ... 

saying a 2 এবং 5 (2 এবং 5 সহ নয়) এর মধ্যে একটি পূর্ণসংখ্যা হলে এটি বলার উপায় way

3) পাটিগণিত মূল্যায়ন:

অবশেষে, && লজিকাল এ্যান্ড হিসাবে পাটিগণিত মূল্যায়নে ব্যবহৃত হতে পারে। নিম্নলিখিত সংখ্যার উভয় (লজিক্যাল এআ্যান্ড) যদি শূন্য হয় না তবে এটি 0 প্রদান করে, অন্যথায় 1 টি ফিরে আসে:

kbrandt@desktop:~/$ echo $((1 & 1))
1
kbrandt@desktop:~/$ echo $((0 && 1))
0

@ কাইল: & & লজিক্যাল এক্সপ্রেশন এর বাইরে ব্যবহৃত হ'ল "এবং নিয়ন্ত্রণ অপারেটর", একই রকম আচরণ কিন্তু প্রযুক্তিগতভাবে আলাদা
drAlberT

আপনার মন্তব্য অনুসরণ করবেন না, একটি যৌক্তিক প্রকাশের বাইরে আপনি কী বোঝাতে চাইছেন?
কাইল ব্র্যান্ড্ট

আমি বোঝাতে চাইছি যে একটি অভিব্যক্তিতে && নিয়ন্ত্রণ অপারেটর "যৌক্তিক এবং" এর অর্থ ধরে নেয়, অন্যথায় এটি কেবল একটি "এবং" হয়। এটি তালিকার জন্য ব্যবহৃত "এবং নিয়ন্ত্রণ অপারেটর"। লজিকাল অপারেটরগুলি প্রকাশের মধ্যে পাটিগণিতের বিস্তারের প্রসঙ্গে ব্যবহৃত হয়।
drAlberT

মধ্যে if [./configure]উদাহরণস্বরূপ, আপনি বন্ধনী মুছে ফেলা আবশ্যক। সঠিকটি হলif ./configure; then make...
জুলিয়ানো

জুলিয়ানো, ভাল ক্যাচ, আপডেট হবে। অ্যালবার্ট, ম্যান পেজগুলি যে শর্ত দেয় সেগুলি ছাড়া কি অন্য কোনও পার্থক্য রয়েছে?
কাইল ব্র্যান্ড্ট

3

আমি মনে করি আপনি "বাস্তব" অর্থের ব্যাখ্যা দিয়ে আরও ভাল করবেন, জড়িত বিষয়গুলি অন্য জিনিস :)

  • && হ'ল "এবং" নিয়ন্ত্রণ অপারেটর। বাশ ম্যান থেকে :
    নিয়ন্ত্রণ অপারেটরগুলি && এবং || যথাক্রমে AND তালিকা এবং OR তালিকাগুলি চিহ্নিত করুন।
    একটি এবং তালিকা ফর্ম আছে  
        কমান্ড 1 && কমান্ড 2     
    কমান্ড 2 এক্সিকিউট করা হয় এবং কেবল যদি, কমান্ড 1 শূন্যের প্রস্থান স্থিতি দেয়।
    [..Cut ..]
    AND এবং OR তালিকাগুলির রিটার্ন স্থিতি হ'ল শেষ কমান্ডের প্রস্থান স্থিতি
    মৃত্যুদন্ড কার্যকর করা।
    
    একটি কন্ট্রোল অপারেটর হয়
    একটি টোকেন যা একটি নিয়ন্ত্রণ ফাংশন সম্পাদন করে। এটি নিম্নলিখিত চিহ্নগুলির মধ্যে একটি:
        || &&&; ;; () |
    
  • \হ'ল " পালানোর চরিত্র ", এবং এটি ব্যাশে উপলভ্য তিনটি উদ্ধৃতি ব্যবস্থার মধ্যে একটি:
    মূল্য উদ্ধৃতি
       শেলটির নির্দিষ্ট অক্ষর বা শব্দের বিশেষ অর্থ সরিয়ে দিতে উদ্ধৃতি ব্যবহার করা হয়।
    [..Cut ..]
       এখানে তিনটি উদ্ধৃতি ব্যবস্থা রয়েছে: পালানোর চরিত্র, একক উদ্ধৃতি এবং ডাবল উদ্ধৃতি।
       একটি অ-উদ্ধৃত ব্যাকস্ল্যাশ (\) হ'ল পালাবার চরিত্র। এটি বাদে পরবর্তী চরিত্রের আক্ষরিক মান সংরক্ষণ করে। যদি কোনও \ জুটি উপস্থিত হয় এবং ব্যাকস্ল্যাশ নিজেই উদ্ধৃত না হয় তবে \টিকে একটি লাইন ধারাবাহিকতা হিসাবে গণ্য করা হয় (এটি হ'ল এটি ইনপুট স্ট্রিম থেকে সরানো হয় এবং কার্যকরভাবে উপেক্ষা করা হয়)।
    [..Cut ..]
    ব্যাকস্ল্যাশ কেবল তখনই এর বিশেষ অর্থ ধরে রাখে যখন নিম্নলিখিত অক্ষরের একটি অনুসরণ করা হয়: $, `,",।, বা।
    
    এর অর্থ হ'ল আপনি যদি একটি রেখার একেবারে শেষে একটি "অবলম্বন চরিত্র" ("\") রাখেন তবে আপনি আসলে নতুন লাইন চরটি অবিলম্বে অব্যাহতি দিচ্ছেন যা অবিলম্বে এটি অনুসরণ করবে (প্রত্যাবর্তন চর) এভাবে "লাইনটি চালিয়ে যাও" এর প্রভাব রয়েছে অন্যরা ইতিমধ্যে তাদের উত্তরে ব্যাখ্যা করেছে
  • ড্যাশ চর " - " যা কিছু কমান্ড প্যারামিটার হিসাবে গ্রহণ করে তা একটি কনভেনশন, শেল বিশেষ চর বা অপারেটর নয়। অন্য ইতিমধ্যে চিহ্নিত হিসাবে, এটি মানক I / O স্ট্রিমগুলির জন্য এক ধরণের স্থান-চিহ্নিতকারী। প্রোগ্রামটির উপর নির্ভর করে আমরা এটি স্ট্যান্ডিন (স্ট্যান্ডার্ড ইনপুট) বা স্টডআউট (স্ট্যান্ডার্ড আউটপুট) এর জন্য থাকতে পারি।

আমার 2 সেন্ট


1
সম্ভবত tl এর একটি কেস হতে চলেছে; ড। একটি ম্যানপেজের দৈত্য অংশগুলি পেস্ট করা - এটি যেমন আলোকিত হয় - সম্ভবত ওপিকে ভয় দেখিয়ে দেবে।
রডজেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.