Quoting Metacharacter در لینوکس
به جلسه پنجم از سری آموزش های لینوکس خوش آمدید در این قسمت به معرفی متاکاراکتر ها در لینوکس میپردازیم . خب درواقع درون Bash shell چندین کاراکتر دارای معانی و عملکردهای خاصی وجود دارد. به این کاراکترها متاکاراکتر (metacharacter) گفته می شود. متاکاراکترهای Bash shell شامل موارد زیر است :
* ? [ ] ‘ ” \ $ ; & ( ) | ^ < >
به عنوان مثال ، علامت دلار ($) نشان دهنده ی نام متغیر کاراکتر است . وقتی از این متاکاراکتر به همراه دستور echo استفاده می شود ، برنامه سعی می کند مقدار متغیر را بازیابی کرده و نمایش دهد . به مثال زیر دقت کنید :
$ echo $SHELL
/bin/bash
$
$ echo It cost $1.00
It cost .00
$
در مثال بالا با توجه به متاکاراکتر $ ، فرمان echo هر دو عبارت SHELL$ و 1$ را به عنوان متغیرهای مختلف در نظر می گیرد. از آنجا که 1$ در دستور دوم echo متغیر نیست و هیچ ارزشی ندارد ، در خروجی echo چیزی با 1$ نمایش داده نمی شود . برای رفع این مشکل ، می توانید از shell quoting استفاده کنید. shell quoting به شما امکان می دهد تا از متا کاراکتر ها به عنوان کاراکترهای منظم استفاده کنید. برای این کار ، از backslash (\) استفاده کنید . دستور زیر به شما در درک مفهوم استفاده از دستور echo و shell quoting در یک متاکاراکتر واحد کمک میکند .
$ echo It cost \$1.00
It cost $1.00
$
$ echo Is Schrodinger\’s cat alive or dead\?
Is Schrodinger’s cat alive or dead?
$
در حالی که بک اسلش برای shell quoting یک متا کاراکتر مفید است ، اما استفاده از آن هنگامی که چندین مورد وجود داشته باشد ، کار خسته کننده ای است . برای راحتی بیشتر ، برای چندین متاکاراکتر ، آنها را بین علامت تک کوتیشن یا دبل کوتیشن قرار دهید. چند مثال shell quoting از چند متاکاراکتر در ادامه آورده شده است .
$ echo Is “Schrodinger’s” cat alive or “dead?”
Is Schrodinger’s cat alive or dead?
$
$ echo “Is Schrodinger’s cat alive or dead?”
Is Schrodinger’s cat alive or dead?
$
$ echo ‘Is Schrodinger’s cat alive or dead?’
> ^C
$
در مثال های بالا توجه کنید که دو روش quoting اول کار می کنند اما روش آخر کار نمیکند . پس هنگامی که متاکاراکتر دارای تک کوتیشن باشد ، باید از روش shell quoting دیگری مانند بک اسلش یا دبل کوتیشن استفاده کنید.