در این مقاله سعی داریم با برخی از دستورات ساده اما پر کاربرد محیط متنی لینوکس آشنا شویم. محیط متنی لینوکس، برخلاف آنچه به نظرمیرسد بسیار کاربردی و انعطافپذیر است. اغلب سیستمهای کاری که سرویسهای مهمی را به کاربران ارائه میدهند بدلیل امکان کاهش کارایی، فاقد محیط گرافیکی هستند. علاوه بر آن مدیر یک سیستم مبتنی بر لینوکس اغلب مجبور است از راه دور، به تنظیم و یا رفع عیب سیستم خود بپردازد که این امر با استفاده از پروتکلهای امن بعلاوهی امکانات محیط متنی بسیار راحت انجامپذیر است. به همین دلایل است که اغلب برای لینوکسکارها هیچ کاری لذتبخشتر از کار با محیط متنی نیست!!!
اطلاعات سیستم
- date – تاریخ و ساعت جاری را نمایش میدهد.
- cal – تقویم ماهها را نمایش میدهد.
- uptime – زمان روشن بودن سیستم و کاربران فعال را نشان میدهد.
- w – کاربران جاری که از سیستم استفاده میکنند را همراه با توضیحاتی درباره استفاده آنها نشان میدهد. دستور شامل اطلاعات خروجی دستور uptime نیز هست.
- whoami – کاربر جاری که شما اکنون از طریق آن با سیستم کار میکنید را نمایش میدهد.
- finger user – اطلاعاتی درباره کاربری user (به جای آن نامکاربری مورد نظر را بنویسید) در اختیار شما میگذارد.
- uname – نام سیستم یونیکس شما که همان لینوکس است را نمایش میدهد.
- uname -a – دستور uname همراه با سویچ a اطلاعات تکمیلی از سیستمعامل شما شامل نسخه کرنل لینوکس را نمایش میدهد.
- cat /proc/cpuinfo – نمایش اطلاعات پردازنده (CPU).
- cat /proc/meminfo – نمایش اطلاعات حافظه اصلی (RAM).
- df – مقدار استفاده از دیسکهای حافظه را نمایش میدهد.
- du – مقدار فضای استفاده شده تمامی دایرکتوری ها
- free – نمایش فضاهای خالی و استفاده شده حافظه رم و سواپ (swap)
دستورات فایل
- ls – گرفتن لیست محتویات مسیر جاری شامل پوشه و فایل ها.
- ls -l – دستور ls همراه با سویچ l لیست محتویات مسیر جاری را با اطلاعات کامل نمایش میدهد.
- ls -laC – مانند دستور ls -l است اما اطلاعات را به صورت ستونی نشان میدهد.
- ls -F – سویچ f در دستور ls لیست محتویات را همراه با فرمت فایلها نمایش میدهد.
- ls -al – سویچ a در دستور ls لیست فایلها را همراه با فایلهای مخفی نشان میدهد. (فایل و پوشه مخفی در لینوکس یک نقطه قبل نام خود دارند)
- cd dir – تغییر مسیر جاری به شاخه مورد نظر (بجای dir پوشه مورد نظر را وارد کنید)
- cd – مسیر جاری را به مسیر اصلی (home) بر میگرداند. (مسیر اصلی برای هر کاربر متفاوت است که پوشههای شخصی و تنظیمات در آنجا قرار میگیرند).
- mkdir dir – ساخت یک شاخه (به جای dir نام پوشه که میخواهید بسازید را بنویسید).
- pwd – مسیر جاری را نشان میدهد.
- rm name – حذف (پاک کردن) فایل یا دایرکتوری مورد نظر (به جای name نام فایل یا پوشه نوشته میشود).
- rm -r dir – حذف یک دایرکتوری با محتویات درون آن (به جای dir نام پوشه را بنویسید).
- rm -f file – اجبار کردن به حذف یک فایل برای مواقعی که فایل به دلایلی حذف نمیشود (نام فایل بجای file نوشته میشود).
- rm -rf dir – اجبار کردن به حذف یک دایرکتوری برای مواقعی که آن به دلایلی حذف نمیشود (نام پوشه بجای dir نوشته میشود).
- cp file1 file2 – کپی کردن فایل در مسیر دیگر (file1 نام و مسیر فایل مبدا و file2 نام و مسیر فایل مقصد است).
- cp -r dir1 dir2 – کپی کردن پوشه در مسیر دیگر (dir1 نام و مسیر پوشه مبدا و dir2 نام و مسیر پوشه مقصد است).
- cp file dir – کپی کردن فایل مورد نظر در مسیر دیگر با همان نام (file نام فایل و dir مسیر پوشه مقصد است).
- mv file dir – جابجایی (مانند cut) کردن فایل مورد نظر در مسیر دیگر با همان نام (file نام فایل و dir مسیر پوشه مقصد است).
- mv file1 file2 – جابجایی کردن فایل به مسیر دیگر (file1 نام و مسیر فایل و file2 نام و مسیر فایل در مقصد است).
- ln -s file link – ساخت لینک سیمبولیک از فایل در مسیر مورد نظر (file نام و مسیر فایل یا پوشه و link نام و مسیر لینک است).
- touch file – ساخت یک فایل.
- cat > file – نوشتن متن در فایل.
- cat file – نمایش محتویات یک فایل یا فراخوانی آن.
- more file – نمایش محتویات فایل به صورت کم کم (برای فایل با محتویات زیاد).
- command | more – نمایش خروجی دستور به صورت کم کم.
- less file – نمایش محتویات فایل به صورت صفحه به صفحه (برای فایل با محتویات زیاد).
- command | less – نمایش خروجی دستور به صورت صفحه به صفحه.
- head file – نمایش ۱۰ خط اول محتویات یک فایل
- head -20 file – نمایش ۲۰ خط اول محتویات یک فایل
- tail file – نمایش ۱۰ خط آخر محتویات یک فایل
- tail -20 file – نمایش ۲۰ خط آخر محتویات یک فایل
پروانه فایل
- chmod octal file – تغییر مجوز یک فایل با استفاده از کد دسترسی
- مجوز یک فایل سطح دسترسی یک فایل را مشخص میکند. سطح دسترسی میتواند خواندنی (عدد ۴)، نوشتنی (عدد ۲) و اجرا (عدد ۱) باشد که سطح دسترسی یک فایل با جمع کردن این اعداد بدست میآید. یعنی سطح دسترسی ۷ تمامی مواد را شامل میشود.
- هر فایل دسترسی آن برای سه دسته کاربری روت، گروه و عمومی تعریف میشود که از روش عددی بالا استفاده میکند و این سه عدد کنار هم سطح دسترسی یک فایل را مشخص میکنند. مثالهای زیر را مشاهده کنید.
- chmod 777 file – مجوز خواندن، نوشتن و اجرا فایل را به سه دسته روت، گروه و عمومی میدهد.
- chmod 755 file – مجوز خواندن، نوشتن و اجرا برای کاربری روت و مجوزهای خواندن و اجرا برای کاربران گروه و عمومی.
فشرده سازی
به صورت پیشفرض لینوکس از فشردهسازی با فرمت tar استفاده میکند که دستورات کار با آن را نیز پشتیبانی میکند. لینوکس از فشردهساز Gzip برای کار با فایلهای فشرده با فرمت tar.gz و gz فشردهساز Bzip2 برای کار با فایلهای فشرده با فرمت tar.bz2 استفاده میکند.
- tar cf file.tar files – Create a tar named file.tar containing files
- tar xf file.tar – استخراج محتویات فایل فشرده.
- tar czf file.tar.gz files – ساخت فایل فشرده با فرمت tar.gz از فایلها توسط فشردهساز Gzip.
- tar xzf file.tar.gz – استخراج محتویات فایل فشرده با فرمت tar.gz توسط فشردهساز Gzip.
- tar czf file.gz files – ساخت فایل فشرده با فرمت gz از فایلها توسط فشردهساز Gzip.
- tar xzf file.gz – استخراج محتویات فایل فشرده با فرمت gz توسط فشردهساز Gzip.
- tar cjf file.tar.bz2 – ساخت فایل فشرده با فرمت tar.bz2 از فایلها توسط فشردهساز.
- tar xjf file.tar.bz2 – استخراج محتویات فایل فشرده با فرمت tar.bz2 توسط فشردهساز Bzip2.
جستجو
- grep pattern files – جستجوی عبارت در فایل مورد نظر.
- grep pattern dir – جستجوی عبارت در فایلهای موجود در شاخه مورد نظر.
- grep -r pattern dir – جستجوی عبارت در فایلهای موجود در شاخه مورد نظر به صورت بازگشتی.
- command | grep pattern – جستجوی عبارت در خروجی دستور.
- locate file – یافتن فایل مورد نظر ما در مسیر جاری.
- find dir -name filename – یافتن فایل مورد نظر ما در شاخه مورد نظر.
- find ”*filename*” – جستجوی تمامی فایلهایی که نام آنها شامل نام فایل مورد نظر ما است (در مسیر جاری).
- updatedb – ساختن یا بهروز رسانی دیتابیس فایلهای سیستمی شاخه روت لینوکس.
- locate filename – جستجوی فایل با locate. فرض شده است که قبلا از دستور updatedb استفاده کردهاید.
- which filename – نمایش شاخه بالایی فایل مورد نظر (پوشهای که فایل ما در آن قرار دارد).
شبکه
- ifconfig – نمایش لیست آی پی تمامی دستگاههای متصل (وایرلس، کارت شبکه، شبکههای ویپیان و …).
- ping host – گرفتن پینگ از هاست مورن نظر.
- whois domain – گرفتن اطلاعات دامنه (مالک دامنه، آیپی، دیاناس سرور و …).
- dig domain – دریافت اطلاعات DNS دامنه.
- dig -x host – مشاهده میزبان به صورت معکوس.
- wget file – دانلود یک فایل از اینترنت.
- wget -c file – ادامه دانلود کردن یک دانلود متوقف شده.
دستور DiG :
دستور DiG جايگزيني براي nslookup در سيستم هاي يونيكسي ، لينوكسي و همچنين مكينتاش مي باشد. تفاوت اين دستور با nslookup در اين است فاقد interactive mode است. درست مانندnslookup دستور dig مي تواند فرم ساده اي از يافتن dns شبكه را نمايش دهد و همچنين توسط خروجي اين دستور قادر به رفع مشكلات مربوط به DNS خواهيم بود. در زير نمونه اي از خروجي اين دستور آمده است :
res options: init recurs defnam dnsrch
got answer:
->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
QUERY SECTION:
xyz.com, type = A, class = IN
ANSWER SECTION:
xyz.com. 7h33m IN A 63.240.93.157
AUTHORITY SECTION:
xyz.com. 7h33m IN NS usrxdns1.ABC.com.
xyz.com. 7h33m IN NS oldtxdns2.ABC.com.
Total query time: 78 msec
FROM: localhost.localdomain to SERVER: default -- 209.53.4.130
WHEN: Sat Oct 16 20:21:24 2004
MSG SIZE sent: 30 rcvd: 103
همانطور كه مشاهده مي كنيد خروجي اين دستور به سه قسمت Answer Section,Authority Section, و چهار خط پاياني تقسيم شده است. قسمت پاسخ يا answer section نام دامنه و آدرس شبكه آن را نمايش مي دهد. A در اين قسمت نشاندهنده نوع ركوردي است كه نمايش داده شده است. قسمت اعتبار يا authority section نشاندهند سرورهاي DNSاي است كه در عمل resolution بر پايه آن ها انجام شده است و اين اطلاعات به ما نشان مي دهد آيا DNS هاي مجاز نشانگر دامنه ما هستند يا خير. چهارخط پاياني اين خروجي نشان مي دهد كه چقدر طول كشيده تا عمل resolve شدن دامنه انجام گيرد همچنين آدرس DNSپايه را كه در عمل resolution مورد استفاده قرار گرفته است را نشان مي دهد. ساعت و تاريخ و همچنين اندازه پاكت هاي دريافتي و ارسالي نيز در اين قسمت نمايش داده شده اند.
دستور Ifconfig
در سيستم هاي يونيكس ، لينوكس و مكينتاش از دستور ifconfig به جاي ipconfig بايد استفاده كنيد. براي اينكه صفحه help مربوط به اين دستور را نگاه كنيد بايد از دستور ifconfig –helpاستفاده كنيد. خروجي زير پس از استفاده تنها از دستور ifconfig حاصل شده است.
eth0 Link encap:Ethernet HWaddr 00:60:08:17:63:A0
inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:911 errors:0 dropped:0 overruns:0 frame:0
TX packets:804 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xe400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
دستور ifconfig آدرس IP ، subnet mask و default gateway را براي كارت شبكه هاي محلي و loopback نشان مي دهد اما اطلاعات مربوط به وضعيت dhcp را نمايش نمي دهد. براي اين منظور بايد از دستور ديگري به شكل “pump s” استفاده كنيد. Pump همچنين قادر است IP آدرس شبكه اي را كه با DHCP و DNS تنظيم شده است release و renew نمايد.
SSH
پروتکل SSH برای ارتباط و کنترل با سیستم از راه دور استفاده میشود که پیشفرض از پورت SSH با شماره 21 استفاده میکند. بیشتر برای کنترل سرور توسط کاربری از راه دور استفاده میشود.
- ssh user@host – اتصال به میزبان مورد نظر با نام کاربری مورد نظر (بعد از آن پسورد آن نام کاربری از شما پرسیده میشود).
- ssh -p port user@host – اتصال به میزبان با نام کاربری توسط شماره پورت مشخص
- ssh-copy-id user@host – اضافه کردن کلید برای اتصال کاربر از این سیستم راه دور. (برای مواقعی که نمیخواهیم پسورد را در هر اتصال وارد کنیم. ارسال پسورد اصلی امنیت میزبان را به خطر میاندازد اما کلید ساخته شده فقط برای سیستم جاری و نام کاربری مورد نظر اعتبار دارد).
مدیریت کاربران
- adduser accountname – ساخت یک کاربر جدید در سیستم لینوکس خود.
- passwd accountname – تغییر گذرواژه (password) کاربر مورد نظر.
- su – ورود به خط فرمان با کاربری روت (کاربر روت مجوز دسترسی به تمامی فایلها و تنظیمات سیستم را دارد).
- exit – خروج از خط فرمان با کاربر جاری.
شروع و پایان
- shutdown -h now – خاموش کردن سیستم.
- halt – توقف تمام پردازشها (مانند خاموش کردن سیستم است).
- shutdown -r 5 – راهاندازی مجدد (ریست کردن) سیستم در مدت ۵ دقیقه بعد.
- shutdown -r now – ریست کردن سیستم لینوکس.
- reboot – راهاندازی مجدد سیستم لینوکس (مانند دستور بالا است).
نصب برنامه ها
- به صورت عادی اگر سورس برنامه در اختیار ما باشد به شاخه سورس رفته و دستورات زیر را برای نصب اعمال میکنیم.
- ./configure
- make
- make install
- اگر از توزیعهای خاص لینوکس استفاده میکنید از دستورات زیر (یا دستورات خاص آن توزیع) برای نصب بسته نرمافزاری تهیه شده برای آن توزیع استفاده کنید.
- dpkg -i pkg.deb – نصب بسته نرم افزاری دبیان – برای توزیعهای دبیان، ابونتو، مینت و … .
- rpm -Uvh pkg.rpm – نصب بسته نرم افزاری RPM – برای توزیعهای ردهت، فدورا و … .
چاپ
- /etc/rc.d/init.d/lpd start – شروع به کار سیستم چاپ.
- /etc/rc.d/init.d/lpd stop – پایان دادن به سیستم چاپ.
- /etc/rc.d/init.d/lpd status – نمایش وضعیت سیستم چاپ.
- lpq – نمایش کارهای موجود در صف چاپ.
- lprm – حذف کارهای موجود در صف چاپ.
- lpr – چاپ یک فایل.
- lpc – تنظیمات کنترلی چاپ.
- man subject | lpr – چاپ کتاب راهنمای یک دستور به صورت متنی.
- man -t subject | lpr – چاپ کتاب راهنمای یک دستور به صورت اسکریپتی.
- printtool – شروع رابط نصب پرینتر مورد نظر.
مدیریت پردازش ها
- ps – نمایش پردازش های فعال جاری.
- top – نمایش تمام پردازش های در حال اجرا.
- kill pid – از بین بردن پردازش مورد نظر با شناسه pid.
- killall proc – از بین بردن تمام پردازش هایی با نام proc. در اجرای آن احتیاط کنید.
- bg – نمایش پردازش های متوقف شده (stop) یا مکث کرده (puse) در بخش کارهای پسزمینه و ادامه اجرا پردارش های مکث کرده.
- fg – آوردن کارهای به تازگی انجام شده در بخش کارهای پیشزمینه.
- <strong”>fg n – آوردن کار n در بخش کارهای پیشزمینه.
آموزش نحوه عملکرد دستورات
- apropos subject – لیست صفحات کتابچه راهنما برای موضوع مورد نظر.
- man -k keyword – نمایش صفحات شامل کلمه کلیدی مورد نظر.
- man command – نمایش کتابچه راهنما برای دستور مورد نظر.
- man -t man | ps2pdf – > man.pdf – ساخت فایل pdf از صفحه کتابچه راهنما.
- which command – نمایش مسیر کامل دستور مورد نظر.
- time command – نمایش زمان طول کشیدن دستور مورد نظر.
- whereis app – نمایش مسیر بالقوه برنامه مورد نظر.
- which app – نمایش میسر برنامه app که به صورت پیشفرض اجرا میشود.
دستور Shell در لینوکس:
Shell در واقع یک مفسر دستور العمل است ، شما می توانید با وارد کردن دستورات در shell با سیستم عامل ارتباط برقرار کنید.
Shell دستورات شما را پردازش کرده و به عنوان یک دستور العمل به سیستم عامل می فرستد .
چندین نوع shell برای سیستم عامل لینوکس نوشته شده است که می توان از Bourn Again Shell (BASH) ، Korn Shell ،TCSH Shell و Z Shell را نام برد که بصورت پیش فرض در لینوکس BASH نصب می باشد .
این شل قابلیتهای زیادی را درون خود دارد و کلیدهای میانبر زیادی پشتیبانی می کند که در زیر به آنها اشاره می کنم .
- Tab ⇆ : تکمیل خودکار از جایی که مکاننما وجود دارد.
- Ctrl+a : انتقال مکاننما به ابتدای خط (معادل کلید Home)
- Ctrl+e : انتقال مکاننما به انتهای خط (معادل کلید End)
- Ctrl+p : فراخوانی فرمان قبلی (معادل کلید ↑)
- Ctrl+n : فراخوانی فرمان بعدی (معادل کلید ↓)
- Ctrl+r : جستجوی آخرین فرمانی که دارای کارکتر(های) مشخصی باشد. زدن دوبارهی این کلید در هنگام جستجو، به فرمان قبلیتر رجوع میکند.
- Ctrl+o : اجرای فرمانی که در جستجو یافته شد.
- Ctrl+l : پاک کردن محتویات صفحهنمایش (معادل فرمان clear).
- Ctrl+u : پاک کردن محتویاتی از خط که قبل از مکاننما وجود دارند و کپی کردن آنها درون حافظه.
- Ctrl+k : پاک کردن محتویاتی از خط که بعد از مکاننما وجود دارند و کپی کردن آنها درون حافظه.
- Ctrl+w : پاک کردن کلمهی قبل از مکاننما و کپی کردن آن درون بریدهدان.
- Ctrl+y : چسباندن محتویات حافظه از جایی که مکاننما وجود دارد.
- Ctrl+d : ارسال یک نشانگر EOF که باعث بسته شدن خط فرمان فعلی میشود (معادل دستور exit). (تنها در زمانی این اتفاق میافتد که متنی در خط فعلی موجود نباشد)
- Ctrl+c : ارسال یک سیگنال از نوع SIGINT به پروسهی فعلی، که باعث پایان اجرا و بسته شدن آن میشود.
- Ctrl+z : ارسال یک سیگنال از نوع SIGTSTP به پروسهی فعلی، به باعث به تعلیق در آمدن آن میشود. که برای برگشت دادن آن میتوان از دستور fg process-name-or-job-id استفاده کرد.
- Ctrl+x Ctrl+e : ویرایش خط فعلی در ادیتوری که توسط متغیر EDITOR$ تعریف شده است.
- Alt+f : حرکت به جلو به اندازهی یک واژه.
- Alt+b : حرکت به عقب به اندازهی یک واژه.
- Alt+Del : برش کلمهی واقع در قبل از مکاننما
- Alt+d : برش کلمهی واقع در بعد از مکاننما
- Alt+u : تبدیل تمام حروف کوچک به بزرگ، واقع در بعد از مکاننما تا انتهای کلمهی فعلی
- Alt+l : تبدیل تمام حروف بزرگ به کوچک، واقع در بعد از مکاننما تا انتهای کلمهی فعلی
- Alt+c : تبدیل حرف واقع در زیر مکاننما از کوچک به بزرگ و رفتن به انتهای کلمهی فعلی
- Alt+r : انصراف تغییرات و برگرداندن محتویات خط فعلی به همان شکلی که در تاریخچهی خط فرمان موجود بود.
حذف فایلهایی با نام های خاص در لینوکس
شاید برای شما نیز این موضوع پیش آمده باشد که بخواهید تمام فایلها با یک پسوند خاص را در سرور حذف کنید . با توجه به این که دستور rm قابلیت search ندارد نمی توان از این دستور استفاده نمود.
جهت انجام این کار می توانید از دستور زیر استفاده نمایید.
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
و یا از دستور زیر استفاده نمایید.
find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;
تفاوت 2 دستور بالا در این است که در دستور اول علاوه بر فایلها ، فولدرهایی را هم ویژگی ذکر شده در دستور را دارند حذف خواهد کرد.ولی در دستور دوم فقط فایلها حذف خواهند شد.
مثال اول : در این دستور تمام فایل ها را در شاخه کنونی و زیر شاخه های مربوطه که با پسوند .bak هستند را حذف خواهد کرد.
find . -type f -name "*.bak" -exec rm -f {} \;
مثال دوم : در این دستور تمام فایل ها و فولدرهایی را که در شاخه کنونی و زیر شاخه های مربوطه با پسوند .bak هستند را حذف خواهد کرد.
find . -name "*.bak"-exec rm -rf {} \;
مثال سوم : در این دستور تمام فایل ها را در شاخه کنونی و زیر شاخه های مربوطه که با پسوند .bak هستند را حذف خواهد کرد. با این تفاوت که قبل از حذف از شما تاییده خواهد گرفت .
find . -type f -name "*.bak" -exec rm -i {} \;
حذف پوشههای خالی در لینوکس
برای حذف پوشههایی که خالی میباشند میتوانید از یکی از دستورات زیر استفاده نمایید:
rmdir **/*(/^F)
find . -type d -empty -delete
$ find . -depth -type d -exec rmdir {} \; 2>/dev/null