একটি সাধারণ চরিত্র হিসাবে বিশেষ চরিত্রটি কীভাবে ব্যবহার করবেন?


13

'ডাবল-কোট চর (") কীভাবে টাইপ করবেন?" এর মতো অনেক প্রশ্ন? জিজ্ঞাসা করা হচ্ছে, এবং আমরা আমাদের সম্প্রদায়কে একই উত্তর দিয়ে বিশৃঙ্খলা করতে চাই না (এটি টাইপ করুন যেন এটি এস-এ \"সংযুক্ত নয় ', "যদি এস-এ আবদ্ধ থাকে '।) সুতরাং, প্রশ্নটি এখানে রয়েছে।

আপনি সাধারণের মতো টার্মিনালে বিশেষ অক্ষর টাইপ করতে পারবেন না, উদাহরণস্বরূপ এই আদেশটি ব্যর্থ হবে:

echo Updates (11)

সুতরাং, টার্মিনালে এই অক্ষরগুলি কীভাবে টাইপ করবেন যেন সেগুলি স্বাভাবিক ছিল?

!#$^&*?[](){}<>~;'"\|<space><tab><newline>

এমন কোনও ইউনিক্স শেল নেই যা আমি জানি যেখানে গাড়ি চালানো বিশেষ। =, @এবং %কিছু প্রসঙ্গে কিছু শেলের মধ্যে বিশেষ।
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস উম্ম ... ক্যারেজ রিটার্ন ( ^M) ^Jআমার কাছে লাইন ফিডের মতো কাজ করে (উবুন্টু ১৪.০৪, শ)
ইকনস

না, তোমার টার্মিনাল চালক রূপান্তরগুলির ^Mকরার ^Jইনপুটের কিন্তু ^Mশেল বিশেষ নয় এবং না উদ্ধৃত প্রয়োজন হয় না। টাইপ করুন echo ^V^M | hdএবং আপনি 0 ডি অক্ষরটি দেখতে পাবেন (এবং প্রতিধ্বনিতে 0a সংযুক্ত)।
স্টাফেন চেজেলাস

@ স্টাফেনচেজেলাস উম্ম ... আমি জানি না কী hd, সম্ভবত xxdহেক্স ভিউয়ার হিসাবে ভাল।
ইকনস

যেটা। ব্যবহারের POSIX od -tx1বা sed -n lবা তেজ এর xxd যাও যদি আপনি না hd। কিছু সিস্টেমে এগুলিও রয়েছে cat -vteবাcat -A
স্টেফেন চ্যাজেলাস

উত্তর:


27

এটি শেলের উপর নির্ভর করে। বিশদ জন্য আপনার শেল ম্যানুয়াল পরীক্ষা করুন।

এছাড়াও লক্ষ করুন যে কিছু চরিত্র কয়েকটি প্রসঙ্গে কেবল বিশেষ। উদাহরণস্বরূপ, বেশিরভাগ শেলগুলিতে *এবং ?কেবল পসিক্স বা সিএস-এর মতো শেলগুলিতে তালিকা প্রসঙ্গে ~বিশেষ , কেবল কোনও শব্দের শুরুতে বা কিছু চরিত্র অনুসরণ করার পরে বিশেষ :। জন্য একই =মধ্যে zsh। কিছু শেলগুলিতে [কেবল তখনই বিশেষ হয় যখন ক এর সাথে (কিছু সীমাবদ্ধতার সাথে) মেলে ]

কিছু শেলের মতো bashবা yash, ফাঁকা টোকেন ডিলিমিটারগুলির মতো বিশেষ অক্ষরও লোকালের সাথে পৃথক হয়।

উদ্ধৃতি অপারেটরগুলি (সেই অক্ষরের বিশেষ অর্থ মুছে ফেলার জন্য) শেলগুলির মধ্যেও প্রচুর পরিমাণে পৃথক হয়।

বোর্নের মতো শাঁস

বোর্ন-জাতীয় শেলগুলির সংক্ষিপ্তসার (এটি সেই শাঁস যেগুলি sh80 এর দশক থেকে কোনও সিস্টেম বা অন্য কোনওটিতে ডাকা হত):

বোর্ন শেল

বিশেষ অক্ষর:

  • "\'&|;()^`<>$, স্থান, নিউলাইন এবং ট্যাব কোট না করা হলে সাধারণ কমান্ড লাইনে বিশেষ।
  • #(প্রথম সংস্করণ ব্যতীত) একটি রেখার শুরুতে বা অব্যক্ত স্থান, ট্যাব বা অনুসরণ করে বিশেষ &|()^<>;`
  • {এবং }এটি কেবল বিশেষ যে তারা শেল কীওয়ার্ডগুলি (কেবলমাত্র কমান্ড পজিশনে শব্দ)।
  • *?[গ্লোববিং অপারেটর হিসাবে বিশেষ, তাই শুধুমাত্র তালিকার প্রসঙ্গে। এর ক্ষেত্রে [এটি [...]হ'ল গ্লোব্বিং অপারেটর, বিশেষ অর্থটি সরাতে হয় [বা ]কেবল উদ্ধৃত করা দরকার।
  • =প্রাসঙ্গিক ক্ষেত্রে যখন এটি একটি অ্যাসাইনমেন্ট অপারেটর হিসাবে বিবেচিত হয় তখন বিশেষ হয়। এটি একটি সাধারণ কমান্ডে, সমস্ত শব্দের জন্য যা কোনও আর্গুমেন্ট অনুসরণ করে না (পরে বাদে set -k)।

অপারেটরদের উদ্ধৃতি

  • \নিউলাইন ব্যতীত সমস্ত বিশেষ অক্ষর উদ্ধৃত করে ( পরবর্তী শারীরিক লাইনে \<newline>দীর্ঘ যৌক্তিক লাইন চালিয়ে যাওয়ার এক উপায় , যাতে ক্রমটি সরানো হয়)। নোট করুন যে ব্যাকটিকগুলি তাদের মধ্যে যেমন অতিরিক্ত জটিলতা যুক্ত করে, ক্লোজিং ব্যাকটিক থেকে বাঁচতে এবং পার্সারটিকে সহায়তা করতে প্রথমে ব্যবহৃত হয়। উদ্ধৃতি চিহ্ন ভিতরে, শুধুমাত্র নিজেকে অব্যাহতি ব্যবহার করা যেতে পারে , এবং ( এখনও একটি লাইন ধারাবাহিকতা যায়)। একটি এখানে-নথি ভিতরে একই জন্য । এখানে নথির ভিতরে অক্ষরগুলি থেকে বাঁচার একমাত্র উপায়।\\"$`\<newline>"\
  • "..."ডাবল-কোটস সমস্ত অক্ষর ছাড়াও নিজেই \, $এবং `
  • '...' একক উদ্ধৃতি সমস্ত অক্ষর কিন্তু নিজেই এড়ানো।

পসিক্স শেল

পসিক্স শেল বেশিরভাগ বোর্ন শেলের মতো আচরণ করে, ব্যতীত:

ksh

POSIX এর মতো:

  • {string}স্ট্রিংটিতে একটি অব্যক্ত ,(বা ..কিছু ক্ষেত্রে এবং কিছু সংস্করণ সহ) থাকে তবে বিশেষ।
  • $'...'জটিল নিয়ম সহ ksh93 এর একটি অতিরিক্ত বিশেষ উদ্ধৃতি অপারেটর রয়েছে । যে অপারেটর এছাড়াও (কিছু বৈচিত্র সঙ্গে) পাওয়া যায় bash, zsh, mkshও FreeBSD এবং, busybox sh
  • ksh93এছাড়াও একটি $"..."উদ্ধৃতি অপারেটর রয়েছে যা "..."স্ট্রিং স্থানীয়করণের বিষয়বস্তু ব্যতীত কাজ করে (কনফিগার করা যায় তাই এটি ব্যবহারকারীর ভাষায় অনুবাদ করে)। mkshউপেক্ষা করে $$"..."

bash

মত ksh93তবে:

  • একক বাইট অক্ষর লোকেলগুলিতে, সমস্ত ফাঁকা (লোকেল অনুসারে) অক্ষরগুলি সীমানা হিসাবে বিবেচনা করা হয় (স্থান বা ট্যাবের মতো)। ফলস্বরূপ, এর অর্থ আপনার কিছু বাইটে ফাঁকা চরিত্র হতে পারে এমন ক্ষেত্রে 8 ম বিটের সেট সহ সমস্ত বাইটগুলি উদ্ধৃত করা উচিত।
  • ইন্টারেক্টিভ উদাহরণগুলির মতো যখন csh ইতিহাসের প্রসারণ সক্ষম করা হয়, তখন !কিছু প্রসঙ্গে বিশেষ হয় এবং ডাবল উদ্ধৃতি সর্বদা এড়িয়ে যায় না। এবং ^একটি কমান্ড শুরুতে বিশেষ।

zsh

মত ksh93তবে:

  • bashসিএসএস ইতিহাস সম্প্রসারণের জন্য একই নোট
  • =শব্দের প্রথম চরিত্র হিসাবে এটি =lsপ্রসারিত ( প্রসারিত হয় /bin/ls)।
  • {এবং }সীমানা না থাকলে কমান্ড গোষ্ঠীগুলি খুলতে এবং বন্ধ করতে পারে (যেমন {echo text}বোর্নের মতো কাজ করে { echo text;})।
  • [একা ব্যতীত , [প্রয়োজনগুলি উদ্ধৃত না থাকলেও একটি দিয়ে বন্ধ করা ]
  • extendedglobবিকল্পটি সক্ষম করার সাথে #, ^এবং ~অপারেটরগুলি গ্লোববিং করছে।
  • সঙ্গে bracecclবিকল্প, {non-empty-string}বিশেষ।
  • $"..." সমর্থিত নয়.
  • একটি বিশেষ কৌতুক হিসাবে , কোনও শব্দের শুরুতে (এমনকি উদ্ধৃত বা প্রসারিত) ?অনুসরণ করার %পরেও বিশেষ নয় ( %?nameকাজের নির্দিষ্টকরণের অনুমতি দেওয়ার জন্য)
  • একটি rcquotesবিকল্প (ডিফল্টরূপে সক্ষম নয়) একক কোটের ''ভিতরে যেমন একক কোটায় প্রবেশ করতে দেয় rc(নীচে দেখুন)।

yash

POSIXবাদে যেমন ।

  • সমস্ত ফাঁকা অক্ষরকে সীমানা হিসাবে বিবেচনা করা হয়।
  • সঙ্গে brace-expandবিকল্প, কার্যে প্রচলন zsh ধাঁচের বক্রবন্ধনী সম্প্রসারণ।

সমস্ত শেলের জন্য, কিছু বিশেষ প্রসঙ্গ রয়েছে যেখানে উদ্ধৃতিগুলি আলাদাভাবে কাজ করে। আমরা এখানে ডকুমেন্টস এবং ব্যাকটিকগুলি ইতিমধ্যে উল্লেখ করেছি, তবে [[...]]কেএসএস এবং কয়েকটি অন্যান্য শেল, পসিক্স $((...)), caseকনস্ট্রাক্টসেও রয়েছে ...

আরও মনে রাখবেন যে উদ্ধৃতিটি যখন বিস্তারের ক্ষেত্রে আসে (ডাবল-কোটাসহ) বা এখানে ডকুমেন্ট ডিলিমিটারগুলিতে প্রয়োগ হয় তখন অন্যান্য পার্শ্ব-প্রতিক্রিয়াও থাকতে পারে। এটি সংরক্ষিত শব্দগুলি অক্ষম করে এবং উপনাম প্রসারকে প্রভাবিত করে।

সারসংক্ষেপ

বোর্নের মতো শেলগুলিতে, !#$^&*?[(){}<>~;'"`\|=এসপিসি, টিএবি, নিউলাইন এবং অষ্টম বিট সেট সহ কিছু বাইট বিশেষ বা হতে পারে (কমপক্ষে কিছু প্রসঙ্গে)।

বিশেষ অর্থ মুছে ফেলতে যাতে তাদের আক্ষরিক ব্যবহার করা হয়, আপনি উদ্ধৃতি ব্যবহার করেন।

ব্যবহার করুন:

  • '...' প্রতিটি চরিত্রের বিশেষ অর্থ মুছে ফেলতে:

    printf '%s\n' '\/\/ Those $quoted$ strings are passed literally as
    single arguments (without the enclosing quotes) to `printf`'
  • \ শুধুমাত্র একটি চরিত্রের বিশেষ অর্থটি সরিয়ে ফেলতে:

    printf '<%s>\n' foo bar\ baz #comment

    উপরে, কেবলমাত্র একটি পূর্বে স্থান অক্ষরটি \আক্ষরিকভাবে প্রেরণ করা হয় printf। অন্যান্যগুলি শেল দ্বারা টোকেন ডিলিমিটার হিসাবে বিবেচনা করা হয়।

  • ব্যবহার "..."অক্ষর থাকতেই প্যারামিটার সম্প্রসারণ যার ফলে উদ্ধৃত করা ( $var, $#, ${foo#bar}...), গাণিতিক সম্প্রসারণ ( $((1+1)), এছাড়াও $[1+1]কিছু শাঁস) ও কমান্ড প্রতিকল্পন ( $(...)বা পুরাতন ফর্ম `...`। আসলে, অধিকাংশ সময়, আপনি কি ভিতরে ঐ প্রসারণও লাগাতে চান যে কোনও ক্ষেত্রে ডাবল উদ্ধৃতি । আপনি যে অক্ষরগুলি এখনও বিশেষ (তার মধ্যে কেবলমাত্র) এর বিশেষ অর্থ মুছে ফেলতে আপনি এর \মধ্যে ব্যবহার করতে পারেন "..."
  • যদি স্ট্রিংটিতে 'অক্ষর থাকে, আপনি এখনও '...'বিশ্রামের জন্য ব্যবহার করতে পারেন এবং অন্যান্য উদ্ধৃতি পদ্ধতিগুলি ব্যবহার করতে পারেন যা উদ্ধৃতি 'দিতে পারে "'"বা \'বা (যেখানে উপলব্ধ) $'\'':

    echo 'This is "tricky", isn'\''t it?'
  • $(...)কমান্ড প্রতিস্থাপনের আধুনিক রূপটি ব্যবহার করুন । `...`বোর্ন শেলটির সাথে সামঞ্জস্য করার জন্য কেবল পুরানোটি ব্যবহার করুন , এটি খুব পুরানো সিস্টেমের মতো এবং কেবল পরিবর্তনশীল কার্যনির্বাহে যেমন ব্যবহার হয় না:

    echo "`echo "foo bar"`"

    যা বর্ন শেল বা ksh এর এটিএন্ডটি সংস্করণগুলির সাথে কাজ করবে না। বা:

    echo "`echo \"foo bar\"`"

    যা বর্ন এবং এটিএন্ডটি ksh এর সাথে কাজ করবে তবে এর সাথে নয় yash, তবে ব্যবহার করবে:

    var=`echo "foo bar"`; echo "$var"

    যা সবার সাথে কাজ করবে।

    তাদের দ্বিগুণ উদ্ধৃতি দিয়ে পোর্টেবল বাসা বাঁধাই অসম্ভব, তাই আবার, ভেরিয়েবল ব্যবহার করুন। বিশেষ ব্যাকস্ল্যাশ প্রক্রিয়াজাতকরণ থেকেও সাবধান থাকুন:

    var=`printf '%s\n' '\\'`

    ভিতরে কেবল একটি ব্যাকস্ল্যাশ সংরক্ষণ করবে $var, কারণ ব্যাকটিক্সের মধ্যে ব্যাকস্ল্যাশ প্রসেসিংয়ের একটি অতিরিক্ত স্তর রয়েছে (যেমন \, `, এবং $(এবং এছাড়াও "বাদে উদ্ধৃত করা হয় yash)) যাতে আপনার প্রয়োজন হয়

    var=`printf '%s\n' '\\\\'`

    অথবা

    var=`printf '%s\n' '\\\'

    পরিবর্তে.

পরিবার পরিবার

সিএনএস এবং টিসিএস-এর একটি উল্লেখযোগ্যভাবে আলাদা সিনট্যাক্স রয়েছে, যদিও বোর্ন শেলটির সাথে একটি সাধারণ heritageতিহ্য ভাগ করে নেওয়ার সাথে এখনও অনেক মিল রয়েছে।

বিশেষ অক্ষর:

  • "\'&|;()^`<>$, স্থান, নিউলাইন এবং ট্যাব কোট করা না থাকলে সর্বত্র বিশেষ।
  • #(সিএসএস হ'ল শেল যা #মন্তব্য লিডার হিসাবে পরিচিত ) কোনও স্ক্রিপ্টের শুরুতে বা অব্যক্ত স্থান, ট্যাব বা নিউলাইন অনুসরণ করে বিশেষ is
  • *?[ গ্লোববিং অপারেটর হিসাবে বিশেষ তাই তালিকা প্রসঙ্গে
  • {non-empty-string} বিশেষ (সিএসএস হ'ল শেল যা ব্রেস প্রসারণ প্রবর্তন করে)।
  • !এবং ^ইতিহাস সম্প্রসারণের অংশ হিসাবে আবার বিশেষ (আবার, একটি সিএসএস আবিষ্কার), এবং উদ্ধৃতি বিধিগুলি বিশেষ।
  • ~ (টিলডে সম্প্রসারণ এছাড়াও সিএসএস আবিষ্কার) কিছু প্রসঙ্গে বিশেষ।

অপারেটরদের উদ্ধৃতি

তারা বোর্ন শেলের মতো একই, তবে আচরণটি পৃথক। tcsh সিনট্যাক্স দৃষ্টিকোণ থেকে সিএসএসের মতো আচরণ করে, আপনি দেখতে পাবেন যে সিএসএসের অনেকগুলি সংস্করণে বাজে বাগ রয়েছে। মোটামুটি সিএসএসের ভার্চিং সংস্করণ পেতে টিসিএসের সর্বশেষতম সংস্করণটি পান।

  • \নিউলাইন (বোর্ন শেলের মতোই) ব্যতীত একটি একক অক্ষর থেকে বেরিয়ে যায়। এটিই কেবল উদ্ধৃত অপারেটর যা পালাতে পারে !\<newline>এটি এড়ায় না তবে কমান্ড বিভাজক থেকে টোকেন বিভাজক (স্থানের মতো) এ রূপান্তর করে
  • "..."নিজেই ছাড়া সমস্ত অক্ষর পালাতে $, `, NEWLINE এবং !। বোর্ন শেলটির বিপরীতে, আপনি \পালাতে $এবং `অভ্যন্তরে ব্যবহার করতে পারবেন না "...", তবে আপনি \পালাতে !বা নিউলাইন ব্যবহার করতে পারেন (তবে নিজেই নয় আগে !বা নতুন লাইনের আগে ছাড়া )। একটি আক্ষরিক !হয় "\!"এবং একটি আক্ষরিক \!হয় "\\!"
  • '...' নিজে !এবং নিউলাইন বাদে সমস্ত চরিত্রগুলি এড়িয়ে যায় । ডাবল !উক্তিগুলির মতো এবং নিউলাইন ব্যাকস্ল্যাশ সহ এড়ানো যায়।
  • কমান্ড প্রতিস্থাপনটি কেবল `...`সিনট্যাক্সের মাধ্যমে হয় এবং নির্ভরযোগ্যভাবে ব্যবহার করা যায় না।
  • পরিবর্তনশীল প্রতিস্থাপনটি বেশ খারাপভাবে ডিজাইন করা এবং ত্রুটির প্রবণ। একটি $var:qঅপারেটর ভেরিয়েবলগুলি জড়িত আরও নির্ভরযোগ্য কোড লিখতে সহায়তা করে।

সারসংক্ষেপ

পারলে সিএসএস থেকে দূরে থাকুন। আপনি যদি ব্যবহার করতে না পারেন:

  • সর্বাধিক অক্ষর উদ্ধৃত একক উদ্ধৃতি। !এবং নিউলাইন এখনও প্রয়োজন একটি \
  • \ বেশিরভাগ চরিত্র থেকে বাঁচতে পারে
  • "..."এর মধ্যে কিছু বিস্তৃতকরণের অনুমতি দিতে পারে, তবে এটি দুর্দান্ত বগী যদি তারা নিউলাইন এবং / অথবা ব্যাকস্ল্যাশ অক্ষর এম্বেড করে থাকে তবে কেবলমাত্র একক উদ্ধৃতি ব্যবহার করা এবং $var:qপরিবর্তনশীল প্রসারণের জন্য সবচেয়ে ভাল হতে পারে । আপনি নির্ভরযোগ্যভাবে কোনও অ্যারের উপাদানগুলিতে যোগদান করতে চাইলে আপনাকে লুপগুলি ব্যবহার করতে হবে।

rc পরিবার

rcএটি plan9শেল এবং এর বংশধরদের মতো esএবং akangaইউনিক্স এবং ইউনিক্স-পছন্দগুলিতে পোর্ট করা হয়েছে। এটি অনেকগুলি ক্লিনার এবং আরও ভাল সিনট্যাক্স সহ একটি শেল এবং আমরা যদি পশ্চাৎ সামঞ্জস্যের জন্য বোর্নের মতো শেলগুলির সাথে আটকে না থাকি তবে প্রত্যেকেই এটি ব্যবহার করবে।

rc/akanga

বিশেষ অক্ষর

  • #;&|^$=`'{}()<>, এসপিসি, ট্যাব এবং নিউলাইন যখন উদ্ধৃত না হয় সর্বদা বিশেষ।
  • *?[ অপারেটররা গ্লোববিং করছে।

উদ্ধৃতি অপারেটর

'...'একমাত্র উদ্ধৃতি অপারেটর। একটি লিটারেরাল একক উদ্ধৃতিতে 'লেখা আছে ''যেমন:

 echo 'it''s so simple isn''t it?'

es

esউপর ভিত্তি করে একটি পরীক্ষামূলক শেল হিসাবে দেখা যেতে পারে rc

যদিও এর কয়েকটি পার্থক্য রয়েছে। এই প্রশ্নোত্তর / এটির জন্য আগ্রহের বিষয়টি \হ'ল এটি একটি কোটিং অপারেটর (যা নিউলাইন বাদে সমস্ত বিশেষ অক্ষরের উদ্ধৃতি দেয়) এবং ব্যাকস্ল্যাশের \nজন্য নিউলাইন, যেমন এস্কেপ সিকোয়েন্সগুলি প্রবর্তন করতেও ব্যবহার করা যেতে পারে \b...

মাছ

মাছ একটি আপেক্ষিক নতুন আগত (প্রায় ২০০৫), মূলত ইন্টারেক্টিভ ব্যবহারের জন্য তৈরি এবং অন্যান্য শাঁসের থেকেও এটির চেয়ে আলাদা সিনট্যাক্স থাকে।

বিশেষ অক্ষর

  • "'\()$%{}^<>;&|উদ্ধৃত না করা অবস্থায় সর্বদা বিশেষ ( %অন্যান্য শাঁস থেকে উল্লেখযোগ্য পার্থক্য হিসাবে (পিড বিস্তারের জন্য নোট করুন ) এবং `বিশেষ নয়)
  • # (মন্তব্য) বিশেষ যখন অব্যক্ত স্থান, ট্যাব, নিউলাইন বা ;&|^<>
  • *?(তবে না [...]) গ্লোববিং অপারেটররা

অপারেটরদের উদ্ধৃতি

  • \নিউলাইন ব্যতীত একটি একক বিশেষ চরিত্রের উদ্ধৃতি দেয় তবে সাবধান থাকুন এটি সি এস্কেপ সিকোয়েন্স ( \n, \b...) পরিচিতি হিসাবে দ্বিগুণও হয় । আইডাব্লু, \nকোনও উদ্ধৃত nনয়, একটি নতুন লাইন।
  • "..."নিজেই বাদে সমস্ত কিছু উদ্ধৃত করে $এবং এগুলি থেকে বাঁচতে ব্যাকস্ল্যাশ এবং ব্যাকস্ল্যাশ ব্যবহার করা যেতে পারে। \<newline>একটি লাইন ধারাবাহিকতা (সরানো হয়েছে) ভিতরে "..."
  • '...'নিজেই এবং সমস্ত কিছু উদ্ধৃত করে এবং \এগুলি থেকে বাঁচতে আপনি ব্যাকস্ল্যাশ ব্যবহার করতে পারেন।

আমি সমস্ত প্রসঙ্গে কেবল বিশেষগুলি অন্তর্ভুক্ত করেছি (যাতে cএটি একইভাবে কাজ করে \c, এসটিডিআরআর ইত্যাদিতে cআউটপুট দেয় না c: command not found) এবং আমি এখানেই কথা বলছি sh। এছাড়াও, মনে রাখবেন যে এটি একটি "ক্লিন আপ" প্রশ্ন, অর্থাত্ এই জাতীয় চরিত্রগুলি আবরণ করার জন্য এটি এখানে 19+ টি প্রশ্ন জিজ্ঞাসা করতে হবে না। প্রশ্নটি এমন একটি ঘটনার জন্য পোস্ট করা হয়েছিল যে বিভিন্ন চরিত্রের জন্য বিভিন্ন প্রশ্ন জিজ্ঞাসা করা হয়, আমরা অবশ্যই এখানে পরিষ্কার করতে চাই!
ইকনস

ওয়েল, ?[অপারেটরগুলি গ্লোব্বিং করছে, তবে এটি সমস্ত প্রসঙ্গে বিশেষ নয়, তবে *মনে হয়, কারণ বর্তমান ডিরেক্টরিটির বিষয়বস্তু echo *খারাপভাবে echo(কোনও কিছুই এড়ায় না) es echo ?আক্ষরিক প্রতিধ্বনিত হয় ?এবং আক্ষরিক echo [প্রতিধ্বনি দেয় [। এছাড়াও, ]একটি গ্লোব্বিং মান্যকারীও।
ইকনস

1
@।, গ্লোব *সমস্ত অ-গোপন ফাইলগুলিতে, গোপন ?না থাকা একক-অক্ষর ফাইলগুলিতে, [a-z]যার নামটি একটি এবং জেড এর মধ্যে একক অক্ষর , এমন ফাইলগুলিতে প্রসারিত হয়। যখন তারা কোনও ফাইলের সাথে মেলে না (যেমন আপনার ক্ষেত্রে যেমনটি হয় ?), শেলের উপর নির্ভর করে, আপনি কোনও মিলের ত্রুটি পাবেন বা প্যাটার্নটি নিজেই প্রসারিত হবে। যাই হোক, এমনকি শেল যেখানে তারা নিজেদের প্রসারিত, তারা উদ্ধৃত প্রয়োজন যদি তারা পারে একটি ফাইল মেলে।
স্টাফেন চেজেলাস

তবে, গ্লোব হিসাবে নয়, *এখনও কিছুতে প্রসারিত।
ইকনস

@ ΈρικΚωνσταντόπουλος, এটির *মতো হয় ?, যদি এটি মেলে না ( *একা ক্ষেত্রে, কেবলমাত্র বর্তমান ডিরেক্টরিতে কেবল লুকানো ফাইল রয়েছে, a*এর কারণেই কোনও ফাইল নেই যার নাম দিয়ে শুরু হয় a...), এটি হয় প্রসারিত হয় নিজেই (অধিকাংশ বোর্ন মত শাঁস), অথবা কোন ম্যাচ ত্রুটি (উত্থাপন csh, tcsh, fish, (সাবধানবাণী) zsh, bash -O failglob(অথবা কিছু শাঁস বা যদি nullglob বিকল্প কিছুই বিস্তৃতি, তাড়াতাড়ি ইউনিক্স শেল) আরেকটা প্যাটার্ন এর বিস্তৃতি যে csh, tcsh, zsh -o cshnullglob, প্রারম্ভিক ইউনিক্স শেলগুলির কিছু)।
স্টাফেন চেজেলাস

4

1. পলায়ন

এই সমস্ত অক্ষরের সাথে \এটিকে এড়িয়ে চলুন (নিউলাইন / ক্যারেজ রিটার্নে কাজ করে না):

$ echo Use a \"\\\" symbol to escape characters.
Use a "\" symbol to escape characters.

2. ডাবল-উদ্ধৃতি

এর মধ্যে পুরো পাঠ্যটি সংযুক্ত করুন ":

$ var=variables;echo "Enclose text in \"s. You can also use $var in them. `echo Surprise!!!`"
Enclose text in "s. You can also use variables in them. Surprise!!!

3. একক উদ্ধৃতি

ডাবল-কোট হিসাবে একই, তবে বিশেষ কোনও টোকেন নেই।

$ proof=proveit;echo 'This should not read "proveit": $proof'
This should not read "proveit": $proof

1
আপনি fishশেলের আচরণ বর্ণনা করছেন , বোর্নের মতো শেল নয় যেখানে একক উদ্ধৃতি প্রতিটি চরিত্রকে উদ্ধৃত করে (ব্যাকস্ল্যাশ এর মধ্যে বিশেষ নয় '...')। মনে রাখবেন যে fish, %এছাড়াও একটি বিশেষ চরিত্র।
স্টাফেন চেজেলাস

@ StéphaneChazelas আমি কিভাবে জানি না fishকাজ, কিন্তু আমার অভিজ্ঞতা যে, মধ্যে sh, echo '\\'প্রতিধ্বনি \ এবং echo '\''প্রতিধ্বনি '
ইকনস

1
echo '\\'আউটপুটস \ কারণ আপনার echoএএনএসআই সি পালানোর ক্রমগুলি প্রসারিত করে (এর জন্য কিছু echoবাস্তবায়ন প্রয়োজন echo -e '\\') implement printf '%s\n' '\\'আউটপুটস \\।
স্টাফেন চেজেলাস

নোট যেটি shএকটি নির্দিষ্ট শেল সনাক্ত করে না, সেখানে প্রচুর বিভিন্ন এবং প্রায়শই বেমানান শেলগুলি রয়েছে এবং রয়েছে sh
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস ওহ ঠিক আছে, আমি এখন এটি পরিবর্তন করব। যাইহোক, \'একক-উদ্ধৃত অক্ষর ক্রমের ভিতরে একটি বিশেষ টোকেন কী?
ইকনস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.