یکی از نقاط قوت اصلی لینوکس، ترمینال آن میباشد. ترمینال لینوکس بسیار منعطف بوده و امکاناتی را برای کاربران فراهم میکند تا بتوانند راحتتر و سریعتر با آن کار کنند.
از جمله این امکانات قابلیت زنجیرسازی دستورات (Chaining Commands) در ترمینال لینوکس میباشد. به زبان ساده این قابلیت به شما این امکان را میدهد که بهجای وارد کردن چندین دستور در فازهای جداگانه، تمام دستورات را در یک فاز به ترمینال بدهید و ترمینال با توجه به معیاری که شما مشخص کردهاید، برای شما انجام دهد.
این اتفاق به کمک یک سری عملگر یا Operator اتفاق میافتد و ما میخواهیم 10 نمونه از این عملگرها را بوسیله کاربردشان معرفی کنیم.
عملگر Semi-colon (;)
با استفاده از این عملگر میتوانید چندین دستور را در یک خط وارد کنید. سپس دستورات وارد شده یکی پس از دیگری و به ترتیب انجام میشوند.
برای مثال:
root@thregence:# date ; pwd ; ls
اگر مجموعه دستور بالا را در ترمینال لینوکس خود وارد کنیم:
در ابتدا دستور date که برای نمایش دادن تاریخ است اجرا میشود و خروجی آن برروی صفحه چاپ میشود.
سپس دستور pwd (که وظیفه آن نمایش دادن مسیری است که در آن قرار داریم) اجرا میشود و خروجی آن نمایش داده میشود.
و در نهایت دستور ls که برای لیست کردن محتویات مسیر فعلی است، اجرا میشود.
عملگر Ampersand (&)
این عملگر به شما این امکان را میدهد که دستور (یا دستوراتی را) در Background اجرا کنید.
برای مثال:
root@thregence:# apt install apache2 & pwd & ls
اگر مجموعه دستورات بالا را در ترمینال لینوکس خود وارد کنیم، دستورات اول (apt install apache2) و دوم (pwd) در Background اجرا میشوند چرا که بعد از آنها & آمده است. اما دستور آخر یعنی ls بهصورت معمولی اجرا میشود (چرا که عملگری بعد از آن نیامده است).
یکی از کاربردهای این عملگر زمانی است که شما تنها ارتباط CLI با لینوکس خود دارید و از این رو تنها یک ترمینال روبهروی شما است. برای اینکه هر بار برای اجرای یک دستور مجبور به انتظار برای اتمام دستور قبلی نشوید، میتوان از & در انتهای دستورات استفاده کنید.
عملگر Pipe (|)
این عملگر در مواقعی بهکار میرود که میخواهیم خروجی دستور اول را به دستور دوم بدهیم.
برای مثال فرض کنید میخواهیم جزییات پراسسهای مربوط به firefox را پیدا کنیم. اولا میدانیم که بوسیله دستور ps -aux میتوانیم تمام پراسسها را لیست کنیم. دوما میدانیم دستور grep میتواند عبارتی را درون مقدار زیادی نوشته، پیدا کند.
پس دستور زیر را در ترمینال وارد میکنیم:
root@thregence:# ps -aux | grep firefox
در اینجا ابتدا دستور اول اجرا میشود، سپس بواسطه استفاده از عملگر پایپ خروجی آن به دستور grep داده میشود. یعنی لیستی از اطلاعات تمام پراسسها (که توسط ps -aux بدست آمده) به دستور grep ارسال میشود و سپس دستور grep درون آن به دنبال عبارت firefox میگردد.
عملگر AND (&&)
به کار بردن && یک عبارت شرطی را تشکیل میدهد!
برای مثال فرض کنید میخواهیم در ابتدا یک بازی را دانلود کنیم و سپس آن را نصب کنیم (یعنی اگر بازی دانلود نشد، عملیات نصب بعد از آن انجام نشود):
root@thregence:# wget http://www.thregence.ir/newgame.py/ && python newgame.py install
دستور دوم (در اینجا python newgame.py install) تنها در صورتی اجرا میشود که دستور اول (در اینجا wget http://www.thregence.ir/newgame.py/) موفقیت آمیز باشد و اجرا شود.
اما اگر اجرای دستور اول موفقیت آمیز نباشد، دستور دوم اجرایی نخواهد شد.
عملگر OR (||)
به کار بردن || نیز یک عبارت شرطی را تشکیل میدهد!
برای مثال فرض کنید میخواهیم یک برنامه اجرایی (Executable) اجرا شود. ولی اگر برنامه اجرا نشد، از لینک تعیین شده دانلود شود:
root@thregence:# python notepad.py || wget http://thregence.ir/notepad.py
دستور دوم (در اینجا wget http://www.thregence.ir/notepad.py/) تنها در صورتی اجرا میشود که دستور اول (در اینجا python notepad.py install) موفقیت آمیزنباشد و اجرا نشود.
عملگر NOT (!)
این عملگر برای مستثنی کردن بهکار میرود.
برای مثال فرض کنید میخواهیم تمام محتویات مسیر فعلی را پاک کنیم. همانطور که میدانید این کار بوسیله دستور زیر قابل انجام است:
اما فرض کنید در شرایطی هستیم که میخواهیم تمام محتویات مسیر فعلی به غیر از فایل important.txt پاک شود، برای این کار:
بنابراین هر فایلی که درون مسیر فعلی قرار دارد پاک میشود به جز فایل important.txt.