یادگیری پوسته bash ، چاپ دوم توسط

ساخت وبلاگ

دسترسی کامل به یادگیری Bash Shell ، Edition دوم و 60K+ عناوین دیگر ، با آزمایش 10 روزه رایگان O'Reilly.

همچنین رویدادهای آنلاین زنده ، محتوای تعاملی ، مواد آماده سازی صدور گواهینامه و موارد دیگر وجود دارد.

شخصیت های خاص و نقل قول

The characters ,>، |، و و چهار نمونه از شخصیت های خاص که معانی خاصی برای پوسته دارند. کارتهای وحشی که قبلاً در این فصل دیدیم ( * ،؟ ، و [.]) نیز شخصیت های خاصی هستند.

جدول 1. 6 معانی همه شخصیت های خاص را فقط در خطوط فرمان پوسته ارائه می دهد. شخصیت های دیگر در موقعیت های خاص معانی خاصی دارند ، مانند عبارات منظم و اپراتورهای کنترل رشته ای که در فصل 3 و فصل 4 خواهیم دید.

جدول 1-6. شخصیت های خاص

شخصیت معنی فصل را ببینید
~ دایرکتوری خانه 1
` تعویض فرمان (باستانی) 4
# اظهار نظر 4
$ بیان متغیر 3
& کار پس زمینه 1
* دارای کارت وحشی رشته 1
( زیر زیرشاخه را شروع کنید 8
) زیرشاخه پایان 8
نقل قول شخصیت بعدی 1
| لوله 1
[ کارت وحشی را شروع کنید 1
] کارت وحشی را پایان دهید 1
  بلوک فرمان را شروع کنید 7
> بلوک فرمان پایان 7
; جدا کننده فرمان پوسته 3
' نقل قول قوی 1
  نقل قول ضعیف 1
  تغییر مسیر ورودی 1
> تغییر مسیر خروجی 1
/ جداکننده دایرکتوری نام 1
? کارتن 1
! خط لوله منطقی نیست 5

نقل قول

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

بارزترین وضعیتی که ممکن است شما نیاز به نقل یک رشته داشته باشید با دستور echo است که فقط استدلال های آن را می گیرد و آنها را به خروجی استاندارد چاپ می کند. نکته این چیست؟همانطور که در فصل های بعدی مشاهده خواهید کرد ، پوسته پردازش را در خطوط فرمان انجام می دهد - که بیشتر آنها شامل برخی از شخصیت های خاص ذکر شده در جدول 1. 6 است. ECHO راهی برای تهیه نتیجه آن پردازش در خروجی استاندارد است.

But what if we wanted to print the string 2 * 3>5 آیا نابرابری معتبر است؟فرض کنید این را تایپ کرده اید:

شما پوسته خود را سریع می گیرید ، گویی هیچ اتفاقی نیفتاده است! اما پس از آن یک پرونده جدید با نام 5 وجود دارد که حاوی "2" است ، نام همه پرونده ها در فهرست فعلی شما ، و سپس رشته 3 یک نابرابری معتبر است. مطمئن شوید که دلیل آن را درک کرده اید.[17]

با این حال ، اگر تایپ کنید:

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

این دقیقاً همان نتیجه را دارد.

توجه داشته باشید که جدول 1. 6 به نقل از دو برابر (") به عنوان نقل قول های ضعیف لیست می کند. یک رشته در نقل قول های مضاعف در معرض برخی از مراحلی است که پوسته برای پردازش خطوط فرمان انجام می دهد ، اما نه همه. (به عبارت دیگر ، فقط با برخی از شخصیت های خاص رفتار می کندخاص.) در فصل های بعدی خواهید دید که چرا نقل قول های مضاعف گاهی اوقات ترجیح داده می شوند ؛ فصل 7 شامل جامع ترین توضیحات قوانین پوسته برای نقل قول و سایر جنبه های پردازش خط فرمان است. در حال حاضر ، شما باید به نقل قول های مجرد بپیوندیدبشر

بیدر

راه دیگر برای تغییر معنی یک شخصیت ، پیشی از آن با یک backslash () است. به این شخصیت backslash می گویند. در بیشتر موارد ، هنگامی که شما یک شخصیت را پشت سر می گذارید ، آن را نقل می کنید. مثلا:

نتایج مشابهی را به دست می آورد که اگر رشته را با نقل قول های منفرد احاطه کرده اید. برای استفاده از یک پشتی تحت اللفظی ، فقط آن را با نقل قول ها ('') یا ، حتی بهتر ، از آن استفاده کنید (\).

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

برای استفاده از FIND ، ریشه درخت مورد نظر برای جستجو و استدلالهایی را که مشخصات فایل (های) مورد نظر برای پیدا کردن را توصیف می کند ، تهیه می کنید. به عنوان مثال ، دستور پیدا می کند.- Name String درخت دایرکتوری را جستجو می کند که ریشه آن دایرکتوری فعلی شما برای پرونده هایی است که نام آنها با رشته مطابقت دارد.(سایر استدلال ها به شما امکان می دهند با اندازه پرونده ، مالک ، مجوزها ، تاریخ آخرین دسترسی و غیره جستجو کنید)

شما می توانید از کارتهای وحشی در رشته استفاده کنید ، اما باید آنها را نقل کنید ، به طوری که خود فرمان می تواند آنها را در برابر نام پرونده ها در هر دایرکتوری که جستجو می کند مطابقت دهد. فرمان پیدا کردن-Name ' * . c' با تمام پرونده هایی که نام آنها به پایان می رسد . C در هر نقطه از فهرست فعلی ، زیر مجموعه ها ، زیر مجموعه های فرعی و غیره مطابقت خواهد داشت.

نقل قول علائم

همچنین می توانید از یک backslash استفاده کنید تا نقل قول های مضاعف را در یک رشته نقل شده قرار دهید. مثلا:

خروجی زیر را تولید می کند:

با این حال ، این کار با نقل قول های منفرد در عبارات نقل شده کار نمی کند. به عنوان مثال ، Echo 'Hatter' Tea Party "به شما مهمانی چای هاتر نمی دهد. شما می توانید به روش های مختلف این محدودیت را بدست آورید. ابتدا سعی کنید نقل قول ها را حذف کنید:

اگر شخصیت های دیگری خاص نیستند (همانطور که در اینجا وجود دارد) ، این کار می کند. در غیر این صورت ، می توانید از دستور زیر استفاده کنید:

یعنی "" (یعنی نقل قول واحد ، backslash ، نقل قول واحد ، نقل قول واحد) مانند یک نقل قول واحد در یک رشته نقل شده عمل می کند. چرا؟اولین "در" "رشته نقل شده ای را که ما با آن شروع کردیم به پایان می رساند (" هاتر) ، "یک نقل قول یک لفظ را درج می کند ، و مورد بعدی" یک رشته نقل شده دیگر را شروع می کند که با کلمه "مهمانی" به پایان می رسد. اگر این موضوع را درک کنید ، در حل و فصل سایر موارد حیرت انگیز که ناشی از نحو رمزنگاری شده پوسته است ، مشکلی نخواهید داشت.

خطوط مداوم

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

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

Whether you use a backslash or a single quote, you are telling the shell to ignore the special meaning of the RETURN character. After you press RETURN, the shell understands that you haven’t finished your command line (i.e., since you haven’t typed a “real” RETURN), so it responds with a secondary prompt, which is>به طور پیش فرض ، و منتظر هستید تا خط را تمام کنید. می توانید هر چند بار که می خواهید یک خط ادامه دهید.

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

یا می توانید از این طریق این کار را انجام دهید:

کلیدهای کنترل

کلیدهای کنترل - به این ترتیب که با نگه داشتن کلید کنترل (یا CTRL) و ضربه زدن به کلید دیگر ، نوع دیگری از شخصیت خاص را تایپ می کنید. اینها به طور معمول چیزی را روی صفحه نمایش شما چاپ نمی کنند ، اما سیستم عامل تعدادی از آنها را به عنوان دستورات ویژه تفسیر می کند. شما از قبل یکی از آنها را می دانید: بازگشت در واقع همان CTRL-M است (آن را امتحان کنید و ببینید). شما احتمالاً از Backspace یا Del Key برای پاک کردن تایپ ها در خط فرمان خود نیز استفاده کرده اید.

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

شاید دشوارترین چیز در مورد کلیدهای کنترل این باشد که آنها می توانند از سیستم به سیستم دیگر متفاوت باشند. ترتیب معمول در جدول 1. 7 نشان داده شده است ، که کلیدهای کنترل را نشان می دهد که تمام نسخه های مهم مدرن پشتیبانی یونیکس. توجه داشته باشید که del و ctrl-؟همان شخصیت هستند

می توانید از دستور stty استفاده کنید تا بدانید تنظیمات شما چیست و در صورت تمایل آنها را تغییر دهید. برای جزئیات بیشتر به فصل 8 مراجعه کنید. اگر نسخه یونیکس روی سیستم شما یکی از مواردی است که از BSD (مانند Sunos و Ultrix) مشتق شده است ، همه را تایپ کنید تا تنظیمات کنترل کلید خود را ببینید. چیزی شبیه به این را خواهید دید:

جدول 1-7. کلیدهای کنترل

فرمان فعلی را متوقف کنید

دستور فعلی را متوقف کنید ، اگر CTRL-C کار نمی کند

خروجی را به صفحه نمایش متوقف کنید

خروجی را به صفحه نمایش مجدداً راه اندازی کنید

آخرین شخصیت را پاک کنید

کل خط فرمان را پاک کنید

دستور فعلی را به حالت تعلیق درآورد (به فصل 8 مراجعه کنید)

نماد ^ x مخفف Ctrl- X است. اگر نسخه UNIX شما از سیستم III یا System V (این شامل AIX ، HP/UX ، SCO ، Linux و Xenix) است ، STT Y-A را تایپ کنید.

خروجی حاصل شامل این اطلاعات خواهد بود:

کلید کنترل که احتمالاً بیشتر از آنها استفاده خواهید کرد CTRL-C است که گاهی اوقات کلید قطع نامیده می شود. این متوقف می شود - یا سعی می کند متوقف شود - فرمان که در حال حاضر در حال اجرا است. شما می خواهید هنگام ورود به یک دستور از این کار استفاده کنید و متوجه شوید که خیلی طولانی طول می کشد ، استدلال های اشتباهی به آن دادید ، نظر خود را در مورد تمایل به اجرای آن یا هر چیز دیگری تغییر می دهید.

بعضی اوقات CTRL-C کار نمی کند. در این حالت ، اگر واقعاً می خواهید یک کار را متوقف کنید ، ctrl- را امتحان کنید. اما فقط ctrl- را تایپ نکنید. همیشه ابتدا ctrl-c را امتحان کنید! فصل 8 توضیح می دهد که چرا با جزئیات. در حال حاضر ، کافی است که بگوییم CTRL-C قبل از خروج ، به کار در حال اجرا فرصت بیشتری برای تمیز کردن می دهد ، به طوری که پرونده ها و منابع دیگر در حالت های خنده دار باقی نماندند.

ما قبلاً نمونه ای از CTRL-D را دیده ایم. هنگامی که شما یک فرمان را اجرا می کنید که ورودی استاندارد را از صفحه کلید خود بپذیرد ، CTRL-D به این فرآیند می گوید که ورودی شما به پایان رسیده است-همانطور که در صورت خواندن یک پرونده و به انتهای پرونده رسید. نامه ابزاری است که در آن اغلب اتفاق می افتد. هنگامی که در حال تایپ کردن یک پیام هستید ، با تایپ CTRL-D به پایان می رسد. این به نامه می گوید که پیام شما کامل و آماده ارسال است. بیشتر برنامه هایی که ورودی استاندارد را می پذیرند ، Ctrl-D را به عنوان شخصیت پایان ورودی درک می کنند ، اگرچه بسیاری از این برنامه ها دستوراتی مانند Q ، ترک ، خروج و غیره را می پذیرند.

CTRL-S و CTRL-Q کاراکترهای کنترل جریان نامیده می شوند. آنها نمایانگر یک روش قدیمی برای متوقف کردن و راه اندازی مجدد جریان خروجی از یک دستگاه به دستگاه دیگر (به عنوان مثال ، از رایانه به ترمینال شما) هستند که وقتی سرعت چنین خروجی کم بود ، مفید بود. آنها در این روزها از شبکه های محلی با سرعت بالا و خطوط شماره گیری منسوخ هستند. در حقیقت ، در شرایط دوم ، CTRL-S و CTRL-Q اساساً یک مزاحمت هستند. تنها چیزی که واقعاً باید در مورد آنها بدانید این است که اگر خروجی صفحه نمایش شما "گیر شود" ، ممکن است به طور تصادفی به Ctrl-S ضربه بزنید. CTRL-Q را تایپ کنید تا خروجی را مجدداً راه اندازی کنید. هر نوع کلید که ممکن است در بین آنها قرار داشته باشید ، عملی شود.

گروه نهایی شخصیت های کنترل به شما روشهای احتیاطی برای ویرایش خط فرمان خود می دهد. Del به عنوان یک کلید Backspace عمل می کند (در واقع ، برخی از سیستم ها از Backspace واقعی یا کلید CTRL-H به عنوان "پاک کردن" به جای DEL استفاده می کنند). Ctrl-U کل خط را پاک می کند و به شما امکان می دهد تا شروع کنید. باز هم ، اینها کنار گذاشته شده اند.[18] در فصل بعد به حالت های ویرایش Bash ، که از جمله ویژگی های مفید آن هستند و بسیار قدرتمندتر از قابلیت های ویرایش محدود است که در اینجا شرح داده شده است.

[17] این همچنین باید چیزی را در مورد انعطاف پذیری قرار دادن تغییر مسیر I/O در هر نقطه از خط فرمان به شما بیاموزد - حتی در مکانهایی که به نظر نمی رسد معقول باشند.

[18] چرا بسیاری از کلیدهای کنترل قدیمی هنوز در حال استفاده هستند؟آنها هیچ ارتباطی با پوسته به خودی خود ندارند. در عوض ، آنها توسط درایور TTY ، یک قسمت قدیمی و مسکونی از عمق پایین سیستم عامل که ورودی و خروجی را از طریق ترمینال شما کنترل می کند ، شناخته می شوند.

یادگیری پوسته Bash ، نسخه دوم را اکنون با پلت فرم یادگیری O'Reilly دریافت کنید.

اعضای O'Reilly آموزش آنلاین آنلاین ، به علاوه کتاب ، فیلم و محتوای دیجیتالی را از نزدیک به 200 ناشر تجربه می کنند.

استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید

برچسب : نویسنده : توران میرهادی بازدید : <-PostHit-> تاريخ : چهارشنبه 31 خرداد 1402 ساعت: 17:58