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

در این مقاله پرکاربردترین دستور های Unix رو بررسی می کنیم.مقدمهدر سیستم عامل های بر اساس Unix مثل Linux دستورات (Command) های زیادی داریم که با استفاده از CLI (Command Line Interface) اون ها رو وارد می کنیم. همون طوری که با استفاده از رابط های گرافیکی مثل Gnome میشه از سیستم عامل به صورت گرافیکی استفاده کرد، از رابط متنی هم میشه استفاده کرد که اتفاقا رابط متنی قدرتمند تره. این رابط متنی توی Linux به Terminal مشهوره. برای باز کردن یک ترمینال جدید توی Linux کافیه عبارت terminal رو سرچ یا این که از میانبر Ctrl + Alt + T استفاده کنی. تو این مقاله کاربردی ترین دستور هایی که توی رابطه کاربری Unix هست رو بررسی می کنیم.تصویری از رابطه متنی Linux - Ubuntuساختار کلی یک دستور در Unixبه صورت کلی یک دستور ساختار زیر رو داره:command [options] [arguments]آپشن ها باعث تغییر در عملکرد دستور میشن و argument ها مقادیری هستن که برخی از دستور ها لازم دارن تا با توجه به اون ها کار کنن. option ها قبلشون - یا -- قرار داده میشه. argument ها می تونن چند تا باشن و ممکنه یک رشته، یک عدد، اسم یک فایل و ... باشن.دستورالعمل یک دستوربرای مشاهده دستورالعمل (manual) یک دستور می تونیم از دستور man استفاده کنیم. بعد از man اسم دستوری که میخایم manual اش رو مطالعه کنیم قرار میدیم. تو پنجره ای که باز میشه با زدن دکمه / می تونیم جست و جو کنیم یا با زدن q می تونیم خارج شیم و برگردیم به محیط اولیه.man lsکاربردی ترین دستور هاwhatisاین دستور توضیح بسیار کوتاهی (در حد ۱ خط) درباره یک دستور بهمون میده. مثلا:whatis echopwdاین دستور که مخفف شده 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 *.jpegclearبعد از مدتی کار کردن با یک terminal (به هر terminal باز شده اصطلاحا یک shell گفته میشه) ممکنه شلوغ بشه و لازم باشه که shell رو پاک کنیم. این کار با دستور clear انجام میشه.touchبرای درست کردن یک فایل جدید استفاده میشه.touch READMD.mdمیشه که چند تا فایل رو همزمان با یک دستور touch درست کرد:touch a.txt b.txt c.txtبرای درست کردن یک فایل hidden قبل از اسمش یک dot قرار بده:touch .gitignoremkdirبرای درست کردن یک پوشه درست میشه. به پوشه ها توی یونیکس directory میگن:mkdir Photosمیشه که چند تا پوشه رو همزمان درست کرد:mkdir Photos Videos Musicsrmdirبرای حذف کردن یک (یا چند) پوشه خالی استفاده میشه. دقت کن که با این دستور فقط پوشه های خالی رو میشه پاک کرد. برای پاک کردن پوشه هایی که توش محتویات هست باید از دستور rm استفاده کرد:rmdir Photosیا این که به صورت چند تایی:rmdir Photos Videos Musicsrmاین دستور برای پاک کردن یک (یا چند) فایل یا پوشه استفاده میشه:rm README.mdیا به صورت چند تاییrm README.md package.jsonبرای پاک کردن پوشه هایی که دارای محتوا است باید آپشن r- رو اضافه کنیم:rm -r Photosechoبرای پرینت گرفتن یک عبارت توی shell استفاده میشه. مثلا:echo &quotHello World!&quotاین دستور به خصوص در ترکیب با << کاربرد داره زمانی که میخایم به انتهای یک فایل عبارتی رو اضافه کنیم.echo &quotBizhan&quot >> names.txtcatبرای پرینت گرفتن محتویات یک فایل (اکثرا فایل های کوچک) به صورت مستقیم داخل shell استفاده میشه:cat README.mdدر حقیقت کاربرد اصلی این دستور concatenate کردن محتویات دو فایل و نمایش محصول ترکیب این دو در terminal عه. برای همین میشه چند تا argument هم بدیم به این دستور:cat names.txt families.txheadده خط اول یک فایل رو پرینت می گیره. برای فایل های بزرگ که نمایش همه اش توی shell ممکن نیست از این دستور استفاده میکنن تا با یک نگاه ساده به ۱۰ خط اولش متوجه بشن همون فایلی عه که میخان یا نه.head names.txttailده خط آخر یک فایل رو پرینت می گیره. برای فایل های بزرگ که نمایش همش توی یک shell ممکن نیست از این دستور استفاده میشه.tail log.txtcpاین دستور یک فایل یا پوشه رو به مسیر مد نظر کپی میکنه. مثلا دستور زیر فایل a.txt رو به دسکتاپ کپی میکنه.cp a.txt ~/Desktopبرای کپی کردن یک پوشه دارای محتویات باید آپشن r- رو بهش اضافه کنیم. منظور از r در این جا recursive بودن دستوره.cp -r Photos ~/Desktopهم چنین میشه چندین فایل (یا پوشه) رو به صورت همزمان طی یک دستور به مسیر مد نظر کپی کرد:cp a.txt b.txt c.txt ~/Textsmvاین دستور که مخفف شده 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 ~/Desktopnanoاین دستور ما رو وارد یک محیط جدید میکنه که ویرایشگر متنی 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 هم می تونه کمک کننده باشه. خیلی خوشحال میشم اگه نظرت رو در انتهای این مقاله کامنت کنی.