التعامل مع الملفات في Linux: إنشاء ونسخ ونقل وحذف
تعرف الآن كيف تتنقل بين المجلدات. حان وقت العمل على الملفات نفسها: إنشاؤها، وقراءتها، ونسخها، ونقلها، وحذفها. هذه الأوامر ستستخدمها كل يوم، سواء على جهازك أو على خادم يشغّل موقعك. وفي هذا الدرس ستتعلم أيضاً أخطر أمر في Linux، وكيف تستخدمه بأمان.
إنشاء الملفات: touch
Section titled “إنشاء الملفات: touch”touch todo.txtls -l todo.txt-rw-r--r-- 1 sara sara 0 Nov 10 11:00 todo.txttouch ينشئ ملفاً فارغاً (حجمه 0). وإذا كان الملف موجوداً، يحدّث تاريخ تعديله فقط دون أن يمسه.
ولكتابة محتوى في الملف، تعرف من درس سطر الأوامر echo مع >. أو استخدم محرراً داخل الطرفية: الأسهل للمبتدئين هو nano:
nano todo.txtاكتب ما تريد، ثم Ctrl + O ثم Enter للحفظ، و Ctrl + X للخروج. والاختصارات مكتوبة دائماً في أسفل الشاشة.
قراءة الملفات
Section titled “قراءة الملفات”لنفترض أن todo.txt فيه خمس مهام: مذاكرة، رياضة، قراءة، زيارة جدتي، ترتيب الغرفة.
cat todo.txtمذاكرةرياضةقراءةزيارة جدتيترتيب الغرفةcat يعرض الملف كاملاً. وللملفات الطويلة:
head -n 2 todo.txt # أول سطرينtail -n 1 todo.txt # آخر سطرwc -l todo.txt # عدد الأسطرمذاكرةرياضةترتيب الغرفة5 todo.txthead: البداية، وtail: النهاية، و-nعدد الأسطر.less ملف: يعرض الملف الطويل صفحة صفحة، تتنقل فيه بالأسهم، وتخرج بـq.
النسخ: cp
Section titled “النسخ: cp”cp todo.txt todo-backup.txtlstodo-backup.txt todo.txtcp (من copy): المصدر أولاً ثم الهدف. ولنسخ مجلد بكل محتوياته، أضف -r (من recursive):
cp -r archive archive-copyالنقل وإعادة التسمية: mv
Section titled “النقل وإعادة التسمية: mv”mv (من move) له وظيفتان حسب الهدف:
mv todo-backup.txt old-todo.txt # إعادة تسميةmkdir archivemv old-todo.txt archive/ # نقل إلى مجلدls archiveold-todo.txtإذا كان الهدف اسماً جديداً يعيد التسمية، وإذا كان مجلداً موجوداً ينقل الملف إليه. ولا يحتاج mv الخيار -r مع المجلدات.
الحذف: rm
Section titled “الحذف: rm”rm archive-copy/old-todo.txtrmdir archive-copyrm(من remove): يحذف ملفاً.rmdir: يحذف مجلداً فارغاً فقط.
ولحذف مجلد بمحتوياته:
rm archiverm: cannot remove 'archive': Is a directoryrm -r archiveالخيار -r يحذف المجلد وكل ما بداخله.
الرموز البديلة: *
Section titled “الرموز البديلة: *”النجمة * تعني «أي عدد من الحروف»:
touch photo1.jpg photo2.jpg notes.mdls *.jpgphoto1.jpg photo2.jpg*.jpg: كل الملفات التي تنتهي بـ.jpg.photo*: كل ما يبدأ بـphoto.cp *.jpg Pictures/: انسخ كل الصور دفعة واحدة.
تخيّل * مثل الجوكر في لعب الورق: يحل محل أي شيء. وانتبه: rm *.txt تحذف كل ملفات النصوص في المجلد، فتأكد بـ ls *.txt أولاً.
البحث: grep و find
Section titled “البحث: grep و find”البحث داخل الملفات بـ grep:
grep -n "رياضة" todo.txt2:رياضة-n يعرض رقم السطر. ومن الخيارات المفيدة: -i لتجاهل حالة الأحرف الإنجليزية، و -r للبحث في كل ملفات مجلد.
البحث عن الملفات نفسها بـ find:
find . -name "*.txt"./archive/old-todo.txt./todo.txtfind يبحث في المجلد المحدد (هنا . أي الحالي) وكل ما بداخله من مجلدات، عن ملفات تطابق الاسم.
جرّب بنفسك
Section titled “جرّب بنفسك”- أنشئ مجلداً
lab، وادخل إليه، وأنشئ داخله 3 ملفات.txtوملفين.mdبأمرtouchواحد. - اكتب في أحد الملفات 5 أسطر، واعرض أول 3 منها بـ
head. - انسخ ملفات
.txtكلها إلى مجلد جديد اسمهbackupباستخدام*. - أعد تسمية أحد ملفات
.md، ثم انقل الآخر إلىbackup. - ابحث بـ
findعن كل ملفات.mdفيlab. - احذف مجلد
backupبأمان: اعرضه بـlsأولاً، ثم احذفه بـrm -r.
أخطاء شائعة
Section titled “أخطاء شائعة”- cp لمجلد بدون -r: خطأ
-r not specified; omitting directory. - mv فوق ملف موجود: إذا كان اسم الهدف موجوداً، يُستبدل دون سؤال. استخدم
mv -iليسألك. - rm مع * دون مراجعة: قد تحذف أكثر مما تقصد. راجع بـ
lsأولاً.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ماذا يفعل الأمر mv report.txt final.txt إذا لم يكن final.txt موجوداً؟
عندما يكون الهدف اسماً جديداً لا مجلداً موجوداً، يعمل mv كإعادة تسمية.
سؤال
أي أمر يحذف مجلداً اسمه old بكل محتوياته؟
rmdir يحذف المجلدات الفارغة فقط، و rm وحده لا يحذف المجلدات، أما rm -r فيحذف المجلد بكل ما فيه.
الخلاصة
Section titled “الخلاصة”touchلإنشاء ملف، وnanoلتحريره داخل الطرفية.catوheadوtailوlessوwc -lلقراءة الملفات.cpللنسخ (و-rللمجلدات)، وmvللنقل وإعادة التسمية.rmحذف نهائي بلا تراجع، وrm -rللمجلدات، فراجع بـlsقبله دائماً.*للتعامل مع مجموعة ملفات، وgrepللبحث داخلها، وfindللبحث عنها.