بسیاری از ما وقتی اسم لینوکس را میشنویم، یک سیستمعامل پیچیده را تصور میکنیم که فقط برنامهنویسان حرفهای از آن استفاده میکنند؛ ولی لینوکس آنقدرها هم ترسناک نیست!
لینوکس یک خانوادهی بزرگ از سیستمعاملهای متن باز مبتنی بر یونیکس است که همگی روی Kernel یا هستهی لینوکس نوشته شدهاند. لینوکس چندین توزیع یا distribution دارد که اوبونتو، فدورا، مینت و دبیان چند نمونهی معروف از آنها هستند.
از سال 1991 که لینوکس برای اولین بار معرفی شد، به طور پیوسته محبوبیت آن افزایش یافته است که شاید بزرگترین دلیل آن هم این باشد که لینوکس ذاتاً متن باز است؛ یعنی هرکسی میتواند مطابق میل خودش در آن تغییراتی ایجاد کند و توزیع اصلاحشدهی خود را با نام خودش منتشر کند.
هنگام استفاده از لینوکس، نیاز به استفاده از شل یا پوسته دارید؛ شل رابطی است که دسترسی به سرویسهای سیستمعامل را برای شما امکانپذیر میکند. اکثر توزیعهای لینوکس از یک رابط کاربری گرافیکی یا GUI به عنوان شل استفاده میکنند، که دلیل اصلی آن هم راحتتر کردن استفاده از سیستمعامل برای کاربران است.
با این وجود، اکثر اوقات بهتر است از رابط کاربری خط فرمان (CLI) یا همان ترمینال لینوکس برای انجام کارهای مختلف استفاده کنیم، چون این رابط نسبت به GUI قدرتمندتر و موثرتر است. بعضی کارها که ممکن است در GUI به طیکردن چندین مرحله نیاز داشته باشند، ظرف چند ثانیه و از طریق نوشتن دستور در CLI قابل انجام هستند.
به همین خاطر است که به هر دلیل قصد استفاده از لینوکس را داشته باشید، یادگیری دستورات پایه و پرکاربرد خط فرمان اهمیت بالایی دارد. در ادامه 50 دستور پایه و پرکاربرد در خط فرمان لینوکس را به ترتیب الفبا با هم خواهیم دید. مطالعه این مقاله برای همه افرادی که در استفاده از لینوکس تجربه چندانی ندارند بهشدت توصیه میشود؛ گرچه افرادی هم که تجربه زیادی در استفاده از لینوکس دارند، میتوانند با مطالعه این مقاله دانستههای خود را مجدداً مرور کنند!
دستور alias به شما اجازه میدهد به یک دستور یا مجموعهای از دستورات یک نام اختصاری یا اصطلاحاً «نام مستعار» بدهید. زمانی که این نام کوتاه را در ترمینال تایپ کنید، شل آن دستور خاص یا مجموعه دستورات را برای شما اجرا خواهد کرد:
alias cls=clear
دستور بالا یک alias یا دستور اختصاری به نام cls را تنظیم میکند، که نام دیگری برای دستور clear است. یعنی وقتی در alias دستور cls را تایپ کنید، متنهای موجود در صفحهی ترمینال پاک میشوند، درست مثل زمانی که دستور clear را تایپ کنید. شاید فکر کنید برای تایپ چند کاراکتر کمتر، نیاز به تنظیم یک alias برای دستور clear نباشد، اما وقتی زیاد بین محیط خط فرمان ویندوز و لینوکس جابهجا شوید، ممکن است دستور cls را در خط فرمان لینوکس تایپ کنید و با خطا مواجه شوید، اما اگر این نام اختصاری را تنظیم کرده باشید، خط فرمان متوجه این دستور خوهد شد.
البته دستورات اختصاری میتوانند بسیار پیچیدهتر از مثال بالا باشند. مثلا در نمونه زیر یک alias به اسم pf (کوتاهشدهی process find) تنظیم شده که کمی پیچیدهتر است. توجه داشته باشید که دنبالهی دستورات داخل علامت دابل کوتیشن یا « “ » قرار داده شدهاند. در صورتی که در دنباله دستورات فاصله (اسپیس) وجود داشته باشد، استفاده از این علامت در دو طرف آن ضروری است. این دستور اختصاری یا alias، از دستور ps برای لیستکردن تمام پروسسهایی در حال اجرا استفاده میکند و سپس آنها در دستور grep پایپ میکند (در واقع خروجی آن را به دستور grep میفرستد، در ادامه بیشتر درباره این دستور توضیح دادهایم). دستور grep در خروجیهای دستور ps، به دنبال انتریهایی میگردد که با پارامتر خط فرمان $1 تطابق داشته باشند (یعنی اولین نامی که بعد از این دستور تایپ شود، به عنوان ورودی grep انتخاب میشود).
alias pf=”ps -e | grep $1″
مثلا اگر بخواهید ID پروسس shutter (یا همان PID آن را9 بیابید – یا حتی ببینید اصلا پروسس shutter در حال اجرا هست یا نه!- میتوانید از این دستور اختصاری به شکل زیر استفاده کنید: کافی است pf را تایپ کنید، یک اسپیس بعد از آن قرار دهید و نام پروسسی را بنویسید که میخواهید آن را بررسی کنید (نام پروسس میشود همان پارامتر خط فرمان شماره 1، یا همان $1):
pf shutter
هر alias یا دستور اختصاری که در یک پنجره ترمینال تعریف کنید، با بسته شدن آن پنجره از بین میرود. اگر میخواهید یک alias همیشه در دسترس شما باشد، باید آن را به فایل .bash_aliases در دایرکتوری home اضافه کنید.
به جامعه متخصصین لینوکس بپیوندید:
دستور apt برای نصب، بهروزرسانی، حذف و بهطور کلی مدیریت پکیجهای دبیان روی توزیعهای مبتنی بر دبیان مانند اوبونتو و کالی لینوکس استفاده میشود. این دستور معمولا به صورت ترکیبی با ابزارهای دیگر و به صورت apt-get و apt-cache به کار میرود که برای چند گزینهی مختلف، مقادیر پیشفرضی را تنظیم میکنند.
در اسکریپتهای شل بهتر است از apt-get و apt-cache استفاده شود چون با نسخههای قدیمی و متفاوت سازگاری دارند و گزینهها و امکانات بیشتری هم دارند. اکثر دستورات apt باید در کنار sudo استفاده شوند.
برای بهروزرسانی فهرست پکیجها، میتوانید از دستور زیر استفاده کنید. این دستور آخرین تغییرات ریپازیتوریهای APT را دریافت میکند.
sudo apt update
همیشه باید قبل از ارتقای پکیجها یا نصب پکیجهای جدید، باید پکیجها را آپدیت کنید.
بهروزرسانی مستمر سیستم لینوکس یکی از تاثیرگذارترین فاکتورها در امنیت کلی سیستم است. برای ارتقای پکیجهای نصبشده به آخرین نسخه، میتوانید دستور زیر را اجرا کنید:
sudo apt upgrade
دستور cat (کوتاهشدهی concatenate) محتویات فایلها را در پنجره ترمینال لیست میکند. این دستور از بازکردن فایل در ویرایشگر سریعتر است، ضمن این که دیگر احتمال تغییردادن اتفاقی و اشتباهی فایل هم وجود ندارد. به عنوان مثال، برای خواندن محتویات فایل .bash_log_out، میتوانید به دایرکتوری home بروید (دایرکتوری که ترمینال به طور پیشفرض در آن باز میشود) و دستور زیر را تایپ کنید:
cat .bash_logout
اگر فایل طولانیتر از تعداد خطهای موجود در پنجره ترمینال شما باشد، متن فایل به سرعت از ترمینال عبور میکند و نمیتوانید آن را بخوانید. همیشه میتوانید با اسکرول در ترمینال متنهای ردشده را بخوانید، اما مواقعی که در محیط CLI بدون GUI کار میکنید و موس در کار نیست، میتوانید خروجی دستور cat را در دستور less پایپ کنید تا بتوانید با کلیدهای فلش بالا و پایین، PgUp و PgDn و Home و End روی کیبورد در نتایج حرکت کنید (برای خارجشدن از دستور less حرف q را تایپ کنید).
cat .bashrc | less
با دستور cd (که شاید معروفترین دستور ترمینال باشد!) میتوانید بین دایرکتوریها جابهجا شوید و در واقع current directory یا همان دایرکتوری جاری (یا دایرکتوری کاری) را تغییر دهید.
اگر میخواهید به دایرکتوری بروید که داخل دایرکتوری جاری شما قرار دارد، بهسادگی میتوانید نام آن دایرکتوری را بعد از دستور cd بنویسید.
اگر میخواهید به دایرکتوری دیگری در فایلسیستم منتقل شوید، باید پس از نوشتن cd، آدرس دایرکتوری را بعد از یک فوروارد اسلش ( / ) بیاورید.
cd work
cd /usr/local/bin
برای بازگشت سریع به دایرکتوری home، میتوانید از کاراکتر تیلدا ( ~ ) به جای نام دایرکتوری استفاده کنید:
cd ~
یک میانبر دیگر که میتوانید با دستور cd استفاده کنید، علامت دو نقطه یا « . . » است که برای نشاندادن دایرکتوری مادر دایرکتوری جاری است. برای تغییر دایرکتوری داخل دایرکتوری مادر، میتوانید از علامت « . . » برای تایپ کمتر استفاده کنید.
cd ../games
دستور chmod برای تنظیم فلگهای file permission مربوط به یک فایل یا فولدر استفاده میشود. این فلگها تعریف میکنند که چهکسی میتواند فایل را بخواند، بنویسد یا اجرا کند. وقتی فایلها را با گزینه –l (یا همان فرمت long) لیست کنید، رشتهای از کاراکترها میبینید که شبیه استرینگ زیر هستند:
-rwxrwxrwx
اگر اولین کاراکتر « – » باشد یعنی آیتم فایل است و اگر d باشد یعنی آیتم دایرکتوری است. باقی استرینگ سه رشتهی سهتایی از کاراکترها هستند. از سمت چپ، سه کاراکتر اول نشاندهنده مجوزهای owner، سه کاراکتر وسطی نشاندهنده مجوزهای group و سه کاراکتر راست نشاندهنده مجوزهای others هستند. در هر رشته، r علامت خواندن، w نوشتن و x علامت مجوز اجرا است.
اگر کاراکتر r، w یا x وجود داشته باشد، نشاندهنده وجود مجوز مربوطه است. اگر کاراکتری موجود نداشته باشد به جای آن یک « – » نمایش داده میشود.
یکی از راههای استفاده از chmod، دادن دسترسیهای مورد نظر به owner، group و others با یک عدد 3 رقمی است. عدد سمت چپی برای owner، عدد وسطی برای group و عدد سمت راستی هم برای others است. رقمهایی که میتوانید به عنوان پارامتر chmod استفاده کنید، و معنای هرکدام عبارتند از:
برای مثال فایل example.txt را در نظر بگیرید. میبینیم که هر سه رشته کاراکتر برای این فایل rwx هستند. این یعنی همه میتوانند آن را بخوانند، بنویسند و اجرا کنند.
حال فرض کنید میخواهیم این مجوزها را برای این فایل تنظیم کنیم:
یعنی باید از عدد 765 به عنوان آرگومان chmod استفاده کنیم:
chmod 765 example.txt
برای تنظیم مجوزهای خواندن، نوشتن و اجرا برای owner (عدد 7)، خواندن و نوشتن برای group و همچنین others (عدد 6) باید از عدد 766 به همراه دستور chmod استفاده کنیم:
chmod 766 example.txt
دستور chown به شما اجازه میدهد که مالک و گروه (owner و group owner) یک فایل را عوض کنید. مثلا با لیستکردن فایل example.txt با دستور ls –l، عبارت lian_group lian_group را در توضیحات فایل میبینیم. اولی نشاندهنده مالک یا owner فایل است که در این مورد lian_group است. دومی هم نام گروه فایل را نشان میدهد که آن هم lian_group است. هر کاربر یک گروه پیشفرض دارد که همزمان با ایجاد کاربر ایجاد میشود و کاربر تنها گروه آن است. این مجوزها به این معناست که فایل با هیچ گروه دیگری از کاربران به اشتراک گذاشته نمیشود.
شما میتوانید از chown برای تغییر مالک یا گروه فایل، یا هر دوی آنها استفاده کنید. برای این کار باید نام owner و گروه مورد نظر خود را به این دستور بدهید و آنها را با یک « : » از هم جدا کنید. برای استفاده از این دستور باید از sudo استفاده کنید. برای حفظ lian_group به عنوان مالک فایل ولی تغییر گروه فایل به lordm369، از دستور زیر استفاده میکنیم:
sudo chown lian_group:lordm369 example.txt
برای تغییر مالک و گروه فایل به lordm369، باید از دستور زیر استفاده کنید:
sudo chown lordm369:lordm369 example.txt
برای این که دوباره lian_group را به مالک و گروه فایل تبدیل کنیم، از این دستور استفاده میکنیم:
sudo chown lian_group:lian_group example.txt
دستور cp برای کپی کردن فایلها بین دایرکتوریها استفاده میشود و گزینهها و قابلیتهای آن شبیه دستور mv است، با این تفاوت که بعد از اجرای این دستور فایل مبدا دستنخورده باقی میماند.
دستور curl ابزاری برای دریافت اطلاعات و فایل از آدرسهای URL یا همان لینکهای مختلف است.
دستور curl ممکن است به صورت پیشفرض در توزیع لینوکس شما وجود نداشته باشد، ولی اگر از اوبونتو یا توزیع مبتنی بر دبیان دیگری استفاده میکنید، میتوانید با دستور apt-get این پکیج را روی سیستم خود نصب کنید. در توزیعهای لینوکسی دیگر، میتوانید از ابزار مدیریت پکیج مخصوص همان توزیع استفاده کنید.
sudo apt-get install curl
فرض کنید میخواهید یک فایل را جداگانه از یک ریپازیتوری گیتهاب دانلود کنید. عملا هیچ راه رسمی و مستقیمی برای این کار وجود ندارد و مجبورید کل ریپازیتوری را کلون کنید. ولی با دستور curl، میتوانید فایل مورد نظر خود را مستقیما و جداگانه دانلود کنید.
این دستور فایل را برای ما دانلود میکند. توجه داشته باشید که برای ذخیره فایل باید با استفاده از گزینه –o (به معنای output یا خروجی)، نام فایل را برای ذخیرهکردن نیز تعیین کنید. اگر این کار را نکنید، محتویات فایل بهسرعت روی پنجره ترمینال نمایش داده میشوند ولی روی کامپیوتر شما ذخیره نمیشوند.
اگر نمیخواهید روند دانلودشدن فایل را در ترمینال ببینید، میتوانید از گزینه –s (silent) استفاده کنید.
با دستور df میتوانید حجم، میزان فضای استفادهشده و میزان فضای موجود در فایلسیستمهای موجود روی کامپیوتر خود را ببینید.
دوتا از مفیدترین گزینههای این دستور، -h (قابل خواندن برای انسان) و –x (exclude) هستند. گزینهی –h اندازهها را به جای بایت، به صورت مگابایت و گیگابایت نشان میدهد. با گزینه –x هم میتوانید به دستور df بگویید که فایلسیستمهایی را که علاقهای به آنها ندارید نمایش ندهد. برای مثال، ممکن است بخواهید شبه-فایلسیستمهای squashfs را که هنگام نصب اپلیکیشنها با دستور snap ایجاد میشوند، از نتایج حذف کنید.
df -h -x squashfs
دستور diff دو فایل متنی را با هم مقایسه میکند، و تفاوتهای بین آنها را نشان میدهد. این دستور گزینههای زیادی دارد که با استفاده از آنها میتوانید خروجی آن را مطابق میل خود تنظیم کنید.
گزینه –y فایلها را روبهروی هم قرار میدهد تا بتوانید راحتتر آنها را مقایسه کنید و با گزینه –w (width) میتوانید طول خط را در خروجی مشخص کنید تا نتایج در ترمینال به خط بعدی نروند. برای مثال دو فایل lian1.txt و lian2.txt را در نظر بگیرید. گزینه –suppress-common-lines هم باعث میشود دستور diff خطوطی که یکسان هستند را در نتیجه نیاورد. اینگونه میتوانید فقط روی خطهایی تمرکز کنید که متفاوت هستند.
diff -y -W 50 lian1.txt lian2.txt –suppress-common-lines
اگر میخواهید چک کنید یک فایل یا دایرکتوری چقدر فضا اشغال کرده، میتوانید از دستور du (disk usage) استفاده کنید و نام فایل یا دایرکتوری را مقابل آن بنویسید. اگر میخواهید اندازهها را راحتتر بخوانید، جلوی این دستور از گزینه –h استفاده کنید.
دستور echo یک رشته متن را در پنجره ترمینال چاپ میکند (یا اصطلاحا echo میکند).
مثلا دستور زیر کلمات «A string of text» را در پنجره ترمینال چاپ میکند.
echo A string of text
دستور echo میتواند مقدار متغیرهای محیطی (Environment Variables)، مثل $USER، $HOME و $PATH را هم نشان دهد. این سه متغیر مقادیر نام کاربر، دایرکتوری home کاربر و مسیری را که دستورات تایپشده داخل خط فرمان در آن جستجو میشوند، نشان میدهد.
echo $USERecho $HOMEecho $PATH
کد زیر باعث پخش شدن یک صدای بوق کوتاه میشود. گزینه –e (کد escape) کاراکتر بعد از بکاسلش (یا همان کاراکتر escape شده) را به عنوان یک کاراکتر bell تفسیر میکند.
echo -e “\a”
دستور echo در اسکریپتهای شل هم خیلی بهدردبخور است. در یک اسکریپت میتوان از این دستور برای تولید یک خروجی قابل مشاهده استفاده کرد تا بتوانیم پیشرفت اجرای یک اسکریپت را در خروجی ترمینال متوجه شویم.
دستور exit پنجره ترمینال را میبندد، اجرای یک اسکریپت شل را متوقف میکند، شما را از یک سشن SSH ریموت لاگآوت میکند یا از حالت root خارج میکند.
exit
با استفاده از دستور find میتوانید فایلهای مورد نظر خود را در یک دایرکتوری و سابدایرکتوریهای آن جستجو کنید. برای استفاده از این دستور، باید محل شروع جستجو و چیزی را که باید جستجو کند، برای آن تعیین کنید. در این مثال، برای محل شروع جستجو یک نقطه گذاشتهایم که به معنای دایرکتوری جاری است و گزینه –name هم به دستور find میگوید که باید به دنبال فایلهایی باشد که نام آنها با الگوی جستجوشده مطابقت داشته باشد.
شما میتوانید در جستجوی خود از wildcard هم استفاده کنید، که بهجای آن هرچیزی میتواند بیاید و وقتی کاراکتر * باشد، دنبالهای از کاراکترها و وقتی ? باشد، فقط یک کاراکتر میتواند جای آن بنشیند (در صورتی عدم استفاده از wildcard، عبارتی که جستجو کردهاید بدون هیچ حرف بیشتری و عیناً جستجو میشود). ما از عبارت *lian* استفاده میکنیم تا هر فایلی که داخل آن نام lian را داشت پیدا شود.
find . -name ‘*lian*’
همانطور که میبینیم دستور find لیستی از فایلها و دایرکتوریهایی که نام آنها حاوی عبارت lian بوده برگردانده است. حال اگر بخواهیم فقط بین فایلها جستجو را انام دهیم، میتوانیم از گزینه –type استفاده کنیم و حرف f را به عنوان پارامتر به آن بدهیم. پارامتر f به معنی فایل است.
find . -type f -name ‘*lian*’
اگر میخواهید جستجو نسبت به بزرگ و کوچک بودن حرفها حساس نباشد، از گزینه –iname استفاده کنید:
find . -iname ‘*lian*’
دستور finger درباره یک کاربر اطلاعات مختصری از جمله زمان آخرین لاگین کاربر، دایرکتوری home او و نام کامل حساب کاربری او به شما میدهد.
دستور free خلاصهای از میزان مصرف حافظه توسط کامپیوتر به شما میدهد. این حافظه هم RAM و هم حافظه swap را شامل میشود. با گزینه –h (قابل خواندن برای انسان) از واحدهایی برای نمایش اطلاعات حافظه استفاده میشود که برای انسان راحتتر قابل خواندن باشد. بدون این گزینه، اعداد به بایت نمایش داده میشوند.
free -h
ابزار grep به دنبال خطهایی میگردد که حاوی یک عبارت جستجوشده باشند. وقتی داشتیم دستور alias را استفاده میکردیم، از grep برای جستجو میان خروجی یک برنامه دیگر، یعنی ps استفاده کردیم. دستور grep میتواند در محتویات فایلها هم جستجو را انجام دهد. در اینجا ما از این دستور برای جستجوی کلمه Cisco در فایلهای متنی دایرکتوری جاری استفاده کردهایم:
grep Cisco *.txt
خروجی، لیستی از نام فایلهای حاوی کلمه Cisco است که خط حاوی کلمه نیز جلوی آنها نشان داده شده است. کلمه جستجوشده در هر خط هایلایت شده است.
دستور groups به شما میگوید که هر کاربر عضو چه گروهی است.
groups lian_groupgroups lordm369
دستور gzip فایلها را فشرده میکند. این دستور در حالت پیشفرض فایل اصلی را پاک میکند و فقط نسخه فشردهشده را باقی میگذارد. برای این که فایل اصلی بعد از فشردهسازی حذف نشود، از گزینه –k (keep) استفاده کنید.
gzip -k lian1.txt
دستور head لیستی از 10 خط اول هر فایل به شما میدهد. اگر میخواهید تعداد خطوط بیشتر یا کمتری ببینید، از گزینه –n (number) استفاده کنید. در این مثال، ما ابتدا از دستور head با مقدار پیشفرض یعنی 10 خط و سپس با 5 خط استفاده کردهایم.
head ReadMe.md
head -n 5 ReadMe.md
دستور history لیستی از دستوراتی را نشان میدهد که روی خط فرمان اجرا کردهاید. با نوشتن علامت ! و نوشتن عدد خط مورد نظرتان، میتوانید آن خط را دوباره اجرا کنید.
!532
نوشتن دو علامت تعجب ( !! ) باعث میشود خط قبلی شما دوباره اجرا شود.
!!
اگر میخواهید نام هاست یا شبکهی خود را بدانید، میتوانید از دستور hostname استفاده کنید. اگر این دستور را به همراه گزینه –i استفاده کنید، آدرس IP شبکه شما هم نمایش داده میشود.
دستور jobs تمام جابهای در حال اجرا به همراه وضعیت آنها را نشان میدهد. جاب اساساً پروسسی است که توسط شل آغاز شده است.
با دستور kill میتوانید یک پروسس را از خط فرمان ببندید. برای این کار باید ID آن پروسس (PID) را به دستور kill بدهید. در استفاده از این دستور احتیاط زیادی به خرج دهید و بیدلیل پروسسها را نبندید. مثلا در این مثال، ما فرض کردهایم firefox به دلیلی از کار افتاده است.
برای یافتن PID برنامه فایرفاکس، از ترکیب ps و grep استفاده کردهایم که در بخش alias راجع به آنها صحبت کردیم. به شکل زیر میتوانیم پروسس firefox را بیابیم و PID آن را به دست آوریم:
ps -e | grep firefox
وقتی PID را متوجه شدیم – که در این مورد 12601 است- میتوانیم پروسس را با دستور زیر متوقف کنیم:
kill 19208
با دستور less میتوانید فایلها را بدون بازکردن آنها در یک ویرایشگر متن ببینید. استفاده از این دستور راحتتر است، و احتمال تغییر اتفاقی و ناخواستهی فایل هم هنگام استفاده از آن وجود ندارد. با دستور less میتوانید به راحتی با کلیدهای نشانهی بالا و پایین، PgUp و PgDn و Home و End فایل را اسکرول کنید. برای خروج از دستور less، کلید q را فشار دهید.
برای مشاهده یک فایل با این دستور، کافیاست نام فایل را جلوی less بنویسید:
less ReadMe.md
شما میتوانید خروجی دستورات دیگر را هم در less پایپ کنید. برای مثال میتوانیم برای لیستکردن کل هارددرایو با دستور ls، از خط زیر استفاده کنیم:
ls -R / | less
این دستور مانند دستور search در ویندوز است و برای یافتن یک فایل میتوانید از آن استفاده کنید. با استفاده از دستور –i در کنار این دستور میتوانید جستجو را به صورت case-insensitive (عدم حساسیت به بزرگ یا کوچکبودن حروف) انجام دهید تا حتی اگر نام دقیق فایل را به یاد نداشتید بتوانید آن را پیدا کنید.
اگر صرفا به یاد دارید که اسم یک فایل یک یا دو کلمه را داخل خود دارد، اما اسم دقیق آن را به یاد ندارید، میتوانید از کاراکتر * استفاده کنید. برای مثال، با دستور زیر میتوانید تمام فایلهایی را جستجو کنید که حاوی کلمه lian یا academy است، چه حروف آن بزرگ باشد چه کوچک.
Locate –i academy*lian
این دستور احتمالا اولین دستوری است که برای خیلی از افراد، اولین زبانی است که میآموزند. این دستور فایلها و فولدرهایی را لیست میکند که در دایرکتوری مشخصشده توسط شما قرار دارند. اگر هیچ دایرکتوری را مشخص نکنید، ls به طور پیشفرض آیتمهای موجود در دایرکتوری جاری را نشان میدهد. این دستور آنقدر گزینهها و امکانات متفاوتی دارد که در این مقاله نمیگنجد، و به همین خاطر اکیداً توصیه داریم که دستور ls را گوگل کنید و بیشتر درباره آن بخوانید.
برای لیستکردن فایلها و فولدرهای دایرکتوری جاری از این دستور استفاده کنید:
ls
برای لیستکردن فایلها و دایرکتوریها با جزییات بیشتر، از گزینه –l (long) استفاده کنید:
ls -l
برای نشان دادن اطلاعات با واحدهای قابل خواندن برای انسان (مگابایت و گیگابایت به جای بایت) از گزینه –h استفاده کنید:
ls -lh
برای دیدن فایلهای مخفی، از گزینه -a (all files) استفاده کنید:
ls -lha
دستور man صفحات «man pages» برای یک دستور را نشان میدهد و البته به طور خودکار خروجی را در less پایپ میکند. صفحات man در واقع راهنمای کاربری یک دستور هستند. از آنجایی که man از less برای نمایش صفحات استفاده میکند، در خروجی آن میتوانید از تمام امکانات و قابلیتهای less استفاده کنید.
برای مثال، اگر میخواید صفحات راهنمای دستور chown را ببینید، دستور زیر را تایپ کنید:
man chown
با دستور mkdir میتوانید روی فایلسیستم دایرکتوریهای جدید بسازید. برای این کار اسم دایرکتوری جدید را جلوی mkdir بنویسید. اگر قرار نیست دایرکتوری جدید در دایرکتوری جاری ساخته شود، باید مسیر دایرکتوری جدید را مشخص کنید.
برای ایجاد دو دایرکتوری جدید در دایرکتوری فعلی به اسم training و security در دایرکتوری فعلی، از دستورات زیر استفاده میکنیم:
mkdir training
mkdir security
برای ساختن یک دایرکتوری جدید linux در دایرکتوری training، از این دستور استفاده میکنیم:
mkdir training/events
اگر میخواهید یک دایرکتوری ایجاد کنید ولی دایرکتوری مادر (parent directory) آن وجود ندارد و میخواهید آن را هم همزمان ایجاد کنید، از گزینه –p استفاده کنید تا دستور mkdir همه دایرکتوریهای بالادستی مورد نیاز را هم ایجاد کند. در دستور زیر، یک دایرکتوری fortigate داخل دایرکتوری Fortinet داخل دایرکتوری security که قبلا درست کرده بودیم، ایجاد میکنیم. دایرکتوری fortinet وجود نداشت، ولی ما با گزینه –p کاری کردیم که دستور mkdir آن را به صورت خودکار ایجاد کند:
mkdir -p security/fortinet/fortigate
با دستور mv میتوانید فایلها و دایرکتوریها را از یک دایرکتوری به دایرکتوری دیگر انتقال دهید، و میتوانید همزمان با جابهجا کردن آیتم، نام آن را هم تغییر دهید.
برای انتقال فایل باید آدرس فایل و سپس آدرسی که میخواهید فایل به آن منتقل شود را جلوی دستور mv بنویسید. در این مثال، ما فایل SecuritySignals.pdf را از دایرکتوری ~/Downloads به دایرکتوری جاری منتقل میکنیم که با یک نقطه تنها نشان داده میشود.
mv ~/Downloads/SecuritySignals.pdf .
برای تغییر نام فایل، آن را به یک فایل جدید با نام جدید «انتقال» میدهید:
mv SecuritySignals.pdf MS_SEC_SIG.pdf
البته میشد انتقال و تغییر نام فایل را در یک قدم انجام داد:
mv ~/Downloads/SecuritySignals.pdf ./MS_SEC_SIG.pdf
دستور passwd به شما اجازه میدهد رمز عبور یک کاربر را تغییر دهید. کافیاست دستور passwd را در ترمینال تایپ کنید تا بتوانید رمز خود را تغییر دهید.
شما میتوانید پسورد یک اکانت دیگر را هم تغییر دهید، ولی برای این کار باید از sudo استفاده کنید. بعد از این کار از شما خواسته میشود که پسورد جدید را دو بار وارد کنید.
sudo passwd lordm369
با دستور ping میتوانید اتصال خود از طریق شبکه به یک دستگاه دیگر در شبکه را بررسی کنید. این دستور معمولا برای عیبیابی مشکلات شبکه استفاده میشود. برای استفاده از دستور ping، آدرس IP یا نام ماشین هدف را به این دستور میدهیم.
ping 192.168.100.50
دستور ping تا وقتی با Ctrl+C آن را متوقف کنید اجرا میشود.
در این پنجره این اتفاقات دارد میافتد:
برای تعیینکردن تعداد پکتهای ارسالشده توسط دستور پینگ، از گزینه –c استفاده کنید:
ping -c 5 192.168.100.50
برای شنیدن صدای پینگ، از گزینه –a استفاده کنید:
ping -a 192.168.100.50
دستور ps پروسسهای در حال اجرا را لیست میکند. اگر ps را بدون هیچ گزینهی دیگری استفاده کنید، پروسسهایی که در شل جاری در حال اجرا هستند لیست میشوند.
ps
برای دیدن تمام پروسسهای یک کاربر، از گزینه –u (user) استفاده کنید. این پروسسها احتمالا لیست بلندی میشوند، پس بهتر است برای راحتی بیشتر خروجی را در less پایپ کنیم:
ps -u lian_group | less
برای دیدن تمام پروسسهای در حال اجرا، دستور ps را با گزینه –e (every process) اجرا کنید:
ps -e | less
دستور pwd دایرکتوری جاری را (دایرکتوری که الان در آن هستید) با شروع از دایرکتوری root نشان میدهد:
pwd
دستور rm برای حذف فایلها و البته دایرکتوریها در لینوکس به کار میرود. این دستور سه گزینه پرکاربرد دارد:
– گزینه –i که باعث میشود پیش از حذف هر فایل، از شما پرسیده شود نسبت به حذف آن اطمینان دارید یا نه. میتوان به طور کلی دستور rm را در فایل alias معادل دستور rm –i تعریف کرد تا پیش از پاککردن هر فایل از شما پرسیده شود نسبت به حذف آن مطمئن هستید یا خیر. البته میتوانید rm را معادل rm –I هم تعریف کنید، این گونه فقط وقتی که بخواهید بیش از 2 فایل را حذف کنید، و فقط یک بار از شما پرسیده میشود نسبت به حذف فایلها مطمئن هستید یا نه.
– گزینه –r برای حذفکردن یک دایرکتوری و تمام محتویات آن استفاده میشود. در حالت عادی دستور rm دایرکتوریها را پاک نمیکند و دستور rmdir هم فقط دایرکتوریهای خالی را پاک میکند.
– گزینه –f فایلها را بدون پرسیدن حذف میکند. این گزینه وقتی به کار میآید که rm را در فایل alias معادل rm –i تعریف کرده باشید، ولی بخواهید تعداد زیادی فایل را حذف کنید، بدون این که برای هر فایل از شما پرسیده شود نسبت به حذف آن مطمئن هستید یا نه.
از دستور rmdir برای حذف دایرکتوریهای خالی از فایلسیستم لینوکس استفاده میشود. این دستور فقط در صورتی دایرکتوریها را حذف میکند که خالی باشند؛ بنابراین اگر یک دایرکتوری پر بود، نمیتوانید آن را با دستور rmdir حذف کنید. اگر یک دایرکتوری خالی داخل یک دایرکتوری دیگر بود، میتوانید از گزینه –p استفاده کنید تا ابتدا دایرکتوری داخلی (child) حذف شود، و بعد دایرکتوری مادر (parent):
Rmdir –p parent/child
با دستور shutdown میتوانید لینوکس را خاموش یا ریاستارت کنید.
اگر shutdown را بدون هیچ پارامتری استفاده کنید، کامپیوتر شما بعد از یک دقیقه خاموش میشود.
shutdown
برای این که بلافاصله سیستم را خاموش کنید، از پارامتر now استفاده کنید.
shutdown now
شما میتوانید خاموششدن را زمانبندی کنید و به همهی یوزرهایی که در سیستم لاگین هستند هم زمان خاموششدن آن را اطلاع دهید. برای فهماندن زمان خاموششدن به دستور shutdown، باید زمان دقیق را برای آن مشخص کنید. این زمان را میتوانید بهصورت تعداد دقیقه از زمان فعلی، مثل +90 تعیین کنید، یا میتوانید به صورت مستقیم مثل 23:00 مشخص کنید. هر پیامی هم که پس از آن بنویسید، برای تمام کاربرهایی که در سیستم لاگین کردهاند ارسال میشود.
!shutdown 23:00 Shutdown tonight at 23:00, save your work and log out before then
با استفاده از دستور ssh میتوانید از راه دور به یک کامپیوتر لینوکس وصل شوید و در اکانت خود لاگین کنید. برای ایجاد اتصال، باید نام کاربری و آدرس آیپی یا نام دامنهی کامپیوتر هدف را وارد کنید. در این مثال، ما قصد داریم وارد حساب کاربری lordm369 در کامپیوتر به آدرس 192.168.2.127 شویم. وقتی اتصال ایجاد شد، پسورد آن حساب از ما پرسیده میشود.
ssh lordm369@192.168.2.127
یوزرنیم و پسورد کاربر lordm369 اعتبارسنجی و قبول میشوند، و در حساب این کاربر لاگین میکنیم. دقت کنید که نام هاست از LordM به kali تغییر کرده است.
حال حساب lordm369، دستور w را وارد میکند تا تمام کاربرهای موجود روی سیستم kali لیست شوند. در جلوی نام این کاربر نوشته شده که از pts/1 متصل شده است، که یک pseudo-terminal slave است؛ یعنی ترمینالی است که مستقیما به کامپیوتر متصل نیست.
برای بستن سشن، exit را تایپ میکنیم تا به شل کامپیوتر LordM برگردیم.
wexit
دستور sudoهنگام انجام اقداماتی استفاده میشود که به مجوز root یا سوپریوزر نیاز دارند.
sudo passwd lian_group
دستور tail لیستی از آخرین 10 خط یک فایل به شما میدهد. اگر دوست دارید تعداد خطهای کمتر یا بیشتری ببینید، از گزینه –n (number) استفاده کنید. در این مثال، از tail با مقدار پیشفرض 10 خط استفاده کردهایم و سپس همین دستور را با تعداد خط 5 تکرار کردیم تا فقط 5 خط آخر فایل نشان داده شوند.
tail ReadMe.mdtail -n 5 ReadMe.md
با دستور tar میتوانید یک فایل آرشیو (یا tarball) درست کنید که حاوی چندین فایل دیگر است. اینگونه میتوانید مجموعهای از چندین فایل را راحتتر منتقل و ارسال کنید. معمولا از دستور tar خواسته میشود که آرشیو را فشردهسازی هم بکند؛ اگر از این دستور نخواهید آرشیو را فشرده کند، فایل آرشیو بدون فشردهسازی ایجاد میشود.
برای ایجاد یک فایل آرشیو، باید به tar بگویید کدام فایل را داخل آرشیو قرار دهد، و دوست دارید چه نامی بر فایل آرشیو بگذارید.
در این مثال، تمام فایلهای موجود در دایرکتوری liancourses را که در دایرکتوری جاری قراردارد با دستور tar آرشیو میکنیم.
در اینجا از گزینه –c (create9 و –v (verbose) استفاده شده است. گزینه verbose حین اضافهشدن فایلها به آرشیو، آنها را در ترمینال لیست میکند و بازخوردی تصویری از فرایند ایجاد آرشیو به شما میدهد. گزینه –f (filename) پیش از نام مورد نظر برای آرشیو میآید که در این مورد lian.tar است.
tar -cvf lian.tar liancourses/
برای این که به دستور tar بگویید فایل باید فشرده شود، دو راه دارید. اولین راه استفاده از گزینه –z (gzip) است. این گزینه به دستور tar میگوید که بعد از ایجاد آرشیو، از ابزار gzip برای فشردهکردن آن استفاده کند.
معمولا پسوند .gz به این نوع آرشیو اضافه میشود. این پسوند باعث میشود هرکسی که میخواهد آرشیو را از حالت فشرده خارج کند، دقیقا بداند چه دستوراتی به tar برای بازیابی درست فایلها بدهد.
tar -cvzf lian.tar.gz liancourses/
این بار به خاطر زمان اضافهشده برای فشردهسازی آرشیو، ایجاد آن بیشتر طول میکشد.
با استفاده از گزینه –j میتوانید آرشیو را با یک الگوریتم فشردهسازی قدرتمندتر (bzip2) فشرده کنید که باعث میشود فایل نهایی کوچکتر شود.
tar -cvjf lian.tar.bz2 liancourses
توجه داشته باشید که گزینه –j به طور قابل ملاحظهای از گزینه –z کُندتر است.
اگر میخواهید تعداد زیادی فایل را آرشیو کنید، باید بین گزینه –z و –j انتخاب کنید؛ -z میزان فشردهسازی و سرعت معقولی دارد، ولی –j فشردهسازی بسیار بیشتر ولی سرعت بسیار کمتری دارد.
همانطور که در اسکرین شات زیر میبینید، فایل .tar بیشترین حجم را دارد، فایل .tar.gz کوچکتر است، و فایل .tar.bz2 کمترین حجم را دارد.
برای استخراج یک فایل آرشیو، از گزینه –x (extract9 استفاده کنید. گزینههای –v و –f در اینجا رفتار یکسانی با هنگام ایجاد فایل آرشیو دارند. با دستور ls مطمئن شوید فایلها را دارید از چه نوع آرشیوی استخراج میکنید، و سپس دستور زیر را وارد کنید:
ls
tar -xvf lian.tar
برای استخراج فایلها از آرشیو .tar.gz از گزینه –z (gzip) استفاده کنید.
tar -xvzf lian.tar.gz
برای استخراج آرشیو .tar.bz2 هم از گزینه –j به جای –z استفاده کنید.
tar -xvjf lian.tar.bz2
دستور top دادههای مربوط به ماشین لینوکس شما را به صورت بلادرنگ نمایش میدهد. در قسمت بالای صفحه، خلاصهای از وضعیت ماشین آمده است.
اولین خط زمان و مدتزمانی را که کامپیوتر شما در حال کارکردن بوده است، تعداد کاربران که به آن لاگین کردهاند، و میزان بار میانگین را ظرف یک، پنج و پانزده دقیقه گذشته نشان میدهد.
دومین خط تعداد تسکها و وضعیت آنها را نشان میدهد (running، stopped، sleeping و zombie).
سومین خط اطلاعات CPU را نشان میدهد. معنی فیلدهای این خط به قرار زیر است:
چهارمین خط مقدار کل حافظهی فیزیکی، مقدار آزاد (free)، استفادهشده (used)، بافرشده و کششده را نشان میدهد.
پنجمین خط مقدار کل حافظهی swap، مقدار آزاد، استفادهشده و در دسترس را (که در آن میزان حافظهای که انتظار میرود از کشها قابل بازیابی باشد هم محاسبه شده) نشان میدهد.
top
هنگام اجراشدن دستور top میتوانید با فشاردادن دکمهی E، میتوانید واحدها را از بایت به واحدهایی تغییر دهید که خواندن آنها راحتتر باشد (که در تصویر بالا هم همین کار را کردهایم).
معنی ستونهای آمده به قرار زیر است:
پروسس میتواند یکی از پنج وضعیت زیر را داشته باشد:
برای خروج از دستور top هم کافیاست دکمهی Q را فشار دهید.
با دستور touch هم میتوانید برچسب زمانی (timestamp) روی فایلها و دایرکتوریها را عوض کنید، هم فایلهای خالی جدید ایجاد کنید. پیش از آن که استفاده از دستور touch را بیاموزیم، باید بیشتر درباره timestamp فایلها در لینوکس صحبت کنیم. در لینوکس هر فایل سه برچسب زمانی دارد:
برای دیدن مشخصات فایل از جمله برچسبهای زمانی آن در لینوکس، میتوانید از دستور stat استفاده کنید:
stat file_name
برای ایجاد یک فایل جدید در لینوکس با استفاده از دستور touch، میتوانید به صورت زیر از این دستور استفاده کنید؛ با این دستور میتوانید چندین فایل را هم به صورت همزمان ایجاد کنید.
touch example.txt
touch file1 file2 file3
با استفاده از دستور touch –c میتوانید برچسب زمانی فایل را تغییر دهید. در صورتی که فایل وجود داشته باشد، این دستور زمان آخرین دسترسی و تغییر فایل را به زمان فعلی تغییر میدهد، و اگر فایل وجود نداشت کاری نمیکند. با استفاده از دستور touch –a میتوانید زمان دسترسی، و با استفاده از دستور touch –m زمان تغییر فایل را به زمان فعلی تغییر دهید.
touch –c file1
touch –a file1
touch –m file1
با استفاده از دستورات touch –d و touch –t هم میتوانید برچسبهای زمانی را دقیقا به زمانی که دوست دارید تغییر دهید؛ برای مثال دستورات زیر برچسبهای زمانی فایل را به 12 ژوئن سال 2018 ساعت 11:02 تغییر میدهند:
touch –d ’12 June 2018 11:02’ file1
touch –t 201806121102 file1
با دستور uname میتوانید بعضی از اطلاعات سیستمی مربوط به کامپیوتر لینوکسی را که دارید روی آن کار میکنید به دست آورید.
uname -a
uname -s
uname -r
uname -v
لینوکس معمولا توسط چندین کاربر استفاده میشود؛ یعنی معمولا چندین کاربر به طور همزمان با سیستم یکسانی تعامل میکنند. با دستور useradd میتوانید یک کاربر جدید ایجاد کنید و سپس با دستور passwd یک رمز عبور هم برای آن کاربر تعیین کنید. کافی است نام کاربر مورد نظرتان روبهروی این دستورها بنویسید. برای حذف کاربر هم کافیست دستور userdel را تایپ کنید و سپس یوزرنیم کاربر را روبهروی آن بنویسید. به یاد داشته باشید که استفاده از این دستورات، نیاز به دسترسی sudo دارد.
با استفاده از دستور usermod میتوانید اطلاعات لاگین یک کاربر را تغییر دهید. برای مثال با usermod میتوانید یک کاربر را به یک گروه اضافه کنید، گروه اصلی کاربر را تغییر دهید، نام کامل کاربر را تغییر دهید، دایرکتوری Home کاربر را تغییر دهید، شل پیشفرض کاربر را تغییر دهید و بسیاری کارهای دیگر. به عنوان مثال برای اضافه کردن یک کاربر به گروه sudoers، میتوانیم از گزینه –a (add) و –G (group) استفاده کنیم:
sudo usermod –aG sudo lian_group
به یاد داشته باشید که این دستور را هم باید با دسترسی sudo اجرا کنید.
دستور w تمام کاربرهایی را که در حال حاضر لاگین کردهاند نشان میدهد.
w
دستور wget برای دانلود فایل از اینترنت استفاده میشود. با استفاده از ابزار wget میتوانید فایلهای مختلف را با استفاده از پروتکلهای HTTP، HTTPS و FTP دانلود کنید. گزینههای مختلف دستور wget به شما اجازه میدهند چندین فایل را همزمان دانلود کنید، دانلودها را ادامه دهید، پهنای باند را محدود کنید، دانلود را در پسزمینه انجام دهید، و بسیاری کارهای دیگر را انجام دهید. اما شاید مهمترین کاری که میتوانید با wget انجام دهید، کپیکردن صفحات وب به صورت محلی، یا به اصطلاح بهتر mirror کردن صفحات وب است. برای مثال برای mirror کردن وبسایت liangroup.net از دستور زیر استفاده میکنیم:
wget –mkEpnp https://liangroup.net
با دستور whoami میتوانید ببینید با چه حسابی لاگین کردهاید.
whoami
با دستورات zip و unzip میتوانید فایلها را به صورت آرشیو زیپ ذخیره کنید، یا آرشیوهای زیپ را استخراج کنید. کافیست آدرس فایل را جلوی این دستورات بنویسید.
اگر ترمینال پر از دستور شده بود و خواستید آن را تمیز کنید، از دستور clear استفاده کنید.
برای کاملکردن خودکار دستورات در ترمینال، کافیست یک tab بعد از دستورات بزنید. برای مثال، اگر میخواهید به دایرکتوری Documents بروید، میتوانید زمانی که در دایرکتوری مادر آن هستید، تایپ کنید cd Doc و سپس کلید تب را بزنید تا ترمینال به طور خودکار دستور را کامل کند.
با میانبرهای Ctrl+C و Ctrl+Z میتوانید هر دستوری را که در ترمینال در حال اجراست متوقف کنید. دستور Ctrl+C دستور را به طور کامل متوقف میکند، در حالی که Ctrl+Z دستور را pause میکند.
اگر به صورت اتفاقی ترمینال را با میانبر Ctrl+S، میتوانید آن را به راحتی با میانبر Ctrl+Q از حالت فریز خارج کنید.
میانبر Ctrl+A شما را به ابتدای خط و Ctrl+E شما را به انتهای خط میبرد.
با علامت سمیکالن ( ; ) میتوانید چند دستور جداگانه را در یک خط از هم جدا کنید : Command1;Command2;Command3. البته به جای این علامت میتوانید از && هم استفاده کنید تا هر دستور فقط در صورتی اجرا شود که دستور قبلی آن اجرا شده باشد.
یادگیری لینوکس مثل یادگیری هر مهارت دیگری است؛ به همین خاطر برای این که کاملا با این دستورات آشنا شوید و به آنها کاملا تسلط پیدا کنید، نیاز به تمرین دارید. وقتی این دستورات ملکه ذهنتان شد، کارکردن با لینوکس خیلی سادهتر میشود.
یک شوخی قدیمی – شاید به قدمت خود یونیکس! – هست که میگوید فقط کافیست دستور man را بلد باشید. این شوخی چندان هم بیراه نیست، ولی اگر آشنایی اولیه با لینوکس نداشته باشید، عملا صفحات man برای شما بیاستفاده میشوند. سعی این مقاله هم دادن همین آشنایی اولیه بود!