سلام! نوشتن به منزله مطالعه «خود» هست. من بیشتر تو زمینه برنامه نویسی و روان شناسی مطلب میذارم. خوشحال میشم نظرات تون رو باهام در میون بذارین.
پرکاربردترین دستور های Unix
مقدمه
در سیستم عامل های بر اساس Unix مثل Linux دستورات (Command) های زیادی داریم که با استفاده از CLI (Command Line Interface) اون ها رو وارد می کنیم. همون طوری که با استفاده از رابط های گرافیکی مثل Gnome میشه از سیستم عامل به صورت گرافیکی استفاده کرد، از رابط متنی هم میشه استفاده کرد که اتفاقا رابط متنی قدرتمند تره. این رابط متنی توی Linux به Terminal مشهوره. برای باز کردن یک ترمینال جدید توی Linux کافیه عبارت terminal رو سرچ یا این که از میانبر Ctrl + Alt + T استفاده کنی. تو این مقاله کاربردی ترین دستور هایی که توی رابطه کاربری Unix هست رو بررسی می کنیم.
ساختار کلی یک دستور در 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 "Hello World!"
این دستور به خصوص در ترکیب با << کاربرد داره زمانی که میخایم به انتهای یک فایل عبارتی رو اضافه کنیم.
echo "Bizhan" >> 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 هم می تونه کمک کننده باشه. خیلی خوشحال میشم اگه نظرت رو در انتهای این مقاله کامنت کنی.
مطلبی دیگر از این انتشارات
سیاهی دور چشم – ۷ علت سیاهی زیر چشم
مطلبی دیگر از این انتشارات
بررسی توسعه ی اقتصادی ایران در سه دهه ی اخیر
مطلبی دیگر از این انتشارات
تأمین مالی جمعی، پوششی جدید برای پولشویی