آموزش خط فرمان: قسمت هفدهم، دابل کوتیشن (Double Quotes)

نوشته شده توسط فرشید نوتاش حقیقت.

دابل کوتیشن (Double Quotes)

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

البته استثنائاتی وجود دارد، علامت دلار ($)، بک‌اسلش (\)، بک‌کوتیشن (`). این یعنی اینکه فاصله بین کلمات، بسط نام مسیر، بسط تیلدا و بسط بریس همگی سرکوب می‌شوند ولی هنوز بسط پارامتر، بسط حسابی و جایگزینی فرمان انجام می‌شود. با استفاده از دابل‌کوتیشن “” می‌توان با فاصله بین اسامی فایل مقابله کرد.

مثلاً مجبوریم با فایلی با نام two words.txt کار کنیم. اگر به صورت ساده از فرمان ls –l برای لیست فایل two words.txt استفاده کنیم، چه اتفاقی می‌افتد؟

عملکرد فاصله‌اندازی بین کلمات توسط Shell باعث می‌شود که نام فایل به‌عنوان دو آرگومان جداگانه در نظر گرفته شود و نتیجه دلخواه حاصل نشود:

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

همچنین می‌توان نام فایل را تغییر داد تا دیگر با چنین مشکلاتی مواجه نشد. به همین دلیل است که توصیه می‌شود از فاصله در نام فایل‌ها خودداری کنید و در صورتی که نیاز دارید نام دو یا چندکلمه‌ای استفاده کنید. مثلاً از علامت زیر خط (_) استفاده نمایید.

بایستی بررسی کنیم که تاثیر دابل کوتیشن بر روی فرمان جایگزینی چیست. ابتدا ببینید که تقسیم کلمات (word splitting) چگونه کار می‌کند. در مثال قبلی دیدیم که word splitting چگونه فاصله اضافی موجود در متن ما را حذف کرد:

به‌طور پیش‌فرض تقسیم کلمه به دنبال حضور فضای خالی (Space)، تب (Tab) و خطوط جدید می‌گردد و آن‌ها را به عنوان حائلی بین کلمات در نظر می‌گیرد. به این معنی که در فضاهایی که کوتیشن ندارند، تب‌ها و خطوط جدید بخشی از متن به حساب نمی‌آیند؛ بلکه آن‌ها فقط به‌عنوان جداکننده در نظر گرفته می‌شوند. از آن‌جایی که آن‌ها کلمات را به دو آرگوکان جداگانه تقسیم می‌کنند، در این مثال خط فرمان شامل یک فرمان با چهار آرگومان متفاوت می‌باشد. حال اگر ما از دابل کوتیشن استفاده کنیم تقسیم کلمه نادیده گرفته شده و فاصله‌های موجود به عنوان حائل و جداکننده کلمات در نظر گرفته نمی‌شوند، بلکه همگی به‌عنوان بخشی از آرگومانی مستقل در نظر گرفته شده است:

این واقعیت که خطوط جدید به‌عنوان جداکننده کلمات در نظر گرفته می‌شوند موجب یک تاثیر جالب در جانشینی می‌شود. موارد پایین را با هم مقایسه کنید:

در مثال اول فرمان جانشینی بدون دابل کوتیشن است که نتیجه آن یک خط شامل ۳۸ آرگومان می‌باشد. در نتیجه فاصله‌های موجود و خطوط جدید حذف شدند. اما در مثال دوم نتیجه یک خط فرمان با یک آرگومان است که شامل فاضاهای موجود در خطوط جدید است.

نوشته آموزش خط فرمان: قسمت هفدهم، دابل کوتیشن (Double Quotes) اولین بار در لینوکس سیزن پدیدار شد.


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