'\" t .\" Title: getopt .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-05-18 .\" Manual: أوامر المستخدم .\" Source: util-linux 2.42.1 .\" Language: English .\" .TH "GETOPT" "1" "2026-05-18" "util\-linux 2.42.1" "أوامر المستخدم" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "الاسم" getopt \- تحليل خيارات الأوامر (محسن) .SH "موجز" .sp \fBgetopt\fP \fIاسم_الخيار\fP \fI‎معاملات\fP .sp \fBgetopt\fP [خيارات] [\fB\-\-\fP] \fIاسم_الخيار\fP \fI‎معاملات\fP .sp \fBgetopt\fP [خيارات] \fB\-o\fP|\fB\-\-options\fP \fI‎اسم_الخيار\fP [‎خيارات] [\fB\-\-\fP] \fI‎معاملات\fP .SH "الوصف" .sp يُستخدم \fBgetopt\fP لتفكيك (تحليل) الخيارات في أسطر الأوامر لتسهيل تحليلها بواسطة إجراءات الصدفة، وللتحقق من صحة الخيارات. ويستخدم روتين GNU \fBgetopt\fP(3) للقيام بذلك. .sp المعاملات التي يُستدعى بها \fBgetopt\fP يمكن تقسيمها إلى جزأين: خيارات تعدل الطريقة التي سيقوم بها \fBgetopt\fP بالتحليل (\fIoptions\fP و \fIاسم_الخيار\fP في قسم \fBموجز الاستخدام\fP )، والمعاملات التي سيجري تحليلها (\fIمعاملات\fP في قسم \fBموجز الاستخدام\fP). يبدأ الجزء الثاني عند أول معامل ليس خياراً ولا وسيطاً لخيار، أو بعد أول ظهور للرمز \*(Aq\fB\-\-\fP\*(Aq. إذا لم يوجد خيار \*(Aq\fB\-o\fP\*(Aq أو \*(Aq\fB\-\-options\fP\*(Aq في الجزء الأول، يُستخدم المعامل الأول من الجزء الثاني كسلسلة خيارات قصيرة. .sp إذا ضُبط متغير البيئة \fBGETOPT_COMPATIBLE\fP، أو إذا كان المعامل الأول ليس خياراً (لا يبدأ بـ \*(Aq\fB\-\fP\*(Aq، وهو التنسيق الأول في \fBموجز الاستخدام\fP)، فسيولد \fBgetopt\fP مخرجات متوافقة مع إصدارات \fBgetopt\fP(1) الأخرى. وسيقوم رغم ذلك بتبديل ترتيب المعاملات والتعرف على الوسائط الاختيارية (انظر قسم \fBالتوافقية\fP لمزيد من المعلومات). .sp إن التطبيقات التقليدية لـ \fBgetopt\fP(1) غير قادرة على التعامل مع المسافات البيضاء والمحارف الخاصة الأخرى (الخاصة بالصدفة) في الوسائط والمعاملات التي ليست خيارات. ولحل هذه المشكلة، يمكن لهذا التطبيق توليد مخرجات مقتبسة يجب تفسيرها مرة أخرى بواسطة الصدفة (عادةً باستخدام أمر \fBeval\fP). وهذا يؤدي إلى الحفاظ على تلك المحارف، ولكن يجب استدعاء \fBgetopt\fP بطريقة لم تعد متوافقة مع الإصدارات الأخرى (التنسيق الثاني أو الثالث في \fBموجز الاستخدام\fP). ولتحديد ما إذا كان هذا الإصدار المحسن من \fBgetopt\fP(1) مثبتاً، يمكن استخدام خيار اختبار خاص (\fB\-T\fP). .SH "الخيارات" .sp \fB\-a\fP، \fB\-\-alternative\fP .RS 4 السماح للخيارات الطويلة بالبدء بشرطة واحدة \*(Aq\fB\-\fP\*(Aq. .RE .sp \fB\-l\fP، \fB\-\-longoptions\fP _الخيارات\-الطويلة _ .RS 4 الخيارات الطويلة (متعددة المحارف) المراد التعرف عليها. يمكن تحديد أكثر من اسم خيار في آن واحد، عن طريق الفصل بين الأسماء بفاصلة، أو مسافة بيضاء (مسافات، أو علامات جدولة، أو أسطر جديدة). يمكن إعطاء هذا الخيار أكثر من مرة، وتكون \fIالخيارات_الطويلة\fP تراكمية. كل اسم خيار طويل في \fIالخيارات_الطويلة\fP قد يتبعه نقطة رأسية واحدة للإشارة إلى أن له معطى مطلوباً، ونقطتان رأسيان للإشارة إلى أن له معطى اختيارياً. .RE .sp \fB\-n\fP، \fB\-\-name\fP \fIاسم_البرنامج\fP .RS 4 الاسم الذي ستستخدمه روتينات \fBgetopt\fP(3) عند الإبلاغ عن الأخطاء. لاحظ أن أخطاء \fBgetopt\fP(1) لا يزال يُبلغ عنها على أنها آتية من getopt. .RE .sp \fB\-o\fP، \fB\-\-options\fP _الخيارات\-القصيرة _ .RS 4 الخيارات القصيرة (ذات المحرف الواحد) المراد التعرف عليها. إذا لم يتم العثور على هذا الخيار، يُستخدم المعامل الأول من \fBgetopt\fP الذي لا يبدأ بـ \*(Aq\fB\-\fP\*(Aq (وليس وسيطاً لخيار) كسلسلة خيارات قصيرة. كل محرف خيار قصير في \fIshortopts\fP قد يتبعه {colon} واحد للإشارة إلى أن له وسيطاً مطلوباً، و{colon}{colon} للإشارة إلى أن له وسيطاً اختيارياً. قد يكون المحرف الأول من shortopts هو \*(Aq\fB+\fP\*(Aq أو \*(Aq\fB\-\fP\*(Aq للتأثير على طريقة تحليل الخيارات وتوليد المخرجات (انظر قسم \fBأوضاع الفحص\fP للتفاصيل). .RE .sp \fB\-q\fP، \fB\-\-quiet\fP .RS 4 تعطيل الإبلاغ عن الأخطاء بواسطة \fBgetopt\fP(3). .RE .sp \fB\-Q\fP، \fB\-\-quiet\-output\fP .RS 4 عدم توليد مخرجات عادية. لا يزال يُبلغ عن الأخطاء بواسطة \fBgetopt\fP(3)، ما لم تستخدم أيضاً الخيار \fB\-q\fP. .RE .sp \fB\-s\fP، \fB\-\-shell\fP \fIالصدفة\fP .RS 4 يضبط اصطلاحات الاقتباس لتلك الخاصة بـ \fIصدفة\fP. إذا لم يُعطَ الخيار \fB\-s\fP، تُستخدم اصطلاحات \fBBASH\fP. المعطيات الصالحة حاليًا هي \*(Aq\fBsh\fP\*(Aq و\*(Aq\fBbash\fP\*(Aq و\*(Aq\fBcsh\fP\*(Aq و\*(Aq\fBtcsh\fP\*(Aq. .RE .sp \fB\-T\fP، \fB\-\-test\fP .RS 4 اختبار ما إذا كان \fBgetopt\fP(1) هو هذا الإصدار المحسن أو إصدار قديم. لا يولد هذا أي مخرجات، ويضبط حالة الخطأ على 4. التطبيقات الأخرى من \fBgetopt\fP(1)، وهذا الإصدار في حال ضبط متغير البيئة \fBGETOPT_COMPATIBLE\fP، ستعيد \*(Aq\fB\-\-\fP\*(Aq وحالة الخطأ 0. .RE .sp \fB\-u\fP، \fB\-\-unquoted\fP .RS 4 لا تقتبس المخرجات. لاحظ أن المسافات البيضاء والمحارف الخاصة (المعتمدة على الصدفة) يمكن أن تسبب فوضى في هذا الوضع (كما تفعل مع تطبيقات \fBgetopt\fP(1) الأخرى). .RE .sp \fB\-U\fP، \fB\-\-unknown\fP .RS 4 ترك الخيارات المجهولة كما هي وكتم رسائل الخطأ من \fBgetopt\fP(3). ونظراً لعدم وجود طريقة لمعرفة ما إذا كان الخيار المجهول يتطلب معطى أم لا، فإن أي معطى ليس خياراً يأتي بعد الخيار المجهول بعد مسافة بيضاء، سيُعتبر معطى للخيار، وبالتالي سيُترك المعطى دون تغيير ويُطبع بجانب الخيار المجهول المقابل له. ولمنع السلوك غير المتوقع، ينبغي تحديد الخيارات القصيرة بشكل فردي. .RE .sp \fB\-h\fP، \fB\-\-help\fP .RS 4 اعرض نص المساعدة ثم اخرج. .RE .sp \fB\-V\fP، \fB\-\-version\fP .RS 4 اعرض الإصدار واخرج. .RE .SH "التحليل" .sp يحدد هذا القسم تنسيق الجزء الثاني من معلمات \fBgetopt\fP (المعلمات \fIمعاملات\fP في قسم \fBSYNOPSIS\fP). يصف القسم التالي (\fBOUTPUT\fP) المخرجات الناتجة. هذه المعلمات هي عادةً المعلمات التي استُدعيت بها دالة الصدفة. يجب الحرص على أن كل معلمة استُدعيت بها دالة الصدفة تقابل تمامًا معلمة واحدة في قائمة معلمات \fBgetopt\fP (راجع \fBالأمثلة *). يُجرى كل التحليل بواسطة روتينات GNU *getopt\fP(3). .sp تُحلل المعلمات من اليسار إلى اليمين. تُصنف كل معلمة كخيار قصير، أو خيار طويل، أو معطى لخيار، أو معلمة ليست خيارًا. .sp الخيار القصير البسيط هو \*(Aq\fB\-\fP\*(Aq متبوعًا بمحرف خيار قصير، باستثناء المحارف \*(Aq:\*(Aq و\*(Aq;\*(Aq و\*(Aq?\*(Aq، حيث إنها محجوزة بواسطة \fBgetopt\fP(3). إذا كان للخيار معطى مطلوب، فيمكن كتابته مباشرة بعد محرف الخيار أو كالمعلمة التالية (أي يفصل بينهما مسافة بيضاء في سطر الأوامر). إذا كان للخيار معطى اختياري، فيجب كتابته مباشرة بعد محرف الخيار في حال وجوده. .sp يمكن تحديد عدة خيارات قصيرة بعد \*(Aq\fB\-\fP\*(Aq واحد، طالما أن جميعها (باستثناء الأخير ربما) لا تملك معطيات مطلوبة أو اختيارية. .sp يبدأ الخيار الطويل عادةً بـ \*(Aq\fB\-\-\fP\*(Aq متبوعًا باسم الخيار الطويل. إذا كان للخيار معطى مطلوب، فيمكن كتابته مباشرة بعد اسم الخيار الطويل، مفصولاً بـ \*(Aq\fB=\fP\*(Aq، أو كالمعطى التالي (أي يفصل بينهما مسافة بيضاء في سطر الأوامر). إذا كان للخيار معطى اختياري، فيجب كتابته مباشرة بعد اسم الخيار الطويل، مفصولاً بـ \*(Aq\fB=\fP\*(Aq، في حال وجوده (إذا أضفت \*(Aq\fB=\fP\*(Aq ولم تضف شيئًا خلفه، يُفسر كما لو لم يكن هناك معطى؛ هذا خطأ برمجى طفيف، راجع قسم العيوب \fBBUGS\fP). يمكن اختصار الخيارات الطويلة، طالما أن الاختصار ليس غامضًا. .sp كل معلمة لا تبدأ بـ \*(Aq\fB\-\fP\*(Aq، وليست معطى مطلوبًا لخيار سابق، هي معلمة ليست خيارًا. كل معلمة بعد معلمة \*(Aq\fB\-\-\fP\*(Aq تُفسر دائمًا على أنها معلمة ليست خيارًا. إذا ضُبط متغير البيئة \fBPOSIXLY_CORRECT\fP، أو إذا بدأت سلسلة خيارات القصير بـ \*(Aq\fB+\fP\*(Aq، تُفسر جميع المعلمات المتبقية كمعلمات ليست خيارات بمجرد العثور على أول معلمة ليست خيارًا. .SH "الخرج" .sp تولّد المخرجات لكل عنصر موصوف في القسم السابق. يتم الإخراج بنفس الترتيب الذي حددت به العناصر في المدخلات، باستثناء المعلمات التي ليست خيارات. يمكن أن يكون الإخراج في وضع \fIمتوافق\fP (\fIغير مقتبس\fP)، أو بطريقة تحافظ على المسافات البيضاء والمحارف الخاصة الأخرى داخل المعطيات والمعلمات التي ليست خيارات (راجع قسم الاقتباس \fBQUOTING\fP). عندما تُعالج المخرجات في سكريبت الصدفة، ستظهر وكأنها مكونة من عناصر متميزة يمكن معالجتها واحدًا تلو الآخر (باستخدام أمر shift في معظم لغات الصدفة). هذا غير مثالي في الوضع غير المقتبس، حيث يمكن تقسيم العناصر في أماكن غير متوقعة إذا كانت تحتوي على مسافات بيضاء أو محارف خاصة. .sp إذا كانت هناك مشاكل في تحليل المعلمات، على سبيل المثال لعدم العثور على معطى مطلوب أو لعدم التعرف على خيار ما، سيُبلغ عن خطأ في stderr، ولن يكون هناك مخرجات للعنصر المخالف، وستُرجع حالة خطأ غير صفرية. .sp بالنسبة للخيار القصير، يُولّد \*(Aq\fB\-\fP\*(Aq واحد ومحرف الخيار كمعلمة واحدة. إذا كان للخيار معطى، فستكون المعلمة التالية هي المعطى. إذا كان الخيار يأخذ معطى اختياريًا، ولكن لم يُعثر على أي منها، فستُولّد المعلمة التالية ولكنها ستكون فارغة في وضع الاقتباس، ولكن لن تُولّد معلمة ثانية في الوضع غير المقتبس (المتوافق). لاحظ أن العديد من تطبيقات \fBgetopt\fP(1) الأخرى لا تدعم المعطيات الاختيارية. .sp إذا حُددت خيارات قصيرة متعددة بعد علامة \*(Aq\fB\-\fP\*(Aq واحدة، فسيظهر كل منها في المخرجات كمعلمة منفصلة. .sp بالنسبة للخيار الطويل، تُولّد \*(Aq\fB\-\-\fP\*(Aq واسم الخيار الكامل كمعلمة واحدة. ويُنفذ هذا بغض النظر عما إذا كان الخيار قد اختُصر أو حُدد بعلامة \*(Aq\fB\-\fP\*(Aq واحدة في المدخلات. وتُعامل المعطيات كما تُعامل في الخيارات القصيرة. .sp عادةً، لا تُولّد مخرجات للمعالم التي لا تُعد خيارات حتى تُولّد جميع الخيارات ومعطياتها. ثم تُولّد \*(Aq\fB\-\-\fP\*(Aq كمعلمة واحدة، وبعدها المعالم التي ليست خيارات بالترتيب الذي وُجدت به، كل منها كمعلمة منفصلة. وفقط إذا كان المحرف الأول من سلسلة الخيارات القصيرة هو \*(Aq\fB\-\fP\*(Aq، تُولّد مخرجات المعالم التي ليست خيارات في المكان الذي وُجدت فيه في المدخلات (هذا ليس متاحًا إذا استُخدم التنسيق الأول لفقرة \fBSYNOPSIS\fP؛ وفي هذه الحالة تُتجاهل جميع حالات ظهور \*(Aq\fB\-\fP\*(Aq و \*(Aq\fB+\fP\*(Aq السابقة). .SH "الاقتباس" .sp في وضع التوافق، لا تُعالج المسافات البيضاء أو المحارف \*(Aqالخاصة\*(Aq في المعطيات أو المعالم التي ليست خيارات بشكل صحيح. وبما أن المخرجات تُلقم إلى سكريبت الصدفة، فإن السكريبت لا يعرف كيف يُفترض به تقسيم المخرجات إلى معالم منفصلة. وللتحايل على هذه المشكلة، يوفر هذا التطبيق خاصية الاقتباس. الفكرة هي توليد المخرجات مع وضع علامات اقتباس حول كل معلمة. وعندما تُلقم هذه المخرجات مرة أخرى إلى الصدفة (عادةً عبر أمر \fBeval\fP للصدفة)، فإنها تُقسم بشكل صحيح إلى معالم منفصلة. .sp لا يُفعل الاقتباس إذا ضُبط متغير البيئة \fBGETOPT_COMPATIBLE\fP، أو إذا استُخدم الصيغة الأولى من \fBSYNOPSIS\fP، أو إذا وُجد الخيار \*(Aq\fB\-u\fP\*(Aq. .sp تستخدم الصدفات المختلفة اتفاقيات اقتباس مختلفة. يمكنك استخدام الخيار \*(Aq\fB\-s\fP\*(Aq لاختيار الصدفة التي تستخدمها. الصدفات التالية متاحة حاليًا: \*(Aq\fBsh\fP\*(Aq و \*(Aq\fBbash\fP\*(Aq و \*(Aq\fBcsh\fP\*(Aq و \*(Aq\fBtcsh\fP\*(Aq. في الواقع، يُميز بين \*(Aqنكهتين\*(Aq فقط: اتفاقيات اقتباس تشبه sh واتفاقيات اقتباس تشبه csh. ومن المحتمل أنه إذا كنت تستخدم لغة سكريبت صدفة أخرى، فإنه لا يزال بالإمكان استخدام إحدى هاتين النكهتين. .SH "أوضاع الفحص" .sp قد يكون المحرف الأول من سلسلة الخيارات القصيرة هو \*(Aq\fB\-\fP\*(Aq أو \*(Aq\fB+\fP\*(Aq للإشارة إلى وضع مسح خاص. وإذا استُخدمت صيغة الاستدعاء الأولى في \fBSYNOPSIS\fP فإنها تُتجاهل؛ ومع ذلك، لا يزال يُفحص متغير البيئة \fBPOSIXLY_CORRECT\fP. .sp إذا كان المحرف الأول هو \*(Aq\fB+\fP\*(Aq، أو إذا ضُبط متغير البيئة \fBPOSIXLY_CORRECT\fP، فإن التحليل يتوقف بمجرد العثور على أول معلمة ليست خيارًا (أي معلمة لا تبدأ بـ \*(Aq\fB\-\fP\*(Aq) ولا تُعد معطى لخيار. وتُفسر جميع المعالم المتبقية على أنها معالم ليست خيارات. .sp إذا كان المحرف الأول هو \*(Aq\fB\-\fP\*(Aq، تُخرج المعالم التي ليست خيارات في المكان الذي وُجدت فيه؛ أما في التشغيل العادي، فتُجمع جميعًا في نهاية المخرجات بعد توليد المعلمة \*(Aq\fB\-\-\fP\*(Aq. لاحظ أن معلمة \*(Aq\fB\-\-\fP\*(Aq هذه لا تزال تُولد، ولكنها ستكون دائمًا المعلمة الأخيرة في هذا الوضع. .SH "التوافقية" .sp كُتب هذا الإصدار من \fBgetopt\fP(1) ليكون متوافقًا قدر الإمكان مع الإصدارات الأخرى. وعادةً يمكنك استبدالها بهذا الإصدار دون أي تعديلات، ومع الحصول على بعض المزايا. .sp إذا لم يكن المحرف الأول من المعلمة الأولى لـ getopt هو \*(Aq\fB\-\fP\*(Aq، يدخل \fBgetopt\fP في وضع التوافق. حيث سيُفسر معلمته الأولى على أنها سلسلة الخيارات القصيرة، وستُحلل جميع المعطيات الأخرى. وسيستمر في إجراء تبديل المعالم (أي تُخرج جميع المعالم التي ليست خيارات في النهاية)، ما لم يُضبط متغير البيئة \fBPOSIXLY_CORRECT\fP، وفي هذه الحالة، سيسبق \fBgetopt\fP سلسلة الخيارات القصيرة بـ \*(Aq\fB+\fP\*(Aq آليًا. .sp يُجبر متغير البيئة \fBGETOPT_COMPATIBLE\fP الأداة \fBgetopt\fP على الدخول في وضع التوافق. ويوفر ضبط كل من متغير البيئة هذا و \fBPOSIXLY_CORRECT\fP توافقًا بنسبة 100% للبرامج \*(Aqالصعبة\*(Aq. ومع ذلك، فعادةً لا توجد حاجة لأي منهما. .sp في وضع التوافق، تُتجاهل محارف \*(Aq\fB\-\fP\*(Aq و \*(Aq\fB+\fP\*(Aq البادئة في سلسلة الخيارات القصيرة. .SH "الشفرات الراجعة" .sp يعيد \fBgetopt\fP رمز الخطأ \fB0\fP للتحليل الناجح، و \fB1\fP إذا أعاد \fBgetopt\fP(3) أخطاءً، و \fB2\fP إذا لم يفهم معالمه الخاصة، و \fB3\fP في حال حدوث خطأ داخلي مثل نفاد الذاكرة، و \fB4\fP إذا استُدعي مع الخيار \fB\-T\fP. .SH "أمثلة" .sp تُوفر سكريبتات أمثلة لـ (ba)sh و (t)csh مع توزيعة \fBgetopt\fP(1)، وتُثبت في دليل \fI/usr/share/doc/util\-linux\fP. .SH "البيئة" .sp \fBPOSIXLY_CORRECT\fP .RS 4 يُفحص متغير البيئة هذا بواسطة روتينات \fBgetopt\fP(3). فإذا كان مضبوطًا، يتوقف التحليل بمجرد العثور على معلمة لا تُعد خيارًا أو معطى لخيار. وتُفسر جميع المعالم المتبقية أيضًا على أنها معالم ليست خيارات، بغض النظر عما إذا كانت تبدأ بـ \*(Aq\fB\-\fP\*(Aq. .RE .sp \fBGETOPT_COMPATIBLE\fP .RS 4 يُجبر \fBgetopt\fP على استخدام صيغة الاستدعاء الأولى كما هي محددة في \fBالموجز\fP. .RE .SH "العلل" .sp يمكن لـ \fBgetopt\fP(3) تحليل الخيارات الطويلة ذات الوسائط الاختيارية التي تُعطى وسيطاً اختيارياً فارغاً (لكنه لا يستطيع القيام بذلك للخيارات القصيرة). تعامل الأداة \fBgetopt\fP(1) هذه الوسائط الاختيارية الفارغة وكأنها غير موجودة. .sp إن الصيغة المستخدمة إذا كنت لا تريد أي متغيرات خيارات قصيرة على الإطلاق ليست بديهية تماماً (يجب عليك ضبطها صراحةً على أنها سلسلة فارغة). .SH "المؤلف" .sp .MTO "frodo\(atfrodo.looijaard.name" "Frodo Looijaard" "" .SH "انظر أيضاً" .sp \fBbash\fP(1)، \fBtcsh\fP(1)، \fBgetopt\fP(3) .SH "التبليغ عن الأخطاء" .sp لتقارير العِلل، استخدم \c .URL "https://github.com/util\-linux/util\-linux/issues" "مُتتبع المشكلات" "." .SH "التوفر" .sp الأمر \fBgetopt\fP جزء من حزمة util\-linux التي يمكن تنزيلها من \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "أرشيف نواة لينكس" "."