এটি শেলের উপর নির্ভর করে। বিশদ জন্য আপনার শেল ম্যানুয়াল পরীক্ষা করুন।
এছাড়াও লক্ষ করুন যে কিছু চরিত্র কয়েকটি প্রসঙ্গে কেবল বিশেষ। উদাহরণস্বরূপ, বেশিরভাগ শেলগুলিতে *
এবং ?
কেবল পসিক্স বা সিএস-এর মতো শেলগুলিতে তালিকা প্রসঙ্গে ~
বিশেষ , কেবল কোনও শব্দের শুরুতে বা কিছু চরিত্র অনুসরণ করার পরে বিশেষ :
। জন্য একই =
মধ্যে zsh
। কিছু শেলগুলিতে [
কেবল তখনই বিশেষ হয় যখন ক এর সাথে (কিছু সীমাবদ্ধতার সাথে) মেলে ]
।
কিছু শেলের মতো bash
বা yash
, ফাঁকা টোকেন ডিলিমিটারগুলির মতো বিশেষ অক্ষরও লোকালের সাথে পৃথক হয়।
উদ্ধৃতি অপারেটরগুলি (সেই অক্ষরের বিশেষ অর্থ মুছে ফেলার জন্য) শেলগুলির মধ্যেও প্রচুর পরিমাণে পৃথক হয়।
বোর্নের মতো শাঁস
বোর্ন-জাতীয় শেলগুলির সংক্ষিপ্তসার (এটি সেই শাঁস যেগুলি sh
80 এর দশক থেকে কোনও সিস্টেম বা অন্য কোনওটিতে ডাকা হত):
বোর্ন শেল
বিশেষ অক্ষর:
"\'&|;()^`<>$
, স্থান, নিউলাইন এবং ট্যাব কোট না করা হলে সাধারণ কমান্ড লাইনে বিশেষ।
#
(প্রথম সংস্করণ ব্যতীত) একটি রেখার শুরুতে বা অব্যক্ত স্থান, ট্যাব বা অনুসরণ করে বিশেষ &|()^<>;`
।
{
এবং }
এটি কেবল বিশেষ যে তারা শেল কীওয়ার্ডগুলি (কেবলমাত্র কমান্ড পজিশনে শব্দ)।
*?[
গ্লোববিং অপারেটর হিসাবে বিশেষ, তাই শুধুমাত্র তালিকার প্রসঙ্গে। এর ক্ষেত্রে [
এটি [...]
হ'ল গ্লোব্বিং অপারেটর, বিশেষ অর্থটি সরাতে হয় [
বা ]
কেবল উদ্ধৃত করা দরকার।
=
প্রাসঙ্গিক ক্ষেত্রে যখন এটি একটি অ্যাসাইনমেন্ট অপারেটর হিসাবে বিবেচিত হয় তখন বিশেষ হয়। এটি একটি সাধারণ কমান্ডে, সমস্ত শব্দের জন্য যা কোনও আর্গুমেন্ট অনুসরণ করে না (পরে বাদে 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>
একটি লাইন ধারাবাহিকতা (সরানো হয়েছে) ভিতরে "..."
।
'...'
নিজেই এবং সমস্ত কিছু উদ্ধৃত করে এবং \
এগুলি থেকে বাঁচতে আপনি ব্যাকস্ল্যাশ ব্যবহার করতে পারেন।
=
,@
এবং%
কিছু প্রসঙ্গে কিছু শেলের মধ্যে বিশেষ।