پرکاربردترین دستور های Unix

در این مقاله پرکاربردترین دستور های Unix رو بررسی می کنیم.
در این مقاله پرکاربردترین دستور های Unix رو بررسی می کنیم.

مقدمه

در سیستم عامل های بر اساس Unix مثل Linux دستورات (Command) های زیادی داریم که با استفاده از CLI (Command Line Interface) اون ها رو وارد می کنیم. همون طوری که با استفاده از رابط های گرافیکی مثل Gnome میشه از سیستم عامل به صورت گرافیکی استفاده کرد، از رابط متنی هم میشه استفاده کرد که اتفاقا رابط متنی قدرتمند تره. این رابط متنی توی Linux به Terminal مشهوره. برای باز کردن یک ترمینال جدید توی Linux کافیه عبارت terminal رو سرچ یا این که از میانبر Ctrl + Alt + T استفاده کنی. تو این مقاله کاربردی ترین دستور هایی که توی رابطه کاربری Unix هست رو بررسی می کنیم.

تصویری از رابطه متنی Linux - Ubuntu
تصویری از رابطه متنی Linux - Ubuntu

ساختار کلی یک دستور در Unix

به صورت کلی یک دستور ساختار زیر رو داره:

command [options] [arguments]

آپشن ها باعث تغییر در عملکرد دستور میشن و argument ها مقادیری هستن که برخی از دستور ها لازم دارن تا با توجه به اون ها کار کنن. option ها قبلشون - یا -- قرار داده میشه. argument ها می تونن چند تا باشن و ممکنه یک رشته، یک عدد، اسم یک فایل و ... باشن.

دستورالعمل یک دستور

برای مشاهده دستورالعمل (manual) یک دستور می تونیم از دستور man استفاده کنیم. بعد از man اسم دستوری که میخایم manual اش رو مطالعه کنیم قرار میدیم. تو پنجره ای که باز میشه با زدن دکمه / می تونیم جست و جو کنیم یا با زدن q می تونیم خارج شیم و برگردیم به محیط اولیه.

man ls

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

whatis

این دستور توضیح بسیار کوتاهی (در حد ۱ خط) درباره یک دستور بهمون میده. مثلا:

whatis echo

pwd

این دستور که مخفف شده path of working directory هست مسیری که درش حضور داریم رو به ما میده. برخی دستوراتی که وارد می کنیم (مثلا دستور کپی کردن یک فایل) بستگی دارن به این که تو چه مسیری حضور داریم و تو این مسیر چه فایل هایی موجود هست.

cd

این دستور که مخفف change directory هست مسیری که درش حضور داریم رو عوض میکنه. مثلا کد زیر یک مسیر به عقب بر میگرده:

cd ..

یا برای پریدن مستقیم به مسیر خانه کافیه cd رو تنهایی بنویسیم:

cd

می تونیم به cd یک path مطلق هم بدیم تا مستقیما به اون جا بپره:

cd /home/bizhan/Desktop

یا این که یک مسیر نسبی بدیم بهش. یعنی به نسبت مسیری که درش حضور داریم، بررسی بشه. مثلا اگه تو مسیری که الان درش هستیم یک پوشه به اسم Links وجود داشته باشه برای وارد شدن بهش می گیم:

cd Links

حالا فرض کن که اسم فولدر مون خیلی طولانیه و دنبال یک میانبر می گردیم که کل اسمش رو تایپ نکنیم. کافیه چند حرف اولش رو تایپ کنیم و بعدش دکمه tab رو بزنیم تا به صورت اتوماتیک کامل بشه. به این ویژگی میگن Auto completion که جاهای دیگه هم کاربرد داره.

ls

این دستور فایل ها و پوشه های موجود در اون مسیر رو برای ما لیست میکنه. این طوری می تونیم مطمئن بشیم که چه فایل ها و پوشه هایی هست. آپشن 1- هر فایل یا پوشه رو به صورت یک خط پرینت می گیره.

ls -1

آپشن a- باعث میشه که همه محتویات اون مسیر (حتی فایل های hidden) نشون داده بشن.

ls -a

آپشن l- سطوح دسترسی ها فایل یا پوشه رو هم مشخص میکنه.

ls -l

برای ترکیب چند تا آپشن با هم این طوری کد میزنیم:

ls -1a

همین طور می تونیم از wildcard هایی مثل * استفاده کنیم که جایگزینی برای هر چیزی هست. مثلا دستور زیر همه فایل هایی که فرمت jpeg دارن رو برامون لیست میکنه:

ls *.jpeg

clear

بعد از مدتی کار کردن با یک terminal (به هر terminal باز شده اصطلاحا یک shell گفته میشه) ممکنه شلوغ بشه و لازم باشه که shell رو پاک کنیم. این کار با دستور clear انجام میشه.

touch

برای درست کردن یک فایل جدید استفاده میشه.

touch READMD.md

میشه که چند تا فایل رو همزمان با یک دستور touch درست کرد:

touch a.txt b.txt c.txt

برای درست کردن یک فایل hidden قبل از اسمش یک dot قرار بده:

touch .gitignore

mkdir

برای درست کردن یک پوشه درست میشه. به پوشه ها توی یونیکس directory میگن:

mkdir Photos

میشه که چند تا پوشه رو همزمان درست کرد:

mkdir Photos Videos Musics

rmdir

برای حذف کردن یک (یا چند) پوشه خالی استفاده میشه. دقت کن که با این دستور فقط پوشه های خالی رو میشه پاک کرد. برای پاک کردن پوشه هایی که توش محتویات هست باید از دستور rm استفاده کرد:

rmdir Photos

یا این که به صورت چند تایی:

rmdir Photos Videos Musics

rm

این دستور برای پاک کردن یک (یا چند) فایل یا پوشه استفاده میشه:

rm README.md

یا به صورت چند تایی

rm README.md package.json

برای پاک کردن پوشه هایی که دارای محتوا است باید آپشن r- رو اضافه کنیم:

rm -r Photos

echo

برای پرینت گرفتن یک عبارت توی shell استفاده میشه. مثلا:

echo &quotHello World!&quot

این دستور به خصوص در ترکیب با << کاربرد داره زمانی که میخایم به انتهای یک فایل عبارتی رو اضافه کنیم.

echo &quotBizhan&quot >> names.txt

cat

برای پرینت گرفتن محتویات یک فایل (اکثرا فایل های کوچک) به صورت مستقیم داخل shell استفاده میشه:

cat README.md

در حقیقت کاربرد اصلی این دستور concatenate کردن محتویات دو فایل و نمایش محصول ترکیب این دو در terminal عه. برای همین میشه چند تا argument هم بدیم به این دستور:

cat names.txt families.tx

head

ده خط اول یک فایل رو پرینت می گیره. برای فایل های بزرگ که نمایش همه اش توی shell ممکن نیست از این دستور استفاده میکنن تا با یک نگاه ساده به ۱۰ خط اولش متوجه بشن همون فایلی عه که میخان یا نه.

head names.txt

tail

ده خط آخر یک فایل رو پرینت می گیره. برای فایل های بزرگ که نمایش همش توی یک shell ممکن نیست از این دستور استفاده میشه.

tail log.txt

cp

این دستور یک فایل یا پوشه رو به مسیر مد نظر کپی میکنه. مثلا دستور زیر فایل a.txt رو به دسکتاپ کپی میکنه.

cp a.txt ~/Desktop

برای کپی کردن یک پوشه دارای محتویات باید آپشن r- رو بهش اضافه کنیم. منظور از r در این جا recursive بودن دستوره.

cp -r Photos ~/Desktop

هم چنین میشه چندین فایل (یا پوشه) رو به صورت همزمان طی یک دستور به مسیر مد نظر کپی کرد:

cp a.txt b.txt c.txt ~/Texts

mv

این دستور که مخفف شده move هست یک (یا چند) فایل یا پوشه رو به مسیر مد نظر منتقل میکنه. مثلا دستور زیر فایل a.txt رو به دسکتاپ منتقل میکنه.

mv a.txt ~/Desktop

برای منتقل کردن یک پوشه دارای محتویات باید آپشن r- رو بهش داد. مثلا دستور زیر پوشه Photos توی دسکتاپ رو به پوشه Temp توی home directory منتقل میکنه (~ به معنی home هست):

mv ~/Desktop/Photos ~/Temp

یکی از کاربرد های اصلی mv علاوه بر منتقل کردن، عوض کردن اسم یک فایله. مثلا کد زیر اسم فایل a.txt رو به b.txt عوض میکنه:

mv a.txt b.txt

هم چنین میشه چند تا فایل (یا پوشه) رو به صورت همزمان به مسیر خاصی منتقل کرد. مثلا کد زیر فایل های a.txt و b.txt رو به دسکتاپ منتقل میکنه:

mv a.txt b.txt ~/Desktop

nano

این دستور ما رو وارد یک محیط جدید میکنه که ویرایشگر متنی Nano هست. Nano یک ویرایشگر متن ساده و در عین حال کاربردی عه که می تونیم باهاش با فایل های متنی کار کنیم. توضیح دادن ویژگی های nano در حوصله این مقاله نیست.

whoami

این دستور که به هم چسبیده who am i هست بهمون میگه که با کدوم user داریم از سیستم استفاده میکنیم. البته هر وقت که یک shell باز میکنیم درون خود shell و ابتدای هر خطی برامون نام کاربری و رایانه ای که این کاربر درش وجود داره رو پرینت گرفته. مثلا نام کاربری من اگه bizhan باشه و اسم رایانه ام liberty این طوری میشه:

bizhan@liberty:~$

apropos

این دستور که قطب نمای لینوکس عه یک کلیدواژه دریافت میکنه و سپس هر چیزی که مربوط به این کلید واژه باشه رو برامون نمایش میده. مثلا فرض کن من یادم رفته اسم editor های اصلی چی بوده. این دستور رو وارد میکنم:

apropos editor

و برام هر چیزی که به editor مربوط باشه رو پرینت می گیره.

sudo

این دستور که مخفف شده عبارت super user do هست باعث میشه که دستورات با سطح دسترسی بالاتری اجرا بشن. اصلی ترین جایی که این دستور استفاده میشه هنگام نصب یک package توسط apt عه که چون قراره یک نرم افزار تازه نصب بشه باید super user اجراش کنه. مثلا:

sudo apt install inkscape

نتیجه گیری

توانایی استفاده از command line برای افرادی که میخان حرفه ای باشن حیاتی عه. قدرتی که terminal در اختیار ما میذاره بسیار بیشتر از رابط گرافیکی عه. هم چنین terminal انعطاف پذیر تره. اگه زبان bash بلد باشیم می تونیم دستورات خودمون رو هم درست کنیم. جهت تسلط بیشتر به Unix می تونی در مورد سطوح دسترسی ها مطالعه کنی. هم چنین یادگیری زبان هایی مثل Python هم می تونه کمک کننده باشه. خیلی خوشحال میشم اگه نظرت رو در انتهای این مقاله کامنت کنی.