يضيف إعادة توجيه الإخراج القياسي إلى ملف جديد حرفا غريبا إلى نهاية اسم الملف في Cygwin
سؤال
أواجه مشكلة في برنامج نصي شل في Cygwin. الأمر المحدد الذي يسبب المشكلة هو:
sed -e "s/6.0.[0123456789]\{1,\}/6.0.${REV}/g" "path/to/file/config.xml" > "path/to/file/config.xml.tmp"
المشكلة هي أن الملف يتم إنشاؤه بحرف غريب في النهاية، لذلك بدلا من تسجيل config.xml.tmp، فإنه اسمه "config.xml.tmp". من الأمر "LS" ومن موجه أوامر Windows، يبدو وكأنه "config.xml.tmp؟"
إذا قمت بتشغيل الأمر SED فقط من Shell، فإن الملف المسمى بشكل صحيح، والبرنامج النصي يعمل بشكل جيد في Linux.
أي فكرة عما يمكن أن يكون الخطأ؟ شكرا!
المحلول
تخميني هو أن ملف البرنامج النصي الخاص بك لا يحتوي على نهايات خط UNIX. ال \r
الحرف في خط Windows ينتهي هو ما يضافه إلى نهاية اسم الملف الخاص بك. يمكنك التحقق مع od
أو hexdump
لمعرفة ما إذا كانت هذه هي المشكلة.
لا تنتمي إلى StackOverflow