كيف يمكنني إنشاء تعليمات سطر الأوامر (يونكس/لينكس) التي تستخدم المتغيرات لتنفيذ أوامر عديدة؟
-
09-06-2019 - |
سؤال
أحتاج إلى إعادة ترتيب بعض المحتوى في أدلة مختلفة ولكن الأمر مؤلم بعض الشيء.من أجل تصحيح أخطاء التطبيق الذي أعمل عليه (تطبيق روبي)، أحتاج إلى نقل جواهري إلى مجلد الأحجار الكريمة الخاص بي واحدًا تلو الآخر (قصة طويلة؛باختصار:أحدهما مكسور ولا أستطيع معرفة أي منهما).
لذلك أنا بحاجة إلى القيام بشيء مثل:
sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/
استبدال "foo" في كل مرة.كيف يمكنني تأليف برنامج نصي بسيط للسماح لي بفعل شيء مثل:GemMove("foo") ويقوم بملء الفراغات بالنسبة لي؟
المحلول
ضع ما يلي في ملف اسمه Gemmove:
#!/bin/bash
foo=$1
if [ x$foo == x ]; then
echo "Must have an arg"
exit 1
fi
for d in gem doc specification ; do
mv backup/$d/$1 $d
done
ثم افعل
chmod a+x gemmove
ثم اتصل بـ "sudo Gemmove foo" لنقل جوهرة foo من النسخ الاحتياطية إلى النسخ الحقيقية
نصائح أخرى
يمكنك ببساطة استخدام وسيطات bash Shell، مثل هذا:
#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...
ثم قم بتنفيذه على النحو التالي:
sudo ./move.sh foo
تأكد من جعل البرنامج النصي قابلاً للتنفيذ باستخدام
chmod +x move.sh
في باش، شيء من هذا القبيل:
function gemMove()
{
filename=$1
mv backup/gem/$filename gem/$filename
mv backup/doc/$filename doc/$filename
mv backup/specification/$filename.spec specification
}
ثم يمكنك الاتصال فقط gemMove("foo")
في مكان آخر من البرنامج النصي.