منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
پشتیبانیانتشار محتوا
دورهٔ آموزشیرایگان

آموزش لینوکس مقدماتی؛ از صفر تا SSH و کار با موبایل

۱۹ درس در ۵ فصل۹ ساعت و ۱۲ دقیقهدربارهٔ دوره
۲. فایل، متن و مجوزهادرس ۵ از ۱۹

ساختن، کپی، جابه‌جایی و حذف فایل‌ها

۲۸ دقیقه آموزش متنی
در این درس ۲ بخش

فرض کنید برای یادداشت‌های دوره یک پوشهٔ کاری می‌خواهید: نسخهٔ اصلی برنامه در یک بخش بماند، یک کپی در بایگانی قرار بگیرد و نام یک یادداشت خالی اصلاح شود. این سناریو چهار کار روزمرهٔ مدیریت فایل را کنار هم می‌گذارد. در پایان درس باید پیش از اجرای هر فرمان بتوانید مبدأ، مقصد و اثر آن روی نسخهٔ اصلی را توضیح دهید. محیط مثال‌ها Debian یا Ubuntu با پوستهٔ Bash است؛ همهٔ فایل‌ها ساختگی‌اند و به اطلاعات واقعی شما ارتباطی ندارند.

ابتدا آزمایشگاهی تازه در پوشهٔ خانگی بسازید. mktemp با گزینهٔ ‎-d یک پوشهٔ یکتا ایجاد می‌کند و جای شش X را با نویسه‌های تصادفی عوض می‌کند. خط اول مسیر حاصل را در متغیر lab نگه می‌دارد و خط دوم وارد همان پوشه می‌شود. این دو خط را در همین ترمینال و به همین ترتیب اجرا کنید؛ اگر ساخت پوشه یا ورود به آن خطا داد، ادامه ندهید. خروجی pwd باید مسیری در خانهٔ خودتان با پیشوند darsavand-files باشد؛ قسمت تصادفی برای هر نفر فرق می‌کند.

bash
lab=$(mktemp -d "$HOME/darsavand-files.XXXXXX")
cd "$lab"
pwd

فرمان mkdir پوشه می‌سازد. در این مثال notes برای یادداشت‌ها و archive برای بایگانی است. touch اگر فایل وجود نداشته باشد، فایلی خالی می‌سازد؛ اگر وجود داشته باشد، محتوایش را پاک نمی‌کند و زمان‌های آن را به‌روزرسانی می‌کند. برای داشتن نمونه‌ای قابل خواندن، printf دو خط متن در plan.txt می‌نویسد. علامت > در درس لوله و هدایت خروجی بررسی می‌شود؛ فعلاً فقط برای همین فایل تازه استفاده‌اش کنید. پس از اجرای ls باید دو نام plan.txt و todo.txt را ببینید.

bash
mkdir notes archive
touch notes/todo.txt
printf '%s\n' 'Linux practice' 'Read one lesson' > notes/plan.txt
ls -1 notes

ساختار cp به ترتیب «مبدأ، مقصد» است. دستور اول یک نسخهٔ مستقل از برنامه در بایگانی می‌سازد و نسخهٔ notes/plan.txt را نگه می‌دارد. در مقابل، mv نام یا جای فایل را عوض می‌کند؛ پس از تغییر نام todo.txt، نام قبلی دیگر وجود ندارد. گزینهٔ ‎-i هنگام جایگزینی یک مقصد موجود سؤال می‌پرسد؛ برای فایل‌های تازهٔ این مثال نباید سؤالی ببینید. علامت -- پایان گزینه‌هاست و جلوی اشتباه گرفتن نام فایل با گزینه را می‌گیرد.

bash
cp -i -- notes/plan.txt archive/plan-copy.txt
mv -i -- notes/todo.txt notes/checklist.txt
mv -i -- archive/plan-copy.txt archive/plan-saved.txt
ls -1 archive
ls -1 notes

خروجی فرمان فهرست اول فقط plan-saved.txt است؛ فهرست دوم checklist.txt و plan.txt را نشان می‌دهد. اکنون دو نسخه از برنامه دارید، اما فقط یک نام برای یادداشت خالی دارید. تغییر دادن نسخهٔ کپی، نسخهٔ اصلی را تغییر نمی‌دهد. اگر مقصد را پوشه‌ای موجود بنویسید، مانند cp notes/plan.txt archive/، فایل با نام خودش در آن پوشه قرار می‌گیرد. پیش از اجرا مشخص کنید مقصد قرار است نام جدید باشد یا یک پوشه؛ این تفاوت کوچک از اشتباه‌های رایج جلوگیری می‌کند.

خروجی مورد انتظار دو فرمان فهرست بالا به این شکل است؛ این کادر را اجرا نکنید:

bash
# archive
plan-saved.txt
# notes
checklist.txt
plan.txt

حذف را فقط روی یادداشت خالی همین آزمایشگاه تمرین می‌کنیم. هدف دقیق این بخش فایل checklist.txt داخل notes در پوشه‌ای است که pwd نشان می‌دهد. نخست مسیر و خود فایل را ببینید. سپس rm با ‎-i دربارهٔ حذف همان فایل سؤال می‌کند؛ فقط اگر نام هدف درست بود، پاسخ مثبت بدهید؛ در محیط انگلیسی معمولاً y است. rm معمولاً فایل را به سطل زباله نمی‌برد و بازگردانی ساده‌ای ندارد. اگر فایل دیگری نمایش داده شد یا مسیر را نمی‌شناسید، پاسخ منفی بدهید و متوقف شوید.

bash
pwd
ls -l -- ./notes/checklist.txt
rm -i -- ./notes/checklist.txt
ls -1 notes

پس از تأیید حذف، فهرست notes باید فقط plan.txt باشد. نداشتن پیام موفقیت در mkdir، cp، mv یا rm معمول است؛ با فهرست گرفتن نتیجه را بررسی کنید. بزرگی و کوچکی حروف در نام‌ها مهم است: Notes با notes یکی نیست. فاصله هم مرز آرگومان‌هاست؛ برای نامی مانند "week one.txt" از گیومهٔ انگلیسی استفاده کنید. فعلاً نام‌های ساده انتخاب کنید و نام مقصد را کامل بخوانید. در این تمرین هیچ حذف گروهی، حذف پوشهٔ پر یا دست‌کاری مسیرهای سیستمی لازم نیست.

تمرین: یک برگه برای مرور

بدون نگاه کردن به پاسخ، در notes فایلی خالی به نام review.txt بسازید، از آن نسخه‌ای با نام review-backup.txt در archive بگیرید و سپس فقط نسخهٔ اصلی را به review-ready.txt تغییر نام دهید. چیزی را حذف نکنید. پیش‌بینی کنید در هر پوشه چه نام‌هایی خواهید دید. برای بررسی یادگیری، دلیل انتخاب cp و mv را با صدای بلند بگویید؛ حفظ کردن ترتیب واژه‌ها کافی نیست، باید بدانید کدام مرحله نسخهٔ اضافی می‌سازد و کدام مرحله فقط نام را عوض می‌کند.

bash
touch notes/review.txt
cp -i -- notes/review.txt archive/review-backup.txt
mv -i -- notes/review.txt notes/review-ready.txt
ls -1 notes
ls -1 archive

پاسخ توضیح‌دار: touch برگهٔ خالی را ایجاد می‌کند، cp نسخهٔ دوم را نگه می‌دارد و mv نام نسخهٔ اول را تغییر می‌دهد. در notes باید plan.txt و review-ready.txt باشند؛ در archive نیز plan-saved.txt و review-backup.txt را می‌بینید. نبودن review.txt طبیعی است، چون تغییر نام داده شده است. اگر آن را هنوز می‌بینید، خروجی خطای mv را بخوانید و وجود مقصد را بررسی کنید. نتیجهٔ درس این است که بتوانید پیش از هر تغییر، هدف را تعیین کنید و بعد با مشاهدهٔ فایل‌ها نتیجه را بسنجید.

منابع رسمی و مطالعهٔ تکمیلی

https://manpages.ubuntu.com/manpages/focal/man1/mktemp.1.html
https://www.gnu.org/s/coreutils/manual/html_node/mkdir-invocation.html
https://www.gnu.org/s/coreutils/manual/html_node/touch-invocation.html
https://www.gnu.org/s/coreutils/manual/html_node/cp-invocation.html
https://www.gnu.org/s/coreutils/manual/html_node/mv-invocation.html
https://www.gnu.org/s/coreutils/manual/html_node/rm-invocation.html

تألیف و مثال‌های اختصاصی: تحریریه درس‌آوند. منابع انگلیسی برای بررسی مفاهیم و مطالعهٔ تکمیلی معرفی شده‌اند.

ورود برای ثبت پیشرفت

متن درس‌های عمومی را بدون ورود بخوانید.

یادگیری‌ات را دنبال کن

برای نگهداری پیشرفت و ادامهٔ یادگیری از حساب خود استفاده کن.

ورود و ثبت‌نام
دربارهٔ این دوره

آموزش رایگان لینوکس مقدماتی با ۱۹ درس فارسی، تصاویر اختصاصی، تمرین و پاسخ؛ از ترمینال و VPS تا SSH در ویندوز و موبایل و پروژهٔ پشتیبان‌گیری.

پرسشی دربارهٔ این درس داری؟گفت‌وگو با پشتیبانی در حساب کاربری
یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان