سیستم عامللینوکس

کاراکترهای خاص در لینوکس و کاربرد آن ها

کاراکترهای خاص در لینوکس

در این مقاله به معرفی کاراکترهای خاص در لینوکس، Bash و یا سیستم‌های مشابه یونیکس خواهیم پرداخت. منظور از کاراکترهای ویژه (~، *، |، > و غیره) میباشد. کاراکترهای خاص مجموعه‌ای از نمادها هستند که Bash به دو روش مختلف با آن‌ها برخورد می‌کند. وقتی شما آن‌ها را در Bash وارد می‌کنید، آن‌ها به عنوان دستورات عمل می‌کنند و به پوسته می‌گویند که یک عملکرد خاصی انجام دهد. آن‌ها را می‌توان به عنوان دستورات تک کاراکتری در نظر گرفت.

گاهی اوقات، احتمال دارد که فقط به چاپ یک کاراکتر نیاز داشته باشید و خواهان این باشید که آن کاراکتر به عنوان یک نماد جادویی عمل نکند. در چنین مواقعی، روشی وجود دارد که شما می‌توانید از یک کاراکتر برای نمایش خود آن به جای اجرای ویژگی خاص آن استفاده کنید. در ادامه، ما کاراکترهای خاص و نحوه استفاده از آن‌ها را بررسی خواهیم کرد.

کاراکتر ~ مخفف Home Directory

تیلدا (~) یا tilde مخفف دایرکتوری اصلی شما است. این بدان معناست که شما مجبور نیستید مسیر کامل دایرکتوری اصلی خود را در دستورات تایپ کنید. در هر کجای فایل سیستم که هستید، می توانید از این دستور برای رفتن به فهرست اصلی خود استفاده کنید:

cd ~

همچنین می توانید از این دستور با مسیرهای نسبی استفاده کنید. به عنوان مثال، اگر جایی در فایل سیستم هستید که در دایرکتوری اصلی شما نیست و می خواهید به دایرکتوری kaliboys که خود آن نیز در دایرکتوری site قرار دارد وارد شوید، از tilde برای انجام این کار استفاده کنید:

cd ~/site/kaliboys

کاراکتر . مخفف Current Directory

نقطه (.) یا dot نشان دهنده دایرکتوری فعلی است. اگر از آرگومان -a در دستور ls استفاده کنید، کاراکتر dot را در فهرست های دایرکتوری مشاهده می کنید.

ls -a

کاراکترهای خاص در لینوکس - Current Directory

همچنین می توانید از نقطه در دستورات برای نشان دادن مسیر دایرکتوری فعلی خود استفاده کنید. به عنوان مثال، اگر می خواهید یک اسکریپت را از دایرکتوری فعلی اجرا کنید، آن را به این صورت صدا کنید:

./script-kaliboys.sh

این به Bash می‌گوید که در فهرست فعلی فایل را جستجو کند. به این ترتیب، دایرکتوری های موجود در مسیر شما را برای مطابقت اجرایی یا اسکریپت جستجو نمی کند.

کاراکتر .. مخفف Parent Directory

نقطه دوتایی (..) یا double dot نشان دهنده دایرکتوری والد دایرکتوری فعلی شما است. شما می توانید از این برای بالا رفتن یک سطح در درخت دایرکتوری استفاده کنید.

cd ..

همچنین می توانید از این دستور با مسیرهای نسبی استفاده کنید. به عنوان مثال، اگر می خواهید یک سطح در درخت دایرکتوری بالا بروید و سپس دایرکتوری دیگری را در آن سطح وارد کنید.

همچنین می‌توانید از این تکنیک برای انتقال سریع به دایرکتوری در همان سطح درخت دایرکتوری با فهرست فعلی خود استفاده کنید. شما یک سطح بالا می روید و سپس یکی را به دایرکتوری دیگری پایین می آورید.

cd ../gc_help

کاراکتر / مخفف Path Directory Separator

کاراکتر (/) که اغلب فقط اسلش نامیده می شود برای جدا کردن دایرکتوری ها در نام مسیر استفاده کنید.

ls ~/site/kaliboys

علامت اسلش نشان دهنده کوتاه ترین مسیر دایرکتوری ممکن است. از آنجایی که همه چیز در درخت دایرکتوری لینوکس از دایرکتوری ریشه شروع می شود، می توانید از این دستور برای انتقال سریع به دایرکتوری ریشه استفاده کنید:

cd /

کاراکتر # مخفف Comment or Trim Strings

علامت # یا هشتک در برنامه‌نویسی و اسکریپت‌نویسی در محیط‌های شل مانند Bash، به شما این امکان را می‌دهد تا توضیحاتی بنویسید یا از یک رشته بخشی را حذف کنید. این کارها به شما کمک می‌کنند کد‌های خود را توضیح دهید و به سادگی اطلاعات اضافی را از رشته‌ها حذف کنید.

# This is a comment about a variable's value
example_variable="Example value"

استفاده از علامت هش برای نوشتن توضیحات در کد یک شیوه عالی برای توضیح عملکرد کد به همراه گذاشتن نکات مهم است. این توضیحات توسط شل نادیده گرفته می‌شوند و تنها به منظور توضیحات برای برنامه‌نویس یا تیم توسعه انسانی هستند.

شما همچنین می‌توانید از علامت هشتک برای قطع کردن بخشی از یک رشته استفاده کنید. این کار باعث حذف متنی خاص از ابتدای رشته می‌شود. برای مثال، فرض کنید می‌خواهیم “Hello, World!” را به “World!” تغییر دهیم.

example_string="Hello, World!"
echo ${example_string#Hello, }

در این مثال، ما از علامت هش برای حذف “Hello, ” از ابتدای رشته استفاده کردیم و نتیجه تنها “World!” خواهد بود. این تغییر تنها در خروجی دستور echo تاثیر دارد و متغیر اصلی تغییر نمی‌کند.

کاراکتر ? مخفف Single Character Bash Wildcard

پوسته Bash از سه علامت عام پشتیبانی می کند که یکی از آنها علامت سوال (؟) است. شما برای جایگزینی کاراکترها در قالب های نام فایل از حروف عام استفاده می کنید. نام فایلی که حاوی یک علامت عام است، الگویی را تشکیل می‌دهد که با طیفی از نام‌های فایل مطابقت دارد، نه فقط با یکی.

علامت سوال دقیقا یک کاراکتر را نشان می دهد. الگوی نام فایل زیر را در نظر بگیرید:

ls kaliboys?.txt

این به معنای “فهرست کردن هر فایلی با نامی است که با “kaliboys” شروع می شود و هر کاراکتری قبل از پسوند نام فایل دنبال می شود.”

همچنین می توانید از علامت سوال برای یافتن تمام فایل هایی با تعداد کاراکتر مشخص در نام فایل ها استفاده کنید. در این قسمت تمام فایل های متنی که دقیقاً شامل پنج کاراکتر در نام فایل هستند فهرست می شود:

ls ?????.txt

کاراکتر * مخفف Character Sequence Bash Wildcard

می توانید از علامت ستاره (*) برای هر دنباله ای از کاراکترها، از جمله بدون کاراکتر استفاده کنید. الگوی نام فایل زیر را در نظر بگیرید:

ls kaliboys*

این دستور با تمام فایل هایی که «source» نامیده می شوند، صرف نظر از پسوند فایل مطابقت دارد.

ls source.*

کاراکتر [] مخفف Character Set Wildcard

همانطور که در بالا توضیح داده شد، شما از علامت سوال برای نمایش هر کاراکتر و از ستاره برای نشان دادن هر دنباله ای از کاراکترها (شامل بدون کاراکتر) استفاده می کنید.

به عنوان یک مثال ساده، فرض کنید که شما می‌خواهید تمام فایل‌هایی که نام آنها با “image” آغاز می‌شود و دارای پسوند‌های “jpg” یا “png” هستند را جستجو کنید. شما می‌توانید از کاراکترهای مجموعه کاراکتری به این صورت استفاده کنید:

ls *[iI][mM][aA][gG][eE]*.[jJ][pP][gG] *[iI][mM][aA][gG][eE]*.[pP][nN][gG]

در اینجا، [iI][mM][aA][gG][eE] نمایانگر هر حرفی از کاراکترهای “image” یا “Image” است و [jJ][pP][gG] و [pP][nN][gG] به ترتیب نمایانگر پسوندهای “jpg” و “png” هستند. این دستور موجب نمایش تمام فایل‌هایی می‌شود که با “image” آغاز می‌شوند و پسوند آن‌ها “jpg” یا “png” است.

کاراکتر ; مخفف Shell Command Separator

می توانید هر تعداد دستور را که دوست دارید در خط فرمان تایپ کنید، به شرطی که هر یک از آنها را با یک نقطه ویرگول (;) جدا کنید. در مثال زیر این کار را انجام خواهیم داد:

ls > kaliboys.txt; wc -l kaliboys.txt; rm kaliboys.txt

توجه داشته باشید که فرمان دوم حتی در صورت عدم موفقیت اولین فرمان اجرا می شود، حتی در صورت عدم موفقیت فرمان دوم اجرا می شود و به همین ترتیب.

اگر می خواهید دنباله اجرا را در صورت عدم موفقیت یک فرمان متوقف کنید، به جای نقطه ویرگول از علامت (&&) که به معنیه and می باشد، استفاده کنید:

cd ./doesntexist && cp ~/Documents/reports/*.

کاراکتر & مخفف Background Process

کاراکتر “&” وظیفه ای جالب در لینوکس و محیط ترمینال دارد. این کاراکتر به شما اجازه می‌دهد تا یک فرآیند را به عنوان پس‌زمینه اجرا کنید. وقتی یک دستور را در ترمینال لینوکس وارد می‌کنید و آن دستور اجرا می‌شود، پس از اتمام آن، شما به خط فرمان باز می‌گردید تا دستورات دیگر را وارد کنید. این عملیات به طور معمول در یک یا دو لحظه انجام می‌شود.

اما وقتی یک برنامه بزرگتر مانند “gedit” را اجرا می‌کنید، تا زمانی که برنامه بسته نشود، ترمینال شما قفل می‌شود و نمی‌توانید از آن برای اجرای دستورات دیگر استفاده کنید.

با استفاده از کاراکتر “&” می‌توانید برنامه را به عنوان یک فرآیند پس‌زمینه اجرا کنید. به عبارت ساده‌تر، شما می‌توانید برنامه را اجرا کنید و به استفاده از ترمینال خود ادامه دهید. برای انجام این کار، شما کافی است که کاراکتر “&” را به انتهای دستور اضافه کنید. به عنوان مثال:

gedit command_address.page &

وقتی این دستور را اجرا می‌کنید، Bash شماره فرآیند راه‌اندازی شده را به شما نشان می‌دهد و سپس شما را به خط فرمان باز می‌گرداند. از این پس، می‌توانید به استفاده از ترمینال خود برای وارد کردن دستورات دیگر ادامه دهید و برنامه “gedit” به عنوان یک پس‌زمینه (background) اجرا می‌شود.

کاراکتر > مخفف Input Redirection

کاراکتر “>” در محیط لینوکس به عنوان “ورودی هدایت” شناخته می‌شود. این کاراکتر به شما این امکان را می‌دهد که داده‌ها را از یک فایل به عنوان ورودی به یک دستور ارسال کنید.

بسیاری از دستورات لینوکس می‌توانند ورودی‌های خود را از دو منبع مختلف دریافت کنند:

1. از یک فایل: شما می‌توانید داده‌ها را از یک فایل خوانده و به عنوان ورودی به یک دستور ارسال کنید. برای انجام این کار، از کاراکتر “>” استفاده می‌کنید. به عنوان مثال:

sort < input.txt

در این مثال، دستور “sort” داده‌های موجود در فایل “input.txt” را می‌خواند و آن‌ها را مرتب می‌کند.

2. از خروجی یک دستور دیگر: کاراکتر “>” به شما امکان می‌دهد داده‌ها را از یک فایل به عنوان ورودی به یک دستور ارسال کنید. برای مثال:

wc -l < input.txt

در این مثال، دستور “wc -l” تعداد خطوط موجود در فایل “input.txt” را شمارش می‌کند. ورودی این دستور از فایل “input.txt” گرفته می‌شود و نتایج در ترمینال نمایش داده می‌شود.

کاراکتر < مخفف Output Redirection

شما میتوایند از کاراکتر “<” برای تغییر مسیر (یا هدایت) خروجی یک دستور به یک فایل استفاده می‌کنید. این کاراکتر به شما امکان می‌دهد نتایج یک دستور را در یک فایل ذخیره کنید.

در مثال زیر، ابتدا دستور “ls” اجرا می‌شود و خروجی آن (لیست فایل‌ها و پوشه‌ها) با استفاده از “<” به فایلی به نام “files.txt” هدایت می‌شود:

ls > files.txt

سپس با استفاده از دستور “cat” می‌توانیم محتوای فایل “files.txt” را در ترمینال نمایش دهیم:

cat files.txt

در مثال دیگر، از شماره 2 و “<” برای تغییر مسیر خروجی پیام‌های خطا به فایل “errors.txt” استفاده می‌شود:

wc doestexist.txt 2> errors.txt

اگر فایل “doestexist.txt” وجود نداشته باشد، هر پیام خطای مربوطه در فایل “errors.txt” ذخیره می‌شود. سپس با دستور “cat” می‌توانید محتوای فایل “errors.txt” را مشاهده کنید:

cat errors.txt

این کارها به شما امکان می‌دهند نتایج دستورات را به فایل‌ها منتقل کنید و به جای نمایش در ترمینال، آن‌ها را در فایل‌ها ذخیره کنید تا بعداً بتوانید آن‌ها را بررسی کنید یا به دیگران ارسال کنید.

کاراکتر | مخفف Pipe

کاراکتر “|” یا پایپ در محیط لینوکس به شما امکان می‌دهد تعدادی دستور را به یکدیگر متصل کرده و خروجی یک دستور را به عنوان ورودی به دستور بعدی ارسال کنید. این عملیات به شما اجازه می‌دهد دستورات مختلف را با هم ترکیب کرده و نتایج پیچیده‌تری از داده‌ها به دست آورید.

در مثال زیر، ما سه دستور را با کمک کاراکتر پایپ به یکدیگر متصل کرده‌ایم:

cat words.txt | grep [cC] | sort -r
  1. cat words.txt: این دستور محتوای فایل “words.txt” را نمایش می‌دهد.
  2. grep [cC]: این دستور از محتوای خروجی دستور قبلی (cat) تمام خطوطی را استخراج می‌کند که حاوی حروف “c” کوچک یا بزرگ باشند.
  3. sort -r: این دستور نتایج استخراج شده توسط دستور grep را مرتب می‌کند. آرگومان “-r” به معنای مرتب‌سازی به صورت معکوس (نزولی) است.

شما تمام خطوطی را که حاوی حروف “c” کوچک یا بزرگ باشند را از فایل “words.txt” استخراج می‌کنید، سپس این خطوط را به ترتیب معکوس (نزولی) نمایش می‌دهید. این به شما امکان می‌دهد به سادگی داده‌های خود را فیلتر کرده و مرتب سازی کنید.

کاراکتر ! مخفف Pipeline logical NOT and History Operator

علامت تعجب (!) در لینوکس به عنوان عملگر منطقی “NOT” و همچنین برای دسترسی به تاریخچه دستورات استفاده می‌شود.

1. عملگر منطقی “NOT”: در سیستم‌های لینوکس و دستورات خط فرمان، از علامت تعجب (!) به عنوان “NOT” منطقی استفاده می‌شود. به عبارت ساده، اگر شما یک دستور را با این علامت شروع کنید، عملی که باعث می‌شود دستور نادرست باشد، درست می‌شود و برعکس

2. دسترسی به تاریخچه دستورات: شما می‌توانید از علامت تعجب (!) برای دسترسی به تاریخچه دستورات خود استفاده کنید. برای مثال:

  • !!: این دستور آخرین دستور را اجرا می‌کند. به عبارت دیگر، دستوری که به تازگی اجرا شده است.
  • !24: این دستور، دستور با شماره 24 از تاریخچه دستورات را اجرا می‌کند. شماره دستور معمولاً توسط دستور history نمایش داده می‌شود.

کاراکتر $ مخفف Variable Expressions

در پوسته Bash، متغیرها مانند ظرف‌هایی برای نگهداری انواع اطلاعات هستند. شما می‌توانید به آن‌ها مقادیر اختصاص دهید و در ترمینال از این مقادیر برای اجرای دستورات و نمایش اطلاعات استفاده کنید.

دسترسی به متغیرها: برای دسترسی به مقادیر متغیرها در Bash، از علامت دلار ($) قبل از نام متغیر استفاده می‌شود. به عنوان مثال:

  • echo $USER: این دستور نام کاربری فعلی را نمایش می‌دهد.

کاراکترهای خاص در لینوکس - Variable Expressions

  • echo $HOME: این دستور مسیر دایرکتوری اصلی کاربر را نمایش می‌دهد.
  • echo $PATH: این دستور مسیرهای جستجوی دستورات اجرایی را نمایش می‌دهد.

ایجاد متغیر: برای ایجاد یک متغیر در Bash، باید یک نام برای آن انتخاب کنید و مقدار مورد نظر را برای آن تعیین کنید. ایجاد متغیر شامل اسم متغیر و علامت مساوی (=) و مقدار می‌شود. مثلاً:

  • kaliboys=love: این دستور یک متغیر به نام “kaliboys” ایجاد می‌کند و به آن مقدار “love” را اختصاص می‌دهد.
  • Number=2023: این دستور یک متغیر به نام “Number” ایجاد می‌کند و به آن مقدار 2023 را اختصاص می‌دهد.

استفاده از پرانتز در متغیرها: می‌توانید از پرانتز‌های خودکار (یا curly braces) {} برای تغییر مسیر و عمل‌های پردازشی بر روی مقادیر متغیرها استفاده کنید. به عنوان مثال:

  • echo ${MyString}: این دستور مقدار متغیر “MyString” را نمایش می‌دهد.
  • echo ${MyString:6}: این دستور زیررشته‌ای را از موقعیت ششم متغیر “MyString” به بعد نمایش می‌دهد.
  • echo ${MyString:0:6}: این دستور زیررشته‌ای از موقعیت صفرم متغیر “MyString” با طول شش کاراکتر را نمایش می‌دهد.
  • echo ${MyString:4:4}: این دستور زیررشته‌ای را از موقعیت چهارم متغیر “MyString” با طول چهار کاراکتر نمایش می‌دهد.

Quoting Special Characters

اگر می خواهید از یک کاراکتر خاص به عنوان یک کاراکتر عادی استفاده کنید، باید به پوسته Bash بگویید. به این کار نقل قول می گویند و سه راه برای انجام آن وجود دارد.

اگر متن را در گیومه (“…”) قرار دهید، این مانع از عمل Bash بر روی اکثر کاراکترهای خاص می شود و آنها فقط چاپ می کنند. یک استثنای قابل توجه، علامت دلار ($) است. همچنان به عنوان کاراکتر عبارات متغیر عمل می کند، بنابراین می توانید مقادیر متغیرها را در خروجی خود قرار دهید.

به عنوان مثال، این دستور تاریخ و زمان را چاپ می کند:

echo "Today is $(date)"

اگر متن را مانند شکل زیر در یک نقل قول (‘…’) قرار دهید، عملکرد همه کاراکترهای ویژه متوقف می شود:

echo 'Today is $(date)'

برای جلوگیری از عملکرد کاراکتر زیر به عنوان یک کاراکتر خاص، می توانید از یک بک اسلش ( \ ) استفاده کنید.. مثال زیر را ببینید:

echo "Today is \$(date)"

نتیجه گیری

در این مقاله به معرفی کاراکترهای خاص در لینوکس پرداختیم و کاربردهای مختلف آنها را برای شما توضیح دادیم. این کاراکترها ابزارهای قدرتمندی هستند که به کاربران لینوکس امکان می‌دهند تا دستورات خود را بهبود ببخشند و کارایی سیستم‌های خود را افزایش دهند.

منبع
howtogeek

یوسف وفایی

فارغ التحصیل کارشناسی IT، علاقه مند به برنامه نویسی و علم امنیت، عاشق یادگیری حرفه های جدید، کنجکاو برای همه چیز، همچنین همیشه تلاش میکنم تا به هدفم برسم...

یک دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


دکمه بازگشت به بالا