عند مشاركة ملف نصي، اختر نهايات الأسطر للبرنامج الذي سيقرؤه، وليس فقط للكمبيوتر الذي سيعرضه. بالنسبة لمعظم الملفات التي تتنقل بين أنظمة macOS وLinux وأدوات التطوير الحديثة، استخدم LF. اختر CRLF عندما تتطلب ذلك أداة مخصصة لنظام Windows أو مشروع قائم. على جهاز Mac، يمكنك تحويل ملف نصي معروف في تطبيق Terminal باستخدام الأوامر المدمجة وحفظ النتيجة كملف منفصل.
ماذا يعني LF و CRLF
نهاية السطر هي الحرف أو تسلسل الأحرف الذي يحدد نهاية السطر. تستخدم أدوات سطر الأوامر في macOS التنسيق LF، وهو حرف تغذية سطر مفرد (line-feed). تستخدم الملفات النصية في Windows عادةً CRLF، وهو حرف إرجاع أول السطر (carriage return) متبوعًا بحرف تغذية السطر. قد تستخدم ملفات Mac الكلاسيكية القديمة CR بمفرده، وهو تنسيق منفصل وأقل شيوعًا. تصف Apple هذه الاصطلاحات وتشير إلى أن ملفات CRLF قد تسبب سلوكًا غير متوقع في أدوات سطر أوامر Unix لأن حرف إرجاع أول السطر الإضافي يظل في نهاية كل سطر. دليل Apple للبرمجة النصية عبر الأنظمة الأساسية
كقاعدة عملية، يفضل استخدام LF للبرامج النصية والملفات النصية العادية التي سيتم استخدامها على macOS أو Linux أو في مشروع برمجي متعدد الأنظمة، ما لم يحدد المشروع خلاف ذلك. استخدم CRLF عندما يتطلب تطبيق أو مشروع مستلم ذلك صراحةً. عندما لا تكون متأكدًا، اسأل المستلم أو راجع إرشادات المشروع؛ فامتداد الملف وحده لا يوضح نهاية السطر المتوقعة.
اختر التنسيق قبل التحويل
حدد أولاً الاستخدام التالي للملف. الملف النصي الذي يفتح ويعمل بشكل صحيح في التطبيق المستهدف قد لا يحتاج إلى تحويل. أما الملف الذي يبدو طبيعيًا ولكنه يفشل في برنامج نصي (shell script) أو في خطوة معالجة البيانات، فقد يحتوي على CRLF، مما يترك أحرف إرجاع أول السطر مخفية تؤثر في مطابقة الأسطر أو تحليل الحقول. تشير Apple إلى أن هذه المشكلات يمكن أن تظهر حتى عندما يبدو المحتوى صحيحًا بصريًا. شرح Apple لسلوك نهايات الأسطر
يمكن لتطبيق TextEdit إنشاء المستندات النصية وتعديلها، ولكن دليل Apple الحالي لا يوضح عنصر تحكم لاختيار LF مقابل CRLF عند الحفظ. أوامر فواصل الأسطر فيه تنسق محتوى المستند فحسب؛ ولا يتم وصفها كأداة لتحديد نهاية أسطر الملف. إذا كنت بحاجة إلى تعيين تنسيق محدد، فاستخدم محرر نصوص يحتوي على خيار موثق لنهايات الأسطر، أو قم بتحويل ملف نصي معروف في تطبيق Terminal. دليل مستخدم TextEdit، عناصر التحكم في الفواصل في TextEdit
تحويل ملف نصي معروف في Terminal
احتفظ بالملف الأصلي كما هو دون تعديل: احفظ التحويل باسم ملف مختلف، ثم افتح الملف الجديد أو افحصه قبل مشاركته. في Terminal، غيّر input.txt و output.txt إلى المسارات الفعلية. بالنسبة لملف معروف بأنه يستخدم Windows CRLF وتتطلب إحدى أدوات Mac أو Unix تحويله إلى LF، شغّل الأمر التالي:
tr -d '\r' < input.txt > output.txt
يؤدي هذا إلى إزالة أحرف إرجاع أول السطر، وترك نهايات الأسطر LF. بالنسبة لملف معروف بأنه يستخدم LF ويتطلب المستلم أن يكون بتنسيق Windows CRLF، شغّل الأمر التالي:
CR="$(printf '\r')"
sed "s/$/$CR/" < input.txt > output.txt
يؤدي هذا إلى إضافة حرف إرجاع أول السطر قبل كل تغذية سطر. توثق Apple عمليات التحويل هذه باستخدام tr و sed. أمثلة التحويل من Apple
لا تستخدم هذه الأوامر إلا عندما تكون على دراية بالتنسيق المصدر ويكون الملف نصيًا عاديًا. يزيل تحويل LF كل أحرف CR، وليس فقط أحرف CR المقترنة بـ LF؛ ويفترض التحويل العكسي أن الملف المدخل يستخدم LF. بالنسبة لملف يحتوي على تنسيقات مختلطة، أو ملف قديم يستخدم CR فقط، أو ملف يحتوي على أحرف إرجاع أول السطر ذات مغزى ضمن محتواه، قد تغير هذه الأوامر البسيطة أشياء أكثر من نهايات الأسطر التي قصدتها. تجنب تشغيلها على الملفات الثنائية (binary files). إذا كان تنسيق الملف غير مؤكد أو كان الحفاظ على الترميز والبيانات الوصفية أمرًا مهمًا، فاستخدم محررًا أو أداة تحويل مناسبة وراجع وثائقها أولاً.
تحقق من النتيجة وأرسل الملف الصحيح
افتح الملف الناتج في التطبيق المخصص له وتأكد من أن الأسطر تظهر منفصلة وأن الملف لا يزال يحتوي على النص المتوقع. احتفظ بالأصل حتى يؤكد المستلم أن النسخة المحولة تعمل بشكل جيد. أرسل الملف الناتج المحول، وليس الأصل، واذكر تنسيق نهاية السطر المتوقع عند تسليم الملف إذا كان ذلك مهمًا—على سبيل المثال: "تم الحفظ بنهايات أسطر LF".
الخيار الأكثر أمانًا هو الخيار الذي تحدده الأداة أو المشروع المستلم. في حال عدم وجود متطلب خاص، فإن LF هو نقطة البداية الطبيعية لسير العمل على جهاز Mac؛ ولا تقم بالتحويل إلى CRLF إلا عندما تتطلب الوجهة ذلك.
المصادر
Designing Scripts for Cross-Platform Deployment — Apple Developer
TextEdit User Guide — Apple Support
Insert line, paragraph, and page breaks in TextEdit on Mac — Apple Support