۵۰ دستور برتر لینوکس Linux که باید بدانید
۱۹ دی ۱۴۰۳
مقدمه
آیا به طور مرتب از دستورات لینوکس استفاده میکنید؟ در این مقاله، به بررسی بیش از ۵۰ دستور لینوکس که باید بدانید، میپردازیم. دستورات زیر از مفیدترین و پرکاربردترین دستورات لینوکس هستند.
پیشنیازها
ما این دستورات را روی یک سرور Ubuntu اجرا خواهیم کرد، اما میتوانید این آموزش را روی هر توزیع دیگری از لینوکس، دنبال کنید. اگر که کاربر ویندوز هستید؛ میتوانید برای اجرای این دستورات از WSL (زیرسیستم ویندوز برای لینوکس) نیز، استفاده کنید.
همچنین، شما میتوانید برای اجرای دستورات لینوکسی، مستقل از سیستمعاملتان، از سرور مجازی (VPS) لیارا نیز، استفاده کنید. با تهیه یک سرور مجازی لیارا، شما به مدرنترین سرور Ubuntu دسترسی خواهید داشت و میتوانید عملیات مدنظرتان را در آن، اجرا کنید.
در ادامه، بخوانید:
- ls – لیست کردن دایرکتوریها (پر استفادهترین دستور)
- pwd – نمایش مسیر دایرکتوری فعلی
- cd – جابهجایی بین دایرکتوریها
- mkdir – ایجاد دایرکتوری
- mv – جابهجایی یا تغییر نام فایلها
- cp – کاربرد مشابه دستور mv اما برای کپی کردن فایلها
- rm – حذف فایلها یا دایرکتوریها
- touch – ایجاد فایلهای خالی
- ln – ایجاد لینکهای نمادین (میانبرها)
- clear – پاک کردن محتوای ترمینال
- cat – نمایش محتوای فایل در ترمینال
- echo – چاپ متن مشخصشده بعد از دستور
- less – نمایش خروجی صفحهبندیشده در ترمینال
- man – دسترسی به صفحات راهنما برای تمامی دستورات لینوکس
- uname – دریافت اطلاعات پایهای درباره سیستمعامل
- whoami – نمایش نام کاربری فعال
- tar – فشردهسازی و استخراج فایلها
- grep – جستجوی یک رشته در خروجی
- head – نمایش تعداد خطوط مشخص از ابتدای فایل
- tail – نمایش تعداد خطوط مشخص از انتهای فایل
- diff – یافتن تفاوت بین دو فایل
- cmp – بررسی یکسان بودن دو فایل
- comm – ترکیب ویژگیهای دستورات diff و cmp
- sort – مرتبسازی محتوای فایل در خروجی
- export – تنظیم متغیرهای محیطی
- zip – فشردهسازی فایلها
- unzip – استخراج فایلهای فشرده
- ssh – اتصال امن به سرور مجازی ریموت (سیستم از راه دور)
- service – شروع یا توقف سرویسها
- ps – نمایش فرایندهای فعال
- kill و killall – پایان دادن به فرایندهای فعال با شناسه یا نام فرایند
- df – نمایش اطلاعات فایلسیستم دیسک
- mount – مونتکردن سیستمهای فایل
- chmod – تغییر مجوز فایلها
- chown – اختصاص مالکیت به فایلها یا دایرکتوریها
- ifconfig – نمایش رابطهای شبکه و آدرسهای IP
- traceroute – ردیابی تلاشهای شبکه برای دسترسی به مقصد
- wget – دانلود مستقیم فایلها از اینترنت
- ufw – دستور مربوط به فایروال
- iptables – دستور پایه فایروال برای سایر ابزارهای مرتبط با فایروال
- apt, pacman, yum, rpm – ابزارهای مدیریت پکیجهای نرمافزاری (بسته به توزیع)
- sudo – افزایش سطح دسترسی
- cal – نمایش تقویم در خط فرمان
- alias – ایجاد میانبرهای سفارشی برای دستورات مختلف
- dd – ساخت USBهای بوتیبل
- whereis – یافتن فایل باینری، سورس یا راهنمای یک دستور
- whatis – توضیح کاربرد یک دستور
- top – نمایش زنده فرآیندهای فعال با میزان مصرف منابع آنها
- useradd و usermod – افزودن کاربر جدید یا تغییر اطلاعات کاربران فعلی
- passwd – ایجاد یا بروزرسانی گذرواژه برای کاربران موجود
حالا بیایید به هر یک از این دستورات، عمیقتر بپردازیم و آنها را با جزئیات بیشتری درک کنیم.
۱. دستور ls
دستور ls
برای لیست کردن فایلها و دایرکتوریها، در دایرکتوری فعلی استفاده میشود. این دستور یکی از پرکاربردترین دستورات لینوکس است که باید با آن آشنا باشید.
همانطور که در تصویر بالا مشاهده میکنید، دستور ls
، بدون نیاز به هیچ آرگومانی، لیستی از تمام فایلها و دایرکتوریهای موجود در دایرکتوری فعلی را به ما میدهد. این دستور انعطافپذیری زیادی دارد.
همچنین بخوانید: آشنایی بیشتر با دستور ls در لینوکس
۲. دستور pwd
دستور pwd
به شما این امکان را میدهد که مسیر دایرکتوری فعلیتان را در ترمینال چاپ کنید:
معمولاً، خود ترمینال، مسیر کامل دایرکتوری را به شما نمایش میدهد، اما اگر اینطور نبود، دستور pwd
راه سریعی برای مشاهده مسیر کامل دایرکتوری فعلی است. یکی دیگر از کاربردهای این دستور در زمان نوشتن اسکریپتها است، جایی که میتواند به ما کمک کند دایرکتوریای که اسکریپت در آن ذخیره شده است را پیدا کنیم.
۳. دستور cd
هنگام کار در ترمینال، جابجایی بین دایرکتوریها تقریباً ضروری است. دستور cd
یکی از دستورات مهم لینوکس است که به شما کمک میکند تا بین دایرکتوریها جابجا شوید. فقط کافیست دستور cd
را به همراه نام دایرکتوری وارد کنید، همانطور که در قطعه کد زیر نشان داده شده است:
root@ubuntu:~# cd <directory path>
به عنوان مثال:
همانطور که در دستور بالا مشاهده میکنید، به سادگی دستور cd /etc/
وارد شده است تا بتوانیم وارد دایرکتوری /etc
شویم. در نظر داشته باشید که ما از دستور pwd
برای چاپ دایرکتوری فعلی استفاده کردیم.
۴. دستور mkdir
دستور mkdir
به شما این امکان را میدهد که دایرکتوریهای مدنظرتان را از طریق ترمینال ایجاد کنید:
root@ubuntu:~# mkdir <folder name>
به عنوان مثال:
همانطور که در عکس بالا مشاهده میکنید، ما با استفاده از این دستور ساده دایرکتوری “JournalDev” را ایجاد کردیم.
۵ و ۶. دستورات cp
و mv
دستورات cp و mv معادل دستورات copy-paste و cut-paste در ویندوز هستند. اما از آنجا که لینوکس به طور خاص، دستوری برای تغییر نام فایلها ندارد، از دستور mv
برای تغییر نام فایلها و پوشهها نیز استفاده میشود:
root@ubuntu:~# cp <source> <destination>
به عنوان مثال:
در دستور بالا، یک کپی از فایل به نام “Sample” ایجاد کردیم. حالا بیایید ببینیم اگر از دستور mv
استفاده کنیم، چه اتفاقی میافتد:
root@ubuntu:~# mv <source> <destination
و برای مثال:
در این حالت، چون فایل را در همان دایرکتوری جابهجا کردیم، این دستور به عنوان تغییر نام عمل میکند.
۷. دستور rm
دستور rm
برای حذف فایلها و پوشهها استفاده میشود و یکی از دستورات مهم لینوکس محسوب میشود:
root@ubuntu:~# rm <file name>
به عنوان مثال:
برای حذف یک پوشه، باید آرگومان -r
را به آن اضافه کنید. بدون این آرگومان، دستور rm
پوشهها را حذف نخواهد کرد:
root@ubuntu:~# rm -r <folder/directory name>
فلگ -r
در دستور rm
در لینوکس به معنای “recursive” است. زمانی که این فلگ، با دستور rm
استفاده میشود، نه تنها دایرکتوری مشخص شده، بلکه تمام زیرپوشهها و فایلهای موجود در آن زیرپوشهها بهصورت بازگشتی، حذف میشوند.
توجه: استفاده از دستور rm
با فلگ -r
باید با دقت انجام شود، زیرا این دستور میتواند در زمان خیلی کم و برای همیشه، تعداد زیادی فایل و پوشه را حذف کند. پیشنهاد میشود از فلگ -i
بههمراه فلگ -r
استفاده کنید که قبل از حذف هر فایل و پوشه از شما تایید میخواهد.به عنوان مثال، برای حذف پوشه mydir و محتوای آن با تاییدیه، میتوانید از این دستور استفاده کنید:
root@ubuntu:~# rm -ri mydir
این دستور از شما درخواست تایید قبل از حذف هر فایل و پوشه درون پوشه mydir
میکند.
۸. دستور touch
دستور touch
در لینوکس یک فایل خالی ایجاد میکند؛ البته اگر فایل از قبل وجود داشته باشد timestamp آن فایل را بهروزرسانی میکند:
root@ubuntu:~# touch <file name>
به عنوان مثال:
۹. دستور ln
دستور ln
در لینوکس برای ایجاد لینک به یک فایل استفاده میشود:
root@ubuntu:~# ln -s <source path> <link name>
به عنوان مثال:
فلگ -s
یک لینک نمادین (که به آن symlink یا soft link نیز گفته میشود) به یک فایل یا دایرکتوری ایجاد میکند. یک لینک نمادین (symbolic link) نوع خاصی از فایل است که به عنوان میانبر یا اشارهگری به یک فایل یا دایرکتوری دیگر عمل میکند. به طور پیشفرض، دستور ln
به جای لینک نمادین، hard link ایجاد میکند.
نکته: فرض کنید یک فایل متنی دارید. اگر یک لینک نمادین به آن فایل ایجاد کنید، لینک تنها به عنوان یک اشارهگر به فایل اصلی عمل میکند. اگر فایل اصلی حذف شود، لینک خراب میشود زیرا دیگر چیزی برای اشاره به آن وجود ندارد.
hard link یک کپی آینهای از فایل اصلی است که دقیقاً همان محتوا را دارد. مانند لینکهای نمادین، اگر محتوای فایل اصلی را ویرایش کنید، این تغییرات در لینک سخت نیز منعکس خواهد شد. اما اگر فایل اصلی حذف شود، لینک سخت همچنان کار میکند و میتوانید آن را همانند یک کپی معمولی از فایل اصلی مشاهده و ویرایش کنید.
۱۰. دستور clear
دستورد clear
در لینوکس برای پاک کردن محتوای صفحه ترمینال استفاده میشود. این دستور تمام متنها و خروجیهای نمایش داده شده در ترمینال را حذف کرده و صفحهای تمیز برای کار کردن به شما میدهد:
root@ubuntu:~# clear
دستور فوق، محتوای صفحه ترمینال را پاک کرده و cursor را به گوشه بالا-چپ منتقل میکند.همچنین میتوانید دستور clear
را با دستورات دیگر ترکیب کنید، مانند این مثال:
root@ubuntu:~# ls -l; clear
دستور فوق، لیست فایلها و دایرکتوریهای دایرکتوری فعلیتان را نمایش میدهد و سپس صفحه ترمینال را پاک میکند.
توجه: دستور clear هیچ فایل یا دادهای را از سیستم شما حذف نمیکند.
۱۱ و ۱۲ و ۱۳. دستورات cat و echo و less
زمانی که میخواهیم محتوای یک فایل را در خروجی داشته باشیم یا محتوای آن را در ترمینال، چاپ کنیم، از دستورات cat یا echo استفاده میکنیم. در ادامه نحوه استفاده از آنها را بررسی خواهیم کرد.
قطعه کدهای زیر را در نظر بگیرید:
root@ubuntu:~# cat <file name>
root@ubuntu:~# echo <Text to print on terminal>
همانطور که در مثال بالا مشاهده میکنید، دستور cat
وقتی بر روی فایل New-File
استفاده میشود، محتوای فایل را چاپ میکند. در عین حال، وقتی از دستور echo
استفاده میکنیم، هر چیزی که پس از دستور وارد کنیم، چاپ میشود؛ به عنوان:
root@ubuntu:~# echo hello
خروجی دستور بالا، “hello” خواهد بود.
دستور less
زمانی استفاده میشود که خروجی چاپشده توسط هر دستور دیگری، بزرگتر از فضای صفحه باشد و نیاز به اسکرول داشته باشد. دستور less
به کاربر این امکان را میدهد که خروجی را تجزیه کرده و با استفاده از کلیدهای enter
یا space
از آن عبور کند. روش ساده برای این کار استفاده از عملگر pipe (|) است:
root@ubuntu:~# cat /boot/grub/grub.cfg | less
نکته: برای فعالسازی قابلیت line wrapping در دستور less از پرچم -S
استفاده کنید. این ویژگی به شما امکان میدهد خطوط طولانی متن را بدون نیاز به اسکرول افقی، مشاهده کنید. برای نمایش شماره خطوط، از پرچم -N
با دستور less
استفاده کنید. این گزینه زمانی مفید است که نیاز به دانستن شماره خط یک بخش خاص از متن داشته باشید:
root@ubuntu:~# cat /boot/grub/grub.cfg | less -SN
استفاده از دستور less
همراه با عملگر pipe (|) در موقعیتهای مختلف میتواند بسیار کاربردی باشد. به عنوان مثال:
- برای مشاهده خروجی دستورات طولانی مانند
top
یاhtop
که خروجی آنها بیش از یک صفحه است، میتوانید از دستورless
همراه با اپراتور پایپ (|) استفاده کنید. - برای جستجوی یک متن خاص در خروجی دستوراتی مانند
grep
یاcat
، میتوانید ازless
برای پیمایش آسان استفاده کنید.
۱۴. دستور man
دستور man
برای نمایش صفحه راهنمای یک دستور مشخص در لینوکس استفاده میشود. این دستور اطلاعات کامل در مورد نحو (syntax)، گزینهها و مثالهای مرتبط با یک دستور را ارائه میدهد. به عنوان مثال، ترمینال را باز کنید و دستور زیر را اجرا کنید:
root@ubuntu:~# man ls
خروجی دستور فوق، صفحه راهنمای مربوط به دستور ls
خواهد بود:
OutputLS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
-c with -lt: sort by, and show, ctime (time of last modification
of file status information) with -l: show ctime and sort
by name;
...
۱۵ و ۱۶. دستورات uname و whoami
دستور uname در لینوکس اطلاعات مربوط به kernel سیستم را نمایش میدهد. این اطلاعات شامل نام کرنل (kernel name)، نام میزبان (hostname)، نسخه انتشار کرنل (kernel release)، نسخه کرنل (kernel version) و نام سختافزار ماشین (machine hardware name) است.
دستور whoami در لینوکس نام کاربری کاربر فعلی را برمیگرداند. این دستور مخفف عبارت “من کی هستم؟” (who am I) است و معمولاً برای شناسایی هویت کاربر فعلی در ترمینال استفاده میشود.
قطعه کدهای زیر را در نظر بگیرید:
root@ubuntu:~# uname -a
root@ubuntu:~# whoami
دستور فوق، خروجی مشابه تصویر زیر را، خواهد داشت:
پارامتر -a
در دستور uname به معنای “همه” (all) است. این پارامتر تمام اطلاعات کامل را نمایش میدهد. اگر این پارامتر اضافه نشود، تنها خروجی که دریافت خواهید کرد، “Linux” خواهد بود. برخی از فلگهای مهمی که میتوانید با دستور uname استفاده کنید، در ادامه آمده است:
- استفاده از
uname -s
برای نمایش نام کرنل (kernel name). - استفاده از
uname -n
برای نمایش نام میزبان (hostname). - استفاده از
uname -r
برای نمایش نسخه انتشار کرنل (kernel release). - استفاده از
uname -v
برای نمایش نسخه کرنل (kernel version). - استفاده از
uname -m
برای نمایش نام سختافزار ماشین (machine hardware name).
۱۷ و ۱۸ و ۱۹. دستورات tar و zip و unzip
دستور tar
در لینوکس برای ایجاد و استخراج فایلهای فشرده شده (archive) استفاده میشود. ما میتوانیم فایلهای فشرده مختلف را با استفاده از دستور tar
استخراج کنیم. برای ایجاد یک فایل فشرده، از پارامتر -c
ا و برای استخراج یک فایل فشرده، از پارامتر -x
استفاده میکنیم:
#Compress
root@ubuntu:~# tar -cvf <archive name> <files separated by space>
#Extract
root@ubuntu:~# tar -xvf <archive name>
به عنوان مثال:
در تصویر فوق، در خط اول، یک فایل فشرده به نام Compress.tar
با فایلهای New-File و New-File-Link ایجاد کردیم. در دستور بعدی، آن فایلها را از فایل فشرده استخراج کردیم.
بیایید دستورات zip
و unzip
را بررسی کنیم. هر دو دستور بسیار ساده هستند. شما میتوانید از آنها بدون هیچ پارامتری استفاده کنید و آنها به درستی کار خواهند کرد:
root@ubuntu:~# zip <archive name> <file names separated by space>
root@ubuntu:~# unzip <archive name>
به عنوان مثال:
از آنجا که ما این فایلها را از قبل در همان دایرکتوری داشتیم، دستور unzip
قبل از بازنویسی این فایلها، از ما درخواست تایید، میکند.
۲۰. دستور grep
دستور grep
یک ابزار جستجوی متنی قدرتمند و چندکاره در سیستمعاملهای لینوکس و یونیکس است. این دستور میتواند الگوها یا رشتههای خاصی را در یک یا چند فایل جستجو کرده و خروجی دستورات دیگر را فیلتر کند.
دستور grep
مخفف عبارت “global regular expression print” است که توانایی آن در جستجوی عبارات منظم (regular expressions) در خطوط و فایلهای مختلف را نشان میدهد:
root@ubuntu:~# <Any command with output> | grep "<string to find>"
به عنوان مثال:
۲۱ و ۲۲. دستورات head و tail
هنگام نمایش فایلهای بزرگ، دستورات head
و tail
بسیار مفید هستند. این دستورات به ترتیب، ابتدا یا انتهای یک فایل را نمایش میدهند. از آنها معمولاً برای مشاهده سریع محتوای یک فایل بدون نیاز به باز کردن آن در یک ویرایشگر متنی استفاده میشود.
دستورات head
و tail
به طور پیشفرض ۱۰ خط اول فایل را نمایش میدهند. برای نمایش تعداد دیگری از خطوط، میتوانید از فلگ -n
به همراه تعداد خطوط مورد نظر استفاده کنید:
root@ubuntu:~# head <file name>
root@ubuntu:~# tail <file name>
به عنوان مثال:
همانطور که مشاهده میکنید، دستور head
ده خط اول فایل را نمایش داد؛ tail
نیز، به همین ترتیب، عمل میکند و ده خط آخر یک فایل را نمایش میدهد:
این دستورات میتوانند برای مشاهده سریع محتوای یک فایل، نظارت بر بهروزرسانیهای لحظهای جهت رفع اشکال، فیلتر کردن خروجی دستورات دیگر و تحلیل لاگها استفاده شوند.
۲۳ و ۲۴ و ۲۵. دستورات diff و comm و cmp
دستورات diff
و comm
و cmp
برای مقایسه فایلها در سیستمعاملهای لینوکس و یونیکس استفاده میشوند. این دستورات میتوانند برای شناسایی تفاوتهای بین دو فایل، ترکیب تغییرات و انجام سایر کارهای مقایسهای بین فایلها به کار روند:
root@ubuntu:~# diff <file 1> <file 2>
به عنوان مثال:
همانطور که در تصور بالا، مشاهده کردید، یک بخش کوچک از متن به نام “This line is edited” به فایل New-File-Edited
اضافه کردهایم.
دستور cmp
برای مقایسه دو فایل و نمایش اولین بایت متفاوتِ بین آنها استفاده میشود. این دستور میتواند برای شناسایی تفاوتها بین فایلهای باینری یا بررسی انحراف در فایلها به کار رود:
root@ubuntu:~# cmp <file 1> <file 2>
به عنوان مثال:
دستور cmp
تنها شمارهی خط متفاوت و نه متن واقعی آن را به ما نشان میدهد، دستور comm
برای مقایسه دو فایل مرتب شده و نمایش خطوط منحصر به هر فایل، همچنین خطوط مشترک بین هر دو فایل استفاده میشود:
root@ubuntu:~# comm <file 1> <file2>
به عنوان مثال:
در تصویر فوق، متنی که به سمت چپ تراز شده، تنها در فایل اولی موجود است. متنی که در وسط تراز شده تنها در فایل دومی موجود است. و متنی که به سمت راست تراز شده در هر دو فایل موجود است.
با توجه به این موضوع، دستور comm
منطقیترین انتخاب به نظر میرسد، وقتی که بخواهیم فایلهای بزرگتری را مقایسه و همه چیز را به صورت مرتب شده، مشاهده، کنیم.
تمامی این سه دستور ابزارهای ضروری برای کار با فایلها در سیستمعاملهای لینوکس و یونیکس هستند. با درک نحوه استفاده مؤثر از دستورات diff
و comm
و cmp
، میتوانید تفاوتها بین فایلها را شناسایی کرده، تغییرات را ترکیب کرده و سایر وظایف مقایسه فایلها را انجام دهید.
این دستورات به شما کمک میکنند تا مشکلات فایلها را شناسایی و حل کنید، تغییرات را پیگیری کرده و کنترل نسخه را حفظ کنید. چه شما یک توسعهدهنده باشید و چه یک مدیر سیستم، این دستورات بخش ضروری از جعبه ابزار شما هستند.
۲۶. دستور sort
دستور sort
برای مرتبسازی خطوط در یک فایل متنی یا ورودی استاندارد در سیستمعاملهای لینوکس و یونیکس استفاده میشود. این دستور میتواند برای مرتبسازی خطوط به ترتیب صعودی یا نزولی و همچنین انجام سایر عملیات مرتبسازی، مانند مرتبسازی بر اساس فیلدها به کار رود. ساختار پایهای دستور sort
به صورت زیر است:
root@ubuntu:~# sort <filename>
به عنوان مثال:
به طور پیشفرض، دستور sort
خطوط را بر اساس ترتیب ASCII مرتب میکند، که این میتواند منجر به نتایج غیرمنتظرهای هنگام مرتبسازی اعداد یا کاراکترهای خاص شود. برای مرتبسازی اعداد به ترتیب عددی، میتوانید از فلگ -n
استفاده کنید. در اینجا یک مثال از استفاده از فلگ -n
آورده شده است:
root@ubuntu:~# sort -n file.txt
دستور بالا خطوط موجود در فایل file.txt
را به ترتیب عددی مرتب خواهد کرد.دستور sort
همچنین میتواند برای مرتبسازی خطوط بر اساس فیلدهای خاص با استفاده از دستور بالا خطوط موجود در فایل file.txt
را به ترتیب عددی مرتب خواهد کرد. دستور sort
همچنین میتواند برای مرتبسازی خطوط بر اساس فیلدهای خاص با استفاده از فلگ -k
به کار رود.
در اینجا یک مثال از استفاده از فلگ -k
آورده شده است:
root@ubuntu:~# sort -k 2 file.txt
این دستور خطوط موجود در فایل file.txt
را بر اساس فیلد دوم مرتب خواهد کرد.
دستور sort
یک ابزار قدرتمند و انعطافپذیر برای کار با فایلهای متنی در سیستمعاملهای لینوکس و یونیکس است. با درک نحوه استفاده مؤثر از دستور sort
، میتوانید خطوط فایلهای متنی را مرتب کرده، خطوط را بر اساس فیلدهای خاص مرتب کنید و سایر عملیات مرتبسازی را انجام دهید.
این دستورات به شما کمک میکنند تا دادهها را سازماندهی و تحلیل کرده و سایر وظایف تغییر فایل را انجام دهید. چه شما یک توسعهدهنده باشید و چه یک مدیر سیستم، دستور sort
بخش ضروری از جعبه ابزار شما است.
۲۷. دستور export
دستور export
در سیستمعاملهای لینوکس و یونیکس برای تنظیم متغیرهای محیطی استفاده میشود. متغیرهای محیطی برای ذخیره اطلاعاتی که میتوانند توسط فرایندها یا دستورات مورد استفاده قرار گیرند به کار میروند.
زمانی که یک متغیر محیطی تنظیم شد، میتواند توسط هر فرایند یا دستوری که در همان shell در حال اجرا است، دسترسی پیدا کند. متغیرهای محیطی میتوانند برای ذخیره اطلاعات مختلفی مانند تنظیمات پیکربندی، ترجیحات کاربری یا اطلاعات سیستم استفاده شوند:
root@ubuntu:~# export <variable name>=<value>
در اینجا یک مثال از استفاده از دستور export
آورده شده است:
۲۸. دستور ssh
دستور ssh
در سیستمعاملهای لینوکس و یونیکس برای برقراری اتصال امن به یک سرور از راه دور استفاده میشود. این دستور یک اتصال امن و رمزنگاری شده بین سرور محلی و سرور از راه دور (سرور مجازی) برقرار میکند و به کاربران اجازه میدهد دستورات را اجرا کرده و فایلها را به صورت امن منتقل کنند. ساختار پایهای دستور ssh
به صورت زیر است:
root@ubuntu:~ ssh username@remote-server
دستور فوق، یک اتصال ssh
به سرور remote-server
با استفاده از نام کاربری account
برقرار میکند. دستور ssh
از فلگها و پیکربندیهای متنوعی پشتیبانی میکند که شامل موارد زیر میشود:
- پیکربندی روشهای احراز هویت (رمز عبور، کلید عمومی و …)
- پیکربندی الگوریتمهای رمزنگاری
- پیکربندی فشردهسازی
- پیکربندی فوروارد پورت
- پیکربندی X11 forwarding
- پیکربندی کلیدهای SSH
همچنین بخوانید: SSH چیست؟ + نحوه استفاده از SSH برای اتصال به سرور مجازی (VPS)
۲۹. دستور service
دستور service
در لینوکس برای مدیریت سرویسهای سیستم استفاده میشود، که فرایندهای در حال اجرای طولانی هستند که در زمان بوت شروع میشوند و در پسزمینه اجرا میگردند. این سرویسها مسئول ارائه قابلیتهای مختلف سیستم مانند شبکهسازی، مدیریت پایگاهداده و احراز هویت کاربر هستند.
دستور service
برای شروع، توقف، راهاندازی مجدد و بررسی وضعیت این سرویسها استفاده میشود. این دستور یک رابط کاربری برای دستور systemctl
است که برای سازماندهی منیجر سرویس systemd
به کار میرود. ساختار پایهای دستور به صورت زیر است:
root@ubuntu:~ service ssh status
root@ubuntu:~ service ssh stop
root@ubuntu:~ service ssh start
به عنوان مثال:
همانطور که در تصویر فوق مشاهده میکنید، سرور ssh
در سیستم ما در حال اجرا است.
۳۰ و ۳۱ و ۳۲. دستورات ps و kill و killall
دستورات ps
و kill
و killall
همگی برای مدیریت فرایندها در لینوکس استفاده میشوند. دستور ps
برای نمایش اطلاعات در مورد فرایندهای در حال اجرا روی سیستم، به کار میرود. در اینجا چند مثال از استفاده از دستور ps
آورده شده است:
نمایش فهرستی از تمام فرایندهای در حال اجرا:
root@ubuntu:~ ps -ef
نمایش فهرستی از تمام فرایندها برای یک شناسه خاص (PID):
root@ubuntu:~ ps -p PID
بیایید تمام دستورات ps و kill و killall را با هم ببینیم:
root@ubuntu:~ ps
root@ubuntu:~ kill <process ID>
root@ubuntu:~ killall <process name>
به عنوان مثال، ما یک اسکریپت شل با یک حلقه بینهایت ایجاد کرده و آن را در پسزمینه اجرا خواهیم کرد.با استفاده از نماد &
، میتوانیم یک فرآیند را به پسزمینه منتقل کنیم. همانطور که مشاهده میکنید، یک فرایند جدید bash
با PID برابر با 14490
ایجاد میشود:
حال، برای متوقف کردن یک فرایند با دستور kill
، میتوانید دستور kill
را نوشته و سپس PID (شناسه فرایند) فرایند مورد نظر را وارد کنید:
اما اگر شناسه فرایند را نمیدانید و فقط میخواهید فرایند را با نام آن متوقف کنید، میتوانید از دستور killall
استفاده کنید:
متوجه خواهید شد که PID برابر با 14490
همچنان فعال باقی مانده است. به این دلیل که در هر دو بار، فرایند sleep
را متوقف کردیم.
۳۳ و ۳۴. دستورات df و mount
هنگام کار با لینوکس، دستورات df
و mount
ابزارهای بسیار کارآمدی برای اتصال سیستمفایلها و دریافت جزئیات سیستمفایل هستند. دستور df
برای نمایش میزان فضای دیسک استفادهشده و فضای دیسک موجود در سیستمفایلها استفاده میشود، و دستور mount
برای اتصال یک سیستمفایل یا دستگاه به یک دایرکتوری خاص به کار میرود.
وقتی میگوییم “اتصال” (mount)، یعنی دستگاه را به یک پوشه متصل میکنیم تا بتوانیم به فایلها در سیستمفایل خود دسترسی پیدا کنیم. ساختار پیشفرض برای اتصال یک سیستمفایل به صورت زیر است:
root@ubuntu:~ mount /dev/cdrom /mnt
root@ubuntu:~ df -h
در مثال بالا، /dev/cdrom
دستگاهی است که باید متصل شود. معمولاً دستگاههای قابل اتصال داخل پوشه /dev
قرار دارند. /mnt
پوشه مقصد است که دستگاه باید به آن متصل شود. شما میتوانید آن را به هر پوشهای که میخواهید تغییر دهید، اما ما از /mnt
استفاده کردهایم زیرا این پوشه پیشفرضِ سیستم برای اتصال دستگاهها است.
برای مشاهده دستگاههای متصل و دریافت اطلاعات بیشتر در مورد آنها، از دستور df
استفاده میکنیم. تایپ کردن فقط df
، دادهها را به صورت بایت نمایش میدهد که قابل خواندن نیست. بنابراین، از پارامتر -h
استفاده میکنیم تا دادهها به صورت human-readable نمایش داده شوند:
۳۵ و ۳۶. دستورات chmod و chown
دستورات chmod
و chown
برای تغییر مجوزهای فایل و مالکیت در لینوکس استفاده میشوند. دستور chmod
برای تغییر مجوزهای یک فایل یا دایرکتوری استفاده میشود، و دستور chown
برای تغییر مالکیت یک فایل یا دایرکتوری به کار میرود. ساختار پیشفرض برای هر دو دستور به صورت زیر است:
root@ubuntu:~ chmod +x loop.sh
root@ubuntu:~ chmod root:root loop.sh
به عنوان مثال:
در مثال بالا، ما با دستور chmod
مجوز اجرا را به فایل loop.sh
اضافه کردیم. علاوه بر این، با دستور chown
، دسترسی به آن را تنها برای کاربر root
و کاربران داخل گروه root
فراهم کردیم. مثال زیر را در نظر بگیرید:
همانطور که مشاهده میکنید، قسمت root root
اکنون به www-data
تغییر کرده است که کاربر جدیدی است که مالکیت کامل فایل را دارد.
۳۷ و ۳۸. دستورات ifconfig و traceroute
دستورات ifconfig
و traceroute
برای مدیریت رابطهای شبکه و ردیابی مسیر packetهای شبکه در لینوکس استفاده میشوند. دستور ifconfig
فهرستی از تمام رابطهای شبکه به همراه آدرسهای IP، آدرسهای MAC و اطلاعات دیگر مربوط به رابط را به شما میدهد:
root@ubuntu:~ ifconfig
پارامترهای مختلفی وجود دارند که میتوان از آنها استفاده کرد، اما ما در اینجا با دستور پایه کار خواهیم کرد:
دستور traceroute
برای ردیابی مسیر packetهای شبکه و تعیین مسیری که آنها برای رسیدن به مقصد خاص طی میکنند، استفاده میشود. هنگام کار با traceroute
، میتوانید به سادگی آدرس IP، نام میزبان، یا نام دامنه endpoint را مشخص کنید:
root@ubuntu:~ traceroute <destination address>
به عنوان مثال:
به طور واضح، localhost
تنها یک hop است (که خود رابط شبکه است). شما میتوانید همین دستور را با هر نام دامنه یا آدرس IP دیگری امتحان کنید تا تمام مسیریابهایی که packetهای داده شما از طریق آنها به مقصد میرسند را مشاهده کنید.
۳۹. دستور wget
اگر بخواهید فایلی را از داخل ترمینال دانلود کنید، دستور wget
یکی از مفیدترین ابزارهای خط فرمان است. این یکی از دستورات مهم لینوکس است که باید هنگام کار با source fileها بدانید. وقتی لینک دانلود را مشخص میکنید، باید دقیقاً لینک به خود فایل باشد. اگر فایل توسط دستور wget
قابل دسترسی نباشد، به جای فایل واقعی، وبسایت را به صورت فرمت HTML دانلود خواهد کرد. بیایید یک مثال امتحان کنیم. سینتکس پایه دستور wget
به صورت زیر است:
root@ubuntu:~ wget <link to file>
یا
root@ubuntu:~ wget -c <link to file>
آرگومان -c
به ما این امکان را میدهد که دانلود متوقفشده (قطعشده) را از سر بگیریم.
۴۰ و ۴۱. دستورات ufw و iptables
دستورات ufw
و iptables
برای مدیریت فایروالها در لینوکس استفاده میشوند. UFW و IPTables رابطهای فایروال برای فایروال Netfilter کرنل لینوکس هستند. IPTables مستقیماً قوانین فایروال را به Netfilter ارسال میکند، در حالی که UFW قوانین را در IPTables تنظیم میکند و سپس این قوانین به Netfilter ارسال میشوند.
چرا به UFW نیاز داریم وقتی که IPTables داریم؟ زیرا IPTables برای مبتدیان کمی پیچیده است. UFW همه چیز را بسیار ساده میکند. در مثال زیر، ما سعی داریم پورت 80 را برای سرور وب خود مجاز کنیم:
root@ubuntu:~# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
root@ubuntu:~# ufw allow 80
UFW به دلیل سادگی و کاربردی بودن برای مبتدیان طراحی شده است، و دقیقاً به همین دلیل است که خیلیها از آن برای مدیریت فایروالهای خود استفاده میکنند. با این حال، IPTables همچنان برای کسانی که نیاز به تنظیمات پیشرفتهتری دارند، یک گزینه قدرتمندتر است. یادگیری اصول اولیه هر دو فایروال، چه UFW و چه IPTables، برای هر کاربر لینوکس ضروری است تا بتواند امنیت شبکه خود را به درستی مدیریت کند.
۴۲. پکیج منیجرها در لینوکس
توزیعهای مختلف لینوکس از پکیج منیجرهای مختلفی استفاده میکنند. از آنجا که ما روی یک سرور Ubuntu کار میکنیم، پکیج منیجر ما apt است. اما برای کسی که روی یک سیستم فدورا (Fedora)، رد هت (Red Hat)، آرچ (Arch)، یا سنتاواس (CentOS) کار میکند، مدیر بسته متفاوت خواهد بود. در ادامه، دستورات مربوط به نحوه استفاده از این پکیج منیجرها در توزیعهای مختلف لینوکس آورده شده است:
- توزیعهای Debian و مبتنی بر آن –
apt install <package name>
- توزیعهای آرچ و مبتنی بر آرچ –
pacman -S <package name>
- توزیعهای رد هت و مبتنی بر رد هت –
yum install <package name>
- فدورا و سنتاواس –
yum install <package>
آشنا شدن با پکیج منیجر توزیع لینوکستان به شما کمک خواهد کرد تا در دراز مدت کارها را برای خود آسانتر کنید. بنابراین حتی اگر ابزار مدیریت بسته مبتنی بر GUI (رابط گرافیکی کاربر) نصب کردهاید، سعی کنید قبل از استفاده از ابزار GUI، از ابزار مبتنی بر CLI (رابط خط فرمان) استفاده کنید.
۴۳. دستور sudo
«با قدرت زیاد، مسئولیت زیاد هم می آید.»
این نقلقول زمانی نمایش داده میشود که یک کاربر با دسترسی sudo (کاربر sudoer) برای اولین بار از دستور sudo برای افزایش سطح دسترسیها استفاده کند. این دستور معادل وارد شدن به عنوان root است (بسته به مجوزهایی که به عنوان sudoer دارید):
non-root-user@ubuntu:~# sudo <command you want to run>
Password:
فقط کافیست دستور sudo
را قبل از هر دستوری که نیاز دارید، با دسترسیهای افزایش یافته اجرا کنید، و تمام. استفاده از آن بسیار ساده است، اما اگر که یک کاربر مخرب به sudoer
دسترسی پیدا کند، میتواند یک ریسک امنیتی اضافی باشد.
۴۴. دستور cal
آیا تا به حال خواستهاید تقویم را در ترمینال مشاهده کنید؟ ظاهراً افرادی هستند که میخواهند این اتفاق بیفتد، و خب، اینجاست. دستور cal
یک تقویم خوشساخت را در ترمینال نمایش میدهد. فقط کافیست دستور cal
را در خط فرمان ترمینال وارد کنید:
root@ubuntu:~# cal
root@ubuntu:~# cal March 2024
به عنوان مثال:
اگرچه ما اغلب به آن نیازی نداریم، اما این، گزینهای شگفتانگیز برای علاقهمندان به ترمینال است.
۴۵. دستور alias
آیا دستورات خاصی دارید که به طور مکرر هنگام استفاده از ترمینال اجرا میکنید؟ ممکن است rm -r
یا ls -l
باشد، یا ممکن است چیزی طولانیتر مانند tar -xvzf
باشد. اگر دستوراتی را میشناسید که خیلی اغلب اجرا میکنید، حالا وقت آن است که یک alias بسازید. Alias چیست؟ به زبان ساده، یک نام دیگر برای دستوری است که شما تعریف کردهاید:
root@ubuntu:~# alias lsl="ls -l"
OR
root@ubuntu:~# alias rmd="rm -r"
حالا، هر بار که lsl
یا rmd
را در ترمینال وارد کنید، خروجیای دریافت خواهید کرد که اگر از دستورات کامل استفاده کرده بودید، دریافت میکردید. مثالهای اینجا مربوط به دستورات کوچک هستند که هنوز میتوانید هر بار به صورت دستی تایپ کنید. اما در برخی مواقع که یک دستور دارای آرگومانهای زیادی است که باید تایپ کنید، بهترین کار این است که یک نسخه کوتاهتر از همان دستور بسازید.
۴۶. دستور dd
این دستور برای تبدیل و کپی فایلها از فرمتهای مختلف سیستمفایل ایجاد شده است. در دنیای امروزی، این دستور عمدتاً برای ساخت USB قابل بوت برای لینوکس استفاده میشود، اما هنوز کارهای مهمی وجود دارد که میتوان با این دستور انجام داد.
دستور dd
در لینوکس یک دستور چندمنظوره است که برای کپی و تبدیل دادهها در سطح پایین استفاده میشود. این دستور مخفف “data-description” یا “data definition” است و میتواند برای کپی و تبدیل دادهها بین فرمتهای مختلف فایل و دستگاههای ذخیرهسازی استفاده شود.
برای مثال، اگر بخواهیم محتوای کل هارد دیسک را همانطور که هست به یک درایو دیگر پشتیبانگیری کنیم، از دستور dd
استفاده میکنیم:
root@ubuntu:~# dd if=/dev/sdb of=/dev/sda
آرگومانهای if
و of
به ترتیب برای فایل ورودی (input file) و فایل خروجی (output file) استفاده میشوند.
این ابزار، قدرتمند و انعطافپذیر است، اما اگر با دقت استفاده نشود، میتواند خطرناک باشد. همیشه سینتکس خود را دوباره بررسی کنید و مطمئن شوید که میدانید دستور، قبل از اجرا، چه کاری انجام خواهد داد.
۴۷ و ۴۸. دستور whereis و whatis
دستورات whereis
و whatis
در لینوکس برای جستجو اطلاعات در مورد برنامهها و فایلها استفاده میشوند. دستور whereis
فایل باینری، سورس و صفحات راهنمای یک دستور یا برنامه خاص را پیدا میکند، و دستور whatis
یک توضیح کوتاه در مورد یک دستور یا برنامه نمایش میدهد:
root@ubuntu:~# whereis sudo
sudo: /usr/bin/sudo /usr/lib/sudo /usr/share/man/man8/sudo.8.gz
دستور whatis
توضیحی در مورد اینکه یک دستور در واقع چیست به ما میدهد:
root@ubuntu:~# whatis sudo
sudo (8) - execute a command as another user
۴۹. دستور top
چند بخش قبلتر، در مورد دستور ps
صحبت کردیم. مشاهده کردید که دستور ps
فرایندهای فعال را نمایش میدهد و خود به خود خاتمه مییابد. دستور top
مشابه نسخه CLI (رابط خط فرمان) task manager در ویندوز است.
دستور top
در لینوکس یک ابزار نظارت بر سیستم است که اطلاعات لحظهای در مورد فرایندها و استفاده از منابع سیستم نمایش میدهد. این دستور یک نمای پویا و لحظهای از فعالیتهای سیستم ارائه میدهد که شامل استفاده از CPU (واحد پردازش مرکزی)، استفاده از memory (حافظه) و اطلاعات مربوط به فرایندها میباشد:
در اینجا چند مثال از استفاده از دستور top
آورده شده است:
مرتبسازی فرایندها بر اساس استفاده از حافظه:
root@ubuntu:~# top -o MEM
این دستور لیست فرایندها را بر اساس استفاده از حافظه مرتب میکند، به طوری که فرایندهایی با بیشترین استفاده از حافظه در بالای لیست قرار میگیرند.
نمایش اطلاعات دقیق در مورد یک فرآیند خاص:
root@ubuntu:~# top -p PID
در قطعه کد فوق، PID
را با شناسه فرآیندی که میخواهید آن را بررسی کنید، جایگزین کنید.
نمایش خلاصهای از استفاده منابع سیستم:
root@ubuntu:~# top -n 1
دستور فوق، یک صفحه خلاصه از استفاده منابع سیستم نمایش میدهد.
۵۰ و ۵۱. دستورات useradd و usermod
دستورات useradd
و usermod
در لینوکس برای مدیریت حسابهای کاربری استفاده میشوند. دستورات useradd
یا adduser
دقیقا یکسان هستند، به طوری که adduser
تنها یک لینک نمادین به دستور useradd
است. این دستور به ما امکان میدهد که یک کاربر جدید در لینوکس ایجاد کنیم:
root@ubuntu:~# useradd JournalDev -d /home/JD
دستور بالا یک کاربر جدید به نام JournalDev با دایرکتوری خانه /home/JD
ایجاد میکند. از طرف دیگر، دستور usermod
برای اصلاح کاربران موجود استفاده میشود. شما میتوانید هر مقدار از مشخصات کاربر، از جمله گروهها، مجوزها و غیره را تغییر دهید. برای مثال، اگر بخواهید گروههای بیشتری به کاربر اضافه کنید، میتوانید از دستور زیر استفاده کنید:
root@ubuntu:~# usermod JournalDev -a -G sudo, audio, mysql
۵۲. دستور passwd
حالا که میدانید چگونه کاربران جدید ایجاد کنید، بیایید رمز عبور آنها را نیز تنظیم کنیم. دستور passwd
به شما این امکان را میدهد که رمز عبور برای حساب خودتان تنظیم کنید، یا اگر مجوز داشته باشید، رمز عبور حسابهای دیگر را تنظیم کنید. در ادامه، چند مثال از دستور passwd
آورده شده است:
تغییر رمز عبور برای کاربر فعلی:
root@ubuntu:~# passwd
این دستور از شما درخواست میکند که رمز عبور جدیدی برای کاربر فعلی وارد کنید.
تغییر رمز عبور برای یک کاربر خاص:
root@ubuntu:~# passwd username
در قطعه کد فوق، عبارت username
را با نام کاربری که میخواهید رمز عبور آن را تغییر دهید جایگزین کنید.
مجبور کردن کاربر به تغییر رمز عبور در زمان ورود بعدی:
root@ubuntu:~# passwd -f username
تنظیم تاریخ انقضا برای رمز عبور یک کاربر:
root@ubuntu:~# passwd -e -n days -w warndays username
در قطعه کد فوق، days
را با تعداد روزهایی که تا انقضای رمز عبور باقی مانده است و warndays
را با تعداد روزهایی که قبل از انقضا به کاربر هشدار داده خواهد شد، جایگزین کنید.
اینها فقط چند نمونه از استفاده دستور passwd
در لینوکس هستند. با درک نحوه استفاده مؤثر از این دستور، میتوانید حسابهای کاربری را مدیریت کرده و از امنیت سیستم خود اطمینان حاصل کنید.