تخطَّ إلى المحتوى

التعامل مع الملفات في Linux: إنشاء ونسخ ونقل وحذف

الدرس 4 من 10 · أساسيات Linux

تعرف الآن كيف تتنقل بين المجلدات. حان وقت العمل على الملفات نفسها: إنشاؤها، وقراءتها، ونسخها، ونقلها، وحذفها. هذه الأوامر ستستخدمها كل يوم، سواء على جهازك أو على خادم يشغّل موقعك. وفي هذا الدرس ستتعلم أيضاً أخطر أمر في Linux، وكيف تستخدمه بأمان.

نافذة طرفيّة
touch todo.txt
ls -l todo.txt
الناتج
-rw-r--r-- 1 sara sara 0 Nov 10 11:00 todo.txt

touch ينشئ ملفاً فارغاً (حجمه 0). وإذا كان الملف موجوداً، يحدّث تاريخ تعديله فقط دون أن يمسه.

ولكتابة محتوى في الملف، تعرف من درس سطر الأوامر echo مع >. أو استخدم محرراً داخل الطرفية: الأسهل للمبتدئين هو nano:

نافذة طرفيّة
nano todo.txt

اكتب ما تريد، ثم Ctrl + O ثم Enter للحفظ، و Ctrl + X للخروج. والاختصارات مكتوبة دائماً في أسفل الشاشة.

لنفترض أن todo.txt فيه خمس مهام: مذاكرة، رياضة، قراءة، زيارة جدتي، ترتيب الغرفة.

نافذة طرفيّة
cat todo.txt
الناتج
مذاكرة
رياضة
قراءة
زيارة جدتي
ترتيب الغرفة

cat يعرض الملف كاملاً. وللملفات الطويلة:

نافذة طرفيّة
head -n 2 todo.txt # أول سطرين
tail -n 1 todo.txt # آخر سطر
wc -l todo.txt # عدد الأسطر
الناتج
مذاكرة
رياضة
ترتيب الغرفة
5 todo.txt
  • head: البداية، و tail: النهاية، و -n عدد الأسطر.
  • less ملف: يعرض الملف الطويل صفحة صفحة، تتنقل فيه بالأسهم، وتخرج بـ q.
نافذة طرفيّة
cp todo.txt todo-backup.txt
ls
الناتج
todo-backup.txt todo.txt

cp (من copy): المصدر أولاً ثم الهدف. ولنسخ مجلد بكل محتوياته، أضف -r (من recursive):

نافذة طرفيّة
cp -r archive archive-copy

النقل وإعادة التسمية: mv

Section titled “النقل وإعادة التسمية: mv”

mv (من move) له وظيفتان حسب الهدف:

نافذة طرفيّة
mv todo-backup.txt old-todo.txt # إعادة تسمية
mkdir archive
mv old-todo.txt archive/ # نقل إلى مجلد
ls archive
الناتج
old-todo.txt

إذا كان الهدف اسماً جديداً يعيد التسمية، وإذا كان مجلداً موجوداً ينقل الملف إليه. ولا يحتاج mv الخيار -r مع المجلدات.

نافذة طرفيّة
rm archive-copy/old-todo.txt
rmdir archive-copy
  • rm (من remove): يحذف ملفاً.
  • rmdir: يحذف مجلداً فارغاً فقط.

ولحذف مجلد بمحتوياته:

نافذة طرفيّة
rm archive
الناتج
rm: cannot remove 'archive': Is a directory
نافذة طرفيّة
rm -r archive

الخيار -r يحذف المجلد وكل ما بداخله.

النجمة * تعني «أي عدد من الحروف»:

نافذة طرفيّة
touch photo1.jpg photo2.jpg notes.md
ls *.jpg
الناتج
photo1.jpg photo2.jpg
  • *.jpg: كل الملفات التي تنتهي بـ .jpg.
  • photo*: كل ما يبدأ بـ photo.
  • cp *.jpg Pictures/: انسخ كل الصور دفعة واحدة.

تخيّل * مثل الجوكر في لعب الورق: يحل محل أي شيء. وانتبه: rm *.txt تحذف كل ملفات النصوص في المجلد، فتأكد بـ ls *.txt أولاً.

البحث داخل الملفات بـ grep:

نافذة طرفيّة
grep -n "رياضة" todo.txt
الناتج
2:رياضة

-n يعرض رقم السطر. ومن الخيارات المفيدة: -i لتجاهل حالة الأحرف الإنجليزية، و -r للبحث في كل ملفات مجلد.

البحث عن الملفات نفسها بـ find:

نافذة طرفيّة
find . -name "*.txt"
الناتج
./archive/old-todo.txt
./todo.txt

find يبحث في المجلد المحدد (هنا . أي الحالي) وكل ما بداخله من مجلدات، عن ملفات تطابق الاسم.

  1. أنشئ مجلداً lab، وادخل إليه، وأنشئ داخله 3 ملفات .txt وملفين .md بأمر touch واحد.
  2. اكتب في أحد الملفات 5 أسطر، واعرض أول 3 منها بـ head.
  3. انسخ ملفات .txt كلها إلى مجلد جديد اسمه backup باستخدام *.
  4. أعد تسمية أحد ملفات .md، ثم انقل الآخر إلى backup.
  5. ابحث بـ find عن كل ملفات .md في lab.
  6. احذف مجلد backup بأمان: اعرضه بـ ls أولاً، ثم احذفه بـ rm -r.
  • cp لمجلد بدون -r: خطأ -r not specified; omitting directory.
  • mv فوق ملف موجود: إذا كان اسم الهدف موجوداً، يُستبدل دون سؤال. استخدم mv -i ليسألك.
  • rm مع * دون مراجعة: قد تحذف أكثر مما تقصد. راجع بـ ls أولاً.

سؤال

ماذا يفعل الأمر mv report.txt final.txt إذا لم يكن final.txt موجوداً؟

سؤال

أي أمر يحذف مجلداً اسمه old بكل محتوياته؟

  • touch لإنشاء ملف، و nano لتحريره داخل الطرفية.
  • cat و head و tail و less و wc -l لقراءة الملفات.
  • cp للنسخ (و -r للمجلدات)، و mv للنقل وإعادة التسمية.
  • rm حذف نهائي بلا تراجع، و rm -r للمجلدات، فراجع بـ ls قبله دائماً.
  • * للتعامل مع مجموعة ملفات، و grep للبحث داخلها، و find للبحث عنها.