الدليل العملي الشامل لأمر curl في لينكس

نظرة عامة

يمثل الأمر curl ركيزة أساسية لا غنى عنها في جعبة كل مهندس أنظمة ومطور برمجيات يعمل على بيئات لينكس؛ إذ يُعد الأداة القياسية للتعامل مع بروتوكولات الشبكة عبر الطرفية. يستعرض هذا الدليل تطبيقات عملية معمقة تغطي استرجاع بيانات الويب، وتصحيح واجهات برمجة التطبيقات RESTful، وتدقيق ترويسات الاستجابة، بالإضافة إلى التقنيات الاحترافية لنقل وتنزيل الملفات ذات الأحجام الكبيرة بكفاءة عالية.

1. تهيئة بيئة العمل وإرسال طلبات الويب الأساسية (طلبات GET)

قبل الشروع في التجارب، نحرص على تحديث مستودعات النظام وتثبيت حزمة curl لضمان توفر أحدث إصدار مستقر:

تحديث المستودعات وتثبيت أداة curl

تتخصص أداة curl في تبادل البيانات عبر الشبكة بالاعتماد على معرّفات الموارد الموحدة (URLs).
بمجرد تمرير الرابط للطرفية دون تحديد خيارات إضافية، يرسل النظام تلقائيًا طلب HTTP GET افتراضي، ليعرض المحتوى النصي المستلم مباشرة على شاشة الطرفية.
⚙️ [أبرز الخيارات التشغيلية ومفاتيح التحكم]

-s : تفعيل الوضع الصامت (Silent mode) لإلغاء إظهار مؤشرات التقدم وتنبيهات الأخطاء الجانبية.
-i : إدراج ترويسات HTTP المرسلة من الخادم في مخرجات الطرفية مع نص الاستجابة.
-I : جلب ترويسات الاستجابة فقط مع تجاهل محتوى الصفحة بالكامل.
-X : تحديد نوع وسيلة طلب HTTP يدويًا مثل GET أو POST أو PUT أو DELETE.
-d : إرفاق البيانات المرسلة (Payload/Body) داخل متن طلب POST.
-H : تمرير ترويسات HTTP مخصصة ضمن الطلب الصادر.
-o : حفظ المحتوى المستلم في ملف محلي وفق الاسم والمسار الذي يحدده المستخدم.
-O : تخزين الملف محليًا بنفس الاسم الأصلي المعتمد على الخادم البعيد.
-C - : استئناف عمليات التنزيل المعلقة أو المقطوعة تلقائيًا من النقطة التي توقفت عندها.
-L : تتبع عمليات إعادة التوجيه (Redirections 3xx) آليًا حتى الوصول إلى الرابط النهائي.

تنفيذ طلب GET بسيط باستخدام curl

عند تمرير الخيار -s، يتخلص الأمر من مؤشر تقدم النقل (Progress meter) ورسائل التشخيص، مما يوفر خرجًا نقيًا يقتصر على نص الرد الفعلي.
تكتسب هذه الصياغة أهمية بالغة عند بناء سكربتات الأتمتة البرمجية (Shell Scripts) أو تمرير المخرجات عبر خطوط الأنابيب (|) إلى أدوات المعالجة الأخرى.

عرض عنوان IP بنمط الإخراج الصامت النظيف

2. فحص وتدقيق ترويسات HTTP ورموز حالة الاستجابة

يوفر الخيار -I إمكانية استطلاع ترويسات HTTP الواردة من جهة الخادم دون الحاجة إلى تنزيل متن الاستجابة (Body).
تساعد هذه الطريقة مديري الأنظمة في التحقق من جاهزية الخدمة ورمز الحالة (مثل HTTP/2 200) ونوع المحتوى وهوية الخادم، مع توفير استهلاك النطاق الترددي للشبكة بالكامل.

فحص ترويسات الخادم دون استدعاء محتوى الصفحة

عند دمج الخيار -i، تعرض الأداة بنية الترويسات العلوية متبوعة بمحتوى متن الاستجابة على نفس الشاشة.
يعد هذا النمط مثاليًا أثناء تشخيص أعطال واجهات البرمجة (API Debugging)، إذ يتيح مقارنة معلومات التحكم الوصفية بالبيانات الفعلية المعادة لحظيًا.

عرض ترويسات الاستجابة إلى جانب جسم الاستجابة الفعلي

يمكننا عزل رمز حالة HTTP فقط بطريقة مخصصة عبر كتم مؤشرات التقدم بالخيار -s، وتحويل متن الاستجابة إلى المهملات -o /dev/null، واستخلاص الرمز المطلوب بواسطة -w.
تُعد هذه التقنية المعيار المعتمد لبرمجة فحوصات سلامة الأنظمة (Health Checks) وصياغة الشروط المنطقية داخل السكربتات التشغيلية.

استخراج رمز حالة HTTP لاختبارات الجاهزية

3. التعامل مع واجهات REST API والمصادقة (إرسال طلبات POST وJSON)

لتسهيل معالجة مخرجات JSON وتنسيقها بصريًا عبر موجه الأوامر، نقوم بتثبيت أداة التحليل المتخصصة jq:

تثبيت أداة معالجة بيانات JSON

يتم ضبط نوع المعاملة عبر -X POST، وتحديد طبيعة البيانات المرسلة بإضافة ترويسة -H "Content-Type: application/json"، وتمرير محتوى الكائن المطلوب عبر الخيار -d.
ولتأكيد استلام الخادم للبيانات بالشكل الصحيح، نقوم بترحيل المخرجات بواسطة علامة الأنبوب (|) إلى أمر jq لعرض بنية الرد المرتجع بوضوح ودقة.

إرسال حمولة JSON والتحقق منها عبر أداة jq

يتطلب التعامل مع نقاط النهاية المؤمنة (Protected Endpoints) توفير بيانات اعتماد صالحة، وهو ما يتيحه الخيار -H بإرفاق ترويسة التفويض Authorization: Bearer <الرمز_السري>.
تسهم هذه الصياغة في التأكد من صحة مسارات المصادقة المبنية على الرموز الرقمية (JWT أو مفاتيح API) ومعاينة ردود أمان الخادم.

تمرير رمز المصادقة Bearer Token للتحقق من هوية الطلب

4. استراتيجيات تنزيل البيانات الضخمة والتحكم في استئناف النقل

نبدأ بتهيئة مجلد عمل مخصص لحفظ الملفات التجريبية والانتقال مباشرة إلى مساره:

إنشاء مسار العمل للتنزيل والانتقال إليه

يعمل المفتاح -o على تحويل تدفق البيانات الثنائية (Binary stream) القادمة من الخادم وكتابتها داخل ملف محدد مسبقًا بالاسم sample-100k.bin.
يمنع هذا الإجراء تشويه مخرجات الطرفية بالرموز المشفرة ويضمن حفظ الملف بالمسمى المطلوب بأمان.

تنزيل البيانات الثنائية وتخزينها تحت اسم محدد

عند مجابهة شبكات غير مستقرة أو سحب ملفات عملاقة، يوفر الخيار -C - ميزة استئناف النقل تلقائيًا بناءً على حجم الجزء المتوفر محليًا، في حين يحفظ -O الملف باسمه الأصلي ذاته.
تضمن هذه التركيبة استكمال تحميل الأجزاء المتبقية دون الحاجة لبدء التنزيل من نقطة الصفر مرة أخرى، مما يوفر الوقت والموارد الحوسبية.

استئناف التنزيل من موضع الانقطاع مع الاحتفاظ بالاسم الأصلي

نتأكد من اكتمال التنزيل وسلامة البيانات بالتحقق من الحجم الفعلي للملف المكتوب على القرص باستخدام الأمر ls -lh:

معاينة الحجم النهائي والتأكد من سلامة الملف

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