أمر cat في لينكس: دليلك الشامل لدمج الملفات وعرض المحتوى وإدارته

دقائق القراءة: 6

يُعد أمر cat في نظام التشغيل لينكس (Linux) واحدًا من الأدوات الأساسية والقوية التي لا غنى عنها لأي مستخدم، سواء كان مبتدئًا أو خبيرًا. اسمه اختصار لكلمة “concatenation” التي تعني “الدمج” أو “الربط”، وهو يعكس إحدى وظائفه الرئيسية. على الرغم من أن اسمه قد يوحي بالبساطة، إلا أن cat يتمتع بمرونة كبيرة تمكنه من التعامل مع النصوص والملفات والمخرجات بطرق متعددة وفعالة.

يتلخص الغرض الأساسي لأمر cat في ثلاثة استخدامات رئيسية تتعلق بالملفات النصية:

  • إنشاء/تعديل الملفات: يسمح بإنشاء ملفات جديدة أو إضافة محتوى إليها.
  • قراءة/عرض المحتوى: يُستخدم لعرض محتوى الملفات مباشرة على الطرفية.
  • دمج الملفات: يمكنه دمج محتوى ملفين أو أكثر في ملف واحد جديد.

سنتناول كل من هذه الاستخدامات بالتفصيل، مع تقديم أمثلة عملية توضح كيفية الاستفادة القصوى من هذا الأمر متعدد الاستخدامات.

البداية مع cat: إنشاء وتعديل الملفات

لنبدأ بإنشاء ملفين بسيطين، أحدهما باسم foo.txt والآخر spam.txt، لنستخدمهما في الأمثلة القادمة.

إنشاء ملف جديد باستخدام cat > FILENAME

لإنشاء ملف foo.txt، سنستخدم الأمر التالي في سطر أوامر لينكس:

cat > foo.txt

تحذير هام: إذا كان هناك ملف موجود بالفعل بالاسم foo.txt، فإن استخدام أمر cat مع عامل التشغيل > سيؤدي إلى مسح محتواه واستبداله بالكامل. لذا، كن حذرًا عند استخدام هذا العامل.

بعد تنفيذ الأمر، ستعرض الطرفية سطرًا جديدًا يسمح لك بإدخال النص الذي ترغب فيه. لهذا المثال، سنستخدم النص التالي:

FILE 1
foo
bar
baz

للعودة إلى سطر الأوامر وحفظ الملف النصي، اضغط على CTRL + D.

الآن، لنقم بإنشاء ملف spam.txt بنفس الطريقة، مع إدخال المحتوى التالي:

cat > spam.txt
FILE 2
spam
ham
eggs

ثم اضغط CTRL + D للحفظ والخروج.

إضافة محتوى إلى ملف موجود (Append)

إذا أردت إضافة المزيد من النص إلى هذه الملفات دون مسح محتواها الأصلي، يمكنك استخدام عامل التشغيل >>. على سبيل المثال، لإضافة نص إلى foo.txt، ستستخدم الأمر:

cat >> foo.txt

ثم أدخل النص الذي تريده واضغط CTRL + D. لاحظ أن عامل التشغيل >> يُستخدم للإضافة (appending)، على عكس عامل التشغيل > الذي يُستخدم للإنشاء أو الكتابة فوق المحتوى.

باستخدام هذه الطريقة، تمكنا من إنشاء ملفات نصية سريعة وبسيطة مباشرة من سطر الأوامر دون الحاجة إلى فتح محرر نصوص، مما يوفر الوقت والجهد.

الخلاصة من هذا القسم: نستخدم cat > FILENAME لإنشاء ملف جديد أو الكتابة فوق ملف موجود. بينما نستخدم cat >> FILENAME لإضافة محتوى إلى نهاية ملف موجود. بعد إدخال النص المطلوب، نضغط CTRL + D للخروج من وضع الإدخال والعودة إلى سطر الأوامر، مما يؤدي إلى حفظ الملف.

قراءة وعرض محتوى الملفات

بعد أن أنشأنا بعض الملفات، دعنا نلقي نظرة على محتواها. لاحظ أننا لن نستخدم عاملي التشغيل > أو >> في الأوامر التالية، بل فقط أمر cat واسم الملف.

عرض محتوى ملف واحد

لعرض محتوى ملف foo.txt، استخدم الأمر التالي:

cat foo.txt

سيؤدي هذا إلى عرض المحتوى التالي على الطرفية:

FILE 1
foo
bar
baz

إذًا، cat foo.txt يسمح لنا بقراءة محتوى الملف، ولكن ماذا عن المزيد من الخيارات؟

عرض محتوى الملف مع أرقام الأسطر

لنفترض أننا نريد معرفة عدد الأسطر في ملف نعمل عليه. هنا يأتي دور الخيار -n. باستخدام الأمر cat -n foo.txt، يمكننا رؤية طول ملفنا مع ترقيم الأسطر:

cat -n foo.txt
 1 FILE 1
 2 foo
 3 bar
 4 baz

يمنحنا الخيار -n فكرة واضحة عن عدد الأسطر في الملف الذي نتعامل معه، وهو مفيد جدًا عند تكرار العمليات على ملفات ذات طول ثابت أو عند تصحيح الأخطاء.

دمج الملفات (Concatenation)

لقد رأينا أن cat يمكنه إنشاء الملفات وعرضها، ولكن ماذا عن وظيفته الأساسية: دمجها (concatenating)؟

عرض محتوى عدة ملفات في وقت واحد

لهذا المثال، سنستخدم ملفي foo.txt و spam.txt. إذا أردنا عرض محتويات كلا الملفين في نفس الوقت، يمكننا استخدام أمر cat مرة أخرى، ولكن هذه المرة مع اسمي الملفين:

cat foo.txt spam.txt

سينتج عن هذا الأمر المخرجات التالية:

FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs

لاحظ أن الأمر أعلاه يقوم فقط بعرض محتويات الملفين. في هذه المرحلة، لم نقم بدمجهما في ملف جديد بعد.

دمج ملفات متعددة في ملف جديد

لدمج الملفين في ملف جديد، سنستخدم الأمر cat foo.txt spam.txt > fooSpam.txt، والذي سيضع الناتج في ملف جديد يسمى fooSpam.txt. يمكننا بعد ذلك عرض محتوى الملف الجديد fooSpam.txt للتأكد:

cat foo.txt spam.txt > fooSpam.txt
cat fooSpam.txt

سينتج عن عرض الملف fooSpam.txt ما يلي على الطرفية:

FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs

هذا الأمر مفيد أيضًا عندما نريد دمج أكثر من ملفين في ملف واحد جديد.

الخلاصة هنا: يمكننا عرض محتوى ملفات متعددة باستخدام cat FILENAME1 FILENAME2 .... علاوة على ذلك، يمكننا دمج ملفات متعددة في ملف واحد باستخدام الأمر cat FILENAME1 FILENAME2 > FILENAME3.

استخدامات متقدمة لأمر cat: فحص الأحرف غير القابلة للطباعة

لنفترض أننا نعمل على ملف ونواجه أخطاء متكررة لسبب ما قبل نهاية الملف، ويبدو أن عدد الأسطر فيه أكثر مما توقعنا. للتحقيق في الملف بشكل أعمق وربما حل المشكلة، يمكننا استخدام الخيار -A.

فهم الخيار -A

يُظهر الخيار -A أين تنتهي الأسطر بعلامة $، ويعرض أحرف الجدولة (tab characters) بعلامة ^I، كما يعرض الأحرف الأخرى غير القابلة للطباعة (non-printing characters). هذا مفيد للغاية لتصحيح الأخطاء واكتشاف المشكلات الخفية في الملفات النصية.

إذا كنا ننظر إلى مثال لملف نصي يحتوي على أحرف غير قابلة للطباعة باستخدام cat nonPrintExample.txt، فقد نحصل على شيء كهذا:

cat nonPrintExample.txt
         

هذه النتيجة قد تبدو “مقبولة” ولكنها قد لا تروي لنا القصة الكاملة عن حرف أو سلسلة أحرف قد تسبب لنا مشاكل. بينما استخدام cat -A nonPrintExample.txt قد يعطينا مخرجات أكثر فائدة:

cat -A nonPrintExample.txt
^I^I$ $ ^L$ $ ^G^H^H^H^Y^I^N^O^P^@$ ^@^@^[g^[f^[d^[g^[ 6 ^[ 5 ^[ 4 ^[ 6 ^[=$ $ $ ^X$

هنا، نحصل على تمثيل أوضح لما قد يحدث بين علامات الجدولة (tabs)، وتغذية الأسطر (line feeds)، والعودة (returns)، والأحرف الأخرى غير المرئية. الخلاصة هنا: يمكن لأمر cat -A FILENAME أن يخبرنا بتفاصيل أعمق حول الملف الذي نعمل عليه، مما يساعد في تحديد المشكلات التي قد لا تكون واضحة بخلاف ذلك.

الخلاصة التقنية

يُبرهن أمر cat على أنه أكثر من مجرد أداة بسيطة لعرض الملفات؛ إنه حجر الزاوية في إدارة النصوص والملفات ضمن بيئة لينكس. من قدرته على إنشاء الملفات وتعديلها بمرونة، إلى عرضه لمحتوياتها بطرق متعددة (بما في ذلك ترقيم الأسطر)، وصولاً إلى وظيفته الأساسية في دمج الملفات، يقدم cat حلاً فعالاً للعديد من المهام اليومية. كما أن خياراته المتقدمة مثل -A تفتح الباب أمام تحليل أعمق لمحتوى الملفات، كشفًا عن الأحرف غير المرئية التي قد تكون مصدرًا للأخطاء أو المشكلات. فهم واستخدام cat بكفاءة يعزز بشكل كبير إنتاجية أي مطور أو مسؤول نظام يتعامل مع سطر الأوامر.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *