النقل وإعادة التسمية
في مستكشف الملفات، تبدو إعادة التسمية والنقل شيئين مختلفين. تنقر بالزر الأيمن ← Rename لتغيير اسم. وتسحب وتُفلت للنقل.
في الـ terminal، هما الأمر نفسه: mv — أي move. إعادة التسمية ليست إلا نقلًا تكون فيه
الوجهة «هنا نفسه، لكن باسم مختلف.»
وبمجرد أن يستقرّ هذا في ذهنك، يكفّ الأمر عن الشعور بالغرابة ويبدأ بالشعور بالأناقة.
إعادة تسمية ملف
الشكل هو نفسه شكل cp: mv المصدر الوجهة.
echo "todo list" > todo.txt
mv todo.txt tasks.txt
شغّل ls. الملف اسمه الآن tasks.txt. الاسم القديم اختفى — لم يُحذَف، بل نُقل فقط إلى اسم
جديد في المجلد نفسه.
نقل ملف إلى داخل مجلد
إن كانت الوجهة مجلدًا موجودًا، ينزلق الملف إلى هناك، محتفظًا باسمه:
mkdir archive
mv tasks.txt archive
الآن لم يعد ls يُظهر tasks.txt في مجلدك الحالي. لكنّ ls archive يُظهره. لقد انتقل الملف.
النقل وإعادة التسمية دفعة واحدة
يمكنك إعطاء الاسم الجديد كجزء من الوجهة:
mv archive/tasks.txt archive/old-tasks.txt
أو انقل وأعِد التسمية في خطوة واحدة:
mv draft.txt archive/draft-v1.txt
أمر واحد، عمليتان. مُرضٍ للغاية.
المجلدات تعمل بالطريقة نفسها — لا حاجة لـ -r
على عكس cp، يعمل mv على المجلدات من دون أيّ flag خاص:
mv archive backups
إن لم يكن backups موجودًا، فهذا يعيد تسمية archive إلى backups. وإن كان backups
موجودًا ومجلدًا، فهذا ينقل archive إلى داخل backups.
ذلك الالتباس الصغير هو إحدى اللحظات القليلة التي يُوقع فيها الـ terminal المبتدئين. القاعدة:
- الوجهة غير موجودة ← أعِد تسمية المصدر إلى ذلك الاسم.
- الوجهة مجلد موجود ← ضع المصدر بداخله.
شغّل pwd و ls بعدها إن لم تكن متأكدًا مما حدث. سيخبرك الـ terminal بالحقيقة — عليك فقط أن تسأل.
الـ footgun (لعلّك تستشعر نمطًا الآن)
مثل cp، يكتب mv فوقَ القديم بصمت إن كان للوجهة بالفعل ملف بذلك الاسم.
إن كان archive/tasks.txt موجودًا بالفعل وشغّلت mv tasks.txt archive/، فإنّ الملف الموجود
يُستبدل. بلا تحذير. لا undo.
يعمل الـ flag نفسه -i:
mv -i tasks.txt archive/
سيطلب التأكيد قبل الكتابة فوق القديم. أبطأ، وأكثر أمانًا.
لماذا يُعدّ mv خطيرًا بطريقة هادئة
cp يصنع نسخة مكرّرة — حتى لو أخطأت في الوجهة، فالأصل ما زال موجودًا. أما mv فطلقة واحدة:
إن أخطأت في كتابة الوجهة، فقد يهبط ملفك في مكان غير متوقّع، أو قد يكتب فوق شيء ما. شغّل ls
بعد كلّ mv في الأماكن غير المألوفة. ثلاثة أعشار الثانية من الحذر قد آتت ثمارها لكلّ من كتب
يومًا على terminal.
ما الذي تعلّمته
mv source dest— أعِد التسمية (حين لا تكون الوجهة موجودة) أو انقل (حين تكون الوجهة مجلدًا موجودًا).mvيعمل على المجلدات من دون أيّ flag — لا حاجة لـ-r.mv -i— اسأل قبل الكتابة فوق القديم.
تستطيع الإنشاء والنسخ والنقل. آخر فعل في طقم الـ tools المبدئي لديك هو الأكثر إثارة للخوف: الحذف. في الدرس التالي، نتعامل معه بما يستحقّ من احترام.