آنچه در این مقاله میخوانید
- مقدمه
- پیشنیازها
- ۱. دستور ls
- ۲. دستور pwd
- ۳. دستور cd
- ۴. دستور mkdir
- ۵ و ۶. دستورات cp و mv
- ۷. دستور rm
- ۸. دستور touch
- ۹. دستور ln
- ۱۰. دستور clear
- ۱۱ و ۱۲ و ۱۳. دستورات cat و echo و less
- ۱۴. دستور man
- ۱۵ و ۱۶. دستورات uname و whoami
- ۱۷ و ۱۸ و ۱۹. دستورات tar و zip و unzip
- ۲۰. دستور grep
- ۲۱ و ۲۲. دستورات head و tail
- ۲۳ و ۲۴ و ۲۵. دستورات diff و comm و cmp
- ۲۶. دستور sort
- ۲۷. دستور export
- ۲۸. دستور ssh
- ۲۹. دستور service
- ۳۰ و ۳۱ و ۳۲. دستورات ps و kill و killall
- ۳۳ و ۳۴. دستورات df و mount
- ۳۵ و ۳۶. دستورات chmod و chown
- ۳۷ و ۳۸. دستورات ifconfig و traceroute
- ۳۹. دستور wget
- ۴۰ و ۴۱. دستورات ufw و iptables
- ۴۲. پکیج منیجرها در لینوکس
- ۴۳. دستور sudo
- ۴۴. دستور cal
- ۴۵. دستور alias
- ۴۶. دستور dd
- ۴۷ و ۴۸. دستور whereis و whatis
- ۴۹. دستور top
- ۵۰ و ۵۱. دستورات useradd و usermod
- ۵۲. دستور passwd
۵۰ دستور برتر لینوکس 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 در لینوکس هستند. با درک نحوه استفاده مؤثر از این دستور، میتوانید حسابهای کاربری را مدیریت کرده و از امنیت سیستم خود اطمینان حاصل کنید.