محیط لینوکس، CLI و فایل‌ها

محیط Linux

Linux هسته‌ای است که توزیع‌ها آن را همراه ابزارها و Package Manager ارائه می‌کنند. در درس قبل یک VM آزمایشی Ubuntu Server ساختیم؛ همین محیط VM برای این درس‌ها مناسب است. WSL، یک سرور آزمایشی یا یک سیستم Linux شخصی نیز قابل استفاده‌اند.

ترمینال برنامه‌ای است که دستور را به shell می‌فرستد. در بیشتر توزیع‌ها، shell پیش‌فرض کاربر Bash است. prompt زیر را در نظر بگیرید:

1ubuntu@server:~/project$

بخش پیش از @ نام کاربری، بخش بعد از آن hostname، و ~/project دایرکتوری فعلی است. علامت $ یعنی کاربر عادی هستید؛ prompt با # معمولاً نشان می‌دهد shell با دسترسی root اجرا شده است. کارهای روزمره را با کاربر عادی انجام دهید و فقط هنگام نیاز از sudo استفاده کنید.

هر دستور معمولاً این شکل را دارد:

1command [options] [arguments]

برای مثال، در دستور زیر ls دستور، -l گزینه و ~/project آرگومان است:

1ls -l ~/project

راهنمای خود سیستم

نیازی نیست گزینه‌های همهٔ دستورها را حفظ کنید؛ ابتدا راهنمای محلی سیستم را بررسی کنید:

1man ls
2ls --help
3apropos "copy files"

برای خروج از man کلید q را بزنید. apropos با یک عبارت، صفحه‌های راهنمای مرتبط را پیدا می‌کند؛ ممکن است در بعضی سیستم‌ها ابتدا پایگاه دادهٔ آن نیاز به به‌روزرسانی داشته باشد.

مسیرها و پیمایش دایرکتوری‌ها

دایرکتوری ریشه با / شروع می‌شود. مسیرهای شروع‌شده با / مطلق هستند و از هر دایرکتوری به همان مکان اشاره می‌کنند. مسیرهای دیگر نسبی هستند و نسبت به دایرکتوری فعلی تفسیر می‌شوند.

1pwd
2cd /var/log
3cd ..
4cd ~
5cd -
  • pwd مسیر فعلی را نمایش می‌دهد.
  • .. دایرکتوری والد و . دایرکتوری فعلی است.
  • ~ میان‌بری برای دایرکتوری خانگی کاربر فعلی است.
  • cd - به دایرکتوری قبلی برمی‌گردد.

فایل‌های نام‌گذاری‌شده با . در ابتدای نام، پنهان هستند. برای دیدن آن‌ها از -a استفاده کنید و برای اطلاعات بیشتر مانند مالک و مجوزها، -l را اضافه کنید:

1ls -la

مدیریت فایل و دایرکتوری

دستورهای پایهٔ زیر را در یک دایرکتوری آزمایشی امتحان کنید:

1mkdir -p ~/linux-lab/logs
2cd ~/linux-lab
3touch notes.txt
4cp notes.txt notes.backup.txt
5mv notes.backup.txt logs/
6rm logs/notes.backup.txt
7rmdir logs
  • mkdir -p دایرکتوری‌های والد لازم را نیز ایجاد می‌کند و اگر دایرکتوری از قبل وجود داشته باشد خطا نمی‌دهد.
  • cp کپی و mv جابه‌جایی/تغییر نام انجام می‌دهد.
  • rmdir فقط دایرکتوری خالی را حذف می‌کند.
  • rm حذف دائمی می‌کند؛ سطل بازیافتی در کار نیست. پیش از حذف، مسیر را با pwd و فایل‌ها را با ls بررسی کنید.

برای حذف یک درخت دایرکتوری از rm -r استفاده می‌شود، اما rm -rf را به یک عادت تبدیل نکنید. استفاده از مسیر کامل، بازبینی نام دایرکتوری و آپشن -i برای حذف تعاملی فایل‌ها خطاهای پرهزینه را کمتر می‌کند:

1rm -ri ~/linux-lab/old-files

خواندن و انتخاب فایل

برای فایل‌های کوتاه از cat و برای فایل‌های بلند از less استفاده کنید. less فایل را صفحه‌به‌صفحه باز می‌کند و با / می‌تواند در آن جست‌وجو کنید.

1cat /etc/hostname
2less /etc/services
3head -n 10 /etc/passwd
4tail -n 20 /var/log/syslog

نام فایل‌ها را می‌توانید با glob انتخاب کنید. shell پیش از اجرای دستور، این الگوها را به نام فایل‌های منطبق تبدیل می‌کند:

1ls *.log
2ls backup-?.tar.gz
3ls [0-9][0-9]-report.txt
  • * هر تعداد نویسه را می‌پذیرد.
  • ? دقیقاً یک نویسه را می‌پذیرد.
  • [0-9] یکی از نویسه‌های بازه را می‌پذیرد.

همیشه نام فایل‌های دارای فاصله یا نویسه‌های ویژه را quote کنید. در کار عملی، نام فایل را طوری انتخاب کنید که ساده و قابل پیش‌بینی باشد:

1mkdir "release notes"
2cp "release notes"/notes.txt ./

منابع یادگیری

مستندات و مقالات

ویدیو