مقتبس وسيطات الصدفة
يصبح hello world هو 'hello world'، أي وسيطًا آمنًا واحدًا للصدفة: توضع المسافات وعلامات الاقتباس والنجوم وسائر الرموز الخاصة بين علامتي اقتباس مفردتين لتمررها الصدفة بيانات عادية. ويعيد الخيار العكسي النص الأصلي. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- hello world
- وضع الحساب
- Encode
- النتيجة
- 'hello world'
- الترميز
- posix_shell
- طول المُدخَل
- 11
- طول المُخرَج
- 13
يقوم مقتبس وسيطات الصدفة هذا بتحويل النص العادي إلى شكل آمن للصقه كوسيط POSIX واحد، ويعكس نفس التعيين عندما تحتاجون إلى استعادة السلسلة الأصلية من صيغة الصدفة المقتبسة. يتبع الترميز اصطلاح علامات الاقتباس المفردة الذي تستخدمه أدوات مثل shlex.quote: يصبح الإدخال الفارغ زوجًا من علامات اقتباس مفردة فارغة، وتبقى الرموز المكونة من أحرف وأرقام ومجموعة صغيرة من علامات الترقيم الآمنة عارية، ويُلفّ كل ما عداه بعلامات اقتباس مفردة مع إعادة كتابة كل فاصلة عليا مضمنة كإغلاق ثم علامة مهربة ثم إعادة فتح حتى لا ترى الصدفة سلسلة غير مغلقة. يمر فك الترميز بكلمة argv واحدة عبر علامات مفردة وعلامات مزدوجة مع مجموعة تهريب POSIX المحدودة وتهريبات الشرطة المائلة العكسية خارج الاقتباس، ويفشل بوضوح عند علامات غير منتهية أو شرطة نهائية أو مسافة بيضاء غير مقتبسة حتى لا يتحول جزء أمر منسوخ جزئيًا بصمت إلى المسار الخاطئ. المسار حتمي بالكامل: النص والوضع نفسهما ينتجان دائمًا النتيجة نفسها بلا استدعاءات شبكة ولا أملاح عشوائية ولا اختصارات تعتمد على التاريخ. تشمل الفحوص البسيطة اقتباس مسار فيه مسافات، ودمج فاصلة عليا داخل كلمة مقتبسة، ورفض جزء بعلامات مزدوجة لا يُغلق أبدًا.
ما اقتباس صدفة POSIX وما الذي يعيده هذا الأداة
تقسم صدفة POSIX سطر الأوامر إلى كلمات وتطبق قواعد الاقتباس قبل أن يرى أي برنامج argv. تفصل المسافات وعلامات الجدولة والأسطر الجديدة الكلمات ما لم تكن داخل علامات اقتباس. تمرر العلامات المفردة كل محرف حرفيًا حتى العلامة المفردة التالية، ولهذا فإن الوصفة الكلاسيكية الآمنة هي لف السلسلة كاملة ووصل كل فاصلة عليا داخلية كقطع من أربعة محارف يغلق العلامة ويُخرج فاصلة عليا حرفية ويعيد فتحها.
تسمح العلامات المزدوجة بمجموعة أصغر من التهريبات للدولار والشرطة المائلة العكسية والعلامة المزدوجة والشرطة العكسية والسطر الجديد، وهي مفيدة عند قراءة مقتطفات قديمة لكنها ليست مسار الترميز المفضل في هذه الصفحة. تغير المحارف الخاصة مثل النجمة وعلامة الاستفهام والأنبوب وعلامة العطف والفاصلة المنقوطة وعوامل إعادة التوجيه قواعد الصدفة عندما تظهر بلا اقتباس؛ ولفها بعلامات مفردة يحولها إلى بيانات عادية للبرنامج المستقبل.
تنفذ هذه الصفحة ذلك المجموعة في الترميز وعكسًا حذرًا في فك الترميز: الاستجابة وسيط واحد فقط، بلا توسيع متغيرات ولا تشغيل أنماط glob ولا تقسيم خط أنابيب كامل إلى كلمات كثيرة.
أين يناسب اقتباس وسيطات الصدفة سير عمل المطورين
يواجه المطورون اقتباس وسيطات الصدفة عند بناء أوامر بعيدة وكتابة مقتطفات تثبيت وتجميع قوائم وسيطات docker أو ssh أو تخزين مسارات ملفات قد تحتوي مسافات وفواصل عليا. ترمز فرق الواجهة والخادم أسماء الملفات التي يقدّمها المستخدم قبل إدراجها في قالب صدفة حتى لا تكسر مسافة أو علامة واحدة الأمر المحيط ولا تحقن رموزًا إضافية. يفك مؤلفو الأنابيب أجزاءً مقتبسة من السجلات أو أدلة التشغيل أو التركيبات الذهبية ليعمل كود التطبيق بالمسار الحقيقي بدل سلسلة مزخرفة بالصدفة.
يولّد مهندسو الجودة أزواج encode وdecode حتمية لاختبارات العقد حتى لا يتحول وسيط يدّعي اقتباسًا آمنًا بصمت إلى جدول غير POSIX بين الإصدارات. يستخدم المعلمون الأداة نفسها لتعليم الفرق بين العلامات المفردة والمزدوجة وتهريبات الشرطة العكسية ولماذا يجب أن تظل الوسائط الفارغة زوج علامات بدل أن تختفي. يستخدم مراجعو الأمن فحوص الاقتباس كخطوة نظافة قبل لصق قيم في سكربتات صدفة، متذكرين أن الاقتباس ليس بديلًا عن تجنب الصدفة عندما تتوفر واجهة مصفوفة argv مباشرة.
حالات الاستخدام
مسارات آمنة في مقتطفات الصدفة
اقتبسوا مسارات الملفات والقيم ذات المسافات أو العلامات أو المحارف الخاصة قبل لصقها في سكربتات صدفة POSIX أو أوامر ssh البعيدة أو أسطر docker run.
تنظيف التركيبات والسجلات
ألغوا اقتباس أجزاء الصدفة من السجلات أو أدلة التشغيل أو الملفات الذهبية لإعادة يونيكود عادي في فروقات مقروءة وكود التطبيق.
التكامل المستمر واختبارات العقد
ولّدوا أزواج اقتباس وإلغاء حتمية حتى تؤكد الأنابيب الشكل الآمن POSIX نفسه عبر اللغات والإصدارات.
الأسئلة الشائعة
كيف أقتبس سلسلة لوسيط صدفة POSIX؟
أرسلوا السلسلة العادية في text مع mode encode (الافتراضي). يصبح الإدخال الفارغ ''، وتبقى الرموز العارية الآمنة بلا اقتباس، وكل ما عداه بين علامات مفردة مع '\'' لكل فاصلة عليا.
كيف ألغي اقتباس وسيط صدفة مقتبس؟
أرسلوا الكلمة المقتبسة في text مع mode decode.
هل ينفّذ هذا أوامر صدفة؟
لا. يحوّل النص فقط لاستخدام argv الآمن. لا يطلق صدفة ولا يوسّع متغيرات أو أنماط glob ولا يقسم سطر أوامر كاملًا إلى كلمات متعددة.
ماذا يحدث للفاصلة العليا داخل النص؟
لا يمكن تهريب الفاصلة العليا داخل علامتي الاقتباس المفردتين، لذلك تغلق الأداة الاقتباس وتضيف فاصلة عليا مهرّبة بشرطة مائلة عكسية ثم تفتح الاقتباس من جديد. هذه المحارف الأربعة '\'' تُبقي الوسيط كاملًا.
لماذا يفشل إلغاء الاقتباس في بعض المقاطع؟
لأن الناتج يجب أن يكون وسيطًا واحدًا بالضبط. فعلامة اقتباس لا تُغلق، أو شرطة مائلة عكسية في النهاية، أو مسافة خارج الاقتباس تعني مقطعًا مقطوعًا أو عدة كلمات، فتتوقف الأداة بدل التخمين.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/shell-escape \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello world"}'const res = await fetch("https://api.kit.forhosting.com/enc/shell-escape", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello world"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/shell-escape",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello world"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/shell-escape", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello world"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello world"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/shell-escape", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "hello world"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.shell_escape",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
استخدموه مجانًا في المتصفح لنظافة السكربتات وتنظيف التركيبات، أو استدعوا واجهة API بسعر $0.002 لكل طلب ناجح عندما تحتاج الأنابيب إلى اقتباس صدفة قابل للتكرار في التكامل المستمر وخدمات الخلفية.
ما اقتباس صدفة POSIX وما الذي يعيده هذا الأداة
تتضمن استجابة JSON دائمًا result للسلسلة المحولة، وmode الذي يعيد encode أو decode، وencoding ثابتًا على posix_shell، وinput_length مع output_length حتى تتحقق الاختبارات من الأحجام. يبلغ encode أيضًا needs_quotes وapostrophes_escaped؛ ويبلغ decode عن quote_segments لتأكيد عدد مناطق الاقتباس المستهلكة. لا يوجد تخطٍ صامت جزئي لاقتباس معطوب: إما أن تكون الكلمة اقتباس صدفة سليمًا أو يفشل الطلب بـ invalid_input. إن احتجتم إلى محلل صدفة كامل أو تنفيذ أوامر أو تقسيم متعدد الكلمات فاستخدموا صدفة أو مُقطِّعًا مخصصًا؛ تجيب هذه الصفحة فقط على عقد اقتباس وإلغاء اقتباس وسيط واحد، بمخرجات مستقرة للتركيبات ومستهلكي API الذين يبنون أو يصلحون أجزاء argv يدويًا.
كيف تُقرأ text وmode وكيف تبقى النتائج قابلة للتكرار
يصنف encode السلسلة: الفارغة تصبح زوج علامات مفردة فارغة؛ والرمز المطابق للمجموعة العارية الآمنة من الأحرف والأرقام وعلامة at ونسبة زائد يساوي نقطتين فاصلة نقطة شرطة مائلة شرطة سفلية واصلة يُعاد دون تغيير لأنه لا يحتاج حماية؛ وأي محرف آخر بما فيه المسافة أو علامة الاقتباس أو محرف صدفة خاص يفرض لفًا كاملًا بعلامات مفردة مع وصل الفاصلة العليا لكل علامة مفردة داخلية. ولأن اللف يُطبَّق في مرور واحد من اليسار إلى اليمين تحصلون على شكل اقتباس متسق يوافق روح shlex.quote ومساعدات الصدفة الشائعة. يفحص decode مقاطع مفردة ومقاطع مزدوجة مع مجموعة تهريب POSIX المحدودة وتهريبات شرطة عكسية خارج الاقتباس تحمي المحرف التالي أو تواصل السطر عندما يكون التالي سطرًا جديدًا. يحافظ سقف الطول البالغ مئة ألف محرف على ذاكرة العامل قابلة للتنبؤ مع تغطية المسارات الطويلة وقيم البيئة ومعظم حوافظ اللصق. حقل الحمولة المفضل هو text مع الأسماء البديلة input وvalue وs وpayload وarg حتى تعيد النماذج وسلاسل الاستعلام وعملاء SDK استخدام العقد نفسه دون إعادة تسمية الأعمدة. يكون mode افتراضيًا encode ويقبل decode صراحة؛ وتُطابق الأسماء البديلة op وdirection وaction نفس المفتاح للسكربتات التي تستخدم تلك الأسماء، وتُقبل quote أو unquote كمرادفات. ترفع شرطة عكسية نهائية ناقصة أو علامة مفردة أو مزدوجة غير مغلقة أو مسافة بيضاء غير مقتبسة من شأنها بدء كلمة argv ثانية خطأ invalid_input برسالة تسمي المشكلة. اقرنوا التشغيل المجاني في متصفح هذه الصفحة بواجهة API المسعّرة عندما تحتاجون التعيين نفسه داخل أنبوب آلي دون إعادة تنفيذ جداول اقتباس الصدفة. تعيد المدخلات غير الصالحة invalid_input ولا تُحسب، مما يبقي التحقق رخيصًا بينما تظل التحويلات الناجحة سعر عنصر ثابتًا عند $0.002.
أين يناسب اقتباس وسيطات الصدفة سير عمل المطورين
على هذه الصفحة يعمل كل شيء في متصفحكم؛ عبر API تكلف كل استشارة ناجحة $0.002 ولا تُحسب التحقق الفاشل ولا يُخزَّن شيء بعد الاستجابة. ذلك التقسيم — استكشاف تفاعلي مجاني وAPI مسعّرة مطابقة — يوافق بقية كتالوج KIT من المستوى A ويتيح الانتقال من عرض صف إلى أنبوب آلي دون تغيير النتيجة المقتبسة. اقرنوه بتهريب سلاسل JSON أو ترميز نسبة URL عند الحاجة إلى تحويلات نص أوسع، وبمسارات ترميز أخرى عند بناء مختبر صغير لأدوات مجانية حتمية للتكامل المستمر والتوثيق.
أسئلة تقنية
ما الذي يُعد اقتباسًا تالفًا؟
علامات مفردة أو مزدوجة غير منتهية، وشرطة عكسية نهائية في نهاية الإدخال، ومسافة بيضاء غير مقتبسة (تبدأ كلمة argv ثانية) تفشل بـ invalid_input ولا تُحسب.
كم يكلف مقتبس وسيطات الصدفة؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ الإدخال غير الصالح لا يُحسب.