.\" -*- coding: UTF-8 -*- .\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey .\" Case Western Reserve University .\" chet.ramey@case.edu .\" .\" Last Change: Mon Apr 7 16:59:13 EDT 2025 .\" .\" For bash_builtins, strip all but "SHELL BUILTIN COMMANDS" section .\" For rbash, strip all but "RESTRICTED SHELL" section .\" .\" Both conditionalize text based on the base page being formatted .\" using the zZ and zY registers, respectively .\" .\" Ensure the registers are initialized to avoid groff warnings. .nr zZ +0 .nr zY +0 .\" empty .ds zZ .\" Ensure the macros/strings are initialized to avoid groff warnings. .\" empty .ds zY .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BASH 1 "7 أبريل 2025" "GNU Bash 5.3" .ie \n(.g \{\ .ds ' \(aq .ds " \(dq .ds ^ \(ha .ds ~ \(ti .\} .el \{\ .ds ' ' .\" \*" is not usable in macro arguments on AT&T troff (DWB, Solaris 10) .ds " ""\" two adjacent quotes and no space before this comment .ds ^ ^ .ds ~ ~ .\} .\" . .de FN \%\fI\|\\$1\|\fP\\$2 .. .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. .\" \% at the beginning of the string protects the filename from hyphenation. .\" .de Q .ie \n(.g \(lq\\$1\(rq\\$2 .el \{\ . if t ``\\$1''\\$2 . if n "\\$1"\\$2 .\} .. .\" .\" Quotation macro: generate consistent quoted strings that don't rely .\" on the presence of the `CW' constant-width font. .\" .de QN .ie \n(.g \%\(lq\\$1\(rq\\$2 .el \{\ . if t \%``\\$1''\\$2 . if n \%"\\$1"\\$2 .\} .. .\" Q but disallowing hyphenation of the string .SH الاسم bash \- صدفة جنو بورن\-أغين (Bourne\-Again SHell) .SH موجز \fBbash\fP [خيارات] [سلسلة_أوامر | ملف] .SH "حقوق النسخ" .if n Bash is Copyright (C) 1989-2025 by the Free Software Foundation, Inc. .if t Bash is Copyright \(co 1989-2025 by the Free Software Foundation, Inc. .SH الوصف إنّ \fBBash\fP مفسر للغة الأوامر ينفذ الأوامر المقروءة من الدخل القياسي، أو من سلسلة نصية، أو من ملف. وهو إعادة تنفيذ وتوسعة لصدفة بورن (Bourne shell)، مفسر لغة أوامر يونكس التاريخي. كما يدمج \fBBash\fP ميزات مفيدة من صدفتي \fIKorn\fP و \fIC\fP (\fBksh\fP و \fBcsh\fP). .PP .SM POSIX هو اسم لعائلة من معايير الحوسبة المبنية على يونكس. يهدف \fBBash\fP ليكون تنفيذاً مطابقاً لقسم الصدفة والأدوات المساعدة في مواصفات IEEE .SM POSIX (معيار IEEE 1003.1). يغير نمط \fBBash\fP .SM POSIX (المشار إليه لاحقاً باسم \fIposix mode\fP) سلوك الصدفة عندما تختلف عملياتها المبدئية عن المعيار لتتوافق معه تماماً. انظر قسم .SM \fBانظر أيضاً\fP أدناه للحصول على مرجع لمستند يفصل كيف يؤثر نمط posix على سلوك \fBbash\fP. يمكن ضبط \fBBash\fP ليكون متوافقاً مع .SM POSIX مبدئياً. .SH الخيارات يمكن استخدام كافة خيارات الصدفة أحادية المحرف الموثقة في وصف أمر \fBset\fP المدمج، بما في ذلك \fB\-o\fP، كخيارات عند استدعاء الصدفة. بالإضافة إلى ذلك، يفسر \fBbash\fP الخيارات التالية عند استدعائه: .PP .TP 10 \fB\-c\fP إذا وُجد الخيار \fB\-c\fP، تُقرأ الأوامر من أول معامل ليس خياراً \fIcommand_string\fP. إذا وُجدت معاملات بعد \fIcommand_string\fP، يُسند المعامل الأول إلى \fB$0\fP وتُسند بقية المعاملات إلى المعاملات الموضعية. التعيين لـ \fB$0\fP يضبط اسم الصدفة، والذي يُستخدم في رسائل التحذير والخطأ. .TP \fB\-i\fP إذا وُجد الخيار \fB\-i\fP، تكون الصدفة \fIتفاعلية\fP. .TP \fB\-l\fP جعل \fBbash\fP يتصرف كما لو أنه استُدعي كصدفة ولوج (انظر .SM \fBالاستدعاء\fP أدناه). .TP \fB\-r\fP إذا وُجد الخيار \fB\-r\fP، تصبح الصدفة \fIمقيدة\fP (انظر .SM \fBالصدفة المقيدة\fP أدناه). .TP \fB\-s\fP إذا وُجد الخيار \fB\-s\fP، أو لم تبقَ أي معاملات بعد معالجة الخيارات، تقرأ الصدفة الأوامر من الدخل القياسي. يسمح هذا الخيار بضبط المعاملات الموضعية عند استدعاء صدفة تفاعلية أو عند قراءة الدخل عبر أنبوب. .TP \fB\-D\fP اطبع قائمة بكافة السلاسل النصية المحاطة بعلامات اقتباس مزدوجة والمسبوقة بـ \fB$\fP على الخرج القياسي. هذه هي السلاسل التي تخضع للترجمة اللغوية عندما لا تكون المحلية الحالية \fBC\fP أو \fBPOSIX\fP. هذا يتضمن الخيار \fB\-n\fP؛ لن تُنفذ أي أوامر. .TP \fB[\-+]O [\fP\fIshopt_option\fP\fB]\fP \fIshopt_option\fP هو أحد خيارات الصدفة التي يقبلها أمر \fBshopt\fP المدمج (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). إذا وُجد \fIshopt_option\fP، يضبط \fB\-O\fP قيمة ذلك الخيار؛ بينما يلغيه \fB+O\fP. إذا لم يُزود \fIshopt_option\fP، يطبع \fBbash\fP أسماء وقيم خيارات الصدفة التي يقبلها \fBshopt\fP على الخرج القياسي. إذا كان خيار الاستدعاء هو \fB+O\fP، يُعرض الخرج بتنسيق يمكن استخدامه مجدداً كدخل. .TP \fB\-\-\fP تُشير \fB\-\-\fP إلى نهاية الخيارات وتعطل أي معالجة إضافية للخيارات. تُعامل أي معاملات بعد \fB\-\-\fP كاسم ملف لسكربت صدفة (انظر أدناه) ومعاملات ممررة إلى ذلك السكربت. المعامل \fB\-\fP يعادل \fB\-\-\fP. .PP يفسر \fBBash\fP أيضاً عدداً من الخيارات متعددة المحارف. يجب أن تظهر هذه الخيارات على سطر الأوامر قبل الخيارات أحادية المحرف ليُتعرف عليها. .PP .TP \fB\-\-debugger\fP الترتيب لتنفيذ تشكيلة المنقح قبل بدء الصدفة. يُفعل نمط التنقيح الموسع (انظر وصف خيار \fBextdebug\fP لأمر \fBshopt\fP المدمج أدناه). .TP \fB\-\-dump\-po\-strings\fP يعادل \fB\-D\fP، لكن الخرج يكون بتنسيق ملف GNU \fIgettext\fP .Q po (كائن محمول \- portable object). .TP \fB\-\-dump\-strings\fP يعادل \fB\-D\fP. .TP \fB\-\-help\fP اعرض رسالة الاستخدام على الخرج القياسي واخرج بنجاح. .TP .PD 0 \fB\-\-init\-file\fP \fIfile\fP .TP \fB\-\-rcfile\fP \fIfile\fP .PD تنفيذ الأوامر من \fIملف\fP بدلاً من ملف التهيئة الشخصي القياسي .FN \*~/.bashrc إذا كانت الصدفة تفاعلية (انظر .SM \fBINVOCATION\fP أدناه). .TP \fB\-\-login\fP يكافئ \fB\-l\fP. .TP \fB\-\-noediting\fP لا تستخدم مكتبة GNU \fBreadline\fP لقراءة أسطر الأوامر عندما تكون الصدفة تفاعلية. .TP \fB\-\-noprofile\fP أو أي من ملفات التهيئة الشخصية \fI~/.bash_profile\fP، أو .FN \*~/.bash_login ، أو \fI~/.profile\fP. مبدئياً، تقرأ \fBbash\fP هذه الملفات عندما تُستدعى كصدفة ولوج (انظر .SM \fBاستدعاء\fP أدناه). .TP \fB\-\-norc\fP Do not read and execute the personal initialization file .FN \*~/.bashrc if the shell is interactive. This option is on by default if the shell is invoked as \fBsh\fP. .TP \fB\-\-posix\fP تفعيل وضع posix؛ يغير سلوك \fBbash\fP حيثما تختلف العملية الافتراضية عن معيار .SM POSIX لمطابقة المعيار. .TP \fB\-\-restricted\fP تصبح الصدفة مقيدة (انظر .SM \fBالصدفة المقيدة\fP أدناه). .TP \fB\-\-verbose\fP يعادل \fB\-v\fP. .TP \fB\-\-version\fP اعرض معلومات الإصدار لنسخة \fBbash\fP هذه على الخرج القياسي واخرج بنجاح. .SH المعطيات إذا بقيت معاملات بعد معالجة الخيارات، ولم يُزود أي من الخيارين \fB\-c\fP أو \fB\-s\fP، يُعامل المعامل الأول كاسم ملف يحتوي على أوامر صدفة (\fIسكربت صدفة\fP). عند استدعاء \fBbash\fP بهذه الطريقة، يُضبط \fB$0\fP على اسم الملف، وتُضبط المعاملات الموضعية على المعاملات المتبقية. يقرأ \fBbash\fP الأوامر من هذا الملف وينفذها، ثم يخرج. حالة خروج \fBbash\fP هي حالة خروج آخر أمر نُفذ في السكربت. إذا لم تُنفذ أي أوامر، تكون حالة الخروج 0. يحاول \fBbash\fP أولاً فتح الملف في الدليل الحالي، وإذا لم يُعثر على الملف، يبحث في الأدلة الموجودة في .SM \fBPATH\fP عن السكربت. .SH الاستدعاء \fIصدفة الولوج\fP هي التي يكون المحرف الأول من معاملها رقم صفر هو \fB\-\fP، أو التي بدأت بخيار \fB\-\-login\fP. .PP \fIالصدفة التفاعلية\fP هي التي تبدأ بدون معاملات ليست خيارات (ما لم يُحدد \fB\-s\fP) وبدون الخيار \fB\-c\fP، ويكون دخلها القياسي وخرج خطئها القياسي متصلين بمحطات طرفية (كما يحدد \fIisatty\fP(3))، أو التي بدأت بالخيار \fB\-i\fP. يضبط \fBbash\fP القيمة .SM \fBPS1\fP ويُضمن \fBi\fP في \fB$\-\fP إذا كانت الصدفة تفاعلية، لذا يمكن لسكربت صدفة أو ملف بدء تشغيل اختبار هذه الحالة. .PP تصف الفقرات التالية كيف ينفذ \fBbash\fP ملفات بدء التشغيل الخاصة به. إذا وُجد أي من الملفات وتعذرت قراءته، يبلغ \fBbash\fP عن خطأ. تُوسع علامات المدة (Tildes) في أسماء الملفات كما هو موضح أدناه في قسم \fBتوسيع علامة المدة\fP في قسم .SM \fBالتوسع\fP. .PP When \fBbash\fP is invoked as an interactive login shell, or as a non\-interactive shell with the \fB\-\-login\fP option, it first reads and executes commands from the file .FN /etc/profile , if that file exists. After reading that file, it looks for .FN \*~/.bash_profile , .FN \*~/.bash_login , and .FN \*~/.profile , in that order, and reads and executes commands from the first one that exists and is readable. The \fB\-\-noprofile\fP option may be used when the shell is started to inhibit this behavior. .PP When an interactive login shell exits, or a non\-interactive login shell executes the \fBexit\fP builtin command, \fBbash\fP reads and executes commands from the file .FN \*~/.bash_logout , if it exists. .PP When an interactive shell that is not a login shell is started, \fBbash\fP reads and executes commands from .FN \*~/.bashrc , if that file exists. The \fB\-\-norc\fP option inhibits this behavior. The \fB\-\-rcfile\fP \fIfile\fP option causes \fBbash\fP to use \fIfile\fP instead of .FN \*~/.bashrc . .PP عند بدء \fBbash\fP بشكل غير تفاعلي، لتشغيل سكربت صدفة مثلاً، فإنه يبحث عن المتغير .SM \fBBASH_ENV\fP في البيئة، ويوسع قيمته إذا ظهرت هناك، ويستخدم القيمة الموسعة كاسم ملف لقراءته وتنفيذه. يتصرف \fBbash\fP كما لو نُفذ الأمر التالي: .PP .RS .EX if [ \-n \*"$BASH_ENV\*" ]; then . \*"$BASH_ENV\*"; fi .EE .RE .PP لكنه لا يستخدم قيمة المتغير .SM \fBPATH\fP للبحث عن اسم الملف. .PP If \fBbash\fP is invoked with the name \fBsh\fP, it tries to mimic the startup behavior of historical versions of \fBsh\fP as closely as possible, while conforming to the .SM POSIX standard as well. When invoked as an interactive login shell, or a non\-interactive shell with the \fB\-\-login\fP option, it first attempts to read and execute commands from .FN /etc/profile and .FN \*~/.profile , in that order. The \fB\-\-noprofile\fP option inhibits this behavior. When invoked as an interactive shell with the name \fBsh\fP, \fBbash\fP looks for the variable .SM \fBENV\fP, expands its value if it is defined, and uses the expanded value as the name of a file to read and execute. Since a shell invoked as \fBsh\fP does not attempt to read and execute commands from any other startup files, the \fB\-\-rcfile\fP option has no effect. A non\-interactive shell invoked with the name \fBsh\fP does not attempt to read any other startup files. .PP عند استدعائه باسم \fBsh\fP، يدخل \fBbash\fP نمط posix بعد قراءة ملفات بدء التشغيل. .PP عند بدء \fBbash\fP في نمط posix، كما هو الحال مع خيار سطر الأوامر \fB\-\-posix\fP، فإنه يتبع معيار .SM POSIX لملفات بدء التشغيل. في هذا النمط، توسع الصدف التفاعلية المتغير .SM \fBENV\fP وتقرأ وتنفذ الأوامر من الملف الذي يحمل اسماً هو القيمة الموسعة. لا تُقرأ أي ملفات بدء تشغيل أخرى. .PP \fBBash\fP attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the historical and rarely\-seen remote shell daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP. If \fBbash\fP determines it is being run non\-interactively in this fashion, it reads and executes commands from .FN \*~/.bashrc , if that file exists and is readable. \fBBash\fP does not read this file if invoked as \fBsh\fP. The \fB\-\-norc\fP option inhibits this behavior, and the \fB\-\-rcfile\fP option makes \fBbash\fP use a different file instead of .FN \*~/.bashrc , but neither \fIrshd\fP nor \fIsshd\fP generally invoke the shell with those options or allow them to be specified. .PP إذا بدأت الصدفة مع معرف مستخدم (أو مجموعة) فعلي لا يساوي معرف المستخدم (أو المجموعة) الحقيقي، ولم يُزود الخيار \fB\-p\fP، فلا تُقرأ أي ملفات بدء تشغيل، ولا تُورث وظائف الصدفة من البيئة، وتُتجاهل المتغيرات .SM \fBSHELLOPTS\fP، و .SM \fBBASHOPTS\fP، و .SM \fBCDPATH\fP، و .SM \fBGLOBIGNORE\fP إذا ظهرت في البيئة، ويُضبط معرف المستخدم الفعلي ليكون هو معرف المستخدم الحقيقي. إذا زُوِّد الخيار \fB\-p\fP عند الاستدعاء، يكون سلوك بدء التشغيل هو نفسه، ولكن لا يُعاد ضبط معرف المستخدم الفعلي. .SH تعريفات تُستخدم التعريفات التالية في بقية هذا المستند. .PD 0 .TP \fBفراغ (blank)\fP مسافة أو علامة جدولة (tab). .TP \fBمسافة فارغة (whitespace)\fP محرف ينتمي لفئة المحارف \fBspace\fP في المحلية الحالية، أو الذي تعيد معه \fIisspace\fP(3) قيمة صحيحة. .TP \fBكلمة (word)\fP تسلسل من المحارف التي تعتبرها الصدفة وحدة واحدة. تُعرف أيضاً باسم \fBعلامة (token)\fP. .TP \fBname\fP \fIكلمة\fP تتكون فقط من محارف أبجدية رقمية وشرطات سفلية، وتبدأ بمحرف أبجدي أو بشرطة سفلية. يُشار إليها أيضاً باسم \fBمعرف (identifier)\fP. .TP \fBمحرف واصف (metacharacter)\fP محرف، عندما لا يكون محاطاً بعلامات اقتباس، يفصل بين الكلمات. وهو أحد المحارف التالية: .br .RS .PP .if t \fB| & ; ( ) < > space tab newline\fP .if n \fB| & ; ( ) < > space tab newline\fP .RE .TP \fBعامل تحكم (control operator)\fP \fIعلامة (token)\fP تؤدي وظيفة تحكم. وهي أحد الرموز التالية: .RS .PP .if t \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .if n \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .RE .PD .SH "الكلمات المحجوزة" \fIالكلمات المحجوزة\fP هي كلمات لها معنى خاص للصدفة. يُتعرف على الكلمات التالية كمحجوزة عندما لا تكون محاطة باقتباس وتكون إما الكلمة الأولى في أمر (انظر .SM \fBقواعد الصدفة\fP أدناه)، أو الكلمة الثالثة في أمر \fBcase\fP أو \fBselect\fP (تصلح \fBin\fP فقط)، أو الكلمة الثالثة في أمر \fBfor\fP (تصلح \fBin\fP و \fBdo\fP فقط): .if t .RS .PP .B .if n ! case coproc do done elif else esac fi for function if in select \ then until while { } time [[ ]] .if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE .SH "قواعد الصدفة" يصف هذا القسم بناء الجملة لمختلف أشكال أوامر الصدفة. .SS "الأوامر البسيطة" \fIالأمر البسيط\fP هو تسلسل من تعيينات اختيارية لمتغيرات تليها كلمات مفصولة بـ \fBفراغ\fP وإعادة توجيه، وينتهي بـ \fIعامل تحكم\fP. تحدد الكلمة الأولى الأمر المراد تنفيذه، وتُمرر كمعامل رقم صفر. تُمرر الكلمات المتبقية كمعاملات للأمر المستدعى. .PP قيمة الإرجاع لـ \fIأمر بسيط\fP هي حالة خروجه، أو 128+\fIn\^\fP إذا أُنهي الأمر بواسطة الإشارة \fIn\fP. .SS "الأنابيب (Pipelines)" \fIالأنبوب\fP هو تسلسل من أمر واحد أو أكثر يفصل بينها أحد عاملي التحكم \fB|\fP أو \fB|&\fP. تنسيق الأنبوب هو: .RS .PP [\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand1\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP .\|.\|.\& ] .RE .PP يُوصل الخرج القياسي لـ \fIcommand1\fP عبر أنبوب بالدخل القياسي لـ \fIcommand2\fP. يُجرى هذا التوصيل قبل أي عمليات إعادة توجيه يحددها \fIcommand1\fP (انظر .SM \fBإعادة التوجيه\fP أدناه). إذا كان \fB|&\fP هو عامل الأنبوب، فإن خطأ \fIcommand1\fP القياسي، بالإضافة إلى خرجه القياسي، يُوصل بالدخل القياسي لـ \fIcommand2\fP عبر الأنبوب؛ وهو اختصار لـ \fB2>&1 |\fP. تُجرى عملية إعادة التوجيه الضمنية هذه لخطأ القياسي إلى الخرج القياسي بعد أي عمليات إعادة توجيه يحددها \fIcommand1\fP. .PP حالة الإرجاع للأنبوب هي حالة خروج آخر أمر، ما لم يُفعل الخيار \fBpipefail\fP. إذا فُعل \fBpipefail\fP، فإن حالة إرجاع الأنبوب هي قيمة آخر أمر (في أقصى اليمين) يخرج بحالة غير صفرية، أو صفر إذا خرجت جميع الأوامر بنجاح. إذا سبقت الكلمة المحجوزة \fB!\fP الأنبوب، تكون حالة خروج ذلك الأنبوب هي النفي المنطقي لحالة الخروج كما هو موضح أعلاه. إذا نُفذ الأنبوب بشكل متزامن، تنتظر الصدفة جميع الأوامر في الأنبوب لتنتهي قبل إرجاع القيمة. .PP إذا سبقت الكلمة المحجوزة \fBtime\fP أنبوباً، تبلغ الصدفة عن الوقت المنقضي بالإضافة إلى وقت المستخدم والنظام المستهلك في تنفيذه عند انتهاء الأنبوب. يغير الخيار \fB\-p\fP تنسيق الخرج إلى التنسيق الذي يحدده .SM POSIX . عندما تكون الصدفة في نمط posix، لا تُعرف \fBtime\fP ككلمة محجوزة إذا بدأت العلامة (token) التالية بـ .Q \- . قيمة المتغير .SM \fBTIMEFORMAT\fP هي سلسلة تنسيق تحدد كيفية عرض معلومات التوقيت؛ انظر وصف .SM \fBTIMEFORMAT\fP أدناه في قسم \fBمتغيرات الصدفة\fP. .PP عندما تكون الصدفة في نمط posix، قد تظهر \fBtime\fP بمفردها كالكلمة الوحيدة في أمر بسيط. في هذه الحالة، تعرض الصدفة إجمالي وقت المستخدم والنظام المستهلك بواسطة الصدفة وعملياتها التابعة. يحدد المتغير .SM \fBTIMEFORMAT\fP تنسيق معلومات الوقت. .PP يُنفيذ كل أمر في أنبوب متعدد الأوامر، حيث تُنشأ الأنابيب، في \fIصدفة فرعية\fP، وهي عملية منفصلة. انظر .SM \fBبيئة تنفيذ الأوامر\fP لوصف للصدف الفرعية وبيئتها. إذا فُعل الخيار \fBlastpipe\fP باستخدام أمر \fBshopt\fP المدمج (انظر وصف \fBshopt\fP أدناه)، ولم يكن التحكم في المهام نشطاً، فقد يُشغل العنصر الأخير من الأنبوب بواسطة عملية الصدفة نفسها. .SS قوائم \fIالقائمة\fP هي تسلسل من أنبوب واحد أو أكثر يفصل بينها أحد العوامل \fB;\fP، أو \fB&\fP، أو \fB&&\fP، أو \fB||\fP، وتنتهي اختيارياً بـ \fB;\fP، أو \fB&\fP، أو \fB<سطر_جديد>\fP. .PP من بين عوامل القائمة هذه، يتمتع \fB&&\fP و \fB||\fP بأولوية متساوية، يليهما \fB;\fP و \fB&\fP، واللذان يتمتعان أيضاً بأولوية متساوية. .PP قد يظهر تسلسل من سطر جديد واحد أو أكثر في \fIقائمة\fP بدلاً من الفاصلة المنقوطة لترسيم الأوامر. .PP إذا أُنهي أمر بعامل التحكم \fB&\fP، تنفذ الصدفة الأمر في \fIالخلفية\fP في صدفة فرعية. لا تنتظر الصدفة انتهاء الأمر، وتكون حالة الإرجاع 0. يُشار إليها باسم الأوامر \fIغير المتزامنة\fP. تُنفذ الأوامر المفصولة بـ \fB;\fP بشكل متسلسل؛ حيث تنتظر الصدفة انتهاء كل أمر بدوره. حالة الإرجاع هي حالة خروج آخر أمر نُفذ. .PP قوائم AND و OR هي تسلسلات من أنبوب واحد أو أكثر تفصل بينها عوامل التحكم \fB&&\fP و \fB||\fP على التوالي. تُنفذ قوائم AND و OR بترابط من اليسار. تأخذ قائمة AND الشكل التالي .RS .PP \fIcommand1\fP \fB&&\fP \fIcommand2\fP .RE .PP يُنفيذ \fIcommand2\fP إذا، وفقط إذا، أرجع \fIcommand1\fP حالة خروج صفرية (نجاح). .PP تأخذ قائمة OR الشكل التالي .RS .PP \fIcommand1\fP \fB||\fP \fIcommand2\fP .RE .PP يُنفيذ \fIcommand2\fP إذا، وفقط إذا، أرجع \fIcommand1\fP حالة خروج غير صفرية. حالة الإرجاع لقوائم AND و OR هي حالة خروج آخر أمر نُفذ في القائمة. .SS "الأوامر المركبة" \fIالأمر المركب\fP هو أحد الأوامر التالية. في معظم الحالات، قد تُفصل \fIقائمة\fP في وصف الأمر عن بقية الأمر بسطر جديد واحد أو أكثر، وقد يتبعها سطر جديد بدلاً من الفاصلة المنقوطة. .TP (\fIlist\fP) تُنفيذ \fIقائمة\fP في صدفة فرعية (انظر .SM \fBبيئة تنفيذ الأوامر\fP أدناه لوصف لبيئة الصدفة الفرعية). تعيينات المتغيرات والأوامر المدمجة التي تؤثر على بيئة الصدفة لا يظل مفعولها سارياً بعد اكتمال الأمر. حالة الإرجاع هي حالة خروج \fIالقائمة\fP. .TP { \fIlist\fP; } تُنفيذ \fIقائمة\fP في بيئة الصدفة الحالية. يجب إنهاء \fIالقائمة\fP بسطر جديد أو فاصلة منقوطة. يُعرف هذا باسم \fIأمر المجموعة\fP. حالة الإرجاع هي حالة خروج \fIالقائمة\fP. .IP لاحظ أنه على عكس المحارف الواصفة \fB(\fP و \fB)\fP، فإن \fB{\fP و \fB}\fP هي \fIكلمات محجوزة\fP ويجب أن تظهر في مكان يُسمح فيه بالتعرف على الكلمات المحجوزة. وبما أنها لا تسبب فاصلاً بين الكلمات، يجب فصلها عن \fIالقائمة\fP بمسافة فارغة أو محرف واصف آخر للصدفة. .TP ((\fIexpression\fP)) يُقيّم \fIالتعبير\fP الحسابي وفقاً للقواعد الموضحة أدناه في قسم .SM \fBالتقييم الحسابي\fP. إذا كانت قيمة التعبير غير صفرية، تكون حالة الإرجاع 0؛ وخلاف ذلك تكون حالة الإرجاع 1. يخضع \fIالتعبير\fP لنفس التوسعات كما لو كان داخل علامات اقتباس مزدوجة، لكن علامات الاقتباس المزدوجة غير المهربة في \fIالتعبير\fP لا تُعامل معاملة خاصة وتُحذف. وبما أن هذا قد يؤدي إلى سلاسل فارغة، يعامل هذا الأمر تلك السلاسل كتعبيرات تُقيّم بـ 0. .TP \fB[[\fP \fIexpression\fP \fB]]\fP .PD قيم التعبير الشرطي \fIالتعبير\fP وأرجع حالة صفرية (صحيح) أو غير صفرية (خطأ). تتكون التعبيرات من العناصر الأساسية الموضحة أدناه في قسم .SM \fBالتعبيرات الشرطية\fP. الكلمات بين \fB[[\fP و \fB]]\fP لا تخضع لتقسيم الكلمات وتوسيع مسار الملف. تجري الصدفة توسيع علامة المدة، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر، واستبدال العمليات، وحذف الاقتباس على تلك الكلمات. العوامل الشرطية مثل \fB\-f\fP يجب أن تكون غير محاطة باقتباس ليُتعرف عليها كعناصر أساسية. .IP عند استخدامها مع \fB[[\fP، يقوم العاملان \fB<\fP و \fB>\fP بالفرز معجمياً باستخدام المحلية الحالية. .IP عند استخدام العاملين \fB==\fP و \fB!=\fP، تُعتبر السلسلة الموجودة على يمين العامل نمطاً وتتم مطابقتها وفقاً للقواعد الموضحة أدناه في قسم \fBمطابقة الأنماط\fP، كما لو كان خيار الصدفة \fBextglob\fP مفعلاً. العامل \fB=\fP يعادل \fB==\fP. إذا فُعل خيار الصدفة \fBnocasematch\fP، تُجرى المطابقة دون مراعاة لحالة المحارف الأبجدية. قيمة الإرجاع هي 0 إذا طابقت السلسلة النمط (\fB==\fP) أو لم تطابقه (\fB!=\fP)، و 1 خلاف ذلك. إذا حُوصر أي جزء من النمط باقتباس، تتم مطابقة الجزء المقتبس كسلسلة نصية: كل محرف في الجزء المقتبس يطابق نفسه، بدلاً من أن يكون له أي معنى خاص لمطابقة الأنماط. .IP يتوفر عامل ثنائي إضافي، \fB=\*~\fP، بنفس أولوية \fB==\fP و \fB!=\fP. عند استخدامه، تُعتبر السلسلة الموجودة على يمين العامل تعبيراً نمطياً موسعاً .SM POSIX وتتم مطابقتها وفقاً لذلك (باستخدام واجهات .SM POSIX \fIregcomp\fP و \fIregexec\fP الموصوفة عادة في \fIregex\fP(3)). قيمة الإرجاع هي 0 إذا طابقت السلسلة النمط، و 1 خلاف ذلك. إذا كان التعبير النمطي غير صحيح لغوياً، تكون قيمة إرجاع التعبير الشرطي 2. إذا فُعل خيار الصدفة \fBnocasematch\fP، تُجرى المطابقة دون مراعاة لحالة المحارف الأبجدية. .IP إذا حُوصر أي جزء من النمط باقتباس، تتم مطابقة الجزء المقتبس حرفياً، كما ذكرنا أعلاه. إذا كان النمط مخزناً في متغير صدفة، فإن إحاطة توسيع المتغير باقتباس يجبر النمط بأكمله على أن يُطابق حرفياً. تعامل مع تعبيرات الأقواس في التعبيرات النمطية بحذر، لأن الاقتباس العادي ومحارف الأنماط تفقد معانيها بين الأقواس. .IP تنجح المطابقة إذا طابق النمط أي جزء من السلسلة. ارسِ النمط باستخدام عاملي التعبير النمطي \fB\*^\fP و \fB$\fP لإجباره على مطابقة السلسلة بأكملها. .IP يسجل متغير المصفوفة .SM \fBBASH_REMATCH\fP أي أجزاء من السلسلة طابقت النمط. يحتوي العنصر ذو الفهرس 0 في .SM \fBBASH_REMATCH\fP على جزء السلسلة الذي طابق التعبير النمطي بالكامل. تُحفظ السلاسل الفرعية التي طابقتها التعبيرات الفرعية المحاطة بأقواس داخل التعبير النمطي في فهارس .SM \fBBASH_REMATCH\fP المتبقية. العنصر ذو الفهرس \fIn\fP في .SM \fBBASH_REMATCH\fP هو جزء السلسلة الذي طابق التعبير الفرعي المحاط بأقواس رقم \fIn\fP. يضبط \fBBash\fP المتغير .SM \fBBASH_REMATCH\fP في النطاق العام؛ التصريح عنه كمتغير محلي سيؤدي إلى نتائج غير متوقعة. .IP يمكن دمج التعبيرات باستخدام العوامل التالية، مرتبة تنازلياً حسب الأولوية: .IP .RS .PD 0 .TP \fB( \fP\fIexpression\fP\fB )\fP يعيد قيمة \fIالتعبير\fP. يمكن استخدام هذا لتجاوز الأولوية العادية للعوامل. .TP \fB! \fP\fIexpression\fP صحيح إذا كان \fIالتعبير\fP خاطئاً. .TP \fIexpression1\fP \fB&&\fP \fIexpression2\fP صحيح إذا كان كل من \fIexpression1\fP و \fIexpression2\fP صحيحين. .TP \fIexpression1\fP \fB||\fP \fIexpression2\fP صحيح إذا كان أي من \fIexpression1\fP أو \fIexpression2\fP صحيحاً. .PD .LP لا يُقيم العاملان \fB&&\fP و \fB||\fP التعبير \fIexpression2\fP إذا كانت قيمة \fIexpression1\fP كافية لتحديد قيمة الإرجاع للتعبير الشرطي بأكمله. .RE .TP \fBfor\fP \fIname\fP [ [ \fBin\fP \fIword .\|.\|.\&\fP ] ; ] \fBdo\fP \fIlist\fP ; \fBdone\fP أولاً، يتم توسيع قائمة الكلمات التي تلي \fBin\fP، لإنتاج قائمة من العناصر. ثم، يُضبط المتغير \fIname\fP على كل عنصر من هذه القائمة بدوره، وتُنفيذ \fIالقائمة\fP في كل مرة. إذا حُذفت \fBin\fP \fIword\fP، ينفذ أمر \fBfor\fP \fIالقائمة\fP مرة واحدة لكل معامل موضعي مضبوط (انظر .SM \fBالمعاملات\fP أدناه). حالة الإرجاع هي حالة خروج آخر أمر نُفذ. إذا أدى توسيع العناصر التي تلي \fBin\fP إلى قائمة فارغة، لا تُنفذ أي أوامر، وتكون حالة الإرجاع 0. .TP \fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) [;] \fBdo\fP \fIlist\fP ; \fBdone\fP أولاً، يُقيم التعبير الحسابي \fIexpr1\fP وفقاً للقواعد الموضحة أدناه في قسم .SM \fBالتقييم الحسابي\fP. ثم، يُقيم التعبير الحسابي \fIexpr2\fP بشكل متكرر حتى يُقيم بـ صفر. في كل مرة يُقيم فيها \fIexpr2\fP بقيمة غير صفرية، تُنفذ \fIالقائمة\fP ويُقيم التعبير الحسابي \fIexpr3\fP. إذا حُذف أي تعبير، فإنه يتصرف كما لو كان يُقيم بـ 1. قيمة الإرجاع هي حالة خروج آخر أمر نُفذ في \fIالقائمة\fP، أو قيمة غير صفرية إذا كان أي من التعبيرات غير صحيح. .IP استخدم أمري \fBbreak\fP و \fBcontinue\fP المدمجين (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه) للتحكم في تنفيذ الحلقة. .TP \fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP أولاً، يتم توسيع قائمة الكلمات التي تلي \fBin\fP لإنتاج قائمة من العناصر، وتُطبع مجموعة الكلمات الموسعة على الخطأ القياسي، كل منها مسبوق برقم. إذا حُذفت \fBin\fP \fIword\fP، تُطبع المعاملات الموضعية (انظر .SM \fBالمعاملات\fP أدناه). ثم يعرض \fBselect\fP المحث .SM \fBPS3\fP ويقرأ سطراً من الدخل القياسي. إذا كان السطر يتكون من رقم مطابق لإحدى الكلمات المعروضة، يضبط \fBselect\fP قيمة \fIname\fP على تلك الكلمة. إذا كان السطر فارغاً، يعرض \fBselect\fP الكلمات والمحث مرة أخرى. إذا قُرئت نهاية الملف (EOF)، يكتمل \fBselect\fP ويعيد 1. أي قيمة أخرى تضبط \fIname\fP على قيمة فارغة. يُحفظ السطر المقروء في المتغير .SM \fBREPLY\fP. تُنفذ \fIالقائمة\fP بعد كل اختيار حتى يُنفذ أمر \fBbreak\fP. حالة خروج \fBselect\fP هي حالة خروج آخر أمر نُفذ في \fIالقائمة\fP، أو صفر إذا لم تُنفذ أي أوامر. .TP \fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] .\|.\|.\& ) \fIlist\fP ;; ] .\|.\|.\& \fBesac\fP يقوم أمر \fBcase\fP أولاً بتوسيع \fIword\fP، ويحاول مطابقتها مع كل \fIpattern\fP بدوره، بالانتقال من الأول إلى الأخير، باستخدام قواعد المطابقة الموضحة في قسم \fBمطابقة الأنماط\fP أدناه. قائمة الأنماط هي مجموعة من نمط واحد أو أكثر مفصولة بـ \|، وينهي العامل ) قائمة الأنماط. يتم توسيع \fIword\fP باستخدام توسيع علامة المدة، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر، واستبدال العمليات، وحذف الاقتباس. يتم توسيع كل \fIpattern\fP مفحوص باستخدام توسيع علامة المدة، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر، واستبدال العمليات، وحذف الاقتباس. إذا فُعل خيار الصدفة \fBnocasematch\fP، تُجرى المطابقة دون مراعاة لحالة المحارف الأبجدية. \fIالبند (clause)\fP هو قائمة أنماط و \fIقائمة\fP مرتبطة بها. .IP عند العثور على مطابقة، ينفذ \fBcase\fP \fIالقائمة\fP المقابلة. إذا أنهى العامل \fB;;\fP بند case، يكتمل أمر \fBcase\fP بعد المطابقة الأولى. يؤدي استخدام \fB;&\fP بدلاً من \fB;;\fP إلى استمرار التنفيذ مع \fIالقائمة\fP المرتبطة بقائمة الأنماط التالية. ويؤدي استخدام \fB;;&\fP بدلاً من \fB;;\fP إلى قيام الصدفة باختبار قائمة الأنماط التالية في العبارة، إن وُجدت، وتنفيذ أي \fIقائمة\fP مرتبطة إذا نجحت المطابقة، مع الاستمرار في تنفيذ عبارة case كما لو أن قائمة الأنماط لم تتطابق. حالة الخروج هي صفر إذا لم يتطابق أي نمط. .IP خلاف ذلك، هي حالة خروج آخر أمر نُفذ في آخر \fIقائمة\fP نُفذت. .TP \fBif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; [ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] .\|.\|.\& [ \fBelse\fP \fIlist\fP; ] \fBfi\fP تُنفيذ \fBif\fP \fIlist\fP. إذا كانت حالة خروجها صفراً، تُنفذ \fBthen\fP \fIlist\fP. خلاف ذلك، تُنفذ كل \fBelif\fP \fIlist\fP بدورها، وإذا كانت حالة خروجها صفراً، تُنفذ \fBthen\fP \fIlist\fP المقابلة ويكتمل الأمر. خلاف ذلك، تُنفذ \fBelse\fP \fIlist\fP، إن وُجدت. حالة الخروج هي حالة خروج آخر أمر نُفذ، أو صفر إذا لم يختبر أي شرط كصحيح. .TP \fBwhile\fP \fIlist\-1\fP; \fBdo\fP \fIlist\-2\fP; \fBdone\fP .PD 0 .TP \fBuntil\fP \fIlist\-1\fP; \fBdo\fP \fIlist\-2\fP; \fBdone\fP .PD ينفذ أمر \fBwhile\fP القائمة \fIlist\-2\fP بشكل مستمر طالما أن آخر أمر في القائمة \fIlist\-1\fP يعيد حالة خروج صفرية. أمر \fBuntil\fP مطابق لأمر \fBwhile\fP، إلا أن الاختبار منفي: تُنفذ \fIlist\-2\fP طالما أن آخر أمر في \fIlist\-1\fP يعيد حالة خروج غير صفرية. حالة الخروج لأمري \fBwhile\fP و \fBuntil\fP هي حالة خروج آخر أمر نُفذ في \fIlist\-2\fP، أو صفر إذا لم يُنفذ أي منها. .SS "العمليات الرديفة (Coprocesses)" \fIالعملية الرديفة\fP هي أمر صدفة تسبقه الكلمة المحجوزة \fBcoproc\fP. تُنفذ العملية الرديفة بشكل غير متزامن في صدفة فرعية، كما لو أن الأمر قد أُنهي بعامل التحكم \fB&\fP، مع إنشاء أنبوب ثنائي الاتجاه بين الصدفة المنفذة والعملية الرديفة. .PP بناء الجملة للعملية الرديفة هو: .RS .PP \fBcoproc\fP [\fIالاسم\fP] \fIالأمر\fP [\fIإعادة_التوجيه\fP] .RE .PP ينشئ هذا عملية مشتركة تُسمى \fIالاسم\fP. قد يكون \fIالأمر\fP إما أمراً بسيطاً أو أمراً مركباً (انظر أعلاه). \fIالاسم\fP هو اسم متغير صدفة. إذا لم يُزود \fIالاسم\fP، فإن الاسم المبدئي هو \fBCOPROC\fP. .PP الصيغة الموصى بها للاستخدام مع العملية المشتركة هي .RS .PP \fBcoproc\fP \fIالاسم\fP { \fIالأمر\fP [\fIإعادة_التوجيه\fP]; } .RE .PP هذه الصيغة مفضلة لأن الأوامر البسيطة تؤدي دائماً إلى تسمية العملية المشتركة باسم \fBCOPROC\fP، كما أنها أسهل في الاستخدام وأكثر اكتمالاً من الأوامر المركبة الأخرى. .PP إذا كان \fIالأمر\fP أمراً مركباً، يكون \fIالاسم\fP اختيارياً. تحدد الكلمة التي تلي \fBcoproc\fP ما إذا كانت تلك الكلمة ستُفسر كاسم متغير: تُفسر على أنها \fIالاسم\fP إذا لم تكن كلمة محجوزة تقدم أمراً مركباً. إذا كان \fIالأمر\fP أمراً بسيطاً، فلا يُسمح بوجود \fIالاسم\fP؛ وذلك لتجنب الالتباس بين \fIالاسم\fP والكلمة الأولى من الأمر البسيط. .PP عند تنفيذ العملية المشتركة، تنشئ الصدفة متغيراً مصفوفاً (انظر \fBالمصفوفات\fP أدناه) يُسمى \fIالاسم\fP في سياق الصدفة المنفذة. يُربط المخرج القياسي لـ \fIالأمر\fP عبر أنبوب بواصف ملف في الصدفة المنفذة، ويُعين واصف الملف هذا إلى \fIالاسم\fP[0]. ويُربط المدخل القياسي لـ \fIالأمر\fP عبر أنبوب بواصف ملف في الصدفة المنفذة، ويُعين واصف الملف هذا إلى \fIالاسم\fP[1]. يُنشأ هذا الأنبوب قبل أي عمليات إعادة توجيه يحددها الأمر (انظر .SM \fBإعادة_التوجيه\fP أدناه). يمكن استخدام واصفات الملفات كوسائط لأوامر الصدفة وعمليات إعادة التوجيه باستخدام توسعات الكلمات القياسية. وباستثناء تلك التي أُنشئت لتنفيذ استبدال الأوامر والعمليات، لا تتوفر واصفات الملفات في الصدفات الفرعية. .PP يتوفر معرف العملية للصدفة التي أُطلقت لتنفيذ العملية المشتركة كقيمة للمتغير \fIالاسم\fP_PID. يمكن استخدام الأمر المدمج \fBwait\fP لانتظار انتهاء العملية المشتركة. .PP بما أن العملية المشتركة تُنشأ كأمر غير متزامن، فإن الأمر \fBcoproc\fP يعود دائماً بالنجاح. حالة العودة للعملية المشتركة هي حالة الخروج لـ \fIالأمر\fP. .SS "تعريفات وظائف الصدفة" وظيفة الصدفة هي كائن يُستدعى مثل أمر بسيط وينفذ أمراً مركباً مع مجموعة جديدة من المعاملات الموضعية. تُصرح وظائف الصدفة على النحو التالي: .TP \fIاسم_الوظيفة\fP () \fIأمر\-مركب\fP [\fIإعادة\-توجيه\fP] .PD 0 .TP \fBfunction\fP \fIاسم_الوظيفة\fP [()] \fIأمر\-مركب\fP [\fIإعادة\-توجيه\fP] .PD يُعرف هذا وظيفة تُسمى \fIاسم_الوظيفة\fP. الكلمة المحجوزة \fBfunction\fP اختيارية. إذا زُودت الكلمة المحجوزة \fBfunction\fP، تصبح الأقواس اختيارية. \fIمتن\fP الوظيفة هو الأمر المركب \fIأمر\-مركب\fP (انظر \fBالأوامر المركبة\fP أعلاه). هذا الأمر عادة ما يكون \fIقائمة\fP من الأوامر بين { و }، ولكن يمكن أن يكون أي أمر مدرج تحت \fBالأوامر المركبة\fP أعلاه. إذا استُخدمت الكلمة المحجوزة \fBfunction\fP ولم تُزود الأقواس، فيوصى باستخدام الأقواس المعقوفة. يُنفذ \fIأمر\-مركب\fP كلما حُدد \fIاسم_الوظيفة\fP كاسم لأمر بسيط. عند التواجد في وضع posix، يجب أن يكون \fIاسم_الوظيفة\fP \fIاسماً\fP صالحاً للصدفة وألا يكون اسم أحد \fIالأوامر المدمجة الخاصة\fP لـ .SM POSIX . في الوضع المبدئي، يمكن أن يكون اسم الوظيفة أي كلمة صدفة غير مقتبسة لا تحتوي على \fB$\fP. .PP أي عمليات إعادة توجيه (انظر .SM \fBإعادة_التوجيه\fP أدناه) تُحدد عند تعريف الوظيفة تُنفذ عند تنفيذ الوظيفة. .PP حالة الخروج لتعريف الوظيفة هي صفر ما لم يحدث خطأ في بناء الجملة أو كانت هناك وظيفة للقراءة فقط بنفس الاسم موجودة بالفعل. عند التنفيذ، تكون حالة الخروج للوظيفة هي حالة الخروج لآخر أمر نُفذ في المتن. (انظر .SM \fBالوظائف\fP أدناه.) .SH تعليقات في الصدفة غير التفاعلية، أو الصدفة التفاعلية التي تم فيها تمكين خيار \fBinteractive_comments\fP للأمر المدمج \fBshopt\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه)، فإن الكلمة التي تبدأ بـ \fB#\fP تقدم تعليقاً. تبدأ الكلمة في بداية السطر، أو بعد مسافة بيضاء غير مقتبسة، أو بعد معامل. يتسبب التعليق في تجاهل تلك الكلمة وجميع الأحرف المتبقية في ذلك السطر. الصدفة التفاعلية التي لا يتوفر فيها خيار \fBinteractive_comments\fP لا تسمح بالتعليقات. يُمكن خيار \fBinteractive_comments\fP مبدئياً في الصدفات التفاعلية. .SH الاقتباس يُستخدم \fIالاقتباس\fP لإزالة المعنى الخاص لأحرف أو كلمات معينة بالنسبة للصدفة. يمكن استخدام الاقتباس لتعطيل المعاملة الخاصة للأحرف الخاصة، ولمنع التعرف على الكلمات المحجوزة ككلمات محجوزة، ولمنع توسيع المعاملات. .PP كل من \fIالأحرف الوصفية\fP المدرجة أعلاه تحت .SM \fBالتعريفات\fP له معنى خاص للصدفة ويجب اقتباسه إذا كان ليمثل نفسه. .PP عند استخدام تسهيلات توسيع تاريخ الأوامر (انظر .SM \fBتوسيع التاريخ\fP أدناه)، يجب اقتباس حرف \fIتوسيع التاريخ\fP، وهو عادةً \fB!\fP، لمنع توسيع التاريخ. .PP هناك أربع آليات للاقتباس: \fIحرف الهروب\fP، وعلامات الاقتباس المفردة، وعلامات الاقتباس المزدوجة، وعلامات الاقتباس المفردة المسبوقة بعلامة الدولار. .PP الشرطة المائلة الخلفية غير المقتبسة (\fB\e\fP) هي \fIحرف الهروب\fP. وهي تحافظ على القيمة الحرفية للحرف التالي الذي يليها، مزيلة أي معنى خاص له، باستثناء <سطر جديد>. إذا ظهر زوج \fB\e\fP<سطر جديد>، ولم تكن الشرطة المائلة الخلفية نفسها مقتبسة، فيُعامل زوج \fB\e\fP<سطر جديد> كاستمرار للسطر (أي يُزال من دفق الإدخال ويُتجاهل فعلياً). .PP إحاطة الأحرف بعلامات اقتباس مفردة يحافظ على القيمة الحرفية لكل حرف داخل علامات الاقتباس. لا يجوز ظهور علامة اقتباس مفردة بين علامتي اقتباس مفردتين، حتى لو كانت مسبوقة بشرطة مائلة خلفية. .PP إحاطة الأحرف بعلامات اقتباس مزدوجة يحافظ على القيمة الحرفية لجميع الأحرف داخل علامات الاقتباس، باستثناء \fB$\fP، و \fB\`\fP، و \fB\e\fP، وعند تمكين توسيع التاريخ، \fB!\fP. عندما تكون الصدفة في وضع posix، لا يكون لـ \fB!\fP أي معنى خاص داخل علامات الاقتباس المزدوجة، حتى عند تمكين توسيع التاريخ. تحتفظ الأحرف \fB$\fP و \fB\`\fP بمعناها الخاص داخل علامات الاقتباس المزدوجة. تحتفظ الشرطة المائلة الخلفية بمعناها الخاص فقط عندما يتبعها أحد الأحرف التالية: \fB$\fP، أو \fB\`\fP، أو \^\fB\*"\fP\^، أو \fB\e\fP، أو \fB<سطر جديد>\fP. وتُترك الشرطة المائلة الخلفية التي تسبق أحرفاً ليس لها معنى خاص دون تعديل. .PP يمكن اقتباس علامة اقتباس مزدوجة داخل علامات اقتباس مزدوجة بسبقها بشرطة مائلة خلفية. إذا كان ممكناً، سيُجرى توسيع التاريخ ما لم يهرب \fB!\fP الذي يظهر في علامات الاقتباس المزدوجة باستخدام شرطة مائلة خلفية. لا تُزال الشرطة المائلة الخلفية التي تسبق \fB!\fP. .PP المعاملات الخاصة \fB*\fP و \fB@\fP لها معنى خاص عندما تكون داخل علامات اقتباس مزدوجة (انظر .SM \fBالمعاملات\fP أدناه). .PP تُعامل تسلسلات الأحرف من الصيغة \fB$\fP\*'\fIسلسلة\fP\*' كمتغير خاص لعلامات الاقتباس المفردة. يتوسع التسلسل إلى \fIسلسلة\fP، مع استبدال الأحرف المهربة بشرطة مائلة خلفية في \fIسلسلة\fP كما هو محدد في معيار ANSI C. وتُفك ترميز تسلسلات هروب الشرطة المائلة الخلفية، إن وجدت، كما يلي: .RS .PD 0 .TP \fB\ea\fP تنبيه (جرس) .TP \fB\eb\fP backspace .TP \fB\ee\fP .TP \fB\eE\fP محرف هروب .TP \fB\ef\fP تغذية الصفحة .TP \fB\en\fP سطر جديد .TP \fB\er\fP رجوع العربة .TP \fB\et\fP جدولة أفقية .TP \fB\ev\fP علامة جدولة عمودية .TP \fB\e\e\fP backslash .TP \fB\e\*'\fP علامة اقتباس مفردة .TP \fB\e\*"\fP علامة اقتباس مزدوجة .TP \fB\e?\fP علامة استفهام .TP \fB\e\fP\fInnn\fP حرف الثمانية بتات الذي قيمته هي القيمة الثمانية \fInnn\fP (من رقم واحد إلى ثلاثة أرقام ثمانية). .TP \fB\ex\fP\fIHH\fP المحرف المكون من ثمانية بتات والذي قيمته هي القيمة الست عشرية \fIHH\fP (رقم أو رقمان ست عشريان). .TP \fB\eu\fP\fIHHHH\fP محرف يونيكود (ISO/IEC 10646) الذي قيمته هي القيمة الست عشرية \fIHHHH\fP (من رقم واحد إلى أربعة أرقام ست عشرية). .TP \fB\eU\fP\fIHHHHHHHH\fP محرف يونيكود (ISO/IEC 10646) الذي قيمته هي القيمة الست عشرية \fIHHHHHHHH\fP (من رقم واحد إلى ثمانية أرقام ست عشرية). .TP \fB\ec\fP\fIx\fP حرف تحكم\-\fIx\fP. .PD .RE .LP توضع النتيجة الموسعة بين علامتي اقتباس مفردتين، كما لو أن علامة الدولار لم تكن موجودة. .SS "ترجمة السلاسل" تؤدي السلسلة المقتبسة اقتباساً مزدوجاً والمسبوقة بعلامة دولار (\fB$\fP\*"\fIسلسلة\fP\*") إلى ترجمة السلسلة وفقاً للمحلية الحالية. تقوم البنية التحتية لـ \fIgettext\fP بعملية البحث والترجمة، باستخدام متغيرات الصدفة \fBLC_MESSAGES\fP و \fBTEXTDOMAINDIR\fP و \fBTEXTDOMAIN\fP. إذا كانت المحلية الحالية هي \fBC\fP أو \fBPOSIX\fP، أو إذا لم تكن هناك ترجمات متاحة، أو إذا لم تُترجم السلسلة، تُتجاهل علامة الدولار، وتُعامل السلسلة على أنها مقتبسة اقتباساً مزدوجاً كما هو موضح أعلاه. هذا شكل من أشكال الاقتباس المزدوج، لذا تظل السلسلة مقتبسة اقتباساً مزدوجاً مبدئياً، سواء تُرجمت واستُبدلت أم لا. إذا تم تمكين خيار \fBnoexpand_translation\fP باستخدام الأمر المدمج \fBshopt\fP، فإن السلاسل المترجمة تُقتبس اقتباساً مفرداً بدلاً من الاقتباس المزدوج. انظر وصف \fBshopt\fP أدناه تحت .SM \fBأوامر الصدفة المدمجة\fP. .SH المعاملات \fIالمعامل\fP هو كيان يخزن القيم. يمكن أن يكون \fIاسماً\fP أو رقماً أو أحد الأحرف الخاصة المدرجة أدناه تحت \fBالمعاملات الخاصة\fP. \fIالمتغير\fP هو معامل يُشار إليه بواسطة \fIاسم\fP. للمتغير \fIقيمة\fP وصفر أو أكثر من \fIالسمات\fP. تُعين السمات باستخدام الأمر المدمج \fBdeclare\fP (انظر \fBdeclare\fP أدناه في .SM \fBأوامر الصدفة المدمجة\fP). يعين الأمران المدمجان \fBexport\fP و \fBreadonly\fP سمات محددة. .PP يُعتبر المعامل مُعيناً إذا خُصصت له قيمة. السلسلة الفارغة هي قيمة صالحة. بمجرد تعيين متغير، لا يمكن إلغاء تعيينه إلا باستخدام الأمر المدمج \fBunset\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). .PP يُعين \fIالمتغير\fP باستخدام جملة من الصيغة .RS .PP \fIالاسم\fP=[\fIالقيمة\fP] .RE .PP إذا لم تُعطَ \fIالقيمة\fP، يُعين للمتغير السلسلة الفارغة. تخضع جميع \fIالقيم\fP لتوسيع التلدة (tilde)، وتوسيع المعاملات والمتغيرات، واستبدال الأوامر، والتوسيع الحسابي، وإزالة الاقتباس (انظر .SM \fBالتوسيع\fP أدناه). إذا كانت سمة \fBinteger\fP للمتغير مُعينة، فستُقيم \fIالقيمة\fP كتعبير حسابي حتى لو لم يُستخدم توسيع \fB$((\fP.\|.\|.\&\fB))\fP (انظر \fBالتوسيع الحسابي\fP أدناه). لا يُجرى تقسيم الكلمات ولا توسيع مسار الملف. قد تظهر جمل التعيين أيضاً كوسائط للأوامر المدمجة \fBalias\fP، و \fBdeclare\fP، و \fBtypeset\fP، و \fB\%export\fP، و \fBreadonly\fP، و \fBlocal\fP (أوامر \fIالتصريح\fP). عند التواجد في وضع posix، قد تظهر هذه الأوامر المدمجة في أمر بعد مثيل واحد أو أكثر من الأمر المدمج \fBcommand\fP وتحتفظ بخصائص جملة التعيين هذه. .PP في السياق الذي تقوم فيه جملة التعيين بتعيين قيمة لمتغير صدفة أو فهرس مصفوفة، فإن .Q += المعامل يلحق بالقيمة السابقة للمتغير أو يضيف إليها. يتضمن ذلك الوسائط لأوامر \fIالتصريح\fP مثل \fB\%declare\fP التي تقبل جمل التعيين. عندما .Q += يُطبق على متغير عُينت له سمة \fB\%integer\fP، تُقيم كل من قيمة المتغير الحالية و \fIالقيمة\fP كتعبيرات حسابية، ويُعين مجموع النتائج كقيمة للمتغير. القيمة الحالية عادة ما تكون ثابتاً صحيحاً، ولكن قد تكون تعبيراً. عندما .Q += يُطبق على متغير مصفوف باستخدام تعيين مركب (انظر \fBالمصفوفات\fP أدناه)، لا تُلغى قيمة المتغير (كما يحدث عند استخدام .Q = ), وتُلحق القيم الجديدة بالمصفوفة بدءاً من واحد أكبر من الحد الأقصى لفهرس المصفوفة (للمصفوفات المفهرسة) أو تُضاف كأزواج مفتاح\-قيمة إضافية في مصفوفة ترابطية. وعند تطبيقه على متغير ذي قيمة نصية، تُوسع \fIالقيمة\fP وتُلحق بقيمة المتغير. .PP يمكن تعيين سمة \fInameref\fP لمتغير باستخدام خيار \fB\-n\fP للأوامر المدمجة \fBdeclare\fP أو \fBlocal\fP (انظر أوصاف \fBdeclare\fP و \fBlocal\fP أدناه) لإنشاء \fIمرجع اسم\fP، أو مرجع لمتغير آخر. يتيح ذلك التلاعب بالمتغيرات بشكل غير مباشر. كلما تمت الإشارة إلى متغير مرجع الاسم، أو التعيين له، أو إلغاء تعيينه، أو تعديل سماته (بخلاف استخدام أو تغيير سمة \fInameref\fP نفسها)، تُنفذ العملية فعلياً على المتغير المحدد بواسطة قيمة متغير مرجع الاسم. يشيع استخدام مرجع الاسم داخل وظائف الصدفة للإشارة إلى متغير مُرر اسمه كوسيط للوظيفة. على سبيل المثال، إذا مُرر اسم متغير إلى وظيفة صدفة كوسيط أول لها، فإن تشغيل .PP .RS .EX declare \-n ref=$1 .EE .RE .PP داخل الوظيفة ينشئ متغيراً محلياً لمرجع الاسم \fBref\fP قيمته هي اسم المتغير المُرر كوسيط أول. تُعامل المراجع والتعيينات لـ \fBref\fP، والتغييرات في سماته، كمراجع وتعيينات وتعديلات للسمات للمتغير الذي مُرر اسمه كـ \fB$1\fP. إذا كان لمتغير التحكم في حلقة \fBfor\fP سمة مرجع الاسم، يمكن أن تكون قائمة الكلمات قائمة بمتغيرات الصدفة، ويُنشأ مرجع اسم لكل كلمة في القائمة بالترتيب عند تنفيذ الحلقة. لا يمكن منح متغيرات المصفوفة سمة \fBnameref\fP. ومع ذلك، يمكن لمتغيرات مرجع الاسم الإشارة إلى متغيرات المصفوفة ومتغيرات المصفوفة المفهرسة. يمكن إلغاء تعيين مراجع الأسماء باستخدام الخيار \fB\-n\fP للأمر المدمج \fBunset\fP. بخلاف ذلك، إذا نُفذ \fBunset\fP مع اسم متغير مرجع الاسم كوسيط، فسيُلغى تعيين المتغير الذي يشير إليه متغير مرجع الاسم. .PP عندما تبدأ الصدفة، تقرأ بيئتها وتنشئ متغير صدفة من كل متغير بيئة له اسم صالح، كما هو موضح أدناه (انظر .SM \fBالبيئة\fP). .SS "المعاملات الموضعية" \fIالمعامل الموضعي\fP هو معامل يُشار إليه برقم واحد أو أكثر، بخلاف الرقم المنفرد 0. تُعين المعاملات الموضعية من وسائط الصدفة عند استدعائها، وقد يُعاد تعيينها باستخدام الأمر المدمج \fBset\fP. لا يجوز التعيين للمعاملات الموضعية باستخدام جمل التعيين. تُستبدل المعاملات الموضعية مؤقتاً عند تنفيذ وظيفة صدفة (انظر .SM \fBالوظائف\fP أدناه). .PP عند توسيع معامل موضعي يتكون من أكثر من رقم واحد، يجب إحاطته بأقواس معقوفة (انظر .SM \fBالتوسيع\fP أدناه). بدون الأقواس، لا يمكن للرقم الذي يلي $ إلا أن يشير إلى أحد المعاملات الموضعية التسعة الأولى (\fB$1\-$9\fP) أو المعامل الخاص \fB$0\fP (انظر القسم التالي). .SS "المعاملات الخاصة" تعامل الصدفة عدة معاملات بشكل خاص. يمكن الإشارة إلى هذه المعاملات فقط؛ ولا يُسمح بالتعيين لها. يُشار إلى المعاملات الخاصة بأحد الأحرف التالية. .TP .PD 0 \fB*\fP (\fB$*\fP) يتوسع إلى المعاملات الموضعية، بدءاً من واحد. عندما لا يكون التوسيع داخل علامات اقتباس مزدوجة، يتوسع كل معامل موضعي إلى كلمة منفصلة. في السياقات التي تُجرى فيها توسعات الكلمات، تخضع تلك الكلمات لمزيد من تقسيم الكلمات وتوسيع مسار الملف. عندما يحدث التوسيع داخل علامات اقتباس مزدوجة، فإنه يتوسع إلى كلمة واحدة مع فصل قيمة كل معامل بواسطة الحرف الأول من متغير .SM \fBIFS\fP. أي أن \fB\*"$*\*"\fP يعادل \fB\*"$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB.\|.\|.\*"\fP، حيث \fIc\fP هو الحرف الأول من قيمة متغير .SM \fBIFS\fP. إذا لم يُعين .SM \fBIFS\fP، تُفصل المعاملات بمسافات. إذا كان .SM \fBIFS\fP فارغاً، تُدمج المعاملات بدون فواصل بينها. .TP \fB@\fP (\fB$@\fP) يتوسع إلى المعاملات الموضعية، بدءاً من واحد. في السياقات التي يُجرى فيها تقسيم الكلمات، يوسع هذا كل معامل موضعي إلى كلمة منفصلة؛ وإذا لم يكن داخل علامات اقتباس مزدوجة، تخضع هذه الكلمات لتقسيم الكلمات. في السياقات التي لا يُجرى فيها تقسيم الكلمات، مثل جزء القيمة في جملة التعيين، يتوسع هذا إلى كلمة واحدة مع فصل كل معامل موضعي بمسافة. عندما يحدث التوسيع داخل علامات اقتباس مزدوجة، ويُجرى تقسيم الكلمات، يتوسع كل معامل إلى كلمة منفصلة. أي أن \fB\&\*"$@\*"\fP يعادل \fB\&\*"\&$1\&\*"\ \*"$2\*"\ .\|.\|.\fP إذا حدث التوسيع المقتبس اقتباساً مزدوجاً داخل كلمة، يُدمج توسيع المعامل الأول مع توسيع الجزء الأول من الكلمة الأصلية، ويُدمج توسيع المعامل الأخير مع توسيع الجزء الأخير من الكلمة الأصلية. عندما لا توجد معاملات موضعية، يتوسع \fB\&\*"$@\*"\fP و \fB$@\fP إلى لا شيء (أي يُزالان). .TP \fB#\fP (\fB$#\fP) يتوسع إلى عدد المعاملات الموضعية بالنظام العشري. .TP \fB?\fP (\fB$?\fP) يتوسع إلى حالة الخروج لآخر أمر نُفذ. .TP \fB\-\fP (\fB$\-\fP) يتوسع إلى أعلام الخيارات الحالية كما هي محددة عند الاستدعاء، أو بواسطة الأمر المدمج \fBset\fP، أو تلك التي عينتها الصدفة نفسها (مثل الخيار \fB\-i\fP). .TP \fB$\fP (\fB$$\fP) يتوسع إلى معرف العملية للصدفة. في الصدفة الفرعية، يتوسع إلى معرف العملية للصدفة الأب، وليس للصدفة الفرعية. .TP \fB!\fP (\fB$!\fP) يتوسع إلى معرف العملية لآخر مهمة وُضعت في الخلفية، سواء نُفذت كأمر غير متزامن أو باستخدام الأمر المدمج \fBbg\fP (انظر .SM \fBالتحكم في المهام\fP أدناه). .TP \fB0\fP (\fB$0\fP) يتوسع إلى اسم الصدفة أو سكربت الصدفة. يُعين هذا عند تهيئة الصدفة. إذا استُدعي \fBbash\fP مع ملف من الأوامر، يُعين \fB$0\fP باسم ذلك الملف. إذا بُدئ \fBbash\fP بالخيار \fB\-c\fP، فسيُعين \fB$0\fP بأول وسيط بعد السلسلة المراد تنفيذها، في حال وجوده. بخلاف ذلك، يُعين باسم الملف المستخدم لاستدعاء \fBbash\fP، كما هو معطى في الوسيط صفر. .PD .SS "متغيرات الصدفة" تعين الصدفة المتغيرات التالية: .PP .PD 0 .TP \fB_\fP (\fB$_\fP، شرطة سفلية) لها عدة معانٍ حسب السياق. عند بدء تشغيل الصدفة، يُعين \fB_\fP بمسار الملف المستخدم لاستدعاء الصدفة أو سكربت الصدفة الذي يجري تنفيذه كما هو ممرر في البيئة أو قائمة الوسائط. لاحقاً، يتوسع إلى آخر وسيط للأمر البسيط السابق الذي نُفذ في الواجهة، بعد التوسيع. كما يُعين أيضاً بالمسار الكامل المستخدم لاستدعاء كل أمر مُنفذ ويُوضع في البيئة المصدرة لذلك الأمر. عند التحقق من البريد، يتوسع \fB$_\fP إلى اسم ملف البريد الذي يجري التحقق منه حالياً. .TP \fBBASH\fP يتوسع إلى اسم الملف الكامل المستخدم لاستدعاء نسخة \fBbash\fP هذه. .TP \fBBASHOPTS\fP قائمة مفصولة بنقطتين لخيارات الصدفة الممكنة. كل كلمة في القائمة هي وسيط صالح للخيار \fB\-s\fP للأمر المدمج \fBshopt\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). الخيارات التي تظهر في .SM \fBBASHOPTS\fP هي تلك التي يبلغ \fBshopt\fP أنها \fIتعمل\fP. إذا كان هذا المتغير موجوداً في البيئة عند بدء تشغيل \fBbash\fP، ستمكن الصدفة كل خيار في القائمة قبل قراءة أي ملفات بدء تشغيل. إذا صُدر هذا المتغير، ستمكن الصدفات الابنة كل خيار في القائمة. هذا المتغير للقراءة فقط. .TP \fBBASHPID\fP يتوسع إلى معرف العملية لعملية \fBbash\fP الحالية. يختلف هذا عن \fB$$\fP في ظروف معينة، مثل الصدفات الفرعية التي لا تتطلب إعادة تهيئة \fBbash\fP. لا تأثير لعمليات التعيين لـ .SM \fBBASHPID\fP. إذا أُلغي تعيين .SM \fBBASHPID\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_ALIASES\fP متغير مصفوفة ترابطية تتوافق عناصرها مع القائمة الداخلية للأسماء المستعارة كما يحافظ عليها الأمر المدمج \fBalias\fP. تظهر العناصر المضافة إلى هذه المصفوفة في قائمة الأسماء المستعارة؛ ومع ذلك، فإن إلغاء تعيين عناصر المصفوفة حالياً لا يزيل الأسماء المستعارة من قائمة الأسماء المستعارة. إذا أُلغي تعيين .SM \fBBASH_ALIASES\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_ARGC\fP متغير مصفوفة قيمها هي عدد المعاملات في كل إطار من مكدس استدعاءات تنفيذ \fBbash\fP الحالي. يكون عدد المعاملات للروتين الفرعي الحالي (وظيفة صدفة أو سكربت مُنفذ بـ \fB.\fP أو \fBsource\fP) في قمة المكدس. عند تنفيذ روتين فرعي، يُدفع عدد المعاملات الممررة إلى .SM \fBBASH_ARGC\fP. تعين الصدفة .SM \fBBASH_ARGC\fP فقط عندما تكون في وضع التنقيح الموسع (انظر وصف خيار \fBextdebug\fP للأمر المدمج \fBshopt\fP أدناه). قد يؤدي تعيين \fBextdebug\fP بعد أن تبدأ الصدفة في تنفيذ سكربت، أو الإشارة إلى هذا المتغير عندما لا يكون \fBextdebug\fP معيناً، إلى قيم غير متسقة. لا تأثير لعمليات التعيين لـ .SM \fBBASH_ARGC\fP، ولا يجوز إلغاء تعيينه. .TP \fBBASH_ARGV\fP متغير مصفوفة يحتوي على جميع المعاملات في مكدس استدعاءات تنفيذ \fBbash\fP الحالي. المعامل النهائي لآخر استدعاء روتين فرعي يكون في قمة المكدس؛ والمعامل الأول للاستدعاء الأولي يكون في القاع. عند تنفيذ روتين فرعي، تدفع الصدفة المعاملات المزودة إلى .SM \fBBASH_ARGV\fP. تعين الصدفة .SM \fBBASH_ARGV\fP فقط عندما تكون في وضع التنقيح الموسع (انظر وصف خيار \fBextdebug\fP للأمر المدمج \fBshopt\fP أدناه). قد يؤدي تعيين \fBextdebug\fP بعد أن تبدأ الصدفة في تنفيذ سكربت، أو الإشارة إلى هذا المتغير عندما لا يكون \fBextdebug\fP معيناً، إلى قيم غير متسقة. لا تأثير لعمليات التعيين لـ .SM \fBBASH_ARGV\fP، ولا يجوز إلغاء تعيينه. .TP \fBBASH_ARGV0\fP عند الإشارة إليه، يتوسع هذا المتغير إلى اسم الصدفة أو سكربت الصدفة (مطابق لـ \fB$0\fP؛ انظر وصف المعامل الخاص 0 أعلاه). تعيين قيمة لـ .SM \fBBASH_ARGV0\fP يعين \fB$0\fP لنفس القيمة. إذا أُلغي تعيين .SM \fBBASH_ARGV0\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_CMDS\fP متغير مصفوفة ترابطية تتوافق عناصرها مع جدول التلبيد (hash) الداخلي للأوامر كما يحافظ عليه الأمر المدمج \fBhash\fP. تؤدي إضافة عناصر إلى هذه المصفوفة إلى ظهورها في جدول التلبيد؛ ومع ذلك، فإن إلغاء تعيين عناصر المصفوفة حالياً لا يزيل أسماء الأوامر من جدول التلبيد. إذا أُلغي تعيين .SM \fBBASH_CMDS\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_COMMAND\fP يتوسع إلى الأمر الذي يجري تنفيذه حالياً أو على وشك التنفيذ، ما لم تكن الصدفة تنفذ أمراً نتيجة لفخ (trap)، وفي هذه الحالة يكون هو الأمر الذي كان يُنفذ وقت الفخ. إذا أُلغي تعيين .SM \fBBASH_COMMAND\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_EXECUTION_STRING\fP وسيط الأمر لخيار الاستدعاء \fB\-c\fP. .TP \fBBASH_LINENO\fP متغير مصفوفة عناصره هي أرقام الأسطر في ملفات المصدر حيث تم استدعاء كل عنصر مقابل من .SM \fBFUNCNAME\fP. \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP هو رقم السطر في ملف المصدر (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP) حيث استُدعيت \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP (أو \fB${BASH_LINENO[\fP\fI$i\-1\fP\fB]}\fP إذا تمت الإشارة إليها داخل وظيفة صدفة أخرى). استخدم .SM \fBLINENO\fP للحصول على رقم السطر الحالي. لا تأثير لعمليات التعيين لـ .SM \fBBASH_LINENO\fP، ولا يجوز إلغاء تعيينه. .TP \fBBASH_LOADABLES_PATH\fP قائمة مفصولة بنقطتين للأدلة التي يبحث فيها الأمر \fBenable\fP عن الأوامر المدمجة القابلة للتحميل ديناميكياً. .TP \fBBASH_MONOSECONDS\fP في كل مرة يُشار فيها إلى هذا المتغير، فإنه يتوسع إلى القيمة التي تعيدها الساعة الرتيبة (monotonic clock) للنظام، إن وجدت. إذا لم تكن هناك ساعة رتيبة، فإن هذا يعادل \fBEPOCHSECONDS\fP. إذا أُلغي تعيين .SM \fBBASH_MONOSECONDS\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_REMATCH\fP متغير مصفوفة تُعين عناصرها بواسطة المعامل الثنائي \fB=\*~\fP للأمر الشرطي \fB[[\fP. العنصر ذو الفهرس 0 هو جزء السلسلة الذي يطابق التعبير النمطي بأكمله. العنصر ذو الفهرس \fIn\fP هو جزء السلسلة الذي يطابق التعبير الفرعي المحصور بين أقواس ذي الرقم \fIn\fP. .TP \fBBASH_SOURCE\fP متغير مصفوفة عناصره هي أسماء ملفات المصدر حيث عُرفت أسماء وظائف الصدفة المقابلة في متغير مصفوفة .SM \fBFUNCNAME\fP. وظيفة الصدفة \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP مُعرفة في الملف \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP واستُدعيت من \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP. لا تأثير لعمليات التعيين لـ .SM \fBBASH_SOURCE\fP، ولا يجوز إلغاء تعيينه. .TP \fBBASH_SUBSHELL\fP يزداد بمقدار واحد داخل كل صدفة فرعية أو بيئة صدفة فرعية عندما تبدأ الصدفة في التنفيذ في تلك البيئة. القيمة الأولية هي 0. إذا أُلغي تعيين .SM \fBBASH_SUBSHELL\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBBASH_TRAPSIG\fP يُعين برقم الإشارة المقابل لإجراء الفخ (trap) الذي يجري تنفيذه أثناء تنفيذه. انظر وصف \fBtrap\fP تحت .SM \fBأوامر الصدفة المدمجة\fP أدناه للحصول على معلومات حول أرقام الإشارات وتنفيذ الفخ. .TP \fBBASH_VERSINFO\fP متغير مصفوفة للقراءة فقط تحمل عناصره معلومات الإصدار لنسخة \fBbash\fP هذه. القيم المعينة لعناصر المصفوفة هي كما يلي: .PP .RS .TP 24 \fBBASH_VERSINFO[\fP0\fB]\fP رقم الإصدار الرئيس (\fIrelease\fP). .TP \fBBASH_VERSINFO[\fP1\fB]\fP رقم الإصدار الفرعي (\fIversion\fP). .TP \fBBASH_VERSINFO[\fP2\fB]\fP مستوى الترقيع (patch level). .TP \fBBASH_VERSINFO[\fP3\fB]\fP إصدار البناء. .TP \fBBASH_VERSINFO[\fP4\fB]\fP حالة الإصدار (مثلاً، \fIbeta\fP). .TP \fBBASH_VERSINFO[\fP5\fB]\fP قيمة .SM \fBMACHTYPE\fP. .RE .TP \fBBASH_VERSION\fP يتوسع إلى سلسلة تصف إصدار نسخة \fBbash\fP هذه (مثلاً، 5.2.37(3)\-release). .TP \fBCOMP_CWORD\fP فهرس داخل \fB${COMP_WORDS}\fP للكلمة التي تحتوي على موضع المؤشر الحالي. يتوفر هذا المتغير فقط في وظائف الصدفة المستدعاة بواسطة تسهيلات الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). .TP \fBCOMP_KEY\fP المفتاح (أو المفتاح النهائي في تسلسل مفاتيح) المستخدم لاستدعاء وظيفة الإكمال الحالية. يتوفر هذا المتغير فقط في وظائف الصدفة والأوامر الخارجية المستدعاة بواسطة تسهيلات الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). .TP \fBCOMP_LINE\fP سطر الأوامر الحالي. يتوفر هذا المتغير فقط في وظائف الصدفة والأوامر الخارجية المستدعاة بواسطة تسهيلات الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). .TP \fBCOMP_POINT\fP فهرس موضع المؤشر الحالي بالنسبة لبداية الأمر الحالي. إذا كان موضع المؤشر الحالي في نهاية الأمر الحالي، فإن قيمة هذا المتغير تساوي \fB${#COMP_LINE}\fP. يتوفر هذا المتغير فقط في وظائف الصدفة والأوامر الخارجية المستدعاة بواسطة تسهيلات الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). .TP \fBCOMP_TYPE\fP يُعين بقيمة عددية تتوافق مع نوع محاولة الإكمال التي تسببت في استدعاء وظيفة إكمال: \fITAB\fP، للإكمال العادي، أو \fI?\fP، لسرد الإكمالات بعد ضغطات تاب متتالية، أو \fI!\fP، لسرد البدائل عند إكمال كلمة جزئية، أو \fI@\fP، لسرد الإكمالات إذا لم تكن الكلمة غير معدلة، أو \fI%\fP، لإكمال القائمة. يتوفر هذا المتغير فقط في وظائف الصدفة والأوامر الخارجية المستدعاة بواسطة تسهيلات الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). .TP \fBCOMP_WORDBREAKS\fP مجموعة الأحرف التي تعاملها مكتبة \fBreadline\fP كفواصل كلمات عند إجراء إكمال الكلمات. إذا أُلغي تعيين .SM \fBCOMP_WORDBREAKS\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBCOMP_WORDS\fP متغير مصفوفة (انظر \fBالمصفوفات\fP أدناه) يتكون من الكلمات الفردية في سطر الأوامر الحالي. يُقسم السطر إلى كلمات كما تفعل \fBreadline\fP، باستخدام .SM \fBCOMP_WORDBREAKS\fP كما هو موضح أعلاه. يتوفر هذا المتغير فقط في وظائف الصدفة المستدعاة بواسطة تسهيلات الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). .TP \fBCOPROC\fP متغير مصفوفة (انظر \fBالمصفوفات\fP أدناه) أُنشئ ليحمل واصفات الملفات للمخرجات من والمدخلات إلى عملية مشتركة غير مسماة (انظر \fBالعمليات المشتركة\fP أعلاه). .TP \fBDIRSTACK\fP متغير مصفوفة (انظر \fBالمصفوفات\fP أدناه) يحتوي على المحتويات الحالية لمكدس الأدلة. تظهر الأدلة في المكدس بالترتيب الذي يعرضه الأمر المدمج \fBdirs\fP. يمكن استخدام التعيين لعناصر متغير المصفوفة هذا لتعديل الأدلة الموجودة بالفعل في المكدس، ولكن يجب استخدام الأمرين المدمجين \fBpushd\fP و \fBpopd\fP لإضافة وإزالة الأدلة. التعيين لهذا المتغير لا يغير الدليل الحالي. إذا أُلغي تعيين .SM \fBDIRSTACK\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBEPOCHREALTIME\fP في كل مرة يُشار فيها إلى هذا المعامل، فإنه يتوسع إلى عدد الثواني منذ حقبة يونكس (انظر \fItime\fP(3)) كقيمة فاصلة عائمة بدقة ميكروثانية. تُتجاهل عمليات التعيين لـ .SM \fBEPOCHREALTIME\fP. إذا أُلغي تعيين .SM \fBEPOCHREALTIME\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBEPOCHSECONDS\fP في كل مرة يُشار فيها إلى هذا المعامل، فإنه يتوسع إلى عدد الثواني منذ حقبة يونكس (انظر \fItime\fP(3)). تُتجاهل عمليات التعيين لـ .SM \fBEPOCHSECONDS\fP. إذا أُلغي تعيين .SM \fBEPOCHSECONDS\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBEUID\fP يتوسع إلى معرف المستخدم الفعلي للمستخدم الحالي، ويُهيأ عند بدء تشغيل الصدفة. هذا المتغير للقراءة فقط. .TP \fBFUNCNAME\fP .PD متغير مصفوفة يحتوي على أسماء جميع وظائف الصدفة الموجودة حالياً في مكدس استدعاءات التنفيذ. العنصر ذو الفهرس 0 هو اسم أي وظيفة صدفة يجري تنفيذها حالياً. العنصر الأكثر انخفاضاً (الذي له أعلى فهرس) هو .Q main . يوجد هذا المتغير فقط عند تنفيذ وظيفة صدفة. لا تأثير لعمليات التعيين لـ .SM \fBFUNCNAME\fP. إذا أُلغي تعيين .SM \fBFUNCNAME\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .IP يمكن استخدام هذا المتغير مع .SM \fBBASH_LINENO\fP و .SM \fBBASH_SOURCE\fP. لكل عنصر من عناصر .SM \fB\%FUNCNAME\fP عناصر مقابلة في .SM \fBBASH_LINENO\fP و .SM \fBBASH_SOURCE\fP لوصف مكدس الاستدعاءات. على سبيل المثال، استُدعيت \fB\%${FUNCNAME[\fP\fI$i\fP\fB]}\fP من الملف \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP في السطر رقم \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP. يعرض الأمر المدمج \fBcaller\fP مكدس الاستدعاءات الحالي باستخدام هذه المعلومات. .PD 0 .TP \fBGROUPS\fP متغير مصفوفة يحتوي على قائمة المجموعات التي ينتمي إليها المستخدم الحالي. لا تأثير لعمليات التعيين لـ .SM \fBGROUPS\fP. إذا أُلغي تعيين .SM \fBGROUPS\fP، فإنه يفقد خصائصه الخاصة، حتى لو أُعيد تعيينه لاحقاً. .TP \fBHISTCMD\fP رقم التأريخ، أو الفهرس في قائمة التأريخ، للأمر الحالي. لا تؤثر التعيينات في .SM \fBHISTCMD\fP. إذا أُلغي تعيين .SM \fBHISTCMD\fP، فإنها تفقد خصائصها الخاصة، حتى لو أُعيد تعيينها لاحقًا. .TP \fBHOSTNAME\fP يُضبط آليًا إلى اسم المضيف الحالي. .TP \fBHOSTTYPE\fP يُضبط آليًا إلى سلسلة تصف بشكل فريد نوع الجهاز الذي يشتغل عليه \fBbash\fP. القيمة المبدئية تعتمد على النظام. .TP \fBLINENO\fP في كل مرة يُشار فيها إلى هذا المعامل، تستبدله الـ \fBصدفة\fP برقم عشري يمثل رقم السطر التسلسلي الحالي (بدءًا من 1) داخل سكربت أو دالة. عندما لا يكون في سكربت أو دالة، لا يُضمن أن تكون القيمة المستبدلة ذات معنى. إذا أُلغي تعيين .SM \fBLINENO\fP، فإنها تفقد خصائصها الخاصة، حتى لو أُعيد تعيينها لاحقًا. .TP \fBMACHTYPE\fP يُضبط آليًا إلى سلسلة تصف تمامًا نوع النظام الذي يشتغل عليه \fBbash\fP، بتنسيق \fIcpu\-company\-system\fP القياسي لـ GNU. القيمة المبدئية تعتمد على النظام. .TP \fBMAPFILE\fP متغير مصفوفة (انظر \fBArrays\fP أدناه) أُنشئ ليحوي النص المقروء بواسطة أمر \fBmapfile\fP المدمج عند عدم توفير اسم متغير. .TP \fBOLDPWD\fP دليل العمل السابق كما عينه الأمر \fBcd\fP. .TP \fBOPTARG\fP قيمة آخر معطى خيار عولج بواسطة أمر \fBgetopts\fP المدمج (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). .TP \fBOPTIND\fP فهرس المعطى التالي الذي سيُعالجه أمر \fBgetopts\fP المدمج (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). .TP \fBOSTYPE\fP يُضبط آليًا إلى سلسلة تصف نظام التشغيل الذي يشتغل عليه \fBbash\fP. القيمة المبدئية تعتمد على النظام. .TP \fBPIPESTATUS\fP متغير مصفوفة (انظر \fBArrays\fP أدناه) يحتوي على قائمة بقيم حالة الخروج من الأوامر في آخر أنبوب نفذ في الواجهة، والذي قد يتكون من أمر بسيط واحد فقط (انظر .SM \fBقواعد الصدفة\fP أعلاه). يُعين \fBbash\fP المتغير .SM \fBPIPESTATUS\fP بعد تنفيذ الأنابيب متعددة العناصر، والأنابيب الموقوتة والمنفية، والأوامر البسيطة، والصدفات الفرعية المنشأة باستخدام المعامل (، والأوامر المركبة \fB[[\fP و \fB((\fP، وبعد ظروف الخطأ التي تؤدي إلى إجهاض الـ \fBصدفة\fP لتنفيذ الأمر. .TP \fBPPID\fP معرف عملية (PID) والد الـ \fBصدفة\fP. هذا المتغير للقراءة فقط. .TP \fBPWD\fP دليل العمل الحالي كما عينه الأمر \fBcd\fP. .TP \fBRANDOM\fP في كل مرة يُشار فيها إلى هذا المعامل، يتوسع إلى عدد صحيح عشوائي بين 0 و 32767. يؤدي تعيين قيمة لـ .SM \fBRANDOM\fP إلى تهيئة (بذر) تسلسل الأعداد العشوائية. بذر مولد الأعداد العشوائية بنفس القيمة الثابتة ينتج نفس تسلسل القيم. إذا أُلغي تعيين .SM \fBRANDOM\fP، فإنها تفقد خصائصها الخاصة، حتى لو أُعيد تعيينها لاحقًا. .TP \fBREADLINE_ARGUMENT\fP أي معطى عددي يُعطى لأمر \fB\%readline\fP عُرّف باستخدام .Q "bind \-x" (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه) عند استدعائه. .TP \fBREADLINE_LINE\fP محتويات مخزن سطر \fBreadline\fP المؤقت، للاستخدام مع .Q "bind \-x" (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). .TP \fBREADLINE_MARK\fP موضع الـ \fBعلامة\fP (نقطة الإدراج المحفوظة) في مخزن سطر \fBreadline\fP المؤقت، للاستخدام مع .Q "bind \-x" (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). غالبًا ما تسمى الأحرف بين نقطة الإدراج والـ \fBعلامة\fP باسم \fIالمنطقة\fP. .TP \fBREADLINE_POINT\fP موضع نقطة الإدراج في مخزن سطر \fBreadline\fP المؤقت، للاستخدام مع .Q "bind \-x" (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). .TP \fBREPLY\fP يُضبط على سطر المدخلات المقروء بواسطة أمر \fBread\fP المدمج عند عدم توفير أي معطيات. .TP \fBSECONDS\fP في كل مرة يُشار فيها إلى هذا المعامل، فإنه يتوسع إلى عدد الثواني منذ استدعاء الـ \fBصدفة\fP. إذا عُينت قيمة لـ .SM \fBSECONDS\fP، فإن القيمة المرجعة عند الإشارات اللاحقة هي عدد الثواني منذ التعيين زائد القيمة المعينة. يُحدد عدد الثواني عند استدعاء الـ \fBصدفة\fP والوقت الحالي دائمًا عن طريق الاستعلام من ساعة النظام بدقة ثانية واحدة. إذا أُلغي تعيين .SM \fBSECONDS\fP، فإنها تفقد خصائصها الخاصة، حتى لو أُعيد تعيينها لاحقًا. .TP \fBSHELLOPTS\fP قائمة مفصولة بنقطتين لخيارات الصدفة المفعّلة. كل كلمة في القائمة هي معامل صحيح للخيار \fB\-o\fP الخاص بالأمر المدمج \fBset\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). الخيارات التي تظهر في .SM \fBSHELLOPTS\fP هي تلك التي يُبلّغ عنها بأنها \fIon\fP (مفعّلة) بواسطة \fBset \-o\fP. إذا كان هذا المتغير موجودًا في البيئة عند بدء تشغيل \fBbash\fP، فستفعّل الصدفة كل خيار في القائمة قبل قراءة أي ملفات بدء تشغيل. إذا صُدّر هذا المتغير، فستفعّل الصدف الأبناء كل خيار في القائمة. هذا المتغير للقراءة فقط. .TP \fBSHLVL\fP يُزاد بمقدار واحد في كل مرة يُبدأ فيها تشغيل نسخة من \fBbash\fP. .TP \fBSRANDOM\fP Each time it is referenced, this variable expands to a 32\-bit pseudo\-random number. The random number generator is not linear on systems that support .FN /dev/urandom or \fIarc4random\fP(3), so each returned number has no relationship to the numbers preceding it. The random number generator cannot be seeded, so assignments to this variable have no effect. If .SM \fBSRANDOM\fP is unset, it loses its special properties, even if it is subsequently reset. .TP \fBUID\fP يتوسع إلى معرّف المستخدم (user ID) للمستخدم الحالي، ويُهيّأ عند بدء تشغيل الصدفة. هذا المتغير للقراءة فقط. .PD .PP تستخدم الصدفة المتغيرات التالية. في بعض الحالات، يُعيّن \fBbash\fP قيمة مبدئية لمتغير ما؛ وتُذكر هذه الحالات أدناه. .PP .PD 0 .TP \fBBASH_COMPAT\fP تُستخدم القيمة لضبط مستوى توافق الصدفة. انظر .SM \fBنمط توافق الصدفة\fP أدناه للحصول على وصف لمستويات التوافق المختلفة وآثارها. قد تكون القيمة رقمًا عشريًا (مثل 4.2) أو عددًا صحيحًا (مثل 42) يقابل مستوى التوافق المطلوب. إذا أُلغي تعيين .SM \fBBASH_COMPAT\fP أو عُيّن كسلسلة فارغة، فسيُضبط مستوى التوافق على القيمة المبدئية للإصدار الحالي. إذا عُيّن .SM \fBBASH_COMPAT\fP على قيمة ليست من مستويات التوافق الصالحة، فستطبع الصدفة رسالة خطأ وتضبط مستوى التوافق على القيمة المبدئية للإصدار الحالي. تتوافق مجموعة فرعية من القيم الصالحة مع مستويات التوافق الموصوفة أدناه ضمن .SM \fBنمط توافق الصدفة\fP. على سبيل المثال، 4.2 و 42 هي قيم صالحة تقابل خيار \fBshopt\fP المسمى \fBcompat42\fP وتضبط مستوى التوافق على 42. الإصدار الحالي هو أيضًا قيمة صالحة. .TP \fBBASH_ENV\fP إذا عُيّنت هذه المعلمة عندما ينفذ \fBbash\fP سكربت صدفة، فستُفسر قيمتها الموسعة كاسم ملف يحتوي على أوامر لتهيئة الصدفة قبل قراءة وتنفيذ الأوامر من السكربت. تخضع قيمة .SM \fBBASH_ENV\fP لتوسيع المعلمات، واستبدال الأوامر، والتوسيع الحسابي قبل تفسيرها كاسم ملف. لا يُستخدم .SM \fBPATH\fP للبحث عن اسم الملف الناتج. .TP \fBBASH_XTRACEFD\fP إذا عُيّن إلى عدد صحيح يقابل واصف ملف صالح، فسيكتب \fBbash\fP مخرجات التتبع المولدة عندما .Q "set \-x" يُفعّل إلى واصف الملف هذا، بدلاً من الخطأ القياسي. يُغلق واصف الملف عند إلغاء تعيين .SM \fBBASH_XTRACEFD\fP أو تعيين قيمة جديدة له. يؤدي إلغاء تعيين .SM \fBBASH_XTRACEFD\fP أو تعيينه كسلسلة فارغة إلى إرسال مخرجات التتبع إلى الخطأ القياسي. لاحظ أن تعيين .SM \fBBASH_XTRACEFD\fP على 2 (واصف ملف الخطأ القياسي) ثم إلغاء تعيينه سيؤدي إلى إغلاق الخطأ القياسي. .TP \fBCDPATH\fP مسار البحث للأمر \fBcd\fP. هذا عبارة عن قائمة مفصولة بنقطتين من المجلدات حيث تبحث الصدفة عن المجلدات المحددة كمعاملات للأمر \fBcd\fP. قيمة عينة هي .Q .:\*~:/usr . .TP \fBCHILD_MAX\fP يضبط عدد قيم حالة الأبناء المنتهية التي يجب أن تتذكرها الصدفة. لن يسمح \fBBash\fP بتقليل هذه القيمة عن الحد الأدنى الذي يفرضه .SM POSIX ، وهناك قيمة قصوى (حالياً 8192) لا يجوز تجاوزها. الحد الأدنى يعتمد على النظام. .TP \fBCOLUMNS\fP يستخدمه الأمر المركب \fBselect\fP لتحديد عرض الطرفية عند طباعة قوائم الاختيار. يُضبط آليًا إذا فُعّل خيار \fBcheckwinsize\fP أو في صدفة تفاعلية عند استلام .SM \fBSIGWINCH\fP. .TP \fBCOMPREPLY\fP متغير مصفوفة يقرأ منه \fBbash\fP عمليات الإكمال الممكنة التي ولدتها دالة صدفة استدعتها ميزة الإكمال القابلة للبرمجة (انظر \fBالإكمال القابل للبرمجة\fP أدناه). يحتوي كل عنصر في المصفوفة على إكمال واحد ممكن. .TP \fBEMACS\fP إذا وجد \fBbash\fP هذا المتغير في البيئة عند بدء تشغيل الصدفة بالقيمة .Q t , فإنه يفترض أن الصدفة تعمل في مخزن مؤقت لصدفة Emacs ويعطل تحرير السطور. .TP \fBENV\fP يُوسع ويُنفذ بشكل مشابه لـ .SM \fBBASH_ENV\fP (انظر .SM \fBالاستدعاء\fP أعلاه) عند استدعاء صدفة تفاعلية في نمط posix. .TP \fBEXECIGNORE\fP قائمة مفصولة بنقطتين من أنماط الصدفة (انظر \fBمطابقة الأنماط\fP) التي تحدد مجموعة أسماء الملفات التي يجب تجاهلها عند البحث عن الأوامر باستخدام .SM \fBPATH\fP. الملفات التي تطابق مساراتها الكاملة أحد هذه الأنماط لا تُعتبر ملفات قابلة للتنفيذ لأغراض الإكمال وتنفيذ الأوامر عبر البحث في .SM \fBPATH\fP. هذا لا يؤثر على سلوك الأوامر \fB[\fP و \fBtest\fP و \fB[[\fP. لا تخضع المسارات الكاملة في جدول هاش الأوامر لـ .SM \fBEXECIGNORE\fP. استخدم هذا المتغير لتجاهل ملفات المكتبات المشتركة التي تم ضبط بت التنفيذ لها، ولكنها ليست ملفات قابلة للتنفيذ. تحترم مطابقة الأنماط إعداد خيار الصدفة \fBextglob\fP. .TP \fBFCEDIT\fP المحرر المبدئي للأمر المدمج \fBfc\fP. .TP \fBFIGNORE\fP قائمة مفصولة بنقطتين من اللاحقات التي يجب تجاهلها عند إجراء إكمال أسماء الملفات (انظر .SM \fBREADLINE\fP أدناه). يُستبعد اسم الملف الذي تطابق لاحقته أحد المدخلات في .SM \fBFIGNORE\fP من قائمة أسماء الملفات المطابقة. قيمة عينة هي .Q .o:\*~ . .TP \fBFUNCNEST\fP إذا ضُبط على قيمة عددية أكبر من 0، فإنه يحدد أقصى مستوى لتعشيش الدوال. استدعاءات الدوال التي تتجاوز مستوى التعشيش هذا تؤدي إلى إجهاض الأمر الحالي. .TP \fBGLOBIGNORE\fP قائمة مفصولة بنقطتين من الأنماط التي تحدد مجموعة أسماء الملفات التي يجب تجاهلها عند توسيع مسار الملف. إذا كان اسم الملف المطابق لنمط توسيع المسار يطابق أيضًا أحد الأنماط في .SM \fBGLOBIGNORE\fP، فسيُحذف من قائمة المطابقات. تحترم مطابقة الأنماط إعداد خيار الصدفة \fBextglob\fP. .TP \fBGLOBSORT\fP .PD يتحكم في كيفية فرز نتائج توسيع مسار الملف. تحدد قيمة هذا المتغير معايير الفرز وترتيبه لنتائج توسيع مسار الملف. إذا كان هذا المتغير غير معين أو معين كسلسلة فارغة، فإن توسيع مسار الملف يستخدم السلوك التاريخي للفرز حسب الاسم، بترتيب معجمي تصاعدي كما يحدده متغير الصدفة .SM \fB\%LC_COLLATE\fP. .IP إذا ضُبط، تبدأ القيمة الصالحة بعلامة \fI+\fP اختيارية (تُتجاهل)، أو \fI\-\fP التي تعكس ترتيب الفرز من تصاعدي إلى تنازلي، متبوعة بمحدد فرز. محددات الفرز الصالحة هي \fIname\fP و \fI\%numeric\fP و \fIsize\fP و \fImtime\fP و \fIatime\fP و \fIctime\fP و \fIblocks\fP، والتي تفرز الملفات حسب الاسم، والأسماء بترتيب عددي بدلاً من المعجمي، وحجم الملف، ووقت التعديل، ووقت الوصول، ووقت تغيير inode، وعدد الكتل، على التوالي. إذا تساوت أي من المفاتيح غير الاسمية (مثل تساوي حجم ملفين)، فسيُستخدم الاسم كمفتاح فرز ثانوي. .IP على سبيل المثال، القيمة \fI\-mtime\fP تفرز النتائج بترتيب تنازلي حسب وقت التعديل (الأحدث أولاً). .IP يعامل المحدد \fInumeric\fP الأسماء المكونة من أرقام فقط كأرقام ويفرزها باستخدام قيمتها العددية (لذا فإن .Q 2 تُفرز قبل .Q 10 , على سبيل المثال). عند استخدام \fInumeric\fP، تُفرز الأسماء التي تحتوي على غير الأرقام بعد جميع الأسماء المكونة من أرقام فقط، وتُفرز حسب الاسم باستخدام السلوك التقليدي. .IP يؤدي محدد الفرز \fInosort\fP إلى تعطيل الفرز تماماً؛ حيث يعيد \fBbash\fP النتائج بالترتيب الذي قُرئت به من نظام الملفات، متجاهلاً أي علامة \fI\-\fP في البداية. .IP إذا كان محدد الفرز مفقوداً، فإنه يُفترض كونه \fIname\fP مبدئياً، لذا فإن القيمة \fI+\fP تعادل السلسلة الفارغة، والقيمة \fI\-\fP تفرز حسب الاسم بترتيب تنازلي. أي قيمة غير صالحة تستعيد سلوك الفرز التاريخي. .PD 0 .TP \fBHISTCONTROL\fP قائمة مفصولة بنقطتين من القيم التي تتحكم في كيفية حفظ الأوامر في قائمة التاريخ. إذا تضمنت قائمة القيم \fIignorespace\fP، فلن تُحفظ السطور التي تبدأ بمسافة (\fBspace\fP) في قائمة التاريخ. وتؤدي القيمة \fIignoredups\fP إلى عدم حفظ السطور المطابقة لمدخل التاريخ السابق. القيمة \fIignoreboth\fP هي اختصار لـ \fIignorespace\fP و \fIignoredups\fP. وتؤدي القيمة \fIerasedups\fP إلى حذف جميع السطور السابقة المطابقة للسطر الحالي من قائمة التاريخ قبل حفظ هذا السطر. تُتجاهل أي قيمة ليست في القائمة أعلاه. إذا كان .SM \fBHISTCONTROL\fP غير معين، أو لا يتضمن قيمة صالحة، فسيحفظ \fBbash\fP جميع السطور التي يقرأها محلل الصدفة في قائمة التاريخ، مع مراعاة قيمة .SM \fBHISTIGNORE\fP. إذا حُفظ السطر الأول من أمر مركب متعدد الأسطر، فلن تُختبر الأسطر الثانية واللاحقة، وتُضاف إلى التاريخ بغض النظر عن قيمة .SM \fBHISTCONTROL\fP. وإذا لم يُحفظ السطر الأول، فلن تُحفظ الأسطر الثانية واللاحقة من الأمر أيضًا. .TP \fBHISTFILE\fP The name of the file in which command history is saved (see .SM \fBHISTORY\fP below). \fBBash\fP assigns a default value of .FN \*~/.bash_history . If .SM \fBHISTFILE\fP is unset or null, the shell does not save the command history when it exits. .TP \fBHISTFILESIZE\fP الحد الأقصى لعدد الأسطر التي يحتوي عليها ملف التأريخ. عند تعيين قيمة لهذا المتغير، يتم اقتطاع ملف التأريخ، إذا لزم الأمر، ليحتوي على ما لا يزيد عن عدد مدخلات التأريخ التي لا يتجاوز مجموعها ذلك العدد من الأسطر عن طريق إزالة أقدم المدخلات. إذا كانت قائمة التأريخ تحتوي على مدخلات متعددة الأسطر، فقد يحتوي ملف التأريخ على أسطر أكثر من هذا الحد الأقصى لتجنب ترك مدخلات تأريخ جزئية. يتم أيضًا اقتطاع ملف التأريخ إلى هذا الحجم بعد كتابته عند خروج صدفة أو بواسطة أمر \fB\%history\fP المدمج. إذا كانت القيمة 0، يتم اقتطاع ملف التأريخ إلى حجم صفر. القيم غير العددية والقيم العددية الأقل من الصفر تمنع الاقتطاع. تضبط الـ صدفة القيمة المبدئية على قيمة .SM \fBHISTSIZE\fP بعد قراءة أي ملفات بدء تشغيل. .TP \fBHISTIGNORE\fP قائمة مفصولة بنقطتين من الأنماط المستخدمة لتحديد أي أسطر الأوامر يجب حفظها في قائمة التأريخ. إذا طابق سطر الأوامر أحد الأنماط في قيمة .SM \fBHISTIGNORE\fP، فلن يُحفظ في قائمة التأريخ. كل نمط مثبت في بداية السطر ويجب أن يطابق السطر بالكامل (لا يلحق \fBbash\fP ضمنيًا .Q \fB*\fP ). يُختبر كل نمط مقابل السطر بعد تطبيق الفحوصات المحددة بواسطة .SM \fBHISTCONTROL\fP. بالإضافة إلى أحرف مطابقة أنماط الـ صدفة العادية، .Q \fB&\fP يطابق سطر التأريخ السابق. تستخدم الشرطة المائلة العكسية للهروب من .Q \fB&\fP ; تُزال الشرطة المائلة العكسية قبل محاولة المطابقة. إذا حُفظ السطر الأول من أمر مركب متعدد الأسطر، فلن تُختبر الأسطر الثانية واللاحقة، وستُضاف إلى التأريخ بغض النظر عن قيمة .SM \fBHISTIGNORE\fP. إذا لم يُحفظ السطر الأول، فلن تُحفظ الأسطر الثانية واللاحقة من الأمر أيضًا. تحترم مطابقة الأنماط إعداد خيار الـ صدفة \fB\%extglob\fP. .IP تتضمن .SM \fBHISTIGNORE\fP بعض وظائف .SM \fBHISTCONTROL\fP. نمط .Q & مطابق لـ .Q \%ignoredups , ونمط .Q "[ ]*" مطابق لـ .Q \%ignorespace . الجمع بين هذين النمطين، مع الفصل بينهما بنقطتين، يوفر وظيفة .Q \%ignoreboth . .TP \fBHISTSIZE\fP عدد الأوامر التي يجب تذكرها في تأريخ الأوامر (انظر .SM \fBالتأريخ\fP أدناه). إذا كانت القيمة 0، فلن تُحفظ الأوامر في قائمة التأريخ. تؤدي القيم العددية الأقل من الصفر إلى حفظ كل أمر في قائمة التأريخ (لا يوجد حد). تضبط الـ صدفة القيمة المبدئية على 500 بعد قراءة أي ملفات بدء تشغيل. .TP \fBHISTTIMEFORMAT\fP إذا عُين هذا المتغير ولم يكن فارغًا، تُستخدم قيمته كسلسلة تنسيق لـ \fIstrftime\fP(3) لطباعة الطابع الزمني المرتبط بكل مدخل تأريخ يعرضه أمر \fBhistory\fP المدمج. إذا عُين هذا المتغير، تكتب الـ صدفة طوابع زمنية في ملف التأريخ بحيث يمكن الحفاظ عليها عبر جلسات الـ صدفة. يستخدم هذا حرف تعليق التأريخ لتمييز الطوابع الزمنية عن أسطر التأريخ الأخرى. .TP \fBHOME\fP الدليل الرئيسي للمستخدم الحالي؛ المعطى المبدئي للأمر المدمج \fBcd\fP. تُستخدم قيمة هذا المتغير أيضًا عند إجراء توسيع التلدة (tilde). .TP \fBHOSTFILE\fP Contains the name of a file in the same format as .FN /etc/hosts that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell is running; the next time hostname completion is attempted after the value is changed, \fBbash\fP adds the contents of the new file to the existing list. If .SM \fBHOSTFILE\fP is set, but has no value, or does not name a readable file, \fBbash\fP attempts to read .FN /etc/hosts to obtain the list of possible hostname completions. When .SM \fBHOSTFILE\fP is unset, \fBbash\fP clears the hostname list. .TP \fBIFS\fP \fIفاصل الحقول الداخلي\fP الذي يُستخدم لتقسيم الكلمات بعد التوسع ولتقسيم الأسطر إلى كلمات باستخدام أمر \fBread\fP المدمج. يوصف تقسيم الكلمات أدناه تحت .SM \fBالتوسع\fP. القيمة المبدئية هي .Q . .TP \fBIGNOREEOF\fP يتحكم في إجراء صدفة تفاعلية عند استلام محرف .SM \fBEOF\fP كمدخل وحيد. إذا عُين، فإن القيمة هي عدد محارف .SM \fBEOF\fP المتتالية التي يجب كتابتها كأول محارف في سطر الإدخال قبل خروج \fBbash\fP. إذا عُين المتغير ولكن ليس له قيمة عددية، أو كانت القيمة فارغة، فإن القيمة المبدئية هي 10. إذا أُلغي تعيينه، فإن .SM \fBEOF\fP تعني نهاية الإدخال للـ صدفة. .TP \fBINPUTRC\fP The filename for the \fBreadline\fP startup file, overriding the default of .FN \*~/.inputrc (see .SM \fBREADLINE\fP below). .TP \fBINSIDE_EMACS\fP إذا ظهر هذا المتغير في البيئة عند بدء تشغيل الـ صدفة، يفترض \fBbash\fP أنه يعمل داخل مخزن صدفة Emacs وقد يعطل تحرير السطر، اعتمادًا على قيمة .SM \fBTERM\fP. .TP \fBLANG\fP يُستخدم لتحديد فئة الإعدادات المحلية لأي فئة لم تُحدد صراحة بمتغير يبدأ بـ \fBLC_\fP. .TP \fBLC_ALL\fP يتجاوز هذا المتغير قيمة .SM \fBLANG\fP وأي متغير \fBLC_\fP آخر يحدد فئة إعدادات محلية. .TP \fBLC_COLLATE\fP يحدد هذا المتغير ترتيب المقارنة المستخدم عند فرز نتائج توسيع مسار الملف، ويحدد سلوك تعبيرات النطاق، وفئات التكافؤ، وتسلسلات المقارنة داخل توسيع مسار الملف ومطابقة الأنماط. .TP \fBLC_CTYPE\fP يحدد هذا المتغير تفسير المحارف وسلوك فئات المحارف داخل توسيع مسار الملف ومطابقة الأنماط. .TP \fBLC_MESSAGES\fP يحدد هذا المتغير الإعدادات المحلية المستخدمة لترجمة السلاسل الموضوعة بين علامتي اقتباس مزدوجتين والمسبوقة بـ \fB$\fP. .TP \fBLC_NUMERIC\fP يحدد هذا المتغير فئة الإعدادات المحلية المستخدمة لتنسيق الأرقام. .TP \fBLC_TIME\fP يحدد هذا المتغير فئة الإعدادات المحلية المستخدمة لتنسيق التاريخ والوقت. .TP \fBLINES\fP يستخدمه الأمر المركب \fBselect\fP لتحديد طول العمود عند طباعة قوائم الاختيار. يُضبط آليًا إذا مُكّن خيار \fBcheckwinsize\fP أو في صدفة تفاعلية عند تلقي إشارة .SM \fBSIGWINCH\fP. .TP \fBMAIL\fP إذا عُينت القيمة لاسم ملف أو دليل ولم يُعين متغير .SM \fBMAILPATH\fP، فإن \fBbash\fP يخبر المستخدم بوصول بريد في الملف المحدد أو الدليل بتنسيق Maildir. .TP \fBMAILCHECK\fP يحدد عدد المرات (بالثواني) التي يتحقق فيها \fBbash\fP من البريد. القيمة المبدئية هي 60 ثانية. عندما يحين وقت التحقق من البريد، تقوم الـ صدفة بذلك قبل عرض المحث الرئيس. إذا أُلغي تعيين هذا المتغير، أو عُين لقيمة ليست رقمًا أكبر من أو يساوي الصفر، فإن الـ صدفة تعطّل التحقق من البريد. .TP \fBMAILPATH\fP قائمة مفصولة بنقطتين لأسماء الملفات التي سيتم التحقق منها بحثًا عن بريد. يمكن تحديد الرسالة التي ستُطبع عند وصول بريد في ملف معين عن طريق فصل اسم الملف عن الرسالة بـ .Q ? . عند استخدامه في نص الرسالة، يتوسع \fB$_\fP إلى اسم ملف البريد الحالي. على سبيل المثال: .RS .PP .EX \fBMAILPATH\fP=\*'/var/mail/bfox?\*"لديك بريد\*":\*~/shell\-mail?\*"$_ لديه بريد!\*"\*' .EE .PP يمكن ضبط \fBBash\fP لتوفير قيمة مبدئية لهذا المتغير (لا توجد قيمة افتراضيًا)، لكن موقع ملفات بريد المستخدم التي يستخدمها يعتمد على النظام (مثلًا، /var/mail/\fB$USER\fP). .RE .TP \fBOPTERR\fP إذا عُين للقيمة 1، يعرض \fBbash\fP رسائل الخطأ الناتجة عن أمر \fBgetopts\fP المدمج (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). يُهيأ .SM \fBOPTERR\fP إلى 1 في كل مرة تُستدعى فيها الـ صدفة أو يُنفذ فيها سكربت صدفة. .TP \fBPATH\fP مسار البحث عن الأوامر. وهو قائمة مفصولة بنقطتين للأدلة التي تبحث فيها الـ صدفة عن الأوامر (انظر .SM \fBتنفيذ الأوامر\fP أدناه). اسم الدليل بطول صفر (null) في قيمة .SM \fBPATH\fP يشير إلى الدليل الحالي. قد يظهر اسم دليل فارغ كنقطتين متجاورتين، أو كنقطة في البداية أو النهاية. المسار المبدئي يعتمد على النظام، ويضبطه المسؤول الذي يثبت \fBbash\fP. القيمة الشائعة هي .RS .RS 5n .EX /usr/local/bin:/usr/local/sbin:.if \n(LL<78n .br /usr/bin:/usr/sbin:/bin:/sbin .EE .RE .RE .TP \fBPOSIXLY_CORRECT\fP إذا كان هذا المتغير في البيئة عند بدء تشغيل \fBbash\fP، تدخل الـ صدفة في وضع posix قبل قراءة ملفات بدء التشغيل، كما لو كان خيار الاستدعاء \fB\-\-posix\fP قد تم توفيره. إذا عُين أثناء تشغيل الـ صدفة، يُمكّن \fBbash\fP وضع posix، كما لو كان الأمر .Q "set \-o posix" قد نُفذ. عندما تدخل الـ صدفة في وضع posix، فإنها تضبط هذا المتغير إذا لم يكن قد عُين بالفعل. .TP \fBPROMPT_COMMAND\fP إذا عُين هذا المتغير، وكان مصفوفة، تُنفذ قيمة كل عنصر معين كأمر قبل إصدار كل محث رئيس. إذا عُين هذا المتغير ولكن لم يكن مصفوفة، تُستخدم قيمته كأمر ليُنقذ بدلاً من ذلك. .TP \fBPROMPT_DIRTRIM\fP إذا ضُبطت على رقم أكبر من الصفر، تُستخدم القيمة كعدد لمكونات المسار اللاحقة التي يُحتفظ بها عند توسيع هروب سلاسل المحث \fB\ew\fP و \fB\eW\fP (انظر .SM \fBPROMPTING\fP أدناه). تُستبدل المحارف المحذوفة بنقاط حذف. .TP \fBPS0\fP تُوسع قيمة هذا المعامل (انظر .SM \fBPROMPTING\fP أدناه) وتعرضها الصدف التفاعلية بعد قراءة الأمر وقبل تنفيذه. .TP \fBPS1\fP تُوسع قيمة هذا المعامل (انظر .SM \fBPROMPTING\fP أدناه) وتُستخدم كسلسلة المحث الرئيسة. القيمة المبدئية هي .Q \es\-\ev\e$\ . .TP \fBPS2\fP تُوسع قيمة هذا المعامل كما هو الحال مع .SM \fBPS1\fP وتُستخدم كسلسلة المحث الثانوية. المبدئي هو .Q >\ . .TP \fBPS3\fP تُستخدم قيمة هذا المعامل كمحث لأمر \fBselect\fP (انظر .SM \fBSHELL GRAMMAR\fP أعلاه). .TP \fBPS4\fP تُوسع قيمة هذا المعامل كما هو الحال مع .SM \fBPS1\fP وتُطبع القيمة قبل كل أمر يعرضه \fBbash\fP أثناء تتبع التنفيذ. يُكرر المحرف الأول من القيمة الموسعة لـ .SM \fBPS4\fP عدة مرات، حسب الضرورة، للإشارة إلى مستويات متعددة من الاستدلال. المبدئي هو .Q +\ . .TP \fBSHELL\fP يتوسع هذا المتغير إلى مسار الاسم الكامل للصدفة. إذا لم يُضبط عند بدء تشغيل الصدفة، يخصص \fBbash\fP له مسار الاسم الكامل لصدفة ولوج المستخدم الحالي. .TP \fBTIMEFORMAT\fP تُستخدم قيمة هذا المعامل كسلسلة تنسيق تحدد كيفية عرض معلومات التوقيت للأنابيب المسبوقة بالكلمة المحجوزة \fBtime\fP. يقدم محرف \fB%\fP تسلسل هروب يُوسع إلى قيمة زمنية أو معلومات أخرى. تسلسلات الهروب ومعانيها هي كما يلي؛ وتشير الأقواس المربعة إلى الأجزاء الاختيارية. .PP .RS .PD 0 .TP 10 \fB%%\fP حرف \fB%\fP حرفي. .TP \fB%[\fP\fIp\fP\fB][l]R\fP الوقت المنقضي بالثواني. .TP \fB%[\fP\fIp\fP\fB][l]U\fP عدد ثواني وحدة المعالجة المركزية المستغرقة في وضع المستخدم. .TP \fB%[\fP\fIp\fP\fB][l]S\fP عدد ثواني وحدة المعالجة المركزية المستغرقة في وضع النظام. .TP \fB%P\fP نسبة وحدة المعالجة المركزية، تُحسب كـ (%U + %S) / %R. .PD .RE .IP الخيار \fIp\fP هو رقم يحدد \fIالدقة\fP، أي عدد الأرقام الكسرية بعد الفاصلة العشرية. تؤدي القيمة 0 إلى عدم إخراج فاصلة عشرية أو كسر. يطبع \fBtime\fP ستة أرقام كحد أقصى بعد الفاصلة العشرية؛ تُغير قيم \fIp\fP الأكبر من 6 إلى 6. إذا لم يُحدد \fIp\fP، يطبع \fBtime\fP ثلاثة أرقام بعد الفاصلة العشرية. .IP يحدد الخيار \fBl\fP تنسيقاً أطول، يتضمن الدقائق، على شكل \fIMM\fPm\fISS\fP.\fIFF\fPs. تحدد قيمة \fIp\fP ما إذا كان الكسر سيُضمّن أم لا. .IP إذا لم يُضبط هذا المتغير، يتصرف \fBbash\fP كما لو كانت قيمته \fB$\*'\enreal\et%3lR\enuser\et%3lU\ensys\et%3lS\*'\fP. إذا كانت القيمة فارغة، لا يعرض \fBbash\fP أي معلومات توقيت. يُضاف سطر جديد لاحق عند عرض سلسلة التنسيق. .PD 0 .TP \fBTMOUT\fP إذا ضُبط على قيمة أكبر من الصفر، يستخدم الأمر المدمج \fBread\fP القيمة كمهلة مبدئية له. ينتهي أمر \fBselect\fP إذا لم يصل دخل بعد .SM \fBTMOUT\fP ثانية عندما يكون الدخل آتياً من طرفية. في الصدفة التفاعلية، تُفسر القيمة على أنها عدد الثواني لانتظار سطر من الدخل بعد إصدار المحث الرئيس. ينتهي \fBBash\fP بعد الانتظار لهذا العدد من الثواني إذا لم يصل سطر كامل من الدخل. .TP \fBTMPDIR\fP إذا ضُبط، يستخدم \fBbash\fP قيمته كاسم لدليل ينشئ فيه \fBbash\fP ملفات مؤقتة لاستخدام الصدفة. .TP \fBauto_resume\fP يتحكم هذا المتغير في كيفية تفاعل الصدفة مع المستخدم والتحكم في المهام. إذا ضُبط هذا المتغير، تُعامل الأوامر البسيطة المكونة من كلمة واحدة فقط، بدون إعادة توجيه، كمرشحات لاستئناف مهمة متوقفة موجودة. لا يُسمح بأي غموض؛ إذا كان هناك أكثر من مهمة تبدأ بالكلمة أو تحتوي عليها، يختار هذا المتغير المهمة التي تم الوصول إليها مؤخراً. \fIاسم\fP المهمة المتوقفة، في هذا السياق، هو سطر الأوامر المستخدم لبدئها، كما يعرضه \fBjobs\fP. إذا ضُبط على القيمة \fIexact\fP، يجب أن تطابق الكلمة اسم المهمة المتوقفة تماماً؛ وإذا ضُبط على \fIsubstring\fP، يجب أن تطابق الكلمة سلسلة فرعية من اسم المهمة المتوقفة. توفر القيمة \fIsubstring\fP وظيفة مماثلة لمعرف المهمة \fB%?\fP (انظر .SM \fBJOB CONTROL\fP أدناه). إذا ضُبط على أي قيمة أخرى (مثلاً \fIprefix\fP)، يجب أن تكون الكلمة سابقة لاسم المهمة المتوقفة؛ وهذا يوفر وظيفة مماثلة لمعرف المهمة \fB%\fP\fIstring\fP. .TP \fBhistchars\fP المحرفان أو الثلاثة محارف التي تتحكم في توسيع التاريخ، والاستبدال السريع، والتقطيع (انظر .SM \fBHISTORY EXPANSION\fP أدناه). المحرف الأول هو محرف \fIتوسيع التاريخ\fP، وهو المحرف الذي يبدأ توسيع التاريخ، وعادة ما يكون .Q \fB!\fP . المحرف الثاني هو محرف \fIالاستبدال السريع\fP، وعادة ما يكون .Q \fB\*^\fP . عندما يظهر كأول محرف في السطر، يكرر استبدال التاريخ الأمر السابق، مستبدلاً سلسلة بأخرى. المحرف الثالث الاختياري هو محرف \fIتعليق التاريخ\fP، وعادة ما يكون .Q \fB#\fP , والذي يشير إلى أن بقية السطر عبارة عن تعليق عندما يظهر كأول محرف في كلمة. يعطل محرف تعليق التاريخ استبدال التاريخ للكلمات المتبقية في السطر. ولا يؤدي بالضرورة إلى جعل محلل الصدفة يعامل بقية السطر كتعليق. .PD .SS المصفوفات يوفر \fBBash\fP متغيرات مصفوفة مفهرسة وترابطية أحادية البعد. يمكن استخدام أي متغير كمصفوفة مفهرسة؛ ويصرح الأمر المدمج \fBdeclare\fP صراحةً عن مصفوفة. لا يوجد حد أقصى لحجم المصفوفة، ولا أي اشتراط بأن تُفهرس الأعضاء أو تُخصص بشكل متجاوز. يُشار إلى المصفوفات المفهرسة باستخدام تعابير حسابية يجب أن تتوسع إلى عدد صحيح (انظر .SM \fBARITHMETIC EVALUATION\fP أدناه) وتكون مبنية على الصفر؛ ويُشار إلى المصفوفات الترابطية باستخدام سلاسل عشوائية. ما لم يُذكر خلاف ذلك، يجب أن تكون فهارس المصفوفة المفهرسة أعداداً صحيحة غير سالبة. .PP تجري الصدفة توسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر، وإزالة الاقتباس على أدلة المصفوفة المفهرسة. ونظراً لأن هذا قد يؤدي بالضرورة إلى سلاسل فارغة، فإن فهرسة الأدلة تعاملها كتعبيرات تُقيم إلى 0. .PP تجري الصدفة توسيع المد، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر، وإزالة الاقتباس على أدلة المصفوفة الترابطية. لا يمكن استخدام السلاسل الفارغة كمفاتيح للمصفوفة الترابطية. .PP ينشئ \fBBash\fP مصفوفة مفهرسة آلياً إذا خُصص أي متغير باستخدام الصيغة .RS \fIname\fP[\fIsubscript\fP]=\fIvalue\fP \&. .RE يُعامل \fIsubscript\fP (الدليل) كتعبير حسابي يجب أن يُقيم إلى رقم أكبر من أو يساوي الصفر. للتصريح صراحة عن مصفوفة مفهرسة، استخدم .RS \fBdeclare \-a\ \fP\fIname\fP .RE (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). .RS \fBdeclare \-a\fP \fIname\fP[\fIsubscript\fP] .RE مقبول أيضاً؛ ويُتجاهل \fIsubscript\fP. .PP تُنشأ المصفوفات الترابطية باستخدام .RS \fBdeclare \-A\ \fP\fIname\fP .RE \&. .PP يمكن تحديد السمات لمتغير مصفوفة باستخدام الأوامر المدمجة \fB\%declare\fP و \fB\%readonly\fP. تنطبق كل سمة على جميع أعضاء المصفوفة. .PP تُخصص المصفوفات باستخدام تخصيصات مركبة على شكل \fIname\fP=\fB(\fPvalue\fI1\fP \&.\|.\|.\& value\fIn\fP\fB)\fP، حيث يمكن أن تكون كل \fIvalue\fP على شكل [\fIsubscript\fP]=\fIstring\fP. لا تتطلب تخصيصات المصفوفة المفهرسة أي شيء سوى \fIstring\fP. تُوسع كل \fIvalue\fP في القائمة باستخدام توسيعات الصدفة الموضحة أدناه في .SM \fBEXPANSION\fP، لكن الـ \fIvalue\fPs التي تعتبر تخصيصات متغيرات صالحة بما في ذلك الأقواس والدليل لا تخضع لتوسيع الأقواس وتقسيم الكلمات، كما هو الحال مع تخصيصات المتغيرات الفردية. .PP عند التخصيص للمصفوفات المفهرسة، إذا وُفرت الأقواس والدليل الاختياريين، يُخصص ذلك الفهرس؛ وإلا فإن فهرس العنصر المخصص هو آخر فهرس خُصص بواسطة الجملة زائد واحد. تبدأ الفهرسة من الصفر. .PP عند التخصيص لمصفوفة ترابطية، قد تكون الكلمات في التخصيص المركب إما جمل تخصيص، والتي تتطلب دليلاً، أو قائمة من الكلمات التي تُفسر كتسلسل من المفاتيح والقيم المتبادلة: \fIname\fP=\fB( \fP\fIkey1 value1 key2 value2\fP \&.\|.\|.\&\fB)\fP. تُعامل هذه بشكل مطابق لـ \fIname\fP=\fB(\fP [\fIkey1\fP]=\fIvalue1\fP [\fIkey2\fP]=\fIvalue2\fP \&.\|.\|.\&\fB)\fP. تحدد الكلمة الأولى في القائمة كيفية تفسير الكلمات المتبقية؛ ويجب أن تكون جميع التخصيصات في القائمة من نفس النوع. عند استخدام أزواج المفاتيح/القيم، لا يمكن أن تكون المفاتيح مفقودة أو فارغة؛ وتُعامل القيمة النهائية المفقودة كسلسلة فارغة. .PP هذه الصيغة مقبولة أيضاً من قبل الأمر المدمج \fBdeclare\fP. يمكن تخصيص عناصر المصفوفة الفردية باستخدام صيغة \fIname\fP[\fIsubscript\fP]=\fIvalue\fP المقدمة أعلاه. .PP عند التخصيص لمصفوفة مفهرسة، إذا كان \fIname\fP متبوعاً بدليل رقمي سالب، يُفسر هذا الرقم كقيمة نسبية لواحد أكبر من أقصى فهرس لـ \fIname\fP، لذا فإن الفهارس السالبة تعد تنازلياً من نهاية المصفوفة، ويشير الفهرس \-1 إلى العنصر الأخير. .PP العامل .Q += يُلحق بمتغير المصفوفة عند التخصيص باستخدام صيغة التخصيص المركبة؛ انظر .SM \fBPARAMETERS\fP أعلاه. .PP يُشار إلى عنصر المصفوفة باستخدام ${\fIname\fP[\fIsubscript\fP]}. الأقواس مطلوبة لتجنب التعارض مع توسيع مسار الاسم. إذا كان \fIsubscript\fP هو \fB@\fP أو \fB*\fP، تتوسع الكلمة إلى جميع أعضاء \fIname\fP، ما لم يُذكر خلاف ذلك في وصف أمر مدمج أو توسيع كلمة. تختلف هذه الأدلة فقط عندما تظهر الكلمة داخل علامتي اقتباس مزدوجتين. إذا كانت الكلمة داخل اقتباس مزدوج، تتوسع ${\fIname\fP[*]} إلى كلمة واحدة بقيمة كل عضو في المصفوفة مفصولة بالمحرف الأول من متغير .SM \fBIFS\fP الخاص، وتتوسع ${\fIname\fP[@]} لكل عنصر من \fIname\fP إلى كلمة منفصلة. عندما لا يكون هناك أعضاء في المصفوفة، تتوسع ${\fIname\fP[@]} إلى لا شيء. إذا حدث التوسيع داخل اقتباس مزدوج ضمن كلمة، يُضم توسيع المعامل الأول مع الجزء الأولي من توسيع الكلمة الأصلية، ويُضم توسيع المعامل الأخير مع الجزء الأخير من توسيع الكلمة الأصلية. وهذا يماثل توسيع المعاملات الخاصة \fB*\fP و \fB@\fP (انظر \fBSpecial Parameters\fP أعلاه). .PP ${#\fIname\fP[\fIsubscript\fP]} تتوسع إلى طول ${\fIname\fP[\fIsubscript\fP]}. إذا كان \fIsubscript\fP هو \fB*\fP أو \fB@\fP، يكون التوسع هو عدد العناصر في المصفوفة. .PP إذا كان \fIsubscript\fP المستخدم للإشارة إلى عنصر في مصفوفة مفهرسة يُقيم إلى رقم أقل من الصفر، فإنه يُفسر كقيمة نسبية لواحد أكبر من الفهرس الأقصى للمصفوفة، لذا فإن الفهارس السالبة تعد تنازلياً من نهاية المصفوفة، ويشير الفهرس \-1 إلى العنصر الأخير. .PP الإشارة إلى متغير مصفوفة بدون دليل تعادل الإشارة إلى المصفوفة بالدليل 0. أي إشارة إلى متغير باستخدام دليل صالح تعتبر صالحة؛ وينشئ \fBbash\fP مصفوفة إذا لزم الأمر. .PP يعتبر متغير المصفوفة معيناً إذا خُصصت قيمة لدليل ما. وتعتبر السلسلة الفارغة قيمة صالحة. .PP من الممكن الحصول على مفاتيح (فهارس) مصفوفة بالإضافة إلى القيم. تتوسع ${\fB!\fP\fIname\fP[\fI@\fP]} و ${\fB!\fP\fIname\fP[\fI*\fP]} إلى الفهارس المخصصة في متغير المصفوفة \fIname\fP. المعاملة عند وجودها داخل اقتباس مزدوج تشبه توسيع المعاملات الخاصة \fI@\fP و \fI*\fP داخل الاقتباس المزدوج. .PP يُستخدم الأمر المدمج \fBunset\fP لتدمير المصفوفات. \fBunset\fP \fIname\fP[\fIsubscript\fP] يلغي تعيين عنصر المصفوفة عند الفهرس \fIsubscript\fP، لكل من المصفوفات المفهرسة والترابطية. تُفسر الأدلة السالبة للمصفوفات المفهرسة كما هو موضح أعلاه. لا يؤدي إلغاء تعيين العنصر الأخير في متغير مصفوفة إلى إلغاء تعيين المتغير نفسه. \fBunset\fP \fIname\fP، حيث \fIname\fP مصفوفة، يزيل المصفوفة بأكملها. يتصرف \fBunset\fP \fIname\fP[\fIsubscript\fP] بشكل مختلف اعتماداً على ما إذا كان \fIname\fP مصفوفة مفهرسة أو ترابطية عندما يكون \fIsubscript\fP هو \fB*\fP أو \fB@\fP. إذا كان \fIname\fP مصفوفة ترابطية، فإن هذا يلغي تعيين العنصر ذي الدليل \fB*\fP أو \fB@\fP. إذا كان \fIname\fP مصفوفة مفهرسة، فإن unset يزيل جميع العناصر ولكنه لا يزيل المصفوفة نفسها. .PP عند استخدام اسم متغير مع دليل كمعامل لأمر ما، كما هو الحال مع \fBunset\fP، بدون استخدام صيغة توسيع الكلمة الموضحة أعلاه (مثلاً unset a[4])، يخضع المعامل لتوسيع مسار الاسم. اقتبس المعامل إذا كان توسيع مسار الاسم غير مرغوب فيه (مثلاً unset \*'a[4]\*'). .PP تقبل الأوامر المدمجة \fBdeclare\fP و \fBlocal\fP و \fBreadonly\fP خيار \fB\-a\fP لتحديد مصفوفة مفهرسة وخيار \fB\-A\fP لتحديد مصفوفة ترابطية. إذا وُفر كلا الخيارين، تكون الأولوية لـ \fB\-A\fP. يقبل الأمر المدمج \fBread\fP خيار \fB\-a\fP لتخصيص قائمة كلمات مقروءة من الدخل القياسي لمصفوفة. يعرض الأممران المدمجان \fBset\fP و \fBdeclare\fP قيم المصفوفة بطريقة تسمح بإعادة استخدامها كتخصيصات. تقبل أوامر مدمجة أخرى معاملات أسماء مصفوفات أيضاً (مثلاً \fBmapfile\fP)؛ انظر أوصاف الأوامر المدمجة الفردية أدناه للحصول على التفاصيل. توفر الصدفة عدداً من متغيرات المصفوفة المدمجة. .SH توسيع يُجرى التوسيع على سطر الأوامر بعد تقسيمه إلى كلمات. تجري الصدفة هذه التوسيعات: \fIتوسيع الأقواس\fP، و\fIتوسيع المد\fP، و\fIتوسيع المعاملات والمتغيرات\fP، و\fIاستبدال الأوامر\fP، و\fIالتوسيع الحسابي\fP، و\fIتقسيم الكلمات\fP، و\fIتوسيع مسار الاسم\fP، و\fIإزالة الاقتباس\fP. .PP ترتيب التوسيعات هو: توسيع الأقواس؛ ثم توسيع المد، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر (تُجرى من اليسار إلى اليمين)؛ ثم تقسيم الكلمات؛ ثم توسيع مسار الاسم؛ وأخيراً إزالة الاقتباس. .PP في الأنظمة التي تدعم ذلك، يتوفر توسيع إضافي: \fIاستبدال العمليات\fP. يُجرى هذا في نفس وقت توسيع المد والمعاملات والمتغيرات والحساب واستبدال الأوامر. .PP تُجرى \fIإزالة الاقتباس\fP دائماً في النهاية. وهي تزيل محارف الاقتباس الموجودة في الكلمة الأصلية، وليس تلك الناتجة عن أحد التوسيعات الأخرى، ما لم تكن هي نفسها مقتبسة. .PP .\" keep leading \& for AT&T troff .\" .BR + \& + \*" doesn't work with AT&T troff فقط توسيع الأقواس، وتقسيم الكلمات، وتوسيع مسار الاسم يمكن أن تزيد من عدد كلمات التوسيع؛ التوسيعات الأخرى توسع كلمة واحدة إلى كلمة واحدة. الاستثناءات الوحيدة لهذا هي توسيعات \fB\&\*"$@\*"\fP و \fB\&\*"${\fP\fIname\fP\fB[@]}\*"\fP\fB\&\fP، وفي معظم الحالات \fB$*\fP و \fB${\fP\fIname\fP\fB[*]}\fP كما هو موضح أعلاه (انظر .SM \fBPARAMETERS\fP). .SS "توسيع الأقواس" \fIتوسيع الأقواس\fP هو آلية لتوليد سلاسل عشوائية تشترك في سابقة ولاحقة مشتركة، ويمكن أن تكون أي منهما فارغة. هذه الآلية تشبه \fIتوسيع مسار الاسم\fP، ولكن أسماء الملفات المولدة لا يلزم أن تكون موجودة. تُشكل الأنماط المراد توسيع أقواسها من \fIتوطئة\fP اختيارية، تليها إما سلسلة من السلاسل المفصولة بفواصل أو تعبير تسلسلي بين زوج من الأقواس، تليها \fIخاتمة\fP اختيارية. تُسبق التوطئة لكل سلسلة موجودة داخل الأقواس، ثم تُلحق الخاتمة بكل سلسلة ناتجة، مع التوسيع من اليسار إلى اليمين. .PP قد يكون توسيع الأقواس متداخلاً. لا تُفرز نتائج كل سلسلة موسعة؛ يحافظ توسيع الأقواس على الترتيب من اليسار إلى اليمين. على سبيل المثال، يتوسع a\fB{\fPd,c,b\fB}\fPe إلى .Q "ade ace abe" . .PP يأخذ تعبير التسلسل الشكل \fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]\fP، حيث \fIx\fP و \fIy\fP إما أعداد صحيحة أو أحرف مفردة، و \fIincr\fP، وهي زيادة اختيارية، عبارة عن عدد صحيح. عند توفير أعداد صحيحة، يتوسع التعبير لكل رقم بين \fIx\fP و \fIy\fP، بما في ذلك الطرفان. إذا بدأ أي من \fIx\fP أو \fIy\fP بصفر، فسيحتوي كل مصطلح مولد على نفس عدد الأرقام، مع حشو أصفار عند الضرورة. عند توفير أحرف، يتوسع التعبير لكل محرف معجمياً بين \fIx\fP و \fIy\fP، بما في ذلك الطرفان، باستخدام محلي C. لاحظ أنه يجب أن يكون كل من \fIx\fP و \fIy\fP من نفس النوع (عدد صحيح أو حرف). عند توفير الزيادة، تُستخدم كفرق بين كل مصطلح. الزيادة المبدئية هي 1 أو \-1 حسب الاقتضاء. .PP يُجرى توسيع الأقواس قبل أي توسيعات أخرى، وتُحفظ أي محارف خاصة بالتوسيعات الأخرى في النتيجة. إنه نصي بحت. لا يطبق \fBBash\fP أي تفسير نحوي على سياق التوسيع أو النص الموجود بين الأقواس. .PP يجب أن يحتوي توسيع الأقواس المكون بشكل صحيح على أقواس فتح وإغلاق غير مقتبسة، وفاصلة واحدة على الأقل غير مقتبسة أو تعبير تسلسلي صالح. يُترك أي توسيع أقواس مكون بشكل خاطئ دون تغيير. .PP A .Q { أو Q , اقتباسهما بشرطة مائلة خلفية لمنع اعتبارهما جزءاً من تعبير القوس. لتجنب التعارض مع توسيع المعاملات، السلسلة .Q ${ لا تعتبر مؤهلة لتوسيع الأقواس، وتمنع توسيع الأقواس حتى إغلاق .Q } . .PP يُستخدم هذا التركيب عادة كاختصار عندما تكون السابقة المشتركة للسلاسل المراد توليدها أطول مما في المثال أعلاه: .PP .RS .EX mkdir /usr/local/src/bash/{old,new,dist,bugs} .EE .RE أو .RS .EX chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} .EE .RE .PP يؤدي توسيع الأقواس إلى عدم توافق طفيف مع الإصدارات التاريخية من \fBsh\fP. لا يعامل \fBsh\fP أقواس الفتح أو الإغلاق بشكل خاص عندما تظهر كجزء من كلمة، ويحفظها في المخرجات. يزيل \fBBash\fP الأقواس من الكلمات كنتيجة لتوسيع الأقواس. على سبيل المثال، الكلمة التي تُدخل إلى \fBsh\fP كـ .Q file{1,2} تظهر بشكل متطابق في المخرجات. يخرج \fBBash\fP تلك الكلمة كـ .Q "file1 file2" بعد توسيع الأقواس. ابدأ \fBbash\fP بخيار \fB+B\fP أو عطل توسيع الأقواس باستخدام خيار \fB+B\fP لأمر \fBset\fP (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه) للتوافق الصارم مع \fBsh\fP. .SS "توسيع المد" إذا بدأت كلمة بمحرف مد غير مقتبس ( .Q \fB\*~\fP ), تُعتبر جميع المحارف التي تسبق أول شرطة مائلة غير مقتبسة (أو جميع المحارف، إذا لم يكن هناك شرطة مائلة غير مقتبسة) \fIبادئة مد\fP. إذا لم يكن أي من المحارف في بادئة المد مقتبساً، تُعامل المحارف في بادئة المد التي تلي المد كـ \fIاسم ولوج\fP محتمل. إذا كان اسم الولوج هذا هو السلسلة الفارغة، يُستبدل المد بقيمة معامل الصدفة .SM \fBHOME\fP. إذا كان .SM \fBHOME\fP غير معين، يتوسع المد إلى الدليل المنزلي للمستخدم الذي ينفذ الصدفة بدلاً من ذلك. وإلا، تُستبدل بادئة المد بالدليل المنزلي المرتبط باسم الولوج المحدد. .PP إذا كانت بادئة المد .Q \*~+ , تحل قيمة متغير الصدفة .SM \fBPWD\fP محل بادئة المد. إذا كانت بادئة المد .Q \*~\- , تستبدل الصدفة قيمة متغير الصدفة .SM \fBOLDPWD\fP، إذا كان معيناً. إذا كانت المحارف التي تلي المد في بادئة المد تتكون من رقم \fIN\fP، مسبوقاً اختيارياً بـ .Q + أو .Q \- , تُستبدل بادئة المد بالعنصر المقابل من مكدس الدليل، كما يعرضه الأمر المدمج \fBdirs\fP المستدعى مع المحارف التي تلي المد في بادئة المد كمعامل. إذا كانت المحارف التي تلي المد في بادئة المد تتكون من رقم بدون بادئة .Q + أو .Q \- , يفترض توسيع المد .Q + . .PP تُعامل نتائج توسيع المد كما لو كانت مقتبسة، لذا لا يخضع الاستبدال لتقسيم الكلمات وتوسيع مسار الاسم. .PP إذا كان اسم الولوج غير صالح، أو فشل توسيع المد، تظل بادئة المد دون تغيير. .PP يفحص \fBBash\fP كل تخصيص متغير لبادئات المد غير المقتبسة التي تلي مباشرة \fB:\fP أو أول \fB=\fP، ويجري توسيع المد في هذه الحالات. وبالتالي، يمكن للمرء استخدام أسماء الملفات مع المد في التخصيصات لـ .SM \fBPATH\fP و .SM \fBMAILPATH\fP و .SM \fBCDPATH\fP، وتخصص الصدفة القيمة الموسعة. .PP يجري \fBBash\fP أيضاً توسيع المد على الكلمات التي تستوفي شروط تخصيصات المتغيرات (كما هو موضح أعلاه في .SM \fBPARAMETERS\fP) عندما تظهر كمعاملات لأوامر بسيطة. لا يفعل \fBBash\fP ذلك، باستثناء أوامر \fIالتصريح\fP المذكورة أعلاه، عندما يكون في وضع posix. .SS "توسيع المعاملات" العامل .Q \fB$\fP يقدم المحرف توسيع المعاملات، أو استبدال الأوامر، أو التوسيع الحسابي. قد يُحاط اسم المعامل أو الرمز المراد توسيعه بأقواس، وهي اختيارية ولكنها تعمل على حماية المتغير المراد توسيعه من المحارف التي تليه مباشرة والتي يمكن تفسيرها كجزء من الاسم. .PP عند استخدام الأقواس، يكون قوس الإغلاق المطابق هو أول .Q \fB}\fP غير مهرب بشرطة مائلة خلفية أو داخل سلسلة مقتبسة، وليس داخل توسيع حسابي مضمن، أو استبدال أمر، أو توسيع معامل. .PP الشكل الأساسي لتوسيع المعامل هو .PP ${\fIparameter\fP} .LP والذي يستبدل قيمة \fIparameter\fP. الأقواس مطلوبة عندما يكون \fIparameter\fP معاملاً موضعياً مكوناً من أكثر من رقم واحد، أو عندما يتبع \fIparameter\fP محرف لا يجب تفسيره كجزء من اسمه. \fIparameter\fP هو معامل صدفة كما هو موضح أعلاه (\fBPARAMETERS\fP) أو مرجع مصفوفة (\fBArrays\fP). .PD .PP إذا كان المحرف الأول من \fIparameter\fP هو علامة تعجب (\fB!\fP)، ولم يكن \fIparameter\fP مرجع اسم \fInameref\fP، فإنه يقدم مستوى من الاستدلال. يستخدم \fBBash\fP القيمة المتكونة من توسيع بقية \fIparameter\fP كـ \fIparameter\fP جديد؛ ثم يُوسع هذا المعامل الجديد وتُستخدم تلك القيمة في بقية التوسيع، بدلاً من توسيع \fIparameter\fP الأصلي. يُعرف هذا باسم \fIالتوسيع غير المباشر\fP. تخضع القيمة لتوسيع المد، وتوسيع المعاملات، واستبدال الأوامر، والتوسيع الحسابي. إذا كان \fIparameter\fP مرجع اسم، فإن هذا يتوسع إلى اسم المعامل المشار إليه بواسطة \fIparameter\fP بدلاً من إجراء التوسيع غير المباشر الكامل، وذلك للتوافق. الاستثناءات من ذلك هي توسيعات ${\fB!\fP\fIprefix\fP\fB*\fP} و ${\fB!\fP\fIname\fP[\fI@\fP]} الموضحة أدناه. يجب أن تتبع علامة التعجب مباشرة قوس الفتح لتقديم الاستدلال. .PP في كل حالة من الحالات أدناه، تخضع \fIword\fP لتوسيع المد، وتوسيع المعاملات، واستبدال الأوامر، والتوسيع الحسابي. .PP عند عدم إجراء توسيع للسلسلة الفرعية، باستخدام الأشكال الموثقة أدناه (مثلاً \fB:\-\fP)، يختبر \fBbash\fP ما إذا كان المعامل غير معين أو فارغاً. يؤدي حذف النقطتين الرأسيتين إلى اختبار ما إذا كان المعامل غير معين فقط. .PP .TP ${\fIparameter\fP\fB:\-\fP\fIword\fP} \fBاستخدام القيم المبدئية\fP. إذا كان \fIparameter\fP غير معين أو فارغاً، يُستبدل بتوسيع \fIword\fP. وإلا، تُستبدل قيمة \fIparameter\fP. .TP ${\fIparameter\fP\fB:=\fP\fIword\fP} \fBتخصيص القيم المبدئية\fP. إذا كان \fIparameter\fP غير معين أو فارغاً، يُخصص توسيع \fIword\fP لـ \fIparameter\fP، ويكون التوسيع هو القيمة النهائية لـ \fIparameter\fP. لا يجوز تخصيص المعاملات الموضعية والمعاملات الخاصة بهذه الطريقة. .TP ${\fIparameter\fP\fB:?\fP\fIword\fP} \fBعرض خطأ إذا كان فارغاً أو غير معين\fP. إذا كان \fIparameter\fP فارغاً أو غير معين، تكتب الصدفة توسيع \fIword\fP (أو رسالة بهذا المعنى إذا لم تكن \fIword\fP موجودة) إلى الخطأ القياسي، وإذا لم تكن تفاعلية، تخرج بحالة غير صفرية. لا تخرج الصدفة التفاعلية، ولكنها لا تنفذ الأمر المرتبط بالتوسيع. وإلا، تُستبدل قيمة \fIparameter\fP. .TP ${\fIparameter\fP\fB:+\fP\fIword\fP} \fBاستخدام قيمة بديلة\fP. إذا كان \fIparameter\fP فارغاً أو غير معين، لا يُستبدل بشيء، وإلا يُستبدل بتوسيع \fIword\fP. لا تُستخدم قيمة \fIparameter\fP. .TP .PD 0 ${\fIparameter\fP\fB:\fP\fIoffset\fP} .TP .PD ${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP} \fBتوسيع السلسلة الفرعية\fP. يتوسع إلى ما يصل إلى \fIlength\fP من محارف قيمة \fIparameter\fP بدءاً من المحرف المحدد بـ \fIoffset\fP. إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، أو مصفوفة مفهرسة بدليل \fB@\fP أو \fB*\fP، أو اسم مصفوفة ترابطية، تختلف النتائج كما هو موضح أدناه. إذا حُذف \fB:\fP\fIlength\fP (الشكل الأول أعلاه)، فإن هذا يتوسع إلى السلسلة الفرعية لقيمة \fIparameter\fP بدءاً من المحرف المحدد بـ \fIoffset\fP ويمتد إلى نهاية القيمة. إذا حُذف \fIoffset\fP، يُعامل كـ 0. إذا حُذف \fIlength\fP، ولكن النقطتين بعد \fIoffset\fP موجودتان، يُعامل كـ 0. \fIlength\fP و \fIoffset\fP هما تعبيران حسابيان (انظر .SM \fBARITHMETIC EVALUATION\fP أدناه). .IP إذا أدى تقييم \fIoffset\fP إلى رقم أقل من الصفر، تُستخدم القيمة كإزاحة بالمحارف من نهاية قيمة \fIparameter\fP. إذا أدى تقييم \fIlength\fP إلى رقم أقل من الصفر، فإنه يُفسر كإزاحة بالمحارف من نهاية قيمة \fIparameter\fP بدلاً من عدد من المحارف، ويكون التوسيع هو المحارف بين \fIoffset\fP وتلك النتيجة. لاحظ أنه يجب فصل الإزاحة السالبة عن النقطتين بمسافة واحدة على الأقل لتجنب الالتباس مع توسيع \fB:\-\fP. .IP إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، تكون النتيجة هي \fIlength\fP من المعاملات الموضعية بدءاً من \fIoffset\fP. تؤخذ الإزاحة السالبة \fIoffset\fP نسبةً لواحد أكبر من أكبر معامل موضعي، لذا فإن إزاحة \-1 تُقيم إلى آخر معامل موضعي (أو 0 إذا لم تكن هناك معاملات موضعية). يعتبر خطأ توسيع إذا أدى تقييم \fIlength\fP إلى رقم أقل من الصفر. .IP إذا كان \fIparameter\fP اسم مصفوفة مفهرسة بدليل @ أو *، تكون النتيجة هي \fIlength\fP من أعضاء المصفوفة بدءاً من ${\fIparameter\fP[\fIoffset\fP]}. تؤخذ الإزاحة السالبة \fIoffset\fP نسبةً لواحد أكبر من الفهرس الأقصى للمصفوفة المحددة. يعتبر خطأ توسيع إذا أدى تقييم \fIlength\fP إلى رقم أقل من الصفر. .IP يؤدي توسيع السلسلة الفرعية المطبق على مصفوفة ترابطية إلى نتائج غير محددة. .IP تعتمد فهرسة السلسلة الفرعية على الصفر ما لم تُستخدم المعاملات الموضعية، وفي هذه الحالة تبدأ الفهرسة من 1 مبدئياً. إذا كان \fIoffset\fP هو 0، واستُخدمت المعاملات الموضعية، تُسبق القائمة بـ \fB$0\fP. .TP .PD 0 ${\fB!\fP\fIprefix\fP\fB*\fP} .TP ${\fB!\fP\fIprefix\fP\fB@\fP} .PD \fBالأسماء المطابقة للسابقة\fP. يتوسع إلى أسماء المتغيرات التي تبدأ أسماؤها بـ \fIprefix\fP، مفصولة بالمحرف الأول من متغير .SM \fBIFS\fP الخاص. عند استخدام \fI@\fP وظهور التوسيع داخل اقتباس مزدوج، يتوسع كل اسم متغير إلى كلمة منفصلة. .TP .PD 0 ${\fB!\fP\fIname\fP[\fI@\fP]} .TP ${\fB!\fP\fIname\fP[\fI*\fP]} .PD \fBقائمة مفاتيح المصفوفة\fP. إذا كان \fIname\fP متغير مصفوفة، يتوسع إلى قائمة فهارس (مفاتيح) المصفوفة المخصصة في \fIname\fP. إذا لم يكن \fIname\fP مصفوفة، يتوسع إلى 0 إذا كان \fIname\fP معيناً وإلى فارغ خلاف ذلك. عند استخدام \fI@\fP وظهور التوسيع داخل اقتباس مزدوج، يتوسع كل مفتاح إلى كلمة منفصلة. .TP ${\fB#\fP\fIparameter\fP} \fBطول المعامل\fP. يستبدل الطول بالمحارف للقيمة الموسعة لـ \fIparameter\fP. إذا كان \fIparameter\fP هو \fB*\fP أو \fB@\fP، تكون القيمة المستبدلة هي عدد المعاملات الموضعية. إذا كان \fIparameter\fP اسم مصفوفة بدليل \fB*\fP أو \fB@\fP، تكون القيمة المستبدلة هي عدد العناصر في المصفوفة. إذا كان \fIparameter\fP اسم مصفوفة مفهرسة متبوعاً بدليل سالب، يُفسر هذا الرقم كقيمة نسبية لواحد أكبر من الفهرس الأقصى لـ \fIparameter\fP، لذا فإن الفهارس السالبة تعد تنازلياً من نهاية المصفوفة، ويشير الفهرس \-1 إلى العنصر الأخير. .TP .PD 0 ${\fIparameter\fP\fB#\fP\fIword\fP} .TP ${\fIparameter\fP\fB##\fP\fIword\fP} .PD \fBإزالة نمط السابقة المطابق\fP. تُوسع \fIword\fP لإنتاج نمط كما هو الحال في توسيع مسار الاسم، وتُطابق مع القيمة الموسعة لـ \fIparameter\fP باستخدام القواعد الموضحة تحت \fBPattern Matching\fP أدناه. إذا طابق النمط بداية قيمة \fIparameter\fP، فإن نتيجة التوسيع هي القيمة الموسعة لـ \fIparameter\fP مع حذف أقصر نمط مطابق (حالة .Q # ) أو أطول نمط مطابق (حالة .Q ## ). إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، تُطبق عملية إزالة النمط على كل معامل موضعي بالدور، ويكون التوسيع هو القائمة الناتجة. إذا كان \fIparameter\fP متغير مصفوفة بدليل \fB@\fP أو \fB*\fP، تُطبق عملية إزالة النمط على كل عضو في المصفوفة بالدور، ويكون التوسيع هو القائمة الناتجة. .TP .PD 0 ${\fIparameter\fP\fB%\fP\fIword\fP} .TP ${\fIparameter\fP\fB%%\fP\fIword\fP} .PD \fBإزالة نمط اللاحقة المطابق\fP. تُوسع \fIword\fP لإنتاج نمط كما هو الحال في توسيع مسار الاسم، وتُطابق مع القيمة الموسعة لـ \fIparameter\fP باستخدام القواعد الموضحة تحت \fBPattern Matching\fP أدناه. إذا طابق النمط جزءاً لاحقاً من القيمة الموسعة لـ \fIparameter\fP، فإن نتيجة التوسيع هي القيمة الموسعة لـ \fIparameter\fP مع حذف أقصر نمط مطابق (حالة .Q % ) أو أطول نمط مطابق (حالة .Q %% ). إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، تُطبق عملية إزالة النمط على كل معامل موضعي بالدور، ويكون التوسيع هو القائمة الناتجة. إذا كان \fIparameter\fP متغير مصفوفة بدليل \fB@\fP أو \fB*\fP، تُطبق عملية إزالة النمط على كل عضو في المصفوفة بالدور، ويكون التوسيع هو القائمة الناتجة. .TP .PD 0 ${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP} .TP ${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP} .TP ${\fIparameter\fP\fB/#\fP\fIpattern\fP\fB/\fP\fIstring\fP} .TP ${\fIparameter\fP\fB/%\fP\fIpattern\fP\fB/\fP\fIstring\fP} .PD \fBاستبدال النمط\fP. يُوسع \fIpattern\fP لإنتاج نمط ويُطابق مع القيمة الموسعة لـ \fIparameter\fP كما هو موضح تحت \fBPattern Matching\fP أدناه. يُستبدل أطول تطابق لـ \fIpattern\fP في القيمة الموسعة بـ \fIstring\fP. تخضع \fIstring\fP لتوسيع المد، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، واستبدال الأوامر والعمليات، وإزالة الاقتباس. .IP في الشكل الأول أعلاه، يُستبدل التطابق الأول فقط. إذا كان هناك شرطتان مائلتان تفصلان \fIparameter\fP و \fIpattern\fP (الشكل الثاني أعلاه)، تُستبدل جميع تطابقات \fIpattern\fP بـ \fIstring\fP. إذا كان \fIpattern\fP مسبوقاً بـ \fB#\fP (الشكل الثالث أعلاه)، يجب أن يطابق بداية القيمة الموسعة لـ \fIparameter\fP. إذا كان \fIpattern\fP مسبوقاً بـ \fB%\fP (الشكل الرابع أعلاه)، يجب أن يطابق نهاية القيمة الموسعة لـ \fIparameter\fP. .IP إذا كان توسيع \fIstring\fP فارغاً، تُحذف تطابقات \fIpattern\fP ويمكن حذف \fB/\fP التي تلي \fIpattern\fP. .IP إذا فُعّل خيار الصدفة \fBpatsub_replacement\fP باستخدام \fBshopt\fP، تُستبدل أي مثيلات غير مقتبسة من \fB&\fP في \fIstring\fP بالجزء المطابق من \fIpattern\fP. .IP يمنع اقتباس أي جزء من \fIstring\fP الاستبدال في توسيع الجزء المقتبس، بما في ذلك سلاسل الاستبدال المخزنة في متغيرات الصدفة. تهرب الشرطة المائلة الخلفية \fB&\fP في \fIstring\fP؛ وتُزال الشرطة المائلة الخلفية للسماح بوجود \fB&\fP حرفي في سلسلة الاستبدال. يمكن أيضاً استخدام الشرطة المائلة الخلفية لهروب شرطة مائلة خلفية؛ تؤدي \fB\e\e\fP إلى شرطة مائلة خلفية حرفية في الاستبدال. يجب على المستخدمين توخي الحذر إذا كانت \fIstring\fP داخل اقتباس مزدوج لتجنب التفاعلات غير المرغوب فيها بين الشرطة المائلة الخلفية والاقتباس المزدوج، حيث أن للشرطة المائلة الخلفية معنى خاصاً داخل الاقتباس المزدوج. يجري استبدال النمط فحصاً لـ \fB&\fP غير المقتبسة بعد توسيع \fIstring\fP؛ يجب على مبرمجي الصدفة اقتباس أي ظهور لـ \fB&\fP يريدون أخذه حرفياً في الاستبدال والتأكد من أن أي مثيلات لـ \fB&\fP يريدون استبدالها غير مقتبسة. .IP مثل مشغلات إزالة النمط، تقتبس علامتا الاقتباس المزدوجتان اللتان تحيطان بسلسلة الاستبدال المحارف الموسعة، في حين أن علامتي الاقتباس المزدوجتين اللتين تحيطان بتوسيع المعامل بالكامل لا تفعلان ذلك، لأن التوسيع يُجرى في سياق لا يأخذ أي علامتي اقتباس مزدوجتين محيطتين في الاعتبار. .IP إذا فُعّل خيار الصدفة \fBnocasematch\fP، تُجرى المطابقة دون مراعاة حالة الأحرف الأبجدية. .IP إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، فستُطبَّق عملية الاستبدال على كل معامل موضعي بالترتيب، ويكون التوسع هو القائمة الناتجة. وإذا كان \fIparameter\fP متغير مصفوفة مفهرسًا بـ \fB@\fP أو \fB*\fP، فستُطبَّق عملية الاستبدال على كل عنصر في المصفوفة بالترتيب، ويكون التوسع هو القائمة الناتجة. .TP .PD 0 ${\fIparameter\fP\fB\*^\fP\fIpattern\fP} .TP ${\fIparameter\fP\fB\*^\*^\fP\fIpattern\fP} .TP ${\fIparameter\fP\fB,\fP\fIpattern\fP} .TP ${\fIparameter\fP\fB,,\fP\fIpattern\fP} .PD \fBتعديل حالة الأحرف\fP. يُعدل هذا التوسع حالة الأحرف الأبجدية في \fIparameter\fP. أولاً، يُوسع \fIpattern\fP لإنتاج نمط كما هو موضح أدناه في قسم .SM \fBمطابقة الأنماط\fP. ثم تفحص صدفة \fBBash\fP الأحرف في القيمة الموسعة لـ \fIparameter\fP مقابل \fIpattern\fP كما هو موضح أدناه. فإذا طابق حرف ما النمط، تُحوَّل حالته. يجب ألا يحاول النمط مطابقة أكثر من حرف واحد. .IP استخدام .Q \*^ يُحوِّل الأحرف الصغيرة التي تطابق \fIpattern\fP إلى أحرف كبيرة؛ .Q , يُحوِّل الأحرف الكبيرة المطابقة إلى أحرف صغيرة. تفحص المتغيرات \fB\*^\fP و \fB,\fP الحرف الأول في القيمة الموسعة وتُحوِّل حالته إذا طابق \fIpattern\fP؛ بينما تفحص المتغيرات \fB\*^\*^\fP و \fB,,\fP جميع الأحرف في القيمة الموسعة وتُحوِّل كل حرف يطابق \fIpattern\fP. إذا حُذف \fIpattern\fP، فإنه يُعامل مثل \fB?\fP، الذي يطابق كل حرف. .IP إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، فستُطبَّق عملية تعديل الحالة على كل معامل موضعي بالترتيب، ويكون التوسع هو القائمة الناتجة. وإذا كان \fIparameter\fP متغير مصفوفة مفهرسًا بـ \fB@\fP أو \fB*\fP، فستُطبَّق عملية تعديل الحالة على كل عنصر في المصفوفة بالترتيب، ويكون التوسع هو القائمة الناتجة. .TP .PD 0 ${\fIparameter\fP\fB@\fP\fIoperator\fP} \fBتحويل المعاملات\fP. يكون التوسع إما تحويلًا لقيمة \fIparameter\fP أو معلومات حول \fIparameter\fP نفسه، اعتمادًا على قيمة \fIoperator\fP. كل \fIoperator\fP هو حرف واحد: .PP .RS .TP \fBU\fP التوسع عبارة عن سلسلة نصية تمثل قيمة \fIparameter\fP مع تحويل الأحرف الأبجدية الصغيرة إلى كبيرة. .TP \fBu\fP التوسع عبارة عن سلسلة نصية تمثل قيمة \fIparameter\fP مع تحويل الحرف الأول إلى حرف كبير، إذا كان أبجديًا. .TP \fBL\fP التوسع عبارة عن سلسلة نصية تمثل قيمة \fIparameter\fP مع تحويل الأحرف الأبجدية الكبيرة إلى صغيرة. .TP \fBQ\fP التوسع عبارة عن سلسلة نصية تمثل قيمة \fIparameter\fP مقتبسة بتنسيق يمكن إعادة استخدامه كمدخلات. .TP \fBE\fP التوسع عبارة عن سلسلة نصية تمثل قيمة \fIparameter\fP مع توسيع تسلسلات هروب الشرطة المائلة العكسية كما هو الحال في آلية الاقتباس \fB$\*'\fP.\|.\|.\%\fB\*'\fP. .TP \fBP\fP التوسع عبارة عن سلسلة نصية ناتجة عن توسيع قيمة \fIparameter\fP كما لو كانت سلسلة محث (انظر قسم \fBالمحث\fP أدناه). .TP \fBA\fP التوسع عبارة عن سلسلة نصية على شكل جملة إسناد أو أمر \fBdeclare\fP والذي، في حال تقييمه، سيعيد إنشاء \fIparameter\fP بسماته وقيمته. .TP \fBK\fP يُنتج نسخة مقتبسة (على الأرجح) لقيمة \fIparameter\fP، باستثناء أنه يطبع قيم المصفوفات المفهرسة والمترابطة كتسلسل من أزواج مفتاح\-قيمة مقتبسة (انظر \fBالمصفوفات\fP أعلاه). تُقتبس المفاتيح والقيم بتنسيق يمكن إعادة استخدامه كمدخلات. .TP \fBa\fP التوسع عبارة عن سلسلة نصية تتكون من قيم أعلام تمثل سمات \fIparameter\fP. .TP \fBk\fP مثل التحويل K، ولكنه يوسع مفاتيح وقيم المصفوفات المفهرسة والمترابطة إلى كلمات منفصلة بعد تقسيم الكلمات. .PD .PP إذا كان \fIparameter\fP هو \fB@\fP أو \fB*\fP، فستُطبَّق العملية على كل معامل موضعي بالترتيب، ويكون التوسع هو القائمة الناتجة. وإذا كان \fIparameter\fP متغير مصفوفة مفهرسًا بـ \fB@\fP أو \fB*\fP، فستُطبَّق العملية على كل عنصر في المصفوفة بالترتيب، ويكون التوسع هو القائمة الناتجة. .PP تخضع نتيجة التوسع لتقسيم الكلمات وتوسع مسار الملف كما هو موضح أدناه. .RE .SS "استبدال الأوامر" يسمح \fIاستبدال الأوامر\fP لمخرجات أمر ما بأن تحل محل الأمر نفسه. هناك شكلان قياسيان: .RS .PP \fB$(\fP\fIcommand\fP\|\fB)\fP .RE أو (مهجور) .RS \fB\`\fP\fIcommand\fP\fB\`\fP. .RE .PP تجري صدفة \fBBash\fP التوسع عبر تنفيذ \fIcommand\fP في بيئة صدفة فرعية واستبدال عملية استبدال الأمر بالمخرجات القياسية للأمر، مع حذف أي أسطر جديدة لاحقة. لا تُحذف الأسطر الجديدة المضمنة، ولكن قد تُزال أثناء تقسيم الكلمات. يمكن استبدال عملية استبدال الأمر \fB$(cat \fP\fIfile\fP\fB)\fP بالصيغة المكافئة والأسرع \fB$(< \fP\fIfile\fP\fB)\fP. .PP مع شكل الاقتباس الخلفي القديم للاستبدال، تحتفظ الشرطة المائلة العكسية بمعناها الحرفي إلا إذا تبعها \fB$\fP، أو \fB\`\fP، أو \fB\e\fP. أول اقتباس خلفي غير مسبوق بشرطة مائلة عكسية ينهي عملية استبدال الأمر. عند استخدام الصيغة $(\^\fIcommand\fP\|)، فإن كل الأحرف الموجودة بين القوسين تشكل الأمر؛ ولا يُعامل أي منها معاملة خاصة. .PP هناك شكل بديل لاستبدال الأوامر: .RS .PP \fB${\fP\fIc\fP \fIcommand\fP\fB;\fP\|\fB}\fP .RE .PP والذي ينفذ \fIcommand\fP في بيئة التنفيذ الحالية ويلتقط مخرجاته، مع إزالة الأسطر الجديدة اللاحقة مرة أخرى. .PP يجب أن يكون الحرف \fIc\fP الذي يلي قوس الفتح مسافة، أو علامة تبويب، أو سطرًا جديدًا، أو \fB|\fP، ويجب أن يكون قوس الإغلاق في موضع يمكن أن تظهر فيه كلمة محجوزة (أي مسبوقًا بمنهي أمر مثل الفاصلة المنقوطة). تسمح صدفة \fBBash\fP لوصل قوس الإغلاق بالأحرف المتبقية في الكلمة دون الحاجة لتبعه بحرف ميتات صدفة كما تتطلب الكلمة المحجوزة عادةً. .PP تأخذ أي آثار جانبية لـ \fIcommand\fP مفعولها فورًا في بيئة التنفيذ الحالية وتستمر في البيئة الحالية بعد اكتمال الأمر (على سبيل المثال، مدمج \fBexit\fP يخرج من الصدفة). .PP يشبه هذا النوع من استبدال الأوامر سطحيًا تنفيذ وظيفة صدفة غير مسماة: تُنشأ المتغيرات المحلية كما يحدث عند تنفيذ وظيفة صدفة، ويجبر مدمج \fBreturn\fP الأمر \fIcommand\fP على الاكتمال؛ ومع ذلك، تتم مشاركة بقية بيئة التنفيذ، بما في ذلك المعاملات الموضعية، مع \fIالمستدعِي\fP. .PP إذا كان الحرف الأول بعد قوس الفتح هو \fB|\fP، فإن البنية تتوسع إلى قيمة متغير الصدفة \fBREPLY\fP بعد تنفيذ \fIcommand\fP، دون إزالة أي أسطر جديدة لاحقة، وتظل المخرجات القياسية لـ \fIcommand\fP كما هي في الصدفة المستدعِية. تنشئ \fBBash\fP \fBREPLY\fP كمتغير محلي غير مضبوط في البداية عند تنفيذ \fIcommand\fP، وتستعيد قيمة \fBREPLY\fP التي كانت لديه قبل استبدال الأمر بعد اكتمال \fIcommand\fP، كما هو الحال مع أي متغير محلي. .PP يمكن أن تكون عمليات استبدال الأوامر متداخلة. للقيام بالتداخل عند استخدام شكل الاقتباس الخلفي، يجب الهروب من الاقتباسات الخلفية الداخلية باستخدام شرطات مائلة عكسية. .PP إذا ظهر الاستبدال داخل علامتي اقتباس مزدوجتين، فلن تقوم صدفة \fBbash\fP بتقسيم الكلمات وتوسيع مسار الملف على النتائج. .SS "التوسع الحسابي" يقيّم التوسع الحسابي تعبيرًا حسابيًا ويستبدله بالنتيجة. صيغة التوسع الحسابي هي: .RS .PP \fB$((\fP\fIexpression\fP\fB))\fP .RE .PP يخضع \fIexpression\fP لنفس التوسعات كما لو كان داخل علامتي اقتباس مزدوجتين، لكن أحرف الاقتباس المزدوجة غير المهربة في \fIexpression\fP لا تُعامل معاملة خاصة وتُزال. تخضع جميع الرموز في التعبير لتوسع المعاملات والمتغيرات، واستبدال الأوامر، وإزالة الاقتباس. تُعامل النتيجة كتعبير حسابي يجب تقييمه. وبما أن الطريقة التي تتعامل بها صدفة Bash مع الاقتباسات المزدوجة يمكن أن تؤدي إلى سلاسل فارغة، فإن التوسع الحسابي يعاملها كتعبيرات تُقيّم بـ 0. يمكن أن تكون التوسعات الحسابية متداخلة. .PP يُجرى التقييم وفقًا للقواعد المدرجة أدناه في قسم .SM \fBالتقييم الحسابي\fP. إذا كان \fIexpression\fP غير صالح، تطبع \fBbash\fP رسالة إلى الخطأ القياسي تشير إلى الفشل، ولا تقوم بالاستبدال، ولا تنفذ الأمر المرتبط بالتوسع. .SS "استبدال العمليات" يسمح \fIاستبدال العمليات\fP بالإشارة إلى مدخلات أو مخرجات عملية ما باستخدام اسم ملف. يأخذ شكل \fB<(\fP\fIlist\^\fP\fB)\fP أو \fB>(\fP\fIlist\^\fP\fB)\fP. تُشغّل قائمة العمليات \fIlist\fP بشكل غير متزامن، وتظهر مدخلاتها أو مخرجاتها كاسم ملف. يُمرر اسم الملف هذا كوسيط للأمر الحالي كنتيجة للتوسع. .PP إذا استُخدمت صيغة \fB>(\fP\fIlist\^\fP\fB)\fP، فإن الكتابة إلى الملف توفر مدخلات لـ \fIlist\fP. وإذا استُخدمت صيغة \fB<(\fP\fIlist\^\fP\fB)\fP، فإن قراءة الملف تجلب مخرجات \fIlist\fP. يجب ألا تظهر أي مسافة بين \fB<\fP أو \fB>\fP والقوس الأيسر، وإلا فسيُفسر البناء على أنه إعادة توجيه. .PP يُدعم استبدال العمليات في الأنظمة التي تدعم الأنابيب المسماة (\fIFIFOs\fP) أو طريقة \fI/dev/fd\fP لتسمية الملفات المفتوحة. .PP عند توفره، يُجرى استبدال العمليات بالتزامن مع توسع المعاملات والمتغيرات، واستبدال الأوامر، والتوسع الحسابي. .SS "تقسيم الكلمات" تمسح الصدفة نتائج توسع المعاملات، واستبدال الأوامر، والتوسع الحسابي التي لم تحدث داخل علامتي اقتباس مزدوجتين لغرض \fIتقسيم الكلمات\fP. لا تُقسم الكلمات التي لم تُوسع. .PP تعامل الصدفة كل حرف في .SM \fBIFS\fP كمحدد، وتقسم نتائج التوسعات الأخرى إلى كلمات باستخدام هذه الأحرف كمنهيات للحقول. .PP حرف \fIمسافة IFS البيضاء\fP هو مسافة بيضاء كما هي محددة أعلاه (انظر \fBالتعاريف\fP) والتي تظهر في قيمة .SM \fBIFS\fP. تُعتبر المسافة، وعلامة التبويب، والسطر الجديد دائمًا مسافات IFS بيضاء، حتى لو لم تظهر في فئة \fBspace\fP الخاصة بالمحلية. .PP إذا كان .SM \fBIFS\fP غير مضبوط، فإن تقسيم الحقول يعمل كما لو كانت قيمته هي \fB<مسافة><تبويب><سطر_جديد>\fP، ويعامل هذه الأحرف كمسافات IFS بيضاء. إذا كانت قيمة .SM \fBIFS\fP فارغة (null)، فلا يحدث تقسيم للكلمات، ولكن لا تزال وسائط null الضمنية (انظر أدناه) تُزال. .PP يبدأ تقسيم الكلمات بإزالة تسلسلات أحرف مسافة IFS البيضاء من بداية ونهاية نتائج التوسعات السابقة، ثم يُقسم الكلمات المتبقية. .PP إذا كانت قيمة .SM \fBIFS\fP تتكون فقط من مسافات IFS بيضاء، فإن أي تسلسل من أحرف مسافة IFS البيضاء يحدد حقلًا، لذا يتكون الحقل من أحرف ليست مسافات IFS بيضاء غير مقتبسة، وتنتج الحقول الفارغة فقط من الاقتباس. .PP إذا احتوى .SM \fBIFS\fP على حرف ليس مسافة بيضاء، فإن أي حرف في قيمة .SM \fBIFS\fP ليس مسافة IFS بيضاء، مع أي أحرف مسافة IFS بيضاء مجاورة، يحدد حقلًا. وهذا يعني أن المحددات المتجاورة التي ليست مسافات IFS بيضاء تنتج حقلًا فارغًا. كما يحدد تسلسل أحرف مسافة IFS البيضاء حقلًا أيضًا. .PP يُحتفظ بالوسائط الفارغة (null) الصريحة (\^\fB\*"\^\*"\fP أو \^\fB\*'\^\*'\fP\^) وتُمرر إلى الأوامر كسلاسل نصية فارغة. أما الوسائط الفارغة الضمنية غير المقتبسة، الناتجة عن توسع المعاملات التي لا تملك قيمًا، فتُزال. إن توسيع معامل ليس له قيمة داخل علامتي اقتباس مزدوجتين ينتج حقلًا فارغًا، والذي يُحتفظ به ويُمرر إلى الأمر كسلسلة نصية فارغة. .PP عندما يظهر وسيط فارغ مقتبس كجزء من كلمة يكون توسعها غير فارغ، فإن تقسيم الكلمات يزيل جزء الوسيط الفارغ، تاركًا التوسع غير الفارغ. أي أن الكلمة .Q \-d\*'\^\*' يصبح .Q \-d بعد تقسيم الكلمات وإزالة الوسائط الفارغة. .SS "توسع مسار الملف" بعد تقسيم الكلمات، وما لم يُضبط الخيار \fB\-f\fP، تمسح صدفة \fBbash\fP كل كلمة بحثًا عن الأحرف \fB*\fP و \fB?\fP و \fB[\fP. إذا ظهر أحد هذه الأحرف، ولم يكن مقتبسًا، تُعتبر الكلمة حينئذٍ \fIنمطًا\fP، وتُستبدل بقائمة مرتبة من أسماء الملفات التي تطابق النمط (انظر .SM \fBمطابقة الأنماط\fP أدناه) مع مراعاة قيمة متغير الصدفة \fBGLOBSORT\fP. .PP إذا لم يُعثر على أسماء ملفات مطابقة، ولم يكن خيار الصدفة \fBnullglob\fP مفعلاً، تُترك الكلمة دون تغيير. وإذا ضُبط الخيار \fBnullglob\fP ولم يُعثر على مطابقات، تُزال الكلمة. وإذا ضُبط خيار الصدفة \fBfailglob\fP ولم يُعثر على مطابقات، تطبع \fBbash\fP رسالة خطأ ولا تنفذ الأمر. وإذا كان خيار الصدفة \fBnocaseglob\fP مفعلاً، تُجرى المطابقة دون مراعاة حالة الأحرف الأبجدية. .PP عند استخدام نمط لتوسيع مسار الملف، فإن الحرف .Q .\& at the start of a name or immediately following a slash must be matched explicitly, unless the shell option \fBdotglob\fP is set. In order to match the filenames .FN .\& and .FN ..\& , the pattern must begin with .Q .\& (على سبيل المثال، .Q .?\& ), even if \fBdotglob\fP is set. If the \fBglobskipdots\fP shell option is enabled, the filenames .FN .\& and .FN ..\& never match, even if the pattern begins with a .Q .\& . عند عدم مطابقة مسارات الملفات، فإن الحرف .Q .\& لا يُعامل معاملة خاصة. .PP عند مطابقة مسار ملف، يجب دائمًا مطابقة حرف الشرطة المائلة صراحة بشرطة مائلة في النمط، ولكن في سياقات المطابقة الأخرى يمكن مطابقته بحرف نمط خاص كما هو موضح أدناه في قسم .SM \fBمطابقة الأنماط\fP. .PP انظر وصف \fBshopt\fP أدناه في قسم .SM \fBأوامر الصدفة المدمجة\fP للاطلاع على وصف لخيارات الصدفة \fBnocaseglob\fP و \fBnullglob\fP و \fBglobskipdots\fP و \fBfailglob\fP و \fBdotglob\fP. .PP The .SM \fBGLOBIGNORE\fP shell variable may be used to restrict the set of file names matching a \fIpattern\fP. If .SM \fBGLOBIGNORE\fP is set, each matching file name that also matches one of the patterns in .SM \fBGLOBIGNORE\fP is removed from the list of matches. If the \fBnocaseglob\fP option is set, the matching against the patterns in .SM \fBGLOBIGNORE\fP is performed without regard to case. The filenames .FN .\& and .FN ..\& are always ignored when .SM \fBGLOBIGNORE\fP is set and not null. However, setting .SM \fBGLOBIGNORE\fP to a non\-null value has the effect of enabling the \fBdotglob\fP shell option, so all other filenames beginning with a .Q .\& تطابق. وللحصول على السلوك القديم بتجاهل أسماء الملفات التي تبدأ بـ .Q .\& , اجعل .Q .* أحد الأنماط في .SM \fBGLOBIGNORE\&.\fP يُعطل الخيار \fBdotglob\fP عندما يكون .SM \fBGLOBIGNORE\fP غير مضبوط. تراعي مطابقة أنماط \fBGLOBIGNORE\fP إعداد خيار الصدفة \fBextglob\fP. .PP تتحكم قيمة متغير الصدفة .SM \fBGLOBSORT\fP في كيفية فرز نتائج توسيع مسار الملف، كما هو موضح أعلاه في قسم \fBمتغيرات الصدفة\fP. .PP \fBمطابقة الأنماط\fP .PP أي حرف يظهر في النمط، بخلاف أحرف الأنماط الخاصة الموضحة أدناه، يطابق نفسه. لا يجوز أن يظهر حرف NUL في النمط. تهرب الشرطة المائلة العكسية الحرف التالي لها؛ وتُهمل الشرطة المائلة المهربة عند المطابقة. يجب اقتباس أحرف الأنماط الخاصة إذا أريد مطابقتها حرفيًا. .PP لأحرف الأنماط الخاصة المعاني التالية: .PP .PD 0 .RS .TP \fB*\fP يطابق أي سلسلة نصية، بما في ذلك السلسلة الفارغة. عندما يكون خيار الصدفة \fBglobstar\fP مفعلاً، ويُستخدم \fB*\fP في سياق توسيع مسار الملف، فإن نجمتين \fB*\fP متجاورتين تُستخدمان كنمط واحد تطابقان جميع الملفات وصفرًا أو أكثر من الأدلة والأدلة الفرعية. وإذا تبعتهما \fB/\fP، فإن النجمتين المتجاورتين \fB*\fP تطابقان الأدلة والأدلة الفرعية فقط. .TP \fB?\fP يطابق أي محرف مفرد. .TP \fB[\fP.\|.\|.\fB]\fP .PD يطابق أي حرف من الأحرف المحصورة بين القوسين. يُعرف هذا باسم \fIتعبير بين قوسين\fP ويطابق حرفًا واحدًا. يشير زوج من الأحرف يفصل بينهما واصلة إلى \fIتعبير نطاق\fP؛ ويطابق أي حرف يقع بين هذين الحرفين، بما في ذلك الحرفان نفساهما، باستخدام تسلسل الترتيب ومجموعة الأحرف للمحلية الحالية. إذا كان الحرف الأول بعد \fB[\fP هو \fB!\fP أو \fB\*^\fP، فسيُطابق أي حرف ليس ضمن النطاق. لمطابقة \fB\-\fP، ضمنها كأول أو آخر حرف في المجموعة. لمطابقة \fB]\fP، ضمنها كأول حرف في المجموعة. .IP يُحدد ترتيب فرز الأحرف في تعبيرات النطاق، والأحرف المضمنة في النطاق، بواسطة المحلية الحالية وقيم متغيرات الصدفة .SM \fBLC_COLLATE\fP أو .SM \fBLC_ALL\fP، إن وجدت. وللحصول على التفسير التقليدي لتعبيرات النطاق، حيث \fB[a\-d]\fP تكافئ \fB[abcd]\fP، اضبط قيمة متغيرات الصدفة \fBLC_COLLATE\fP أو \fBLC_ALL\fP إلى \fBC\fP، أو فعّل خيار الصدفة \fBglobasciiranges\fP. .IP ضمن التعبير بين قوسين، يمكن تحديد \fIأصناف الأحرف\fP باستخدام الصيغة \fB[:\fP\fIclass\fP\fB:]\fP، حيث \fIclass\fP هو أحد الأصناف التالية المحددة في معيار .SM POSIX : .IP .RS .B .if n alnum alpha ascii blank cntrl digit graph lower print punct space \ upper word xdigit .if t alnum alpha ascii blank cntrl digit graph lower \ print punct space upper word xdigit .RE .IP يطابق صنف الأحرف أي حرف ينتمي إلى ذلك الصنف. يطابق صنف الأحرف \fBword\fP الحروف، والأرقام، والحرف _. .IP ضمن التعبير بين قوسين، يمكن تحديد \fIصنف مكافئ\fP باستخدام الصيغة \fB[=\fP\fIc\fP\fB=]\fP، والذي يطابق جميع الأحرف التي لها نفس وزن الترتيب (كما هو محدد في المحلية الحالية) كالحرف \fIc\fP. .IP ضمن التعبير بين قوسين، الصيغة \fB[.\fP\fIsymbol\fP\fB.]\fP تطابق رمز الترتيب \fIsymbol\fP. .RE .PP إذا فُعّل خيار الصدفة \fBextglob\fP باستخدام المدمج \fBshopt\fP، ستتعرف الصدفة على عدة معاملات موسعة لمطابقة الأنماط. في الوصف التالي، \fIpattern\-list\fP هي قائمة من نمط واحد أو أكثر مفصولة بـ \fB|\fP. يمكن تكوين أنماط مركبة باستخدام واحد أو أكثر من الأنماط الفرعية التالية: .PP .PD 0 .RS .TP \fB?(\fP\^\fIpattern\-list\^\fP\fB)\fP يطابق صفرًا أو تكرارًا واحدًا للأنماط المعطاة. .TP \fB*(\fP\^\fIpattern\-list\^\fP\fB)\fP يطابق صفرًا أو أكثر من تكرارات الأنماط المعطاة. .TP \fB+(\fP\^\fIpattern\-list\^\fP\fB)\fP يطابق تكرارًا واحدًا أو أكثر للأنماط المعطاة. .TP \fB@(\fP\^\fIpattern\-list\^\fP\fB)\fP يطابق واحدًا من الأنماط المعطاة. .TP \fB!(\fP\^\fIpattern\-list\^\fP\fB)\fP يطابق أي شيء باستثناء واحد من الأنماط المعطاة. .RE .PD .PP يغير خيار \fBextglob\fP سلوك المحلل، لأن الأقواس تُعامل عادةً كمعاملات ذات معنى نحوي. لضمان تحليل أنماط المطابقة الموسعة بشكل صحيح، تأكد من تفعيل \fBextglob\fP قبل تحليل الأبنية التي تحتوي على الأنماط، بما في ذلك وظائف الصدفة واستبدالات الأوامر. .PP عند مطابقة أسماء الملفات، يحدد خيار الصدفة \fBdotglob\fP مجموعة أسماء الملفات التي تُختبر: فعند تفعيل \fBdotglob\fP، تتضمن مجموعة أسماء الملفات جميع الملفات التي تبدأ بـ .Q .\& , but .FN .\& and .FN ..\& must be matched by a pattern or sub\-pattern that begins with a dot; when it is disabled, the set does not include any filenames beginning with .Q .\& ما لم يبدأ النمط أو النمط الفرعي بـ .Q .\& . If the \fBglobskipdots\fP shell option is enabled, the filenames .FN .\& and .FN ..\& never appear in the set. As above, .Q .\& لها معنى خاص فقط عند مطابقة أسماء الملفات. .PP تكون مطابقة الأنماط الموسعة المعقدة مقابل السلاسل الطويلة بطيئة، خاصةً عندما تحتوي الأنماط على تبادلات والسلاسل على مطابقات متعددة. قد يكون استخدام مطابقات منفصلة مقابل سلاسل أقصر، أو استخدام مصفوفات من السلاسل بدلاً من سلسلة طويلة واحدة، أسرع. .SS "إزالة الاقتباس" بعد التوسعات السابقة، تُزال جميع حالات الظهور غير المقتبسة للأحرف \fB\e\fP و \fB\*'\fP و \^\fB\*"\fP\^ التي لم تنتج عن إحدى التوسعات المذكورة أعلاه. .SH "إعادة التوجيه" قبل تنفيذ الأمر، قد تُوجَّه مدخلاته ومخرجاته عبر \fIإعادة التوجيه\fP باستخدام ترميز خاص تفسره الصدفة. تسمح \fIإعادة التوجيه\fP بمضاعفة واصفات ملفات الأوامر، أو فتحها، أو إغلاقها، أو جعلها تشير إلى ملفات مختلفة، ويمكنها تغيير الملفات التي يقرأ منها الأمر ويكتب إليها. عند استخدامها مع المدمج \fBexec\fP، تُعدل إعادات التوجيه واصفات الملفات في بيئة تنفيذ الصدفة الحالية. قد تسبق معاملات إعادة التوجيه التالية \fIأمرًا بسيطًا\fP أو تظهر في أي مكان فيه، أو قد تتبع \fIأمرًا\fP. تُعالَج إعادات التوجيه بالترتيب الذي تظهر به، من اليسار إلى اليمين. .PP كل إعادة توجيه يمكن أن يسبقها رقم واصف ملف، يمكن بدلاً من ذلك أن تسبقها كلمة بصيغة {\fIvarname\fP}. في هذه الحالة، لكل معامل إعادة توجيه باستثناء \fB>&\-\fP و \fB<&\-\fP، تخصص الصدفة واصف ملف أكبر من أو يساوي 10 وتسنده إلى \fIvarname\fP. وإذا سبقت {\fIvarname\fP} المعاملين \fB>&\-\fP أو \fB<&\-\fP، فإن قيمة \fIvarname\fP تحدد واصف الملف المراد إغلاقه. وإذا زُودت {\fIvarname\fP}، فإن إعادة التوجيه تستمر خارج نطاق الأمر، مما يسمح لمبرمج الصدفة بإدارة عمر واصف الملف يدويًا دون استخدام المدمج \fBexec\fP. يدير خيار الصدفة \fBvarredir_close\fP هذا السلوك. .PP في الأوصاف التالية، إذا حُذف رقم واصف الملف، وكان الحرف الأول من معامل إعادة التوجيه هو .Q < , فإن إعادة التوجيه تشير إلى المدخلات القياسية (واصف الملف 0). وإذا كان الحرف الأول من معامل إعادة التوجيه هو .Q > , فإن إعادة التوجيه تشير إلى المخرجات القياسية (واصف الملف 1). .PP يخضع \fIword\fP الذي يلي معامل إعادة التوجيه في الأوصاف التالية، ما لم يُنص على خلاف ذلك، لتوسع الأقواس، وتوسع التيلدا، وتوسع المعاملات والمتغيرات، واستبدال الأوامر، والتوسع الحسابي، وإزالة الاقتباس، وتوسيع مسار الملف، وتقسيم الكلمات. وإذا توسع إلى أكثر من كلمة واحدة، تُبلغ \fBbash\fP عن خطأ. .PP ترتيب إعادات التوجيه مهم. على سبيل المثال، الأمر .RS .PP ls \fB>\fP dirlist 2\fB>&\fP1 .RE .PP يوجه كلاً من المخرجات القياسية والخطأ القياسي إلى الملف \fIdirlist\fP، بينما الأمر .RS .PP ls 2\fB>&\fP1 \fB>\fP dirlist .RE .PP يوجه المخرجات القياسية فقط إلى الملف \fIdirlist\fP، لأن الخطأ القياسي قد وُجِّه إلى المخرجات القياسية قبل توجيه المخرجات القياسية إلى \fIdirlist\fP. .PP تتعامل صدفة \fBBash\fP مع عدة أسماء ملفات بشكل خاص عند استخدامها في إعادات التوجيه، كما هو موضح في الجدول التالي. إذا كان نظام التشغيل الذي تعمل عليه \fBbash\fP يوفر هذه الملفات الخاصة، تستخدمها \fBbash\fP؛ وإلا فإنها تحاكيها داخليًا بالسلوك الموصوف أدناه. .RS .PP .PD 0 .TP \fB/dev/fd/\fP\fIfd\fP إذا كان \fIfd\fP عددًا صحيحًا صالحًا، ضاعِف واصف الملف \fIfd\fP. .TP \fB/dev/stdin\fP يُضاعف واصف الملف 0. .TP \fB/dev/stdout\fP يُضاعف واصف الملف 1. .TP \fB/dev/stderr\fP يُضاعف واصف الملف 2. .TP \fB/dev/tcp/\fP\fIhost\fP\fB/\fP\fIport\fP إذا كان \fIhost\fP اسم مضيف أو عنوان إنترنت صالحًا، وكان \fIport\fP رقم منفذ صحيحًا أو اسم خدمة، تحاول \fBbash\fP فتح مقبس TCP المقابل. .TP \fB/dev/udp/\fP\fIhost\fP\fB/\fP\fIport\fP إذا كان \fIhost\fP اسم مضيف أو عنوان إنترنت صالحًا، وكان \fIport\fP رقم منفذ صحيحًا أو اسم خدمة، تحاول \fBbash\fP فتح مقبس UDP المقابل. .PD .RE .PP يؤدي الفشل في فتح ملف أو إنشائه إلى فشل إعادة التوجيه. .PP يجب استخدام إعادات التوجيه التي تستخدم واصفات ملفات أكبر من 9 بحذر، لأنها قد تتعارض مع واصفات الملفات التي تستخدمها الصدفة داخليًا. .SS "إعادة توجيه المدخلات" إعادة توجيه المدخلات تفتح الملف الذي ينتج اسمه عن توسع \fIword\fP للقراءة على واصف الملف \fIn\fP، أو المدخلات القياسية (واصف الملف 0) إذا لم يُحدد \fIn\fP. .PP الصيغة العامة لإعادة توجيه المدخلات هي: .RS .PP [\fIn\fP]\fB<\fP\fIword\fP .RE .SS "إعادة توجيه المخرجات" إعادة توجيه المخرجات تفتح الملف الذي ينتج اسمه عن توسع \fIword\fP للكتابة على واصف الملف \fIn\fP، أو المخرجات القياسية (واصف الملف 1) إذا لم يُحدد \fIn\fP. إذا لم يكن الملف موجودًا فسيُنشأ؛ وإذا كان موجودًا فسيُقص إلى حجم صفر. .PP الصيغة العامة لإعادة توجيه المخرجات هي: .RS .PP [\fIn\fP]\fB>\fP\fIword\fP .RE .PP إذا كان معامل إعادة التوجيه هو \fB>\fP، وفُعّل الخيار \fBnoclobber\fP للأمر المدمج \fBset\fP، فستفشل إعادة التوجيه إذا كان الملف الذي ينتج اسمه عن توسع \fIword\fP موجودًا وكان ملفًا عاديًا. أما إذا كان معامل إعادة التوجيه هو \fB>|\fP، أو كان المعامل هو \fB>\fP وكان الخيار \fBnoclobber\fP للأمر المدمج \fBset\fP غير مفعل، فستحاول \fBbash\fP إجراء إعادة التوجيه حتى لو كان الملف المسمى بـ \fIword\fP موجودًا. .SS "إلحاق المخرجات الموجهة" إعادة توجيه المخرجات بهذه الطريقة تفتح الملف الذي ينتج اسمه عن توسع \fIword\fP للإلحاق على واصف الملف \fIn\fP، أو المخرجات القياسية (واصف الملف 1) إذا لم يُحدد \fIn\fP. وإذا لم يكن الملف موجودًا فسيُنشأ. .PP الصيغة العامة لإلحاق المخرجات هي: .RS .PP [\fIn\fP]\fB>>\fP\fIword\fP .RE .SS "إعادة توجيه المخرجات القياسية والخطأ القياسي" تُعيد هذه البنية توجيه كل من المخرج القياسي (واصف الملف 1) ومخرج الخطأ القياسي (واصف الملف 2) إلى الملف الذي يكون اسمه هو توسيع \fIword\fP. .PP هناك تنسيقان لإعادة توجيه المخرج القياسي والخطأ القياسي: .RS .PP \fB&>\fP\fIword\fP .RE و .RS \fB>&\fP\fIword\fP .RE .PP يُفضل الشكل الأول من بين الشكلين. وهذا يعادل دلاليًا .RS .PP \fB>\fP\fIword\fP 2\fB>&\fP1 .RE .PP عند استخدام الشكل الثاني، قد لا يتوسع \fIword\fP إلى رقم أو \fB\-\fP. إذا حدث ذلك، تُطبق معاملات إعادة توجيه أخرى (انظر \fBDuplicating File Descriptors\fP أدناه) لأسباب تتعلق بالتوافق. .SS "إلحاق المخرج القياسي والخطأ القياسي" تُلحق هذه البنية كل من المخرج القياسي (واصف الملف 1) ومخرج الخطأ القياسي (واصف الملف 2) بالملف الذي يكون اسمه هو توسيع \fIword\fP. .PP تنسيق إلحاق المخرج القياسي والخطأ القياسي هو: .RS .PP \fB&>>\fP\fIword\fP .RE .PP وهذا يعادل دلاليًا .RS .PP \fB>>\fP\fIword\fP 2\fB>&\fP1 .RE .PP (انظر \fBDuplicating File Descriptors\fP أدناه). .SS "مستندات \(dqهنا\(dq (Here Documents)" يوجه هذا النوع من إعادة التوجيه الـ \fBصدفة\fP لقراءة المدخلات من المصدر الحالي حتى تقرأ سطرًا يحتوي فقط على \fIdelimiter\fP (بدون فراغات لاحقة). تصبح جميع الأسطر المقروءة حتى تلك النقطة هي المدخل القياسي (أو واصف الملف \fIn\fP إذا حُدد \fIn\fP) لأمر ما. .PP تنسيق مستندات "هنا" هو: .RS .PP .nf [\fIn\fP]\fB<<\fP[\fB\-\fP]\fIword\fP \fIhere\-document\fP \fIdelimiter\fP .fi .RE .PP لا تقوم الـ \fBصدفة\fP بإجراء توسيع للمعاملات والمتغيرات، أو استبدال للأوامر، أو توسيع حسابي، أو توسيع لمسار الملف على \fIword\fP. .PP إذا كان أي جزء من \fIword\fP مقتبسًا، فإن الـ \fIdelimiter\fP يكون نتيجة إزالة الاقتباس من \fIword\fP، ولا يتم توسيع الأسطر في مستند "هنا". أما إذا كان \fIword\fP غير مقتبس، فإن الـ \fIdelimiter\fP يكون هو \fIword\fP نفسها، ويُعامل نص مستند "هنا" بشكل مشابه لسلسلة مقتبسة اقتباسًا مزدوجًا: تخضع جميع أسطر مستند "هنا" لتوسيع المعاملات، واستبدال الأوامر، والتوسيع الحسابي، وتُعامل متوالية المحارف \fB\e\fP حرفيًا، ويجب استخدام \fB\e\fP لاقتباس المحارف \fB\e\fP و \fB$\fP و \fB\`\fP؛ ومع ذلك، لا يكون لمحارف الاقتباس المزدوج أي معنى خاص. .PP إذا كان معامل إعادة التوجيه هو \fB<<\-\fP، فإن الـ \fBصدفة\fP تجرد جميع محارف علامة التبويب البادئة من أسطر الإدخال ومن السطر الذي يحتوي على \fIdelimiter\fP. يتيح هذا لمحارف مستندات "هنا" داخل سكريبتات الـ \fBصدفة\fP أن تُزاح بمسافة بادئة بشكل طبيعي. .PP إذا لم يكن المحدد مقتبسًا، تُعامل متوالية \fB\e\fP كاتصال للسطر: يُضم السطران ويُزال الخط المائل العكسي والسطر الجديد. يحدث هذا أثناء قراءة مستند "هنا"، قبل التحقق من محدد النهاية، لذا يمكن للأسطر المضمومة أن تشكل محدد النهاية. .SS "سلاسل \(dqهنا\(dq (Here Strings)" متغير من مستندات "هنا"، وتنسيقه هو: .RS .PP .nf [\fIn\fP]\fB<<<\fP\fIword\fP .fi .RE .PP يخضع \fIword\fP لتوسيع التلدة (~)، وتوسيع المعاملات والمتغيرات، واستبدال الأوامر، والتوسيع الحسابي، وإزالة الاقتباس. لا يتم إجراء توسيع لمسار الملف أو تقسيم الكلمات. تُقدم النتيجة كسلسلة نصية واحدة، مع إلحاق سطر جديد، إلى الأمر في مدخله القياسي (أو واصف الملف \fIn\fP إذا حُدد \fIn\fP). .SS "مضاعفة واصفات الملفات" معامل إعادة التوجيه .RS .PP [\fIn\fP]\fB<&\fP\fIword\fP .RE .PP يُستخدم لمضاعفة واصفات ملفات الإدخال. إذا توسع \fIword\fP إلى رقم واحد أو أكثر، يُجعل واصف الملف \fIn\fP نسخة من واصف الملف ذاك. يكون هناك خطأ في إعادة التوجيه إذا لم تحدد الأرقام في \fIword\fP واصف ملف مفتوح للإدخال. إذا كانت قيمة \fIword\fP هي \fB\-\fP، يُغلق واصف الملف \fIn\fP. إذا لم يُحدد \fIn\fP، فسيستخدم هذا المدخل القياسي (واصف الملف 0). .PP المعامل .RS .PP [\fIn\fP]\fB>&\fP\fIword\fP .RE .PP يُستخدم بشكل مشابه لمضاعفة واصفات ملفات الإخراج. إذا لم يُحدد \fIn\fP، فسيستخدم هذا المخرج القياسي (واصف الملف 1). يكون هناك خطأ في إعادة التوجيه إذا لم تحدد الأرقام في \fIword\fP واصف ملف مفتوح للإخراج. إذا كانت قيمة \fIword\fP هي \fB\-\fP، يُغلق واصف الملف \fIn\fP. كحالة خاصة، إذا حُذف \fIn\fP، ولم يتوسع \fIword\fP إلى رقم واحد أو أكثر أو \fB\-\fP، فإن هذا يعيد توجيه المخرج القياسي والخطأ القياسي كما وُصف سابقًا. .SS "نقل واصفات الملفات" معامل إعادة التوجيه .RS .PP [\fIn\fP]\fB<&\fP\fIdigit\fP\fB\-\fP .RE .PP ينقل واصف الملف \fIdigit\fP إلى واصف الملف \fIn\fP، أو المدخل القياسي (واصف الملف 0) إذا لم يُحدد \fIn\fP. يُغلق \fIdigit\fP بعد مضاعفته إلى \fIn\fP. .PP وبالمثل، معامل إعادة التوجيه .RS .PP [\fIn\fP]\fB>&\fP\fIdigit\fP\fB\-\fP .RE .PP ينقل واصف الملف \fIdigit\fP إلى واصف الملف \fIn\fP، أو المخرج القياسي (واصف الملف 1) إذا لم يُحدد \fIn\fP. .SS "فتح واصفات الملفات للقراءة والكتابة" معامل إعادة التوجيه .RS .PP [\fIn\fP]\fB<>\fP\fIword\fP .RE .PP يفتح الملف الذي يكون اسمه هو توسيع \fIword\fP لكل من القراءة والكتابة على واصف الملف \fIn\fP، أو على واصف الملف 0 إذا لم يُحدد \fIn\fP. إذا لم يكن الملف موجودًا، فإنه يُنشأ. .SH "الأسماء المستعارة" تسمح \fIالأسماء المستعارة\fP باستبدال سلسلة نصية بكلمة موجودة في موضع في المدخلات حيث يمكن أن تكون الكلمة الأولى في أمر بسيط. الأسماء المستعارة لها أسماء وقيم مقابلة تُضبط وتُلغى باستخدام أوامر \fBalias\fP و \fBunalias\fP المدمجة (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). .PP إذا قرأت الـ \fBصدفة\fP كلمة غير مقتبسة في الموضع الصحيح، فإنها تتحقق من الكلمة لمعرفة ما إذا كانت تطابق اسمًا مستعارًا. إذا تطابقت، تستبدل الـ \fBصدفة\fP الكلمة بقيمة الاسم المستعار، وتقرأ تلك القيمة كما لو كانت قد قُرئت بدلاً من الكلمة. لا تنظر الـ \fBصدفة\fP إلى أي محارف تلي الكلمة قبل محاولة استبدال الاسم المستعار. .PP المحارف \fB/\fP و \fB$\fP و \fB\`\fP و \fB=\fP وأي من \fIالمحارف التحويلية\fP (metacharacters) الخاصة بالـ \fBصدفة\fP أو محارف الاقتباس المذكورة أعلاه لا يجوز أن تظهر في اسم مستعار. قد يحتوي نص الاستبدال على أي مدخلات \fBصدفة\fP صالحة، بما في ذلك المحارف التحويلية. تُختبر الكلمة الأولى من نص الاستبدال بحثًا عن أسماء مستعارة، ولكن الكلمة المتطابقة مع اسم مستعار يجري توسيعه لا تُوسع مرة ثانية. هذا يعني أنه يمكن تعيين اسم مستعار لـ \fBls\fP ليكون \fBls \-F\fP، على سبيل المثال، ولا يحاول \fBbash\fP توسيع نص الاستبدال بشكل متكرر. .PP إذا كان المحرف الأخير من قيمة الاسم المستعار عبارة عن \fIفراغ\fP، فإن الـ \fBصدفة\fP تتحقق من كلمة الأمر التالية التي تلي الاسم المستعار لتوسيع الاسم المستعار. .PP تُنشأ الأسماء المستعارة وتُسرد باستخدام الأمر \fBalias\fP، وتُزال باستخدام الأمر \fBunalias\fP. .PP لا توجد آلية لاستخدام المعاملات في نص الاستبدال. إذا كانت المعاملات مطلوبة، فاستخدم دالة \fBصدفة\fP (انظر .SM \fBFUNCTIONS\fP أدناه) بدلاً من ذلك. .PP لا تُوسع الأسماء المستعارة عندما لا تكون الـ \fBصدفة\fP تفاعلية، ما لم يُضبط خيار الـ \fBصدفة\fP \fBexpand_aliases\fP باستخدام \fBshopt\fP (انظر وصف \fBshopt\fP تحت .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). .PP القواعد المتعلقة بتعريف واستخدام الأسماء المستعارة مربكة إلى حد ما. يقرأ \fBBash\fP دائمًا سطرًا كاملاً واحدًا على الأقل من المدخلات، وجميع الأسطر التي تشكل أمرًا مركبًا، قبل تنفيذ أي من الأوامر في ذلك السطر أو الأمر المركب. تُوسع الأسماء المستعارة عند قراءة الأمر، وليس عند تنفيذه. لذلك، فإن تعريف الاسم المستعار الذي يظهر في نفس السطر مع أمر آخر لا يسري مفعوله حتى تقرأ الـ \fBصدفة\fP السطر التالي من المدخلات، ولا يسري مفعول تعريف الاسم المستعار في أمر مركب حتى تقوم الـ \fBصدفة\fP بإعراب وتنفيذ الأمر المركب بالكامل. الأوامر التي تلي تعريف الاسم المستعار في ذلك السطر، أو في بقية الأمر المركب، لا تتأثر بالاسم المستعار الجديد. يمثل هذا السلوك أيضًا مشكلة عند تنفيذ الدوال. تُوسع الأسماء المستعارة عند قراءة تعريف الدالة، وليس عند تنفيذ الدالة، لأن تعريف الدالة هو أمر في حد ذاته. ونتيجة لذلك، فإن الأسماء المستعارة المعرفة في دالة لا تتوفر إلا بعد تنفيذ تلك الدالة. لكي تكون آمنًا، ضع دائمًا تعريفات الأسماء المستعارة في سطر منفصل، ولا تستخدم \fBalias\fP في الأوامر المركبة. .PP لكل غرض تقريبًا، يُفضل استخدام دوال الـ \fBصدفة\fP على الأسماء المستعارة. .SH الوظائف دالة الـ \fBصدفة\fP، المعرفة كما هو موضح أعلاه تحت .SM \fBSHELL GRAMMAR\fP، تخزن سلسلة من الأوامر لتنفيذها لاحقًا. عندما يُستخدم اسم دالة الـ \fBصدفة\fP كاسم أمر بسيط، تنفذ الـ \fBصدفة\fP قائمة الأوامر المرتبطة باسم تلك الدالة. تُنفذ الدوال في سياق الـ \fBصدفة\fP الـ \fBالمستدعِي\fP؛ ولا تُنشأ عملية جديدة لتفسيرها (على عكس تنفيذ سكريبت \fBصدفة\fP). .PP عند تنفيذ دالة، تصبح معاملات الدالة هي المعاملات الموضعية أثناء تنفيذها. يُحدث المعامل الخاص \fB#\fP ليعكس المعاملات الموضعية الجديدة. يبقى المعامل الخاص \fB0\fP دون تغيير. يُضبط العنصر الأول من متغير .SM \fBFUNCNAME\fP على اسم الدالة أثناء تنفيذها. .PP جميع الجوانب الأخرى لبيئة تنفيذ الـ \fBصدفة\fP متطابقة بين الدالة والـ \fBالمستدعِي\fP مع هذه الاستثناءات: مصائد (traps) ‏ .SM \fBDEBUG\fP و \fBRETURN\fP (انظر وصف \fBtrap\fP المدمج تحت .SM \fBSHELL BUILTIN COMMANDS\fP أدناه) لا تُورث ما لم تُعط الدالة سمة \fBtrace\fP (انظر وصف \fBdeclare\fP المدمج أدناه) أو يُفعل خيار الـ \fBصدفة\fP \fB\-o functrace\fP باستخدام \fBset\fP المدمج (وفي هذه الحالة ترث جميع الدوال مصائد \fBDEBUG\fP و \fBRETURN\fP)، ولا تُورث مصيدة .SM \fBERR\fP ما لم يُفعل خيار الـ \fBصدفة\fP \fB\-o errtrace\fP. .PP تُعلن المتغيرات المحلية للدالة باستخدام الأمر المدمج \fBlocal\fP (\fIlocal variables\fP). عادةً ما تُشارك المتغيرات وقيمها بين الدالة والـ \fBالمستدعِي\fP. إذا أُعلن عن متغير كـ \fBlocal\fP، فإن نطاق رؤية المتغير يقتصر على تلك الدالة وأطفالها (بما في ذلك الدوال التي تستدعيها). .PP في الوصف التالي، \fIالنطاق الحالي\fP هو دالة قيد التنفيذ حاليًا. تتكون النطاقات السابقة من \fBالمستدعِي\fP لتلك الدالة وهكذا، وصولاً إلى .Q global النطاق، حيث لا تنفذ الـ \fBصدفة\fP أي دالة \fBصدفة\fP. المتغير المحلي في النطاق الحالي هو متغير يُعلن عنه باستخدام \fBlocal\fP أو \fBdeclare\fP المدمجين في الدالة التي تُنفذ حاليًا. .PP المتغيرات المحلية .Q shadow المتغيرات التي تحمل نفس الاسم والمعلن عنها في نطاقات سابقة. على سبيل المثال، يخفي متغير محلي معلن عنه في دالة المتغيرات التي تحمل نفس الاسم والمعلن عنها في نطاقات سابقة، بما في ذلك المتغيرات العامة: تشير المراجع والتعيينات إلى المتغير المحلي، تاركة المتغيرات في النطاقات السابقة دون تعديل. عندما تعود الدالة، يصبح المتغير العام مرئيًا مرة أخرى. .PP تستخدم الـ \fBصدفة\fP \fIنطاقًا ديناميكيًا\fP للتحكم في رؤية المتغير داخل الدوال. باستخدام النطاق الديناميكي، تكون المتغيرات المرئية وقيمها نتيجة \fBتسلسل\fP استدعاءات الدوال التي أدت بالوصول إلى الدالة الحالية. تعتمد قيمة المتغير الذي تراه الدالة على قيمته داخل الـ \fBالمستدعِي\fP، إن وجد، سواء كان ذلك الـ \fBالمستدعِي\fP هو النطاق العام أو دالة \fBصدفة\fP أخرى. هذه هي أيضًا القيمة التي يظللها إعلان المتغير المحلي، والقيمة التي تُستعاد عند عودة الدالة. .PP على سبيل المثال، إذا أُعلن عن متغير \fIvar\fP كمحلي في الدالة \fIfunc1\fP، واستدعت \fIfunc1\fP دالة أخرى \fIfunc2\fP، فإن المراجع إلى \fIvar\fP التي تتم من داخل \fIfunc2\fP تؤول إلى المتغير المحلي \fIvar\fP من \fIfunc1\fP، مما يظلل أي متغير عام يسمى \fIvar\fP. .PP يعمل الأمر المدمج \fBunset\fP أيضًا باستخدام نفس النطاق الديناميكي: إذا كان المتغير محليًا للنطاق الحالي، فإن \fBunset\fP يلغي ضبطه؛ وإلا فإن إلغاء الضبط سيشير إلى المتغير الموجود في أي نطاق استدعاء كما هو موضح أعلاه. إذا أُلغي ضبط متغير في النطاق المحلي الحالي، فإنه يظل كذلك (يظهر كملغى الضبط) حتى يُعاد ضبطه في ذلك النطاق أو حتى تعود الدالة. بمجرد عودة الدالة، يصبح أي مثيل للمتغير في نطاق سابق مرئيًا. إذا عمل \fBunset\fP على متغير في نطاق سابق، فإن أي مثيل لمتغير بهذا الاسم كان مظللاً يصبح مرئيًا (انظر أدناه كيف يغير خيار الـ \fBصدفة\fP \fBlocalvar_unset\fP هذا السلوك). .PP متغير .SM \fBFUNCNEST\fP، إذا ضُبط على قيمة عددية أكبر من 0، يحدد الحد الأقصى لمستوى تداخل الدوال. استدعاءات الدوال التي تتجاوز الحد تؤدي إلى إحباط الأمر بالكامل. .PP إذا نُفذ الأمر المدمج \fBreturn\fP في دالة، تكتمل الدالة ويُستأنف التنفيذ مع الأمر التالي بعد استدعاء الدالة. إذا زُود \fBreturn\fP بمعامل عددي، فسيكون ذلك هو حالة إرجاع الدالة؛ وإلا فإن حالة إرجاع الدالة هي حالة الخروج لآخر أمر نُفذ قبل \fBreturn\fP. يُنفذ أي أمر مرتبط بمصيدة \fBRETURN\fP قبل استئناف التنفيذ. عندما تكتمل الدالة، تُستعاد قيم المعاملات الموضعية والمعامل الخاص \fB#\fP إلى القيم التي كانت عليها قبل تنفيذ الدالة. .PP خيار \fB\-f\fP للأوامر المدمجة \fBdeclare\fP أو \fBtypeset\fP يسرد أسماء الدوال وتعريفاتها. خيار \fB\-F\fP لـ \fBdeclare\fP أو \fBtypeset\fP يسرد أسماء الدوال فقط (واختياريًا ملف المصدر ورقم السطر، إذا كان خيار الـ \fBصدفة\fP \fBextdebug\fP مفعلاً). قد تُصدر الدوال بحيث يكون لعمليات الـ \fBصدفة\fP التابعة (تلك التي تُنشأ عند تنفيذ استدعاء \fBصدفة\fP منفصل) تعريفاتها \fBآليًا\fP باستخدام الخيار \fB\-f\fP للأمر المدمج \fBexport\fP. خيار \fB\-f\fP للأمر المدمج \fBunset\fP يحذف تعريف الدالة. .PP قد تكون الدوال عودية (recursive). يمكن استخدام متغير \fBFUNCNEST\fP للحد من عمق مكدس استدعاء الدوال وتقييد عدد استدعاءات الدوال. مبدئيًا، لا يفرض \fBbash\fP أي حد على عدد الاستدعاءات العودية. .SH "التقييم الحسابي" تسمح الـ \fBصدفة\fP بتقييم التعبيرات الحسابية في ظروف معينة (انظر الأوامر المدمجة \fBlet\fP و \fBdeclare\fP، والأمر المركب \fB((\fP، وأمر \fBfor\fP الحسابي، والأمر الشرطي \fB[[\fP، و \fBArithmetic Expansion\fP). .PP يتم التقييم في أكبر أعداد صحيحة ثابتة العرض متاحة، دون التحقق من تجاوز السعة، على الرغم من أن القسمة على 0 يتم اصطيادها ووضع علامة عليها كخطأ. المعاملات وأولويتها وارتباطها وقيمها هي نفسها كما في لغة C. قائمة المعاملات التالية مجمعة في مستويات من المعاملات المتساوية الأولوية. تُدرج المستويات بترتيب تنازلي للأولوية. .PP .PD 0 .TP \fIid\fP\fB++ \fP\fIid\fP\fB\-\-\fP الزيادة اللاحقة والنقصان اللاحق للمتغير .TP \fB++\fP\fIid\fP\fB \-\-\fP\fIid\fP الزيادة السابقة والنقصان السابق للمتغير .TP \fB\- +\fP الناقص والزائد الأحادي .TP \fB! \*~\fP النفي المنطقي ونفي البتات .TP \fB**\fP الرفع إلى أس .TP \fB* / %\fP الضرب، القسمة، باقي القسمة .TP \fB+ \-\fP الجمع، الطرح .TP \fB<< >>\fP إزاحة البتات لليسار ولليمين .TP \fB<= >= < >\fP المقارنة .TP \fB== !=\fP المساواة وعدم المساواة .TP \fB&\fP AND للبتات .TP \fB\*^\fP OR الحصرية للبتات (XOR) .TP \fB|\fP OR للبتات .TP \fB&&\fP AND منطقية .TP \fB||\fP OR منطقية .TP \fIexpr\fP\fB?\fP\fIexpr\fP\fB:\fP\fIexpr\fP معامل شرطي .TP \fB= *= /= %= += \-= <<= >>= &= \*^= |=\fP تعيين .TP \fIexpr1\fP\fB , \fP\fIexpr2\fP فاصلة .PD .PP يُسمح بمتغيرات الـ \fBصدفة\fP كمعاملات؛ ويتم توسيع المعاملات قبل تقييم التعبير. داخل التعبير، يمكن أيضًا الإشارة إلى متغيرات الـ \fBصدفة\fP بالاسم دون استخدام صيغة توسيع المعاملات. هذا يعني أنه يمكنك استخدام "x"، حيث \fIx\fP هو اسم متغير \fBصدفة\fP، في تعبير حسابي، وستقوم الـ \fBصدفة\fP بتقييم قيمته كتعبير واستخدام النتيجة. متغير الـ \fBصدفة\fP الذي يكون فارغًا أو غير مضبوط يتم تقييمه إلى 0 عند الإشارة إليه بالاسم في تعبير. .PP تُقيم قيمة المتغير كتعبير حسابي عند الإشارة إليه، أو عند تعيين قيمة لمتغير أُعطي سمة \fIالعدد الصحيح\fP (integer) باستخدام \fBdeclare \-i\fP. تُقيم القيمة الفارغة إلى 0. لا يشترط أن يكون لمتغير الـ \fBصدفة\fP سمة \fIالعدد الصحيح\fP مفعلة لاستخدامه في تعبير. .PP تتبع الثوابت الصحيحة تعريف لغة C، بدون لاحقات أو ثوابت محارف. تُفسر الثوابت التي تبدأ بـ 0 كأرقام ثمانية. يشير البدء بـ 0x أو 0X إلى نظام سداسي عشر. بخلاف ذلك، تأخذ الأرقام الشكل [\fIbase#\fP]n، حيث يكون \fIbase\fP الاختياري عددًا عشريًا بين 2 و 64 يمثل القاعدة الحسابية، و \fIn\fP هو رقم في تلك القاعدة. إذا حُذف \fIbase#\fP، تُستخدم القاعدة 10. عند تحديد \fIn\fP، إذا لزم محرف غير رقمي، تُمثل الأرقام الأكبر من 9 بالأحرف الصغيرة، والأحرف الكبيرة، و @، و _، بهذا الترتيب. إذا كان \fIbase\fP أقل من أو يساوي 36، يمكن استخدام الأحرف الصغيرة والكبيرة بالتبادل لتمثيل الأرقام بين 10 و 35. .PP تُقيم المعاملات بترتيب الأولوية. تُقيم التعبيرات الفرعية داخل الأقواس أولاً وقد تتجاوز قواعد الأولوية أعلاه. .SH "التعبيرات الشرطية" تُستخدم التعبيرات الشرطية بواسطة الأمر المركب \fB[[\fP والأوامر المدمجة \fBtest\fP و \fB[\fP لاختبار سمات الملفات وإجراء مقارنات السلاسل النصية والحسابية. تحدد أوامر \fBtest\fP و \fB[\fP سلوكها بناءً على عدد المعاملات؛ انظر أوصاف تلك الأوامر لأي إجراءات أخرى خاصة بالأوامر. .PP تتشكل التعبيرات من الأساسيات الأحادية أو الثنائية المدرجة أدناه. غالبًا ما تُستخدم التعبيرات الأحادية لفحص حالة ملف أو متغير \fBصدفة\fP. تُستخدم المعاملات الثنائية لمقارنات السلاسل النصية والأرقام وسمات الملفات. .PP \fBBash\fP handles several filenames specially when they are used in expressions. If the operating system on which \fBbash\fP is running provides these special files, bash will use them; otherwise it will emulate them internally with this behavior: If any \fIfile\fP argument to one of the primaries is of the form .FN /dev/fd/n , then \fBbash\fP checks file descriptor \fIn\fP. If the \fIfile\fP argument to one of the primaries is one of .FN /dev/stdin , .FN /dev/stdout , or .FN /dev/stderr , \fBbash\fP checks file descriptor 0, 1, or 2, respectively. .PP ما لم ينص على خلاف ذلك، فإن الأساسيات التي تعمل على الملفات تتبع الروابط الرمزية وتعمل على هدف الرابط، بدلاً من الرابط نفسه. .PP عند استخدامه مع \fB[[\fP، أو عندما تكون الـ \fBصدفة\fP في وضع posix، فإن المعاملين \fB<\fP و \fB>\fP يقومان بالفرز معجميًا باستخدام الإعدادات المحلية الحالية. عندما لا تكون الـ \fBصدفة\fP في وضع posix، يقوم أمر \fBtest\fP بالفرز بناءً على ترتيب ASCII. .PP .PD 0 .TP \fB\-a \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا. .TP \fB\-b \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان ملف جهاز كتلي خاص. .TP \fB\-c \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان ملف محارف خاص. .TP \fB\-d \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان دليلاً. .TP \fB\-e \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا. .TP \fB\-f \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان ملفًا عاديًا. .TP \fB\-g \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكانت سمة set\-group\-id مضبوطة له. .TP \fB\-h \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان رابطًا رمزيًا. .TP \fB\-k \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وبت .Q sticky مضبوط. .TP \fB\-p \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان أنبوبًا مسمى (FIFO). .TP \fB\-r \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان قابلاً للقراءة. .TP \fB\-s \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان حجمه أكبر من صفر. .TP \fB\-t \fP\fIfd\fP صحيح إذا كان واصف الملف \fIfd\fP مفتوحًا ويشير إلى طرفية. .TP \fB\-u \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان بت set\-user\-id مضبوطًا له. .TP \fB\-w \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان قابلاً للكتابة. .TP \fB\-x \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان قابلاً للتنفيذ. .TP \fB\-G \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان مملوكًا لمعرف المجموعة الفعلي (effective group id). .TP \fB\-L \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان رابطًا رمزيًا. .TP \fB\-N \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وجرى تعديله منذ آخر وصول إليه. .TP \fB\-O \fP\fIfile\fP صحيح إذا كان \fIfile\fP موجودًا وكان مملوكًا لمعرف المستخدم الفعلي (effective user id). .TP \fB\-S \fP\fIملف\fP صحيح إذا كان \fIملف\fP موجودًا وكان مقبسًا. .TP \fB\-o \fP\fIاسم_الخيار\fP صحيح إذا كان خيار الصدفة \fIاسم_الخيار\fP مُفعلًا. انظر قائمة الخيارات تحت وصف الخيار \fB\-o\fP للأمر المدمج \fBset\fP أدناه. .TP \fB\-v \fP\fIاسم_المتغير\fP صحيح إذا كان متغير الصدفة \fIاسم_المتغير\fP مُعينًا (أُسندت إليه قيمة). إذا كان \fIاسم_المتغير\fP اسم متغير مصفوفة مفهرسة متبوعًا بـ \fI@\fP أو \fI*\fP، فإن هذا يعيد قيمة صحيحة إذا كانت المصفوفة تحتوي على أي عناصر مُعينة. إذا كان \fIاسم_المتغير\fP اسم متغير مصفوفة ترابطية متبوعًا بـ \fI@\fP أو \fI*\fP، فإن هذا يعيد قيمة صحيحة إذا كان العنصر صاحب ذلك المفتاح مُعينًا. .TP \fB\-R \fP\fIاسم_المتغير\fP صحيح إذا كان متغير الصدفة \fIاسم_المتغير\fP مُعينًا وكان مرجع اسم. .TP \fB\-z \fP\fIسلسلة\fP صحيح إذا كان طول \fIسلسلة\fP صفرًا. .TP \fIسلسلة\fP .TP \fB\-n \fP\fIسلسلة\fP صحيح إذا كان طول \fIسلسلة\fP غير صفري. .PD .TP \fIسلسلة1\fP \fB=\fP \fIسلسلة2\fP .PD 0 .TP \fIstring1\fP \fB=\fP \fIstring2\fP صحيح إذا كانت السلسلتان متساويتين. يجب استخدام \fB=\fP مع الأمر \fBtest\fP للتوافق مع معايير .SM POSIX . عند استخدامه مع الأمر \fB[[\fP، فإنه يؤدي مطابقة الأنماط كما هو موصوف أعلاه (\fBالأوامر المركبة\fP). .TP \fIسلسلة1\fP \fB!=\fP \fIسلسلة2\fP صحيح إذا لم تكن السلسلتان متساويتين. .TP \fIسلسلة1\fP \fB<\fP \fIسلسلة2\fP صحيح إذا كانت \fIسلسلة1\fP تسبق \fIسلسلة2\fP في الترتيب المعجمي. .TP \fIسلسلة1\fP \fB>\fP \fIسلسلة2\fP صحيح إذا كانت \fIسلسلة1\fP تأتي بعد \fIسلسلة2\fP في الترتيب المعجمي. .PD .TP .PD 0 \fIملف1\fP \fB\-ef\fP \fIملف2\fP صحيح إذا كان \fIملف1\fP و \fIملف2\fP يشيران إلى نفس الجهاز وأرقام الفهرسة (inode). .TP \fIملف1\fP \-\fBnt\fP \fIملف2\fP صحيح إذا كان \fIملف1\fP أحدث (وفقًا لتاريخ التعديل) من \fIملف2\fP، أو إذا كان \fIملف1\fP موجودًا و \fIملف2\fP غير موجود. .TP \fIملف1\fP \-\fBot\fP \fIملف2\fP صحيح إذا كان \fIملف1\fP أقدم من \fIملف2\fP، أو إذا كان \fIملف2\fP موجودًا و \fIملف1\fP غير موجود. .PD .TP \fIمعطى1 \fP\fBOP\fP\fI معطى2\fP .SM \fBOP\fP هو أحد الرموز \fB\-eq\fP أو \fB\-ne\fP أو \fB\-lt\fP أو \fB\-le\fP أو \fB\-gt\fP أو \fB\-ge\fP. هذه المعاملات الحسابية الثنائية تعيد قيمة صحيحة إذا كان \fIمعطى1\fP مساويًا لـ، أو غير مساوٍ لـ، أو أقل من، أو أقل من أو يساوي، أو أكبر من، أو أكبر من أو يساوي \fIمعطى2\fP، على التوالي. يمكن أن يكون \fIمعطى1\fP و \fIمعطى2\fP أعدادًا صحيحة موجبة أو سالبة. عند استخدامهما مع الأمر \fB[[\fP، يُقيم \fIمعطى1\fP و \fIمعطى2\fP كتعبيرات حسابية (انظر .SM \fBالتقييم الحسابي\fP أعلاه). وبما أن التوسيعات التي يجريها الأمر \fB[[\fP على \fIمعطى1\fP و \fIمعطى2\fP قد تؤدي إلى سلاسل فارغة، فإن تقييم التعبير الحسابي يعاملها كتعبيرات قيمتها 0. .PD .SH "توسيع الأوامر البسيطة" عندما تنفذ الصدفة أمرًا بسيطًا، فإنها تجري التوسيعات والتعيينات وإعادة التوجيهات التالية، من اليسار إلى اليمين، بالترتيب التالي. .IP 1. تُحفظ الكلمات التي وضع المحلل عليها علامة تعيينات متغيرات (تلك التي تسبق اسم الأمر) وإعادة التوجيهات لمعالجتها لاحقًا. .IP 2. تُوسع الكلمات التي ليست تعيينات متغيرات أو إعادة توجيهات. إذا بقيت أي كلمات بعد التوسيع، تُتخذ الكلمة الأولى كاسم للأمر والكلمات المتبقية كمعطيات. .IP 3. تُنفذ إعادة التوجيهات كما هو موصوف أعلاه تحت .SM \fBREDIRECTION\fP. .IP 4. يخضع النص الموجود بعد \fB=\fP في كل تعيين متغير لتوسيع التيلدا (tilde)، وتوسيع المعلمات، واستبدال الأوامر، والتوسيع الحسابي، وإزالة الاقتباسات قبل إسناده إلى المتغير. .PP إذا لم ينتج اسم أمر، فإن تعيينات المتغيرات تؤثر على بيئة الصدفة الحالية. في حالة وجود مثل هذا الأمر (الذي يتكون فقط من جمل تعيين وإعادة توجيه)، تُنفذ جمل التعيين قبل إعادة التوجيه. خلاف ذلك، تُضاف المتغيرات إلى بيئة الأمر المُنفذ ولا تؤثر على بيئة الصدفة الحالية. إذا حاولت أي من التعيينات إسناد قيمة لمتغير للقراءة فقط، يحدث خطأ، ويخرج الأمر بحالة غير صفرية. .PP إذا لم ينتج اسم أمر، تُنفذ إعادة التوجيهات، لكنها لا تؤثر على بيئة الصدفة الحالية. يؤدي خطأ إعادة التوجيه إلى خروج الأمر بحالة غير صفرية. .PP إذا تبقى اسم أمر بعد التوسيع، يستمر التنفيذ كما هو موصوف أدناه. خلاف ذلك، يخرج الأمر. إذا احتوى أحد التوسيعات على استبدال أمر، فإن حالة خروج الأمر هي حالة خروج آخر استبدال أمر نُفذ. إذا لم توجد أي استبدالات أوامر، يخرج الأمر بحالة صفرية. .SH "تنفيذ الأوامر" بعد تقسيم الأمر إلى كلمات، إذا نتج عنه أمر بسيط وقائمة اختيارية من المعطيات، تجري الصدفة الإجراءات التالية. .PP إذا لم يحتوي اسم الأمر على شرطات مائلة، تحاول الصدفة تحديد مكانه. إذا وجدت دالة صدفة بهذا الاسم، تُستدعى تلك الدالة كما هو موصوف أعلاه في .SM \fBFUNCTIONS\fP. إذا لم يطابق الاسم أي دالة، تبحث الصدفة عنه في قائمة أوامر الصدفة المدمجة. إذا وُجد تطابق، يُستدعى ذلك الأمر المدمج. .PP إذا لم يكن الاسم دالة صدفة ولا أمرًا مدمجًا، ولم يحتوِ على شرطات مائلة، تبحث \fBbash\fP في كل عنصر من عناصر .SM \fBPATH\fP عن دليل يحتوي على ملف قابل للتنفيذ بهذا الاسم. تستخدم \fBbash\fP جدول تجزئة (hash table) لتذكر المسارات الكاملة للملفات القابلة للتنفيذ (انظر \fBhash\fP تحت .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). تجري Bash بحثًا كاملاً في أدلة .SM \fBPATH\fP فقط إذا لم يُعثر على الأمر في جدول التجزئة. إذا لم ينجح البحث، تبحث الصدفة عن دالة صدفة معرفة باسم \fBcommand_not_found_handle\fP. إذا كانت هذه الدالة موجودة، تُستدعى في بيئة تنفيذ منفصلة مع الأمر الأصلي ومعطياته كمعطيات لها، وتصبح حالة خروج الدالة هي حالة خروج تلك الصدفة الفرعية. إذا لم تكن تلك الدالة معرفة، تطبع الصدفة رسالة خطأ وتعيد حالة خروج 127. .PP إذا نجح البحث، أو إذا احتوى اسم الأمر على شرطة مائلة واحدة أو أكثر، تنفذ الصدفة البرنامج المسمى في بيئة تنفيذ منفصلة. يُضبط المعطى 0 على الاسم المعطى، وتُضبط المعطيات المتبقية للأمر على المعطيات المعطاة، إن وجدت. .PP إذا فشل هذا التنفيذ لأن الملف ليس بتنسيق قابل للتنفيذ، ولم يكن الملف دليلاً، فيُفترض أنه \fIسكربت صدفة\fP، وهو ملف يحتوي على أوامر صدفة، وتنشئ الصدفة نسخة جديدة من نفسها لتنفيذه. تحاول Bash تحديد ما إذا كان الملف ملفًا نصيًا أم ملفًا ثنائيًا، ولن تنفذ الملفات التي تحدد أنها ثنائية. تعيد هذه الصدفة الفرعية تهيئة نفسها، بحيث يكون الأثر كما لو استُدعيت صدفة جديدة للتعامل مع السكربت، باستثناء أن مواقع الأوامر التي تذكرها الأب (انظر \fBhash\fP أدناه تحت .SM \fBSHELL BUILTIN COMMANDS\fP) يحتفظ بها الابن. .PP إذا كان البرنامج ملفًا يبدأ بـ \fB#!\fP، فإن بقية السطر الأول تحدد مفسرًا للبرنامج. تنفذ الصدفة المفسر المحدد في أنظمة التشغيل التي لا تتعامل مع هذا التنسيق القابل للتنفيذ بنفسها. تتكون معطيات المفسر من معطى اختياري واحد يلي اسم المفسر في السطر الأول من البرنامج، يليه اسم البرنامج، ثم معطيات الأمر، إن وجدت. .SH "بيئة تنفيذ الأوامر" للصدفة \fIبيئة تنفيذ\fP، تتكون مما يلي: .IP \(bu الملفات المفتوحة الموروثة عن الصدفة عند الاستدعاء، كما عُدلت بواسطة إعادة التوجيهات المقدمة للأمر المدمج \fBexec\fP. .IP \(bu دليل العمل الحالي كما هو محدد بواسطة \fBcd\fP أو \fBpushd\fP أو \fBpopd\fP، أو موروث عن الصدفة عند الاستدعاء. .IP \(bu قناع وضع إنشاء الملفات كما هو محدد بواسطة \fBumask\fP أو موروث من أب الصدفة. .IP \(bu المصائد (traps) الحالية المحددة بواسطة \fBtrap\fP. .IP \(bu معلمات الصدفة التي عُينت عن طريق إسناد المتغيرات أو باستخدام \fBset\fP أو الموروثة من أب الصدفة في البيئة. .IP \(bu دوال الصدفة المعرفة أثناء التنفيذ أو الموروثة من أب الصدفة في البيئة. .IP \(bu الخيارات المُفعلة عند الاستدعاء (إما بشكل مبدئي أو بمعطيات سطر الأوامر) أو بواسطة \fBset\fP. .IP \(bu الخيارات المُفعلة بواسطة \fBshopt\fP. .IP \(bu الأسماء المستعارة للصدفة المعرفة بـ \fBalias\fP. .IP \(bu معرفات العمليات المختلفة، بما في ذلك معرفات المهام الخلفية، وقيمة \fB$$\fP، وقيمة .SM \fBPPID\fP. .PP عندما يراد تنفيذ أمر بسيط بخلاف الأوامر المدمجة أو دوال الصدفة، فإنه يُستدعى في بيئة تنفيذ منفصلة تتكون مما يلي. ما لم يُذكر خلاف ذلك، تُورث القيم من الصدفة. .IP \(bu ملفات الصدفة المفتوحة، بالإضافة إلى أي تعديلات وإضافات محددة بواسطة إعادة التوجيهات للأمر. .IP \(bu دليل العمل الحالي. .IP \(bu قناع وضع إنشاء الملفات. .IP \(bu متغيرات ودوال الصدفة المميزة للتصدير، إلى جانب المتغيرات المصدرة للأمر، والممررة في البيئة. .IP \(bu تُعاد المصائد التي التقطتها الصدفة إلى القيم الموروثة من أب الصدفة، والمصائد التي تجاهلتها الصدفة تظل مُتجاهلة. .PP لا يمكن لأمر استُدعي في هذه البيئة المنفصلة أن يؤثر على بيئة تنفيذ الصدفة. .PP الصدفة الفرعية \fIsubshell\fP هي نسخة من عملية الصدفة. .PP استبدال الأوامر، والأوامر المجمعة بالأقواس، والأوامر غير المتزامنة تُستدعى في بيئة صدفة فرعية هي نسخة مكررة من بيئة الصدفة، باستثناء أن المصائد التي التقطتها الصدفة تُعاد إلى القيم التي ورثتها الصدفة من أبها عند الاستدعاء. الأوامر المدمجة التي تُستدعى كجزء من أنبوب (pipeline)، باستثناء ربما العنصر الأخير اعتمادًا على قيمة خيار الصدفة \fBlastpipe\fP، تُنفذ أيضًا في بيئة صدفة فرعية. التغييرات التي تجرى على بيئة الصدفة الفرعية لا يمكن أن تؤثر على بيئة تنفيذ الصدفة. .PP عندما تكون الصدفة في وضع posix، ترث الصدف الفرعية التي أُنشئت لتنفيذ استبدالات الأوامر قيمة الخيار \fB\-e\fP من الصدفة الأب. عندما لا تكون في وضع posix، تمسح \fBbash\fP الخيار \fB\-e\fP في تلك الصدف الفرعية. انظر وصف خيار الصدفة \fBinherit_errexit\fP أدناه لمعرفة كيفية التحكم في هذا السلوك عندما لا تكون في وضع posix. .PP If a command is followed by a \fB&\fP and job control is not active, the default standard input for the command is the empty file .FN /dev/null . Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. .SH البيئة عند استدعاء برنامج ما، يُعطى مصفوفة من السلاسل تسمى \fIالبيئة\fP. هذه قائمة من أزواج \fIالاسم\fP\-\fIالقيمة\fP، على شكل \fIالاسم\fP=\fIالقيمة\fP. .PP توفر الصدفة عدة طرق للتلاعب بالبيئة. عند الاستدعاء، تمسح الصدفة بيئتها الخاصة وتنشئ معلمة لكل اسم تجده، وتميزه آليًا لـ \fIالتصدير\fP إلى العمليات الأبناء. ترث الأوامر المنفذة البيئة. تعدل الأوامر \fBexport\fP و \fBdeclare \-x\fP و \fBunset\fP البيئة عن طريق إضافة وحذف المعلمات والدوال. إذا عُدلت قيمة معلمة في البيئة، تصبح القيمة الجديدة آليًا جزءًا من البيئة، محل القديمة. تتكون البيئة الموروثة عن أي أمر مُنفذ من بيئة الصدفة الأولية، والتي قد تُعدل قيمها في الصدفة، ناقصًا أي أزواج أُزيلت بواسطة الأمرين \fBunset\fP أو \fBexport \-n\fP، بالإضافة إلى أي إضافات عبر الأمرين \fBexport\fP و \fBdeclare \-x\fP. .PP إذا ظهرت أي تعيينات معلمات، كما هو موصوف أعلاه في .SM \fBPARAMETERS\fP، قبل \fIأمر بسيط\fP، فإن تعيينات المتغيرات تكون جزءًا من بيئة هذا الأمر طوال فترة تنفيذه. تؤثر جمل التعيين هذه فقط على البيئة التي يراها ذلك الأمر. إذا سبقت هذه التعيينات استدعاءً لدالة صدفة، فإن المتغيرات تكون محلية للدالة وتُصدر إلى أبناء تلك الدالة. .PP إذا ضُبط الخيار \fB\-k\fP (انظر الأمر المدمج \fBset\fP أدناه)، فإن \fIجميع\fP تعيينات المعلمات توضع في بيئة الأمر، وليس فقط تلك التي تسبق اسم الأمر. .PP عندما تستدعي \fBbash\fP أمرًا خارجيًا، يُضبط المتغير \fB_\fP على المسار الكامل للأمر ويُمرر إلى ذلك الأمر في بيئته. .SH "حالة الخروج" حالة خروج الأمر المنفذ هي القيمة التي يعيدها استدعاء النظام \fIwaitpid\fP أو دالة مكافئة. تقع حالات الخروج بين 0 و 255، رغم أن الصدفة قد تستخدم قيمًا فوق 125 بشكل خاص، كما هو موضح أدناه. تقتصر حالات الخروج من أوامر الصدفة المدمجة والأوامر المركبة أيضًا على هذا النطاق. في ظروف معينة، ستستخدم الصدفة قيمًا خاصة للإشارة إلى أوضاع فشل محددة. .PP لأغراض الصدفة، فإن الأمر الذي يخرج بحالة خروج صفرية قد نجح. لذا، بينما تشير حالة الخروج الصفرية إلى النجاح، تشير حالة الخروج غير الصفرية إلى الفشل. .PP عندما ينتهي أمر بسبب إشارة قاتلة \fIN\fP، تستخدم \fBbash\fP القيمة 128+\fIN\fP كحالة خروج. .PP إذا لم يُعثر على أمر، فإن العملية الابنة التي أُنشئت لتنفيذه تعيد حالة 127. إذا وُجد الأمر ولكن لم يكن قابلاً للتنفيذ، فإن حالة الإعادة هي 126. .PP إذا فشل أمر بسبب خطأ أثناء التوسيع أو إعادة التوجيه، فإن حالة الخروج تكون أكبر من الصفر. .PP تعيد أوامر الصدفة المدمجة حالة 0 (\fIصحيح\fP) إذا نجحت، وغير ذلك (\fIخاطئ\fP) إذا حدث خطأ أثناء تنفيذها. تعيد جميع الأوامر المدمجة حالة خروج 2 للإشارة إلى الاستخدام غير الصحيح، عادةً خيارات غير صالحة أو معطيات مفقودة. .PP تتوفر حالة خروج آخر أمر في المعلمة الخاصة $?. .PP تعيد \fBbash\fP نفسها حالة خروج آخر أمر نُفذ، ما لم يحدث خطأ في بناء الجملة، وفي هذه الحالة تخرج بقيمة غير صفرية. انظر أيضًا الأمر المدمج \fBexit\fP أدناه. .SH إشارات عندما تكون \fBbash\fP تفاعلية، وفي حالة عدم وجود أي مصائد، فإنها تتجاهل .SM \fBSIGTERM\fP (حتى لا يقتل \fBkill 0\fP صدفة تفاعلية)، وتلتقط وتعالج .SM \fBSIGINT\fP (حتى يكون الأمر المدمج \fBwait\fP قابلاً للمقاطعة). عندما تستقبل \fBbash\fP الإشارة .SM \fBSIGINT\fP، فإنها تخرج من أي حلقات تنفيذ. وفي جميع الحالات، تتجاهل \fBbash\fP الإشارة .SM \fBSIGQUIT\fP. إذا كان التحكم في المهام ساري المفعول، تتجاهل \fBbash\fP الإشارات .SM \fBSIGTTIN\fP و .SM \fBSIGTTOU\fP و .SM \fBSIGTSTP\fP. .PP يعدل الأمر المدمج \fBtrap\fP معالجة الصدفة للإشارات، كما هو موصوف أدناه. .PP الأوامر غير المدمجة التي تنفذها \fBbash\fP لديها معالجات إشارات مضبوطة على القيم الموروثة من أب الصدفة، ما لم يضبطها الأمر \fBtrap\fP لتكون مُتجاهلة، وفي هذه الحالة ستتجاهلها العملية الابنة أيضًا. عندما لا يكون التحكم في المهام ساري المفعول، تتجاهل الأوامر غير المتزامنة الإشارتين .SM \fBSIGINT\fP و .SM \fBSIGQUIT\fP بالإضافة إلى هذه المعالجات الموروثة. الأوامر التي تعمل نتيجة لاستبدال الأوامر تتجاهل إشارات التحكم في المهام المولدة من لوحة المفاتيح .SM \fBSIGTTIN\fP و .SM \fBSIGTTOU\fP و .SM \fBSIGTSTP\fP. .PP تخرج الصدفة بشكل مبدئي عند استلام .SM \fBSIGHUP\fP. قبل الخروج، تعيد الصدفة التفاعلية إرسال .SM \fBSIGHUP\fP إلى جميع المهام، الجاري تنفيذها أو المتوقفة. ترسل الصدفة .SM \fBSIGCONT\fP إلى المهام المتوقفة لضمان تلقيها الإشارة .SM \fBSIGHUP\fP (انظر .SM \fBJOB CONTROL\fP أدناه لمزيد من المعلومات حول المهام الجارية والمتوقفة). لمنع الصدفة من إرسال الإشارة إلى مهمة معينة، أزلها من جدول المهام باستخدام الأمر المدمج \fBdisown\fP (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه) أو ميزها لعدم تلقي .SM \fBSIGHUP\fP باستخدام \fBdisown \-h\fP. .PP إذا ضُبط خيار الصدفة \fBhuponexit\fP باستخدام \fBshopt\fP، ترسل \fBbash\fP إشارة .SM \fBSIGHUP\fP إلى جميع المهام عند خروج صدفة ولوج تفاعلية. .PP إذا كانت \fBbash\fP تنتظر اكتمال أمر ما واستقبلت إشارة قد ضُبطت لها مصيدة، فلن تنفذ المصيدة حتى يكتمل الأمر. إذا كانت \fBbash\fP تنتظر أمرًا غير متزامن عبر الأمر المدمج \fBwait\fP، واستقبلت إشارة قد ضُبطت لها مصيدة، فسيعود الأمر المدمج \fBwait\fP فورًا بحالة خروج أكبر من 128، وتنفذ الصدفة المصيدة مباشرة بعد ذلك. .PP عندما لا يكون التحكم في المهام مُفعلًا، وتكون \fBbash\fP تنتظر اكتمال أمر في الواجهة، تستقبل الصدفة الإشارات المولدة من لوحة المفاتيح مثل .SM \fBSIGINT\fP (التي تولد عادةً عن طريق \fB\*^C\fP) التي ينوي المستخدمون عادةً إرسالها إلى ذلك الأمر. يحدث هذا لأن الصدفة والأمر يقعان في نفس مجموعة العمليات الخاصة بالطرفية، و \fB\*^C\fP يرسل .SM \fBSIGINT\fP إلى جميع العمليات في تلك المجموعة. وبما أن \fBbash\fP لا تفعل التحكم في المهام بشكل مبدئي عندما لا تكون الصدفة تفاعلية، فإن هذا السيناريو هو الأكثر شيوعًا في الصدف غير التفاعلية. .PP عندما يكون التحكم في المهام مُفعلًا، وتكون \fBbash\fP تنتظر اكتمال أمر في الواجهة، لا تستقبل الصدفة الإشارات المولدة من لوحة المفاتيح، لأنها ليست في نفس مجموعة العمليات الخاصة بالطرفية. هذا السيناريو هو الأكثر شيوعًا في الصدف التفاعلية، حيث تحاول \fBbash\fP تفعيل التحكم في المهام بشكل مبدئي. انظر .SM \fBJOB CONTROL\fP أدناه لمزيد من المعلومات حول مجموعات العمليات. .PP عندما لا يكون التحكم في المهام مُفعلًا، وتستقبل \fBbash\fP إشارة .SM \fBSIGINT\fP أثناء انتظار أمر في الواجهة، فإنها تنتظر حتى ينتهي ذلك الأمر ثم تقرر ما ستفعله بشأن الإشارة .SM \fBSIGINT\fP: .IP 1. إذا انتهى الأمر بسبب الإشارة .SM \fBSIGINT\fP، تستنتج \fBbash\fP أن المستخدم قصد إرسال .SM \fBSIGINT\fP إلى الصدفة أيضًا، وتتصرف بناءً على .SM \fBSIGINT\fP (على سبيل المثال، بتشغيل مصيدة .SM \fBSIGINT\fP، أو الخروج من صدفة غير تفاعلية، أو العودة إلى المستوى الأعلى لقراءة أمر جديد). .IP 2. إذا لم ينتهِ الأمر بسبب .SM \fBSIGINT\fP، فهذا يعني أن البرنامج عالج .SM \fBSIGINT\fP بنفسه ولم يعاملها كإشارة قاتلة. في تلك الحالة، لا تعامل \fBbash\fP الإشارة .SM \fBSIGINT\fP كإشارة قاتلة أيضًا، بل تفترض أن .SM \fBSIGINT\fP استُخدمت كجزء من عملية البرنامج العادية (على سبيل المثال، يستخدمها emacs لإحباط أوامر التحرير) أو أنه جرى التخلص منها عمدًا. ومع ذلك، ستشغل \fBbash\fP أي مصيدة ضُبطت على .SM \fBSIGINT\fP، كما تفعل مع أي إشارة أخرى مُصادة تستقبلها أثناء انتظارها اكتمال أمر الواجهة، وذلك من أجل التوافق. .PP عندما يكون التحكم في المهام مُفعلًا، لا تستقبل \fBbash\fP الإشارات المولدة من لوحة المفاتيح مثل .SM \fBSIGINT\fP أثناء انتظارها لأمر في الواجهة. لا تولي الصدفة التفاعلية اهتمامًا للإشارة .SM \fBSIGINT\fP، حتى لو انتهى أمر الواجهة نتيجة لذلك، بخلاف تدوين حالة خروجه. إذا لم تكن الصدفة تفاعلية، وانتهى أمر الواجهة بسبب .SM \fBSIGINT\fP، تتظاهر \fBbash\fP بأنها استقبلت .SM \fBSIGINT\fP بنفسها (السيناريو 1 أعلاه)، من أجل التوافق. .SH "التحكم في المهام" يشير \fIالتحكم في المهام\fP إلى القدرة على إيقاف (\fIتعليق\fP) تنفيذ العمليات انتقائيًا ومواصلة (\fIاستئناف\fP) تنفيذها في وقت لاحق. عادةً ما يستخدم المستخدم هذه الميزة عبر واجهة تفاعلية يوفرها بشكل مشترك برنامج تشغيل الطرفية في نواة نظام التشغيل و \fBbash\fP. .PP تربط الصدفة \fIمهمة\fP بكل أنبوب (pipeline). وهي تحتفظ بجدول للمهام التي يجري تنفيذها حاليًا، والذي يعرضه الأمر \fBjobs\fP. لكل مهمة \fIرقم مهمة\fP، يعرضه الأمر \fBjobs\fP بين قوسين. تبدأ أرقام المهام من 1. عندما تبدأ \fBbash\fP مهمة بشكل غير متزامن (في \fIالخلفية\fP)، تطبع سطرًا يشبه ما يلي: .RS .PP [1] 25647 .RE .PP مما يشير إلى أن هذه المهمة هي المهمة رقم 1 وأن معرف العملية لآخر عملية في الأنبوب المرتبط بهذه المهمة هو 25647. جميع العمليات في أنبوب واحد هي أعضاء في نفس المهمة. تستخدم \fBBash\fP تجريد \fIالمهمة\fP كأساس للتحكم في المهام. .PP لتسهيل تنفيذ واجهة المستخدم للتحكم في المهام، لكل عملية \fIمعرف مجموعة عمليات\fP، ويحافظ نظام التشغيل على مفهوم \fIمعرف مجموعة عمليات الطرفية الحالية\fP. يرتبط معرف مجموعة عمليات الطرفية هذا بـ \fIالطرفية المتحكمة\fP. .PP يُقال إن العمليات التي لها نفس معرف مجموعة العمليات هي جزء من نفس \fIمجموعة العمليات\fP. يتلقى أعضاء مجموعة عمليات \fIالواجهة\fP (العمليات التي يتساوى معرف مجموعة عملياتها مع معرف مجموعة عمليات الطرفية الحالية) الإشارات المولدة من لوحة المفاتيح مثل .SM \fBSIGINT\fP. يُقال إن العمليات في مجموعة عمليات الواجهة هي عمليات \fIواجهة\fP. عمليات \fIالخلفية\fP هي تلك التي يختلف معرف مجموعة عملياتها عن معرف مجموعة عمليات الطرفية المتحكمة؛ مثل هذه العمليات تكون محصنة ضد الإشارات المولدة من لوحة المفاتيح. يُسمح فقط لعمليات الواجهة بالقراءة من الطرفية المتحكمة أو، إذا حدد المستخدم ذلك بـ .Q "stty tostop" , الكتابة إليها. يرسل النظام إشارة .SM \fBSIGTTIN (SIGTTOU)\fP إلى عمليات الخلفية التي تحاول القراءة من الطرفية (أو الكتابة إليها عندما .Q tostop يكون قيد المفعول)، والتي تؤدي إلى تعليق العملية ما لم يجرِ التقاطها. .PP إذا كان نظام التشغيل الذي تعمل عليه \fBbash\fP يدعم التحكم في المهام، فإن \fBbash\fP تحتوي على تسهيلات لاستخدامه. إن كتابة محرف \fIالتعليق\fP (عادةً \fB\*^Z\fP، Control\-Z) أثناء تشغيل العملية يوقف تلك العملية ويعيد التحكم إلى \fBbash\fP. كتابة محرف \fIالتعليق المؤجل\fP (عادةً \fB\*^Y\fP، Control\-Y) تؤدي إلى إيقاف العملية عندما تحاول قراءة مدخلات من الطرفية، وتعيد التحكم إلى \fBbash\fP. يقوم المستخدم بعد ذلك بالتلاعب بحالة هذه المهمة، باستخدام الأمر \fBbg\fP لمواصلتها في الخلفية، أو الأمر \fBfg\fP لمواصلتها في الواجهة، أو الأمر \fBkill\fP لقتلها. يسري مفعول محرف التعليق فورًا، وله أثر جانبي إضافي يتمثل في التخلص من أي مخرجات معلقة أو كتابة مسبقة. لإجبار عملية خلفية على التوقف، أو إيقاف عملية غير مرتبطة بجلسة الطرفية الحالية، أرسل إليها إشارة .SM \fBSIGSTOP\fP باستخدام \fBkill\fP. .PP هناك عدد من الطرق للإشارة إلى مهمة في الصدفة. يستهل المحرف \fB%\fP مواصفة المهمة (jobspec). .PP يمكن الإشارة إلى المهمة رقم \fIn\fP بـ \fB%n\fP. يمكن أيضًا الإشارة إلى المهمة باستخدام بادئة الاسم المستخدم لبدئها، أو باستخدام سلسلة فرعية تظهر في سطر أوامرها. على سبيل المثال، \fB%ce\fP تشير إلى مهمة يبدأ اسم أمرها بـ \fBce\fP. ومن ناحية أخرى، فإن استخدام \fB%?ce\fP يشير إلى أي مهمة تحتوي سطر أوامرها على السلسلة \fBce\fP. إذا طابقت البادئة أو السلسلة الفرعية أكثر من مهمة واحدة، فستبلغ \fBbash\fP عن خطأ. .PP يشير الرمزان \fB%%\fP و \fB%+\fP إلى مفهوم الصدفة عن \fIالمهمة الحالية\fP. كما يشير رمز % بمفرده (بدون مواصفة مهمة مرافقة) أيضًا إلى المهمة الحالية. ويشير \fB%\-\fP إلى \fIالمهمة السابقة\fP. عندما تبدأ مهمة في الخلفية، أو تتوقف مهمة أثناء وجودها في الواجهة، أو تُستأنف مهمة في الخلفية، فإنها تصبح المهمة الحالية. وتصبح المهمة التي كانت هي المهمة الحالية هي المهمة السابقة. وعندما تنتهي المهمة الحالية، تصبح المهمة السابقة هي المهمة الحالية. إذا لم توجد سوى مهمة واحدة، فيمكن استخدام كل من \fB%+\fP و \fB%\-\fP للإشارة إلى تلك المهمة. في المخرجات المتعلقة بالمهام (على سبيل المثال، مخرجات الأمر \fBjobs\fP)، تُميز المهمة الحالية دائمًا بعلامة \fB+\fP، والمهمة السابقة بعلامة \fB\-\fP. .PP مجرد تسمية المهمة يمكن أن يُستخدم لجلبها إلى الواجهة: \fB%1\fP هو مرادف لـ .Q "fg %1" , جلب المهمة 1 من الخلفية إلى الواجهة. وبالمثل، .Q "%1 &" يستأنف المهمة 1 في الخلفية، وهو ما يعادل .Q "bg %1" . .PP تتعلم الصدفة فورًا متى تغيرت حالة المهمة. عادةً، تنتظر \fBbash\fP حتى يحين موعد طباعة المحث قبل إخطار المستخدم بالتغييرات في حالة المهمة حتى لا تقاطع أي مخرجات أخرى، رغم أنها ستخطر بالتغييرات في حالة المهمة بعد اكتمال أمر الواجهة في قائمة، قبل تنفيذ الأمر التالي في القائمة. إذا فُعل الخيار \fB\-b\fP للأمر المدمج \fBset\fP، تبلغ \fBbash\fP عن تغييرات الحالة فورًا. تنفذ \fBBash\fP أي مصيدة على .SM \fBSIGCHLD\fP لكل ابن ينتهي. .PP عندما تنتهي مهمة وتخطر \fBbash\fP المستخدم بذلك، تزيل \fBbash\fP المهمة من الجدول. لن تظهر في مخرجات \fBjobs\fP، لكن \fBwait\fP سيبلغ عن حالة خروجها، طالما أنه زُوّد بمعرف العملية المرتبط بالمهمة كمعطى. عندما يفرغ الجدول، تبدأ أرقام المهام مرة أخرى من 1. .PP إذا حاول مستخدم الخروج من \fBbash\fP بينما توجد مهام متوقفة (أو جارية، إذا فُعل خيار الصدفة \fBcheckjobs\fP باستخدام الأمر المدمج \fBshopt\fP)، تطبع الصدفة رسالة تحذير، وتدرج المهام وحالاتها إذا كان خيار \fBcheckjobs\fP مُفعلًا. يمكن حينئذٍ استخدام الأمر \fBjobs\fP لفحص حالتها. إذا حاول المستخدم الخروج مرة أخرى مباشرة، دون أمر فاصل، فلن تطبع \fBbash\fP تحذيرًا آخر، وتنهي أي مهام متوقفة. .PP عندما تكون الصدفة بانتظار مهمة أو عملية باستخدام الأمر المدمج \fBwait\fP، وكان التحكم في المهام مُفعلًا، فسيعود \fBwait\fP عندما تتغير حالة المهمة. يؤدي الخيار \fB\-f\fP إلى جعل \fBwait\fP ينتظر حتى تنتهي المهمة أو العملية قبل العودة. .SH المحث عند التنفيذ التفاعلي، تعرض \fBbash\fP المحث الرئيس .SM \fBPS1\fP عندما تكون مستعدة لقراءة أمر، والمحث الثانوي .SM \fBPS2\fP عندما تحتاج إلى مزيد من المدخلات لإكمال الأمر. .PP تفحص \fBBash\fP قيمة متغير المصفوفة \fBPROMPT_COMMAND\fP قبل طباعة كل محث رئيس مباشرة. إذا عُينت أي عناصر في \fBPROMPT_COMMAND\fP وكانت غير فارغة، تنفذ Bash كل قيمة، بالترتيب الرقمي، تمامًا كما لو كُتبت على سطر الأوامر. تعرض \fBBash\fP القيمة .SM \fBPS0\fP بعد قراءة الأمر وقبل تنفيذه. .PP تعرض \fBBash\fP القيمة .SM \fBPS4\fP كما هو موصوف أعلاه قبل تتبع كل أمر عندما يكون الخيار \fB\-x\fP مُفعلًا. .PP تسمح \fBBash\fP بتخصيص سلاسل المحث \fBPS0\fP و \fBPS1\fP و \fBPS2\fP و \fBPS4\fP عن طريق إدراج عدد من المحارف الخاصة المسبوقة بشرطة مائلة خلفية والتي يُفك ترميزها كما يلي: .RS .TP \fB\ea\fP محرف جرس ASCII‏ (07). .PD 0 .TP \fB\ed\fP التاريخ بتنسيق .Q "Weekday Month Date" (على سبيل المثال، .Q "Tue May 26" ). .TP \fB\eD{\fP\fIتنسيق\fP\fB}\fP يُمرر \fIتنسيق\fP إلى \fIstrftime\fP(3) وتُدرج النتيجة في سلسلة المحث؛ يؤدي التنسيق الفارغ إلى تمثيل وقت خاص بالإعدادات المحلية. الأقواس مطلوبة. .TP \fB\ee\fP محرف هروب ASCII‏ (033). .TP \fB\eh\fP اسم المضيف حتى الأول .Q . . .TP \fB\eH\fP اسم المضيف. .TP \fB\ej\fP عدد المهام التي تديرها الصدفة حاليًا. .TP \fB\el\fP الاسم الأساسي لاسم جهاز طرفية الصدفة (على سبيل المثال، .Q ttys0 ). .TP \fB\en\fP سطر جديد. .TP \fB\er\fP رجوع بدايه السطر. .TP \fB\es\fP اسم الصدفة: الاسم الأساسي لـ \fB$0\fP (الجزء الذي يلي الشرطة المائلة الأخيرة). .TP \fB\et\fP الوقت الحالي بتنسيق 24 ساعة HH:MM:SS. .TP \fB\eT\fP الوقت الحالي بتنسيق 12 ساعة HH:MM:SS. .TP \fB\e@\fP الوقت الحالي بتنسيق 12 ساعة ص/م. .TP \fB\eA\fP الوقت الحالي بتنسيق 24 ساعة HH:MM. .TP \fB\eu\fP اسم المستخدم للمستخدم الحالي. .TP \fB\ev\fP إصدار \fBbash\fP (على سبيل المثال، 2.00). .TP \fB\eV\fP إصدار \fBbash\fP، النسخة + مستوى الترقيع (على سبيل المثال، 2.00.0) .TP \fB\ew\fP قيمة متغير الصدفة \fBPWD\fP (أي \fB$PWD\fP)، مع اختصار .SM \fB$HOME\fP بتيلدا (يستخدم قيمة متغير .SM \fBPROMPT_DIRTRIM\fP). .TP \fB\eW\fP الاسم الأساسي لـ \fB$PWD\fP، مع اختصار .SM \fB$HOME\fP بتيلدا. .TP \fB\e!\fP رقم التأريخ لهذا الأمر. .TP \fB\e#\fP رقم الأمر لهذا الأمر. .TP \fB\e$\fP إذا كان معرف المستخدم (UID) الفعلي هو 0، فستكون العلامة \fB#\fP، وإلا فستكون \fB$\fP. .TP \fB\e\fP\fInnn\fP المحرف المقابل للرقم الثماني \fInnn\fP. .TP \fB\e\e\fP شرطة مائلة عكسية. .TP \fB\e[\fP يبدأ تسلسلًا من المحارف غير القابلة للطباعة، والتي يمكن استخدامها لدمج تسلسل تحكم للطرفية داخل المحث. .TP \fB\e]\fP ينهي تسلسلًا من المحارف غير القابلة للطباعة. .PD .RE .PP عادةً ما يختلف رقم الأمر عن رقم التأريخ: رقم تأريخ الأمر هو موضعه في قائمة التأريخ، والتي قد تتضمن أوامر استُرجعت من ملف التأريخ (انظر .SM \fBHISTORY\fP أدناه)، بينما رقم الأمر هو موضعه في تسلسل الأوامر المنفذة خلال جلسة الصدفة الحالية. بعد فك ترميز السلسلة، تُوسّع عبر توسيع المعاملات، واستبدال الأوامر، والتوسيع الحسابي، وإزالة الاقتباس، وذلك وفقًا لقيمة خيار الصدفة \fBpromptvars\fP (انظر وصف الأمر \fBshopt\fP تحت .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). قد يؤدي هذا إلى آثار جانبية غير مرغوب فيها إذا ظهرت أجزاء مهربة من السلسلة داخل استبدال الأوامر أو احتوت على محارف خاصة بتوسيع الكلمات. .SH READLINE هذه هي المكتبة التي تتولى قراءة المدخلات عند استخدام صدفة تفاعلية، ما لم يُزود خيار \fB\-\-noediting\fP عند استدعاء الصدفة. يُستخدم تحرير السطور أيضًا عند استخدام الخيار \fB\-e\fP مع أمر \fBread\fP المدمج. الأوامر المبدئية لتحرير السطور تشبه أوامر emacs؛ كما تتوفر واجهة تحرير سطور بأسلوب vi. يمكن تفعيل تحرير السطور في أي وقت باستخدام الخيارين \fB\-o emacs\fP أو \fB\-o vi\fP للأمر المدمج \fBset\fP (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). لإيقاف تحرير السطور بعد تشغيل الصدفة، استخدم الخيارين \fB+o emacs\fP أو \fB+o vi\fP للأمر المدمج \fBset\fP. .SS "تمثيل Readline" يستخدم هذا القسم مفاهيم التحرير بأسلوب Emacs وتمثيله لضربات المفاتيح. يُرمز لمفاتيح التحكم بـ C\-\fIkey\fP، فعلى سبيل المثال، C\-n تعني Control\-N. وبالمثل، يُرمز لمفاتيح \fImeta\fP بـ M\-\fIkey\fP، لذا M\-x تعني Meta\-X. غالبًا ما يُسمى مفتاح Meta بـ .Q Alt أو .Q Option . .PP في لوحات المفاتيح التي لا تحتوي على مفتاح \fIMeta\fP، تعني M\-\fIx\fP الضغط على ESC \fIx\fP، أي اضغط ثم حرر مفتاح Escape، ثم اضغط وحرر مفتاح \fIx\fP، بالتسلسل. هذا يجعل ESC هو \fIبادئة meta\fP. والجمع M\-C\-\fIx\fP يعني ESC Control\-\fIx\fP: اضغط ثم حرر مفتاح Escape، ثم اضغط مع الاستمرار على مفتاح Control أثناء الضغط على مفتاح \fIx\fP، ثم حررهما معًا. .PP في بعض لوحات المفاتيح، ينتج مغير مفتاح Meta محارف مع تعيين البت الثامن (0200). يمكنك استخدام المتغير \fBenable\-meta\-key\fP للتحكم في القيام بذلك من عدمه، إذا كانت لوحة المفاتيح تسمح بذلك. وفي كثير من الحالات الأخرى، تقوم الطرفية أو محاكي الطرفية بتحويل المفتاح المغير بـ meta إلى تسلسل مفاتيح يبدأ بـ ESC كما هو موضح في الفقرة السابقة. .PP إذا كان مفتاح \fIMeta\fP لديك ينتج تسلسل مفاتيح ببادئة ESC meta، يمكنك جعل ارتباطات المفاتيح M\-\fIkey\fP التي تحددها (انظر \fBReadline Key Bindings\fP أدناه) تقوم بنفس الشيء عن طريق ضبط المتغير \fBforce\-meta\-prefix\fP. .PP يمكن إعطاء أوامر \fBReadline\fP \fIوسائط\fP رقمية، والتي تعمل عادةً كعداد تكرار. ومع ذلك، تكون إشارة الوسيط أحيانًا هي المؤثرة. تمرير وسيط سالب لأمر يعمل في الاتجاه الأمامي (مثل \fBkill\-line\fP) يجعل ذلك الأمر يعمل في الاتجاه الخلفي. الأوامر التي ينحرف سلوكها مع الوسائط عن هذا موضحة أدناه. .PP تُسمى \fIالنقطة\fP بموضع المؤشر الحالي، وتُشير \fIالعلامة\fP إلى موضع مؤشر محفوظ. يُشار إلى النص بين النقطة والعلامة باسم \fIالمنطقة\fP. لدى \fBReadline\fP مفهوم \fIالمنطقة النشطة\fP: عندما تكون المنطقة نشطة، يقوم \fBreadline\fP بإعادة العرض مع تمييز المنطقة باستخدام قيمة المتغير \fBactive\-region\-start\-color\fP. يقوم المتغير \fBenable\-active\-region\fP بتشغيل هذا أو إيقافه. تقوم أوامر عدة بضبط المنطقة لتكون نشطة؛ وتلك الأوامر موضحة أدناه. .PP عندما يوصف أمر بأنه يقوم بـ \fIقتل\fP نص، فإن النص المحذوف يُحفظ لاسترجاعه المحتمل مستقبلاً (\fIالنتر\fP). يُحفظ النص المقتول في \fIحلقة قتل\fP. تجمع عمليات القتل المتتالية النص المحذوف في وحدة واحدة، والتي يمكن نترها دفعة واحدة. الأوامر التي لا تقتل النص تفصل بين كتل النص في حلقة القتل. .SS "تهيِئة Readline" \fBReadline\fP is customized by putting commands in an initialization file (the \fIinputrc\fP file). The name of this file is taken from the value of the .SM \fB\%INPUTRC\fP shell variable. If that variable is unset, the default is .FN \*~/.inputrc . If that file does not exist or cannot be read, \fBreadline\fP looks for .FN /etc/inputrc . When a program that uses the \fBreadline\fP library starts up, \fBreadline\fP reads the initialization file and sets the key bindings and variables found there, before reading any user input. .PP لا يُسمح إلا ببضعة تراكيب أساسية في ملف inputrc. تُتجاهل الأسطر الفارغة. الأسطر التي تبدأ بـ \fB#\fP هي تعليقات. الأسطر التي تبدأ بـ \fB$\fP تشير إلى تراكيب شرطية. الأسطر الأخرى تدل على ارتباطات المفاتيح وإعدادات المتغيرات. .PP يمكن تغيير ارتباطات المفاتيح المبدئية في هذا القسم باستخدام أوامر ارتباط المفاتيح في ملف \fIinputrc\fP. البرامج التي تستخدم مكتبة \fBreadline\fP، بما في ذلك \fBbash\fP، قد تضيف أوامرها وارتباطاتها الخاصة. .PP على سبيل المثال، وضع .RS .PP M\-Control\-u: universal\-argument .RE أو .RS C\-Meta\-u: universal\-argument .RE .LP داخل \fIinputrc\fP سيجعل M\-C\-u ينفذ أمر \fBreadline\fP المسمى \fIuniversal\-argument\fP. .PP قد تحتوي ارتباطات المفاتيح على أسماء المحارف الرمزية التالية: \fIDEL\fP، و\fIESC\fP، و\fIESCAPE\fP، و\fILFD\fP، و\fINEWLINE\fP، و\fIRET\fP، و\fIRETURN\fP، و\fIRUBOUT\fP (مفتاح رجوع حذف)، و\fISPACE\fP، و\fISPC\fP، و\fITAB\fP. .PP بالإضافة إلى أسماء الأوامر، يسمح \fBreadline\fP بربط المفاتيح بسلسلة نصوص تُدرج عند الضغط على المفتاح (\fImacro\fP). الفرق بين الماكرو والأمر هو أن الماكرو يكون محاطًا بعلامات اقتباس فردية أو مزدوجة. .SS "ارتباطات مفاتيح Readline" بنية التحكم في ارتباطات المفاتيح في ملف \fIinputrc\fP بسيطة. كل ما هو مطلوب هو اسم الأمر أو نص الماكرو وتسلسل المفاتيح الذي يجب ربطه به. يمكن تحديد تسلسل المفاتيح بإحدى طريقتين: كاسم مفتاح رمزي، ربما مع بادئات \fIMeta\-\fP أو \fIControl\-\fP، أو كتسلسل مفاتيح يتكون من محرف واحد أو أكثر محاطة بعلامات اقتباس مزدوجة. يُفصل بين تسلسل المفاتيح والاسم بنقطتين. لا يمكن وجود مسافات بيضاء بين الاسم والنقطتين. .PP عند استخدام الصيغة \fBkeyname\fP:\^\fIfunction\-name\fP أو \fImacro\fP، فإن \fIkeyname\fP هو اسم المفتاح مكتوبًا بالإنجليزية. على سبيل المثال: .PP .RS .EX .nf Control\-u: universal\-argument Meta\-Rubout: backward\-kill\-word Control\-o: \*"> output\*" .fi .EE .RE .LP في المثال أعلاه، رُبط \fIC\-u\fP بالدالة \fBuniversal\-argument\fP، ورُبط \fIM\-DEL\fP بالدالة \fBbackward\-kill\-word\fP، ورُبط \fIC\-o\fP لتشغيل الماكرو المعبر عنه في الجانب الأيمن (أي لإدراج النص .Q "> output" داخل السطر). .PP في الصيغة الثانية، \fB\*"keyseq\*"\fP:\^\fIfunction\-name\fP أو \fImacro\fP، يختلف \fBkeyseq\fP عن \fBkeyname\fP أعلاه في أنه يمكن تحديد سلاسل تدل على تسلسل مفاتيح كامل بوضع التسلسل داخل علامات اقتباس مزدوجة. يمكن استخدام بعض مهربات المفاتيح بأسلوب GNU Emacs، كما في المثال التالي، ولكن لا يتم التعرف على أي من أسماء المحارف الرمزية. .PP .RS .EX .nf \*"\eC\-u\*": universal\-argument \*"\eC\-x\eC\-r\*": re\-read\-init\-file \*"\ee[11\*~\*": \*"Function Key 1\*" .fi .EE .RE .PP في هذا المثال، رُبط \fIC\-u\fP مجددًا بالدالة \fBuniversal\-argument\fP. ورُبط \fIC\-x C\-r\fP بالدالة \fBre\-read\-init\-file\fP، ورُبط \fIESC [ 1 1 \*~\fP لإدراج النص .Q "Function Key 1" . .PP المجموعة الكاملة من تسلسلات الهروب بأسلوب GNU Emacs المتاحة عند تحديد تسلسلات المفاتيح هي .RS .PD 0 .TP \fB\eC\-\fP بادئة تحكم. .TP \fB\eM\-\fP إضافة بادئة meta أو تحويل المحرف التالي إلى محرف meta، كما هو موضح أدناه تحت \fBforce\-meta\-prefix\fP. .TP \fB\ee\fP محرف هروب. .TP \fB\e\e\fP شرطة مائلة عكسية. .TP \fB\e\*"\fP حرفياً \*"، علامة اقتباس مزدوجة. .TP \fB\e\*'\fP حرفياً \*'، علامة اقتباس مفردة. .RE .PD .PP بالإضافة إلى تسلسلات الهروب بأسلوب GNU Emacs، تتوفر مجموعة ثانية من مهربات الشرطة المائلة العكسية: .RS .PD 0 .TP \fB\ea\fP تنبيه (جرس) .TP \fB\eb\fP backspace .TP \fB\ed\fP delete .TP \fB\ef\fP تغذية الصفحة .TP \fB\en\fP newline .TP \fB\er\fP رجوع العربة .TP \fB\et\fP جدولة أفقية .TP \fB\ev\fP علامة جدولة عمودية .TP \fB\e\fP\fInnn\fP المحرف ذو الثماني بتات الذي قيمته هي القيمة الثمانية \fInnn\fP (من رقم إلى ثلاثة أرقام). .TP \fB\ex\fP\fIHH\fP المحرف المكون من ثمانية بتات والذي قيمته هي القيمة الست عشرية \fIHH\fP (رقم أو رقمان ست عشريان). .RE .PD .PP عند إدخال نص الماكرو، يجب استخدام علامات اقتباس مفردة أو مزدوجة للإشارة إلى تعريف الماكرو. يُفترض أن النص غير المقتبس هو اسم دالة. تُوسّع مهربات الشرطة المائلة العكسية الموضحة أعلاه في متن الماكرو. تقوم الشرطة المائلة العكسية بإسكار أي محرف آخر في نص الماكرو، بما في ذلك \*" و \*'. .PP ستعرض \fBBash\fP أو تعدل ارتباطات مفاتيح \fBreadline\fP الحالية باستخدام الأمر المدمج \fBbind\fP. الخيارات \fB\-o emacs\fP أو \fB\-o vi\fP للأمر المدمج \fBset\fP (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه) تغير وضع التحرير أثناء الاستخدام التفاعلي. .SS "متغيرات Readline" لدى \fBReadline\fP متغيرات يمكن استخدامها لمزيد من تخصيص سلوكها. يمكن ضبط متغير في ملف \fIinputrc\fP بعبارة على الصيغة .RS .PP \fBset\fP \fIvariable\-name\fP \fIvalue\fP .RE أو باستخدام الأمر المدمج \fBbind\fP (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). .PP باستثناء ما هو ملاحظ، يمكن لمتغيرات \fBreadline\fP أن تأخذ القيم \fBOn\fP أو \fBOff\fP (بغض النظر عن حالة الأحرف). تُتجاهل أسماء المتغيرات غير المعترف بها. عندما يقرأ \fBreadline\fP قيمة متغير، فإن القيم الفارغة أو الصفرية، .Q on (غير حساسة لحالة الأحرف)، و .Q 1 تكافئ \fBOn\fP. جميع القيم الأخرى تكافئ \fBOff\fP. .PP يسرد الأمر \fBbind \-V\fP أسماء وقيم متغيرات \fBreadline\fP الحالية (انظر .SM \fBSHELL BUILTIN COMMANDS\fP أدناه). .PP المتغيرات وقيمها المبدئية هي: .PP .PD 0 .TP \fBactive\-region\-start\-color\fP متغير سلسلة نصية يتحكم في لون النص والخلفية عند عرض النص في المنطقة النشطة (انظر وصف \fBenable\-active\-region\fP أدناه). يجب ألا تشغل هذه السلسلة أي مواضع محارف فعلية على الشاشة، لذا يجب أن تتكون فقط من تسلسلات هروب الطرفية. تُخرّج إلى الطرفية قبل عرض النص في المنطقة النشطة. يُعاد تعيين هذا المتغير إلى القيمة المبدئية كلما تغير نوع الطرفية. القيمة المبدئية هي السلسلة التي تضع الطرفية في وضع البروز (standout)، كما هو مستمد من وصف terminfo الخاص بالطرفية. قد تكون القيمة النموذجية هي .Q \ee[01;33m . .TP \fBactive\-region\-end\-color\fP متغير سلسلة نصية .Q undoes تأثيرات \fBactive\-region\-start\-color\fP ويستعيد .Q normal مظهر عرض الطرفية بعد عرض النص في المنطقة النشطة. يجب ألا تشغل هذه السلسلة أي مواضع محارف فعلية على الشاشة، لذا يجب أن تتكون فقط من تسلسلات هروب الطرفية. تُخرّج إلى الطرفية بعد عرض النص في المنطقة النشطة. يُعاد تعيين هذا المتغير إلى القيمة المبدئية كلما تغير نوع الطرفية. القيمة المبدئية هي السلسلة التي تستعيد الطرفية من وضع البروز (standout)، كما هو مستمد من وصف terminfo الخاص بالطرفية. قد تكون القيمة النموذجية هي .Q \ee[0m . .TP \fBbell\-style (audible)\fP يتحكم فيما يحدث عندما يريد \fBreadline\fP رنين جرس الطرفية. إذا ضُبط على \fBnone\fP، فلن يرن \fBreadline\fP الجرس أبدًا. وإذا ضُبط على \fBvisible\fP، سيستخدم \fBreadline\fP جرسًا مرئيًا إذا كان متاحًا. وإذا ضُبط على \fBaudible\fP، سيحاول \fBreadline\fP رنين جرس الطرفية. .TP \fBbind\-tty\-special\-chars (On)\fP إذا ضُبط على \fBOn\fP، سيحاول \fBreadline\fP ربط محارف التحكم التي تُعامل بشكل خاص من قبل برنامج تشغيل طرفية النواة بمكافئاتها في \fBreadline\fP. هذه الارتباطات تتجاوز ارتباطات \fBreadline\fP المبدئية الموصوفة هنا. اكتب .Q "stty \-a" عند محث \fBbash\fP لرؤية إعدادات الطرفية الحالية، بما في ذلك محارف التحكم الخاصة (عادةً \fBcchars\fP). .TP \fBblink\-matching\-paren (Off)\fP إذا ضُبط على \fBOn\fP، سيحاول \fBreadline\fP تحريك المؤشر لفترة وجيزة إلى قوس فتح عند إدراج قوس إغلاق. .TP \fBcolored\-completion\-prefix (Off)\fP إذا ضُبط على \fBOn\fP، فعند سرد الإكمال، سيعرض \fBreadline\fP البادئة المشتركة لمجموعة الإكمالات الممكنة باستخدام لون مختلف. تُؤخذ تعريفات الألوان من قيمة متغير البيئة \fBLS_COLORS\fP. إذا وجد تعريف لون في \fB$LS_COLORS\fP للاحقة المخصصة .Q .readline-colored-completion-prefix , سيستخدم \fBreadline\fP هذا اللون للبادئة المشتركة بدلاً من اللون المبدئي. .TP \fBcolored\-stats (Off)\fP .\" Tucking multiple macro calls into a paragraph tag requires some .\" finesse. We require `\c`, and while the single-font macros don't .\" honor input trap continuation, the font alternation macros do. إذا ضُبط على \fBOn\fP، سيعرض \fBreadline\fP الإكمالات الممكنة باستخدام ألوان مختلفة للإشارة إلى نوع الملف. تُؤخذ تعريفات الألوان من قيمة متغير البيئة \fBLS_COLORS\fP. .TP \fBcomment\-begin\ (\fP .Q \fB#\fP \fB)\fP السلسلة التي يدرجها أمر \fBinsert\-comment\fP في \fBreadline\fP. هذا الأمر مرتبط بـ \fBM\-#\fP في وضع emacs وبالرمز \fB#\fP في وضع أوامر vi. .TP \fBcompletion\-display\-width (\-1)\fP عدد أعمدة الشاشة المستخدمة لعرض التطابقات الممكنة عند إجراء الإكمال. تُتجاهل القيمة إذا كانت أقل من 0 أو أكبر من عرض شاشة الطرفية. القيمة 0 تؤدي لعرض التطابقات واحداً في كل سطر. القيمة المبدئية هي \-1. .TP \fBcompletion\-ignore\-case (Off)\fP إذا ضُبط على \fBOn\fP، سيقوم \fBreadline\fP بمطابقة وإكمال أسماء الملفات بأسلوب غير حساس لحالة الأحرف. .TP \fBcompletion\-map\-case (Off)\fP إذا ضُبط على \fBOn\fP، وكان \fBcompletion\-ignore\-case\fP مفعلًا، سيعامل \fBreadline\fP الشرطات (\fI\-\fP) والشرطات السفلية (\fI_\fP) على أنها متكافئة عند إجراء مطابقة وإكمال أسماء الملفات بشكل غير حساس لحالة الأحرف. .TP \fBcompletion\-prefix\-display\-length (0)\fP الحد الأقصى لطول البادئة المشتركة (بالمحارف) لقائمة الإكمالات الممكنة التي تُعرض دون تعديل. عند ضبطها على قيمة أكبر من الصفر، يستبدل \fBreadline\fP البادئات المشتركة الأطول من هذه القيمة بعلامة حذف (...) عند عرض الإكمالات الممكنة. إذا كان الإكمال يبدأ بنقطة، وكان \fBreadline\fP يكمل أسماء الملفات، فإنه يستخدم ثلاث شرطات سفلية بدلاً من علامة الحذف. .TP \fBcompletion\-query\-items (100)\fP يحدد هذا متى يُسأل المستخدم عن رغبته في عرض عدد الإكمالات الممكنة التي ولدها أمر \fBpossible\-completions\fP. يمكن ضبطه على أي قيمة صحيحة أكبر من أو تساوي الصفر. إذا كان عدد الإكمالات الممكنة أكبر من أو يساوي قيمة هذا المتغير، يسأل \fBreadline\fP عما إذا كان المستخدم يرغب في عرضها أم لا؛ وإلا فإن \fBreadline\fP يسردها ببساطة على الطرفية. القيمة صفر تعني ألا يسأل \fBreadline\fP أبداً؛ وتُعامل القيم السالبة كصفر. .TP \fBconvert\-meta (On)\fP إذا ضُبط على \fBOn\fP، سيقوم \fBreadline\fP بتحويل المحارف التي يقرؤها ولديها البت الثامن معينًا إلى تسلسل مفاتيح ASCII عن طريق مسح البت الثامن وإضافته كلاحقة لمحرف هروب (تحويل المحرف ليكون له بادئة meta). القيمة المبدئية هي \fIOn\fP، ولكن \fBreadline\fP يضبطها على \fIOff\fP إذا كانت الإعدادات المحلية تحتوي على محارف قد تتضمن ترميزاتها بايتات مع تعيين البت الثامن. يعتمد هذا المتغير على فئة الإعدادات المحلية \fBLC_CTYPE\fP، وقد يتغير إذا تغيرت الإعدادات المحلية. يؤثر هذا المتغير أيضاً على ارتباطات المفاتيح؛ انظر وصف \fBforce\-meta\-prefix\fP أدناه. .TP \fBdisable\-completion (Off)\fP إذا ضُبط على \fBOn\fP، سيعطل \fBreadline\fP إكمال الكلمات. ستُدرج محارف الإكمال في السطر كما لو كانت قد رُبطت بـ \fBself\-insert\fP. .TP \fBecho\-control\-characters (On)\fP عند ضبطه على \fBOn\fP، في أنظمة التشغيل التي تشير إلى دعمها لذلك، سيقوم \fBreadline\fP بترجيع محرف مقابل لإشارة تم توليدها من لوحة المفاتيح. .TP \fBediting\-mode (emacs)\fP يتحكم في ما إذا كان \fBreadline\fP يستخدم مجموعة من ارتباطات المفاتيح تشبه \fIEmacs\fP أو \fIvi\fP. يمكن ضبط \fBediting\-mode\fP على \fBemacs\fP أو \fBvi\fP. .TP \fBemacs\-mode\-string (@)\fP إذا كان المتغير \fIshow\-mode\-in\-prompt\fP مفعلاً، فستُعرض هذه السلسلة مباشرةً قبل السطر الأخير من المحث الرئيس عندما يكون وضع تحرير emacs نشطاً. تُوسع القيمة مثل ارتباط مفاتيح، لذا تتوفر المجموعة القياسية من بادئات meta و control وتسلسلات هروب الشرطة المائلة العكسية. المهربات \e1 و \e2 تبدأ وتنهي تسلسلات من المحارف غير القابلة للطباعة، والتي يمكن استخدامها لدمج تسلسل تحكم للطرفية داخل سلسلة الوضع. .TP \fBenable\-active\-region (On)\fP عند ضبط هذا المتغير على \fIOn\fP، يسمح \fBreadline\fP لأوامر معينة بتعيين المنطقة على أنها \fIنشطة\fP. عندما تكون المنطقة نشطة، يقوم \fBreadline\fP بتمييز النص في المنطقة باستخدام قيمة المتغير \fBactive\-region\-start\-color\fP، والتي تكون مبدئياً هي السلسلة التي تفعل وضع البروز (standout) للطرفية. تعرض المنطقة النشطة النص المدرج بواسطة الإلصاق بين أقواس (bracketed\-paste) وأي نص مطابق عُثر عليه بواسطة عمليات بحث التأريخ التزايدية وغير التزايدية. .TP \fBenable\-bracketed\-paste (On)\fP عند ضبطه على \fBOn\fP، يقوم \fBreadline\fP بضبط الطرفية لإدراج كل عملية إلصاق في مخزن التحرير كسلسلة واحدة من المحارف، بدلاً من معاملة كل محرف وكأنه قُرئ من لوحة المفاتيح. يسمى هذا \fIوضع الإلصاق بين أقواس\fP؛ وهو يمنع \fBreadline\fP من تنفيذ أي أوامر تحرير مرتبطة بتسلسلات مفاتيح تظهر في النص الملصق. .TP \fBenable\-keypad (Off)\fP عند ضبطه على \fBOn\fP، يحاول \fBreadline\fP تفعيل لوحة مفاتيح التطبيق عند استدعائه. تحتاج بعض الأنظمة لهذا لتفعيل مفاتيح الأسهم. .TP \fBenable\-meta\-key (On)\fP عند ضبطه على \fBOn\fP، يحاول \fBreadline\fP تفعيل أي مفتاح مغير meta تدعي الطرفية دعمه. في كثير من الطرفيات، يُستخدم مفتاح Meta لإرسال محارف ذات ثمانية بتات؛ يتحقق هذا المتغير من قدرة الطرفية التي تشير إلى أن الطرفية يمكنها تفعيل وتعطيل وضع يضبط البت الثامن للمحرف (0200) إذا كان مفتاح Meta مضغوطاً عند كتابة المحرف (محرف meta). .TP \fBexpand\-tilde (Off)\fP إذا ضُبط على \fBOn\fP، سيقوم \fBreadline\fP بإجراء توسيع التيلدا (~) عندما يحاول إكمال الكلمات. .TP \fBforce\-meta\-prefix (Off)\fP إذا ضُبط على \fBOn\fP، فسيعدل \fBreadline\fP سلوكه عند ربط تسلسلات المفاتيح التي تحتوي على \eM\- أو Meta\- (انظر \fBKey Bindings\fP أعلاه) عن طريق تحويل تسلسل مفاتيح بالصيغة \eM\-\fIC\fP أو Meta\-\fIC\fP إلى تسلسل من محرفين \fBESC\fP \fIC\fP (إضافة بادئة meta). إذا ضُبط \fBforce\-meta\-prefix\fP على \fBOff\fP (المبدئي)، فسيستخدم \fBreadline\fP قيمة المتغير \fBconvert\-meta\fP لتحديد ما إذا كان سيقوم بهذا التحويل: إذا كان \fBconvert\-meta\fP هو \fBOn\fP، سيقوم \fBreadline\fP بالتحويل الموصوف أعلاه؛ وإذا كان \fBOff\fP، سيقوم \fBreadline\fP بتحويل \fIC\fP إلى محرف meta عن طريق ضبط البت الثامن (0200). .TP \fBhistory\-preserve\-point (Off)\fP إذا ضُبط على \fBOn\fP، فسيحاول كود التأريخ وضع النقطة في نفس الموقع في كل سطر تأريخ يُسترجع باستخدام \fBprevious\-history\fP أو \fBnext\-history\fP. .TP \fBhistory\-size (unset)\fP يضبط الحد الأقصى لعدد مدخلات التأريخ المحفوظة في قائمة التأريخ. إذا ضُبط على الصفر، تُحذف أي مدخلات تأريخ موجودة ولا تُحفظ أي مدخلات جديدة. إذا ضُبط على قيمة أقل من الصفر، فلن يكون عدد مدخلات التأريخ محدوداً. بشكل مبدئي، تضبط \fBbash\fP الحد الأقصى لعدد مدخلات التأريخ وفقاً لقيمة متغير الصدفة \fBHISTSIZE\fP. سيؤدي ضبط \fIhistory\-size\fP إلى قيمة غير رقمية لتعيين الحد الأقصى لعدد مدخلات التأريخ إلى 500. .TP \fBhorizontal\-scroll\-mode (Off)\fP ضبط هذا المتغير على \fBOn\fP يجعل \fBreadline\fP يستخدم سطراً واحداً للعرض، حيث يمرر المدخلات أفقياً على سطر شاشة واحد عندما تصبح أطول من عرض الشاشة بدلاً من الالتفاف إلى سطر جديد. يُفعل هذا الإعداد آلياً للطرفيات التي ارتفاعها 1. .TP \fBinput\-meta (Off)\fP إذا ضُبط على \fBOn\fP، سيقوم \fBreadline\fP بتفعيل المدخلات ذات الثمانية بتات (أي أنه لا يمسح البت الثامن في المحارف التي يقرؤها)، بغض النظر عما تدعي الطرفية دعمه. القيمة المبدئية هي \fIOff\fP، ولكن \fBreadline\fP يضبطها على \fIOn\fP إذا كانت الإعدادات المحلية تحتوي على محارف قد تتضمن ترميزاتها بايتات مع تعيين البت الثامن. يعتمد هذا المتغير على فئة الإعدادات المحلية \fBLC_CTYPE\fP، وقد تتغير قيمته إذا تغيرت الإعدادات المحلية. الاسم \fBmeta\-flag\fP هو مرادف لـ \fBinput\-meta\fP. .TP \fBisearch\-terminators\ (\fP .Q \fBC\-[C\-j\fP \fB)\fP سلسلة المحارف التي يجب أن تنهي البحث التزايدي دون تنفيذ المحرف كأمر لاحقاً. إذا لم تُعطَ قيمة لهذا المتغير، فإن المحرفين \fIESC\fP و \fBC\-j\fP ينهيان البحث التزايدي. .TP \fBkeymap (emacs)\fP يضبط خريطة مفاتيح \fBreadline\fP الحالية. مجموعة أسماء خرائط المفاتيح الصالحة هي \fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-command\fP، و \fIvi\-insert\fP. الخريطة \fIvi\fP تكافئ \fIvi\-command\fP؛ و \fIemacs\fP تكافئ \fIemacs\-standard\fP. القيمة المبدئية هي \fIemacs\fP؛ كما تؤثر قيمة \fBediting\-mode\fP أيضاً على خريطة المفاتيح المبدئية. .TP \fBkeyseq\-timeout (500)\fP يحدد المدة التي سينتظرها \fBreadline\fP للحصول على محرف عند قراءة تسلسل مفاتيح غامض (تسلسل يمكن أن يشكل تسلسلاً كاملاً بالمدخلات المقروءة حتى الآن، أو يمكن أن يقبل مدخلات إضافية لإكمال تسلسل أطول). إذا لم يتلقَ \fBreadline\fP أي مدخلات خلال مهلة الانتظار، فإنه يستخدم تسلسل المفاتيح الأقصر والأكمل. تُحدد القيمة بالمิลلي ثانية، لذا فإن القيمة 1000 تعني أن \fBreadline\fP سينتظر ثانية واحدة لمدخلات إضافية. إذا ضُبط هذا المتغير على قيمة أقل من أو تساوي الصفر، أو على قيمة غير رقمية، فسينتظر \fBreadline\fP حتى يُضغط على مفتاح آخر ليقرر أي تسلسل مفاتيح سيكمل. .TP \fBmark\-directories (On)\fP إذا ضُبط على \fBOn\fP، فستُلحق شرطة مائلة بأسماء الأدلة المكتملة. .TP \fBmark\-modified\-lines (Off)\fP إذا ضُبط على \fBOn\fP، فسيعرض \fBreadline\fP أسطر التأريخ التي عُدلت مسبوقة بعلامة النجمة (\fB*\fP). .TP \fBmark\-symlinked\-directories (Off)\fP إذا ضُبط على \fBOn\fP، فستُلحق شرطة مائلة بالأسماء المكتملة التي هي وصلات رمزية لأدلة، وذلك وفقاً لقيمة \fBmark\-directories\fP. .TP \fBmatch\-hidden\-files (On)\fP هذا المتغير، عند ضبطه على \fBOn\fP، يجبر \fBreadline\fP على مطابقة الملفات التي تبدأ أسماؤها بـ .Q . (الملفات المخفية) عند إجراء إكمال أسماء الملفات. إذا ضُبط على \fBOff\fP، يجب على المستخدم تضمين علامة .Q . البادئة في اسم الملف المراد إكماله. .TP \fBmenu\-complete\-display\-prefix (Off)\fP إذا ضُبط على \fBOn\fP، فسيقوم إكمال القائمة بعرض البادئة المشتركة لقائمة الإكمالات الممكنة (والتي قد تكون فارغة) قبل التنقل عبر القائمة. .TP \fBoutput\-meta (Off)\fP إذا ضُبط على \fBOn\fP، سيقوم \fBreadline\fP بعرض المحارف التي لديها البت الثامن معينًا بشكل مباشر بدلاً من عرضها كتسلسل هروب ببادئة meta. القيمة المبدئية هي \fIOff\fP، ولكن \fBreadline\fP يضبطها على \fIOn\fP إذا كانت الإعدادات المحلية تحتوي على محارف قد تتضمن ترميزاتها بايتات مع تعيين البت الثامن. يعتمد هذا المتغير على فئة الإعدادات المحلية \fBLC_CTYPE\fP، وقد تتغير قيمته إذا تغيرت الإعدادات المحلية. .TP \fBpage\-completions (On)\fP إذا ضُبط على \fBOn\fP، سيستخدم \fBreadline\fP مستعرض صفحات داخلي يشبه \fImore\fP(1) لعرض ملء شاشة من الإكمالات الممكنة في كل مرة. .TP \fBprefer\-visible\-bell\fP انظر \fBbell\-style\fP. .TP \fBprint\-completions\-horizontally (Off)\fP إذا ضُبط على \fBOn\fP، فسيقوم \fBreadline\fP بعرض الإكمالات مع فرز التطابقات أفقياً بترتيب أبجدي، بدلاً من عرضها لأسفل الشاشة. .TP \fBrevert\-all\-at\-newline (Off)\fP إذا ضُبط على \fBOn\fP، ستتراجع مكتبة \fBreadline\fP عن كل التغييرات في أسطر السجل قبل العودة عند تنفيذ \fBaccept\-line\fP. مبدئيًا، يمكن تعديل أسطر السجل والاحتفاظ بقوائم تراجع منفصلة عبر استدعاءات \fBreadline\fP. .TP \fBsearch\-ignore\-case (Off)\fP إذا ضُبط على \fBOn\fP، تُجري \fBreadline\fP عمليات البحث التزايدي وغير التزايدي في قائمة السجل بطريقة غير حساسة لحالة الأحرف. .TP \fBshow\-all\-if\-ambiguous (Off)\fP يُغير هذا السلوك المبدئي لوظائف الإكمال. إذا ضُبط على \fBOn\fP، فإن الكلمات التي لها أكثر من إكمال محتمل ستؤدي إلى إدراج المطابقات فورًا بدلاً من إطلاق صوت التنبيه. .TP \fBshow\-all\-if\-unmodified (Off)\fP يُغير هذا السلوك المبدئي لوظائف الإكمال بطريقة مشابهة لـ \fBshow\-all\-if\-ambiguous\fP. إذا ضُبط على \fBOn\fP، فإن الكلمات التي لها أكثر من إكمال محتمل دون أي إكمال جزئي ممكن (أي أن الإكمالات المحتملة لا تشترك في بادئة واحدة) ستؤدي إلى إدراج المطابقات فورًا بدلاً من إطلاق صوت التنبيه. .TP \fBshow\-mode\-in\-prompt (Off)\fP إذا ضُبط على \fBOn\fP، تُضاف سلسلة نصية إلى بداية المحث تشير إلى وضع التحرير: emacs، أو vi command، أو vi insertion. سلاسل الأوضاع قابلة للضبط من قبل المستخدم (مثل \fIemacs\-mode\-string\fP). .TP \fBskip\-completed\-text (Off)\fP إذا ضُبط على \fBOn\fP، فسيُغير هذا سلوك الإكمال المبدئي عند إدراج مطابقة واحدة في السطر. يكون نشطًا فقط عند إجراء الإكمال في منتصف كلمة. إذا فُعّل، فلن تدرج \fBreadline\fP محارف من الإكمال تطابق المحارف الموجودة بعد النقطة في الكلمة التي يُجرى إكمالها، حتى لا تتكرر أجزاء الكلمة التي تلي المؤشر. .TP \fBvi\-cmd\-mode\-string ((cmd))\fP إذا فُعّل متغير \fIshow\-mode\-in\-prompt\fP، فستُعرض هذه السلسلة مباشرة قبل السطر الأخير من المحث الرئيس عندما يكون وضع تحرير vi نشطًا وفي وضع الأوامر. تُوسع القيمة مثل ارتباط مفاتيح، لذا تتوفر المجموعة القياسية من سوابق meta وcontrol وتسلسلات الهروب بالشرطة المائلة العكسية. يبدأ الهروبان \\e1 و\\e2 تسلسلات المحارف غير المطبوعة وينهيانها، والتي يمكن استخدامها لتضمين تسلسل تحكم للطرفية في سلسلة الوضع. .TP \fBvi\-ins\-mode\-string ((ins))\fP إذا فُعّل متغير \fIshow\-mode\-in\-prompt\fP، فستُعرض هذه السلسلة مباشرة قبل السطر الأخير من المحث الرئيس عندما يكون وضع تحرير vi نشطًا وفي وضع الإدراج. تُوسع القيمة مثل ارتباط مفاتيح، لذا تتوفر المجموعة القياسية من سوابق meta وcontrol وتسلسلات الهروب بالشرطة المائلة العكسية. يبدأ الهروبان \\e1 و\\e2 تسلسلات المحارف غير المطبوعة وينهيانها، والتي يمكن استخدامها لتضمين تسلسل تحكم للطرفية في سلسلة الوضع. .TP \fBvisible\-stats (Off)\fP إذا ضُبط على \fBOn\fP، سيُلحق محرف يشير إلى نوع الملف كما تُبلغ عنه \fIstat\fP(2) باسم الملف عند سرد الإكمالات المحتملة. .PD .SS "بنى Readline الشرطية" تنفذ \fBReadline\fP ميزة مشابهة في الروح لميزات التصريف الشرطي في معالج C المسبق والتي تسمح بإجراء ارتباطات المفاتيح وإعدادات المتغيرات كنتيجة للاختبارات. هناك أربعة توجيهات للمحلل متاحة. .TP \fB$if\fP تسمح بنية \fB$if\fP بإجراء الارتباطات بناءً على وضع التحرير، أو الطرفية المستخدمة، أو التطبيق الذي يستخدم \fBreadline\fP. يمتد نص الاختبار، بعد أي عامل مقارنة، إلى نهاية السطر؛ ما لم يذكر خلاف ذلك، لا توجد حاجة لمحارف لعزله. .RS .TP \fBmode\fP تُستخدم صيغة \fBmode=\fP لتوجيه \fB$if\fP لاختبار ما إذا كانت \fBreadline\fP في وضع emacs أو vi. يمكن استخدام هذا مع أمر \fBset keymap\fP، على سبيل المثال، لضبط الارتباطات في خرائط مفاتيح \fIemacs\-standard\fP و\fIemacs\-ctlx\fP فقط إذا بدأت \fBreadline\fP في وضع emacs. .TP \fBterm\fP يمكن استخدام صيغة \fBterm=\fP لتضمين ارتباطات مفاتيح خاصة بالطرفية، ربما لربط تسلسلات المفاتيح التي تخرجها مفاتيح الوظائف بالطرفية. تُختبر الكلمة الموجودة على الجانب الأيمن من \fB=\fP مقابل كل من الاسم الكامل للطرفية وجزء اسم الطرفية قبل أول \fB\-\fP. يسمح هذا لـ \fIxterm\fP بمطابقة كل من \fIxterm\fP و\fIxterm\-256color\fP، على سبيل المثال. .TP \fBversion\fP يمكن استخدام اختبار \fBversion\fP لإجراء مقارنات مقابل إصدارات \fBreadline\fP محددة. يتوسع \fBversion\fP إلى إصدار \fBreadline\fP الحالي. تتضمن مجموعة عوامل المقارنة \fB=\fP، (و \fB==\fP)، و \fB!=\fP، و \fB<=\fP، و \fB>=\fP، و \fB<\fP، و \fB>\fP. يتكون رقم الإصدار المقدم على الجانب الأيمن من العامل من رقم إصدار رئيس، ونقطة عشرية اختيارية، وإصدار فرعي اختياري (مثل \fB7.1\fP). إذا حُذف الإصدار الفرعي، فسيُعتبر مبدئيًا \fB0\fP. يمكن فصل العامل عن سلسلة \fBversion\fP وعن معامل رقم الإصدار بمسافة بيضاء. .TP \fIapplication\fP تُستخدم بنية \fIapplication\fP لتضمين إعدادات خاصة بالتطبيق. يضبط كل برنامج يستخدم مكتبة \fBreadline\fP \fIاسم التطبيق\fP، ويمكن لملف التهيأة اختبار قيمة معينة. يمكن استخدام هذا لربط تسلسلات المفاتيح بوظائف مفيدة لبرنامج معين. على سبيل المثال، يضيف الأمر التالي تسلسل مفاتيح يضع الكلمة الحالية أو السابقة بين علامتي اقتباس في \fBbash\fP: .PP .RS .EX .nf \fB$if\fP Bash # اقتباس الكلمة الحالية أو السابقة \*"\eC\-xq\*": \*"\eeb\e\*"\eef\e\*"\*" \fB$endif\fP .fi .EE .RE .TP \fIvariable\fP توفر بنية \fIvariable\fP اختبارات مساواة بسيطة لمتغيرات وقيم \fBreadline\fP. عوامل المقارنة المسموح بها هي \fI=\fP و \fI==\fP و \fI!=\fP. يجب فصل اسم المتغير عن عامل المقارنة بمسافة بيضاء؛ ويمكن فصل العامل عن القيمة في الجانب الأيمن بمسافة بيضاء. يمكن اختبار المتغيرات النصية والمنطقية. المتغيرات المنطقية يجب أن تُختبر مقابل القيمتين \fIon\fP و \fIoff\fP. .RE .TP \fB$else\fP تُنفذ الأوامر في هذا الفرع من توجيه \fB$if\fP إذا فشل الاختبار. .TP \fB$endif\fP ينهي هذا الأمر، كما رأينا في المثال السابق، أمر \fB$if\fP. .TP \fB$include\fP This directive takes a single filename as an argument and reads commands and key bindings from that file. For example, the following directive would read .FN /etc/inputrc : .PP .RS .nf \fB$include\fP \^ \fI/etc/inputrc\fP .fi .RE .SS البحث توفر \fBReadline\fP أوامر للبحث في سجل الأوامر (انظر .SM \fBHISTORY\fP أدناه) عن أسطر تحتوي على سلسلة نصية محددة. هناك وضعان للبحث: \fIتزايدي\fP و\fIغير تزايدي\fP. .PP يبدأ البحث التزايدي قبل أن ينتهي المستخدم من كتابة سلسلة البحث. مع كتابة كل محرف من سلسلة البحث، تعرض \fBreadline\fP المدخل التالي من السجل الذي يطابق السلسلة المكتوبة حتى الآن. يتطلب البحث التزايدي فقط عدد المحارف اللازم للعثور على مدخل السجل المطلوب. عند استخدام وضع تحرير emacs، اكتب \fBC\-r\fP للبحث للخلف في السجل عن سلسلة نصية معينة. تؤدي كتابة \fBC\-s\fP إلى البحث للأمام عبر السجل. تُستخدم المحارف الموجودة في قيمة متغير \fBisearch\-terminators\fP لإنهاء البحث التزايدي. إذا لم يُعين لهذا المتغير قيمة، فإن مفتاحي \fIESC\fP و \fBC\-j\fP ينهيان البحث التزايدي. يجهض \fBC\-g\fP البحث التزايدي ويعيد السطر الأصلي. عند إنهاء البحث، يصبح مدخل السجل الذي يحتوي على سلسلة البحث هو السطر الحالي. .PP للعثور على مدخلات مطابقة أخرى في قائمة السجل، اكتب \fBC\-r\fP أو \fBC\-s\fP حسب الاقتضاء. يبحث هذا للخلف أو للأمام في السجل عن المدخل التالي المطابق لسلسلة البحث المكتوبة حتى الآن. أي تسلسل مفاتيح آخر مرتبط بأمر \fBreadline\fP ينهي البحث وينفذ ذلك الأمر. على سبيل المثال، ينهي السطر الجديد البحث ويقبل السطر، وبذلك ينفذ الأمر من قائمة السجل. سيؤدي أمر الحركة إلى إنهاء البحث، وجعل آخر سطر وُجد هو السطر الحالي، وبدء التحرير. .PP تتذكر \fBReadline\fP آخر سلسلة بحث تزايدي. إذا كُتب مفتاحا \fBC\-r\fP مرتين دون وجود أي محارف متداخلة تحدد سلسلة بحث جديدة، فستستخدم \fBreadline\fP أي سلسلة بحث متذكَّرة. .PP تقرأ عمليات البحث غير التزايدية سلسلة البحث كاملة قبل البدء في البحث عن مدخلات السجل المطابقة. يمكن أن يكتب المستخدم سلسلة البحث أو تكون جزءًا من محتويات السطر الحالي. .SS "أسماء أوامر Readline" فيما يلي قائمة بأسماء الأوامر وتسلسلات المفاتيح المبدئية التي ترتبط بها. أسماء الأوامر التي لا يصاحبها تسلسل مفاتيح تكون غير مرتبطة مبدئيًا. .PP في الأوصاف التالية، تشير \fIpoint\fP إلى موضع المؤشر الحالي، وتشير \fImark\fP إلى موضع مؤشر حُفظ بواسطة أمر \fBset\-mark\fP. يُشار إلى النص بين النقطة والعلامة باسم \fIالمنطقة\fP. لدى \fBReadline\fP مفهوم \fIالمنطقة النشطة\fP: عندما تكون المنطقة نشطة، تُبرز إعادة عرض \fBreadline\fP المنطقة باستخدام قيمة متغير \fBactive\-region\-start\-color\fP. يتحكم متغير \fBenable\-active\-region\fP في تشغيل ذلك وإيقافه. تضبط عدة أوامر المنطقة لتكون نشطة؛ ومذكورة أدناه. .SS "أوامر الحركة" .PD 0 .TP \fBbeginning\-of\-line (C\-a)\fP الانتقال إلى بداية السطر الحالي. قد يرتبط هذا أيضًا بمفتاح Home في بعض لوحات المفاتيح. .TP \fBend\-of\-line (C\-e)\fP الانتقال إلى نهاية السطر. قد يرتبط هذا أيضًا بمفتاح End في بعض لوحات المفاتيح. .TP \fBforward\-char (C\-f)\fP الانتقال محرفًا واحدًا للأمام. قد يرتبط هذا أيضًا بمفتاح السهم الأيمن في بعض لوحات المفاتيح. .TP \fBbackward\-char (C\-b)\fP الانتقال محرفًا واحدًا للخلف. قد يرتبط هذا أيضًا بمفتاح السهم الأيسر في بعض لوحات المفاتيح. .TP \fBforward\-word (M\-f)\fP الانتقال للأمام إلى نهاية الكلمة التالية. تتكون الكلمات من محارف أبجدية رقمية (حروف وأرقام). .TP \fBbackward\-word (M\-b)\fP الانتقال للخلف إلى بداية الكلمة الحالية أو السابقة. تتكون الكلمات من محارف أبجدية رقمية (حروف وأرقام). .TP \fBshell\-forward\-word (M\-C\-f)\fP الانتقال للأمام إلى نهاية الكلمة التالية. تُفصل الكلمات بواسطة محارف الصدفة الوصفية غير المقتبسة. .TP \fBshell\-backward\-word (M\-C\-b)\fP الانتقال للخلف إلى بداية الكلمة الحالية أو السابقة. تُفصل الكلمات بواسطة محارف الصدفة الوصفية غير المقتبسة. .TP \fBprevious\-screen\-line\fP محاولة نقل النقطة إلى نفس عمود الشاشة الفعلي في سطر الشاشة الفعلي السابق. لن يحقق هذا التأثير المطلوب إذا كان سطر \fBreadline\fP الحالي لا يشغل أكثر من سطر فعلي واحد أو إذا كانت النقطة لا تزيد عن طول المحث زائد عرض الشاشة. .TP \fBnext\-screen\-line\fP محاولة نقل النقطة إلى نفس عمود الشاشة الفعلي في سطر الشاشة الفعلي التالي. لن يحقق هذا التأثير المطلوب إذا كان سطر \fBreadline\fP الحالي لا يشغل أكثر من سطر فعلي واحد أو إذا لم يكن طول سطر \fBreadline\fP الحالي أكبر من طول المحث زائد عرض الشاشة. .TP \fBclear\-display (M\-C\-l)\fP مسح الشاشة، وإن أمكن، خبيئة التمرير الخلفي للطرفية، ثم إعادة رسم السطر الحالي، مع ترك السطر الحالي في أعلى الشاشة. .TP \fBclear\-screen (C\-l)\fP مسح الشاشة، ثم إعادة رسم السطر الحالي، مع ترك السطر الحالي في أعلى الشاشة. باستخدام معامل عددي، سيُحدث السطر الحالي دون مسح الشاشة. .TP \fBredraw\-current\-line\fP تحديث السطر الحالي. .PD .SS "أوامر التعامل مع السجل" .PD 0 .TP \fBaccept\-line (Newline, Return)\fP قبول السطر بغض النظر عن مكان المؤشر. إذا كان هذا السطر غير فارغ، فسيُضاف إلى قائمة السجل وفقًا لحالة متغيري .SM \fBHISTCONTROL\fP و \fBHISTIGNORE\fP. إذا كان السطر سطر سجل معدلًا، فسيُستعاد سطر السجل إلى حالته الأصلية. .TP \fBprevious\-history (C\-p)\fP جلب الأمر السابق من قائمة السجل، بالتحرك للخلف في القائمة. قد يرتبط هذا أيضًا بمفتاح السهم العلوي في بعض لوحات المفاتيح. .TP \fBnext\-history (C\-n)\fP جلب الأمر التالي من قائمة السجل، بالتحرك للأمام في القائمة. قد يرتبط هذا أيضًا بمفتاح السهم السفلي في بعض لوحات المفاتيح. .TP \fBbeginning\-of\-history (M\-<)\fP الانتقال إلى أول سطر في السجل. .TP \fBend\-of\-history (M\->)\fP الانتقال إلى نهاية سجل المدخلات، أي السطر الذي يجري إدخاله حاليًا. .TP \fBoperate\-and\-get\-next (C\-o)\fP قبول السطر الحالي للتنفيذ كما لو أُدخل سطر جديد، وجلب السطر التالي بالنسبة للسطر الحالي من السجل للتحرير. يحدد المعامل العددي، إذا قُدم، مدخل السجل الذي سيُستخدم بدلاً من السطر الحالي. .TP \fBfetch\-history\fP باستخدام معامل عددي، جلب ذلك المدخل من قائمة السجل وجعله السطر الحالي. بدون معامل، سيُنتقل للخلف إلى أول مدخل في قائمة السجل. .TP \fBreverse\-search\-history (C\-r)\fP البحث للخلف بدءًا من السطر الحالي والتحرك .Q up عبر السجل حسب الضرورة. هذا بحث تزايدي. يضبط هذا الأمر المنطقة على النص المطابق ويفعل المنطقة. .TP \fBforward\-search\-history (C\-s)\fP البحث للأمام بدءًا من السطر الحالي والتحرك .Q down عبر السجل حسب الضرورة. هذا بحث تزايدي. يضبط هذا الأمر المنطقة على النص المطابق ويفعل المنطقة. .TP \fBnon\-incremental\-reverse\-search\-history (M\-p)\fP البحث للخلف عبر السجل بدءًا من السطر الحالي باستخدام بحث غير تزايدي عن سلسلة نصية يقدمها المستخدم. يمكن أن تطابق سلسلة البحث أي مكان في سطر السجل. .TP \fBnon\-incremental\-forward\-search\-history (M\-n)\fP البحث للأمام عبر السجل باستخدام بحث غير تزايدي عن سلسلة نصية يقدمها المستخدم. يمكن أن تطابق سلسلة البحث أي مكان في سطر السجل. .TP \fBhistory\-search\-backward\fP البحث للخلف عبر السجل عن سلسلة المحارف الموجودة بين بداية السطر الحالي والنقطة. يجب أن تطابق سلسلة البحث بداية سطر السجل. هذا بحث غير تزايدي. قد يرتبط هذا بمفتاح Page Up في بعض لوحات المفاتيح. .TP \fBhistory\-search\-forward\fP البحث للأمام عبر السجل عن سلسلة المحارف الموجودة بين بداية السطر الحالي والنقطة. يجب أن تطابق سلسلة البحث بداية سطر السجل. هذا بحث غير تزايدي. قد يرتبط هذا بمفتاح Page Down في بعض لوحات المفاتيح. .TP \fBhistory\-substring\-search\-backward\fP البحث للخلف عبر السجل عن سلسلة المحارف الموجودة بين بداية السطر الحالي والنقطة. يمكن أن تطابق سلسلة البحث أي مكان في سطر السجل. هذا بحث غير تزايدي. .TP \fBhistory\-substring\-search\-forward\fP البحث للأمام عبر السجل عن سلسلة المحارف الموجودة بين بداية السطر الحالي والنقطة. يمكن أن تطابق سلسلة البحث أي مكان في سطر السجل. هذا بحث غير تزايدي. .TP \fByank\-nth\-arg (M\-C\-y)\fP إدراج المعامل الأول للأمر السابق (عادة الكلمة الثانية في السطر السابق) عند النقطة. باستخدام معامل \fIn\fP، سيُدرج الكلمة رقم \fIn\fP من الأمر السابق (تبدأ الكلمات في الأمر السابق بالكلمة 0). يدرج المعامل السالب الكلمة رقم \fIn\fP من نهاية الأمر السابق. بمجرد حساب المعامل \fIn\fP، يستخدم هذا مرافق توسيع السجل لاستخراج الكلمة رقم \fIn\fP، كما لو أن .Q !\fIn\fP توسيع السجل قد حُدد. .TP \fByank\-last\-arg (M\-.\^, M\-_\^)\fP إدراج المعامل الأخير للأمر السابق (آخر كلمة في مدخل السجل السابق). باستخدام معامل عددي، يسلك نفس سلوك \fByank\-nth\-arg\fP تمامًا. تتحرك الاستدعاءات المتتالية لـ \fByank\-last\-arg\fP للخلف عبر قائمة السجل، وتدرج الكلمة الأخيرة (أو الكلمة المحددة بالمعامل في الاستدعاء الأول) من كل سطر بدوره. يحدد أي معامل عددي يُقدم لهذه الاستدعاءات المتتالية اتجاه التحرك عبر السجل. يغير المعامل السالب الاتجاه عبر السجل (للخلف أو للأمام). يستخدم هذا مرافق توسيع السجل لاستخراج الكلمة الأخيرة، كما لو أن .Q !$ توسيع السجل قد حُدد. .TP \fBshell\-expand\-line (M\-C\-e)\fP توسيع السطر بإجراء توسيعات كلمات الصدفة. ينفذ هذا توسيع الأسماء المستعارة والسجل، واقتباس \fB$\fP\\*'\fIstring\fP\\*' و \fB$\fP\\*"\fIstring\fP\\*"، وتوسيع العلامة النونية (tilde)، وتوسيع المعاملات والمتغيرات، والتوسيع الحسابي، وإحلال الأوامر والعمليات، وتقسيم الكلمات، وإزالة علامات الاقتباس. يمنع المعامل الصريح إحلال الأوامر والعمليات. انظر .SM \fBHISTORY EXPANSION\fP أدناه لوصف توسيع السجل. .TP \fBhistory\-expand\-line (M\-\*^)\fP إجراء توسيع السجل في السطر الحالي. انظر .SM \fBHISTORY EXPANSION\fP أدناه لوصف توسيع السجل. .TP \fBmagic\-space\fP إجراء توسيع السجل في السطر الحالي وإدراج مسافة. انظر .SM \fBHISTORY EXPANSION\fP أدناه لوصف توسيع السجل. .TP \fBalias\-expand\-line\fP إجراء توسيع الأسماء المستعارة في السطر الحالي. انظر .SM \fBALIASES\fP أعلاه لوصف توسيع الأسماء المستعارة. .TP \fBhistory\-and\-alias\-expand\-line\fP إجراء توسيع السجل والأسماء المستعارة في السطر الحالي. .TP \fBinsert\-last\-argument (M\-.\^, M\-_\^)\fP مرادف لـ \fByank\-last\-arg\fP. .TP \fBedit\-and\-execute\-command (C\-x C\-e)\fP استدعاء محرر على سطر الأوامر الحالي، وتنفيذ النتيجة كأوامر صدفة. تحاول \fBBash\fP استدعاء .SM \fB$VISUAL\fP، ثم .SM \fB$EDITOR\fP، ثم \fIemacs\fP كمحرر، بهذا الترتيب. .PD .SS "أوامر تغيير النص" .PD 0 .TP \fIend\-of\-file\fP\fB (عادة C\-d)\fP المحرف الذي يشير إلى نهاية الملف كما هو محدد، على سبيل المثال، بواسطة \fIstty\fP(1). إذا قُرئ هذا المحرف عندما لا توجد محارف في السطر، وكانت النقطة في بداية السطر، فسوف تفسره \fBreadline\fP على أنه نهاية المدخلات وتُعيد .SM \fBEOF\fP. .TP \fBdelete\-char (C\-d)\fP حذف المحرف عند النقطة. إذا كانت هذه الوظيفة مرتبطة بنفس المحرف مثل محرف tty \fBEOF\fP، كما هو الحال عادةً مع \fBC\-d\fP، فانظر أعلاه لمعرفة التأثيرات. قد يرتبط هذا أيضًا بمفتاح Delete في بعض لوحات المفاتيح. .TP \fBbackward\-delete\-char (Rubout)\fP حذف المحرف خلف المؤشر. عند إعطاء معامل عددي، يُحفظ النص المحذوف في حلقة الحذف (kill ring). .TP \fBforward\-backward\-delete\-char\fP حذف المحرف الموجود تحت المؤشر، ما لم يكن المؤشر في نهاية السطر، وفي هذه الحالة يُحذف المحرف الموجود خلف المؤشر. .TP \fBquoted\-insert (C\-q, C\-v)\fP إضافة المحرف التالي المكتوب إلى السطر حرفيًا. هذه هي طريقة إدراج محارف مثل \fBC\-q\fP، على سبيل المثال. .TP \fBtab\-insert (C\-v TAB)\fP إدراج محرف جدولة (tab). .TP \fBself\-insert (a, b, A, 1, !, \fP.\|.\|.\fB)\fP إدراج المحرف المكتوب. .TP \fBbracketed\-paste\-begin\fP هذه الوظيفة مخصصة لتكون مرتبطة بـ .Q "bracketed paste" تسلسل الهروب الذي ترسله بعض الطرفيات، ويُعين هذا الارتباط مبدئيًا. يسمح لـ \fBreadline\fP بإدراج النص الملصق كوحدة واحدة دون معاملة كل محرف كما لو كان قد قُرئ من لوحة المفاتيح. تُدرج المحارف الملصقة كما لو كان كل واحد منها مرتبطًا بـ \fBself\-insert\fP بدلاً من تنفيذ أي أوامر تحرير. .IP يضبط اللصق المجمع المنطقة على النص المدرج ويفعل المنطقة. .TP \fBtranspose\-chars (C\-t)\fP سحب المحرف الموجود قبل النقطة للأمام فوق المحرف الموجود عند النقطة، مع تحريك النقطة للأمام أيضًا. إذا كانت النقطة في نهاية السطر، فإن هذا يبدل موضع المحرفين اللذين يسبقان النقطة. ليس للمعاملات السالبة أي تأثير. .TP \fBtranspose\-words (M\-t)\fP سحب الكلمة الموجودة قبل النقطة لتتجاوز الكلمة الموجودة بعد النقطة، مع تحريك النقطة لتتجاوز تلك الكلمة أيضًا. إذا كانت النقطة في نهاية السطر، فإن هذا يبدل موضع آخر كلمتين في السطر. .TP \fBshell\-transpose\-words (M\-C\-t)\fP سحب الكلمة الموجودة قبل النقطة لتتجاوز الكلمة الموجودة بعد النقطة، مع تحريك النقطة لتتجاوز تلك الكلمة أيضًا. إذا كانت نقطة الإدراج في نهاية السطر، فإن هذا يبدل موضع آخر كلمتين في السطر. حدود الكلمات هي نفسها في \fBshell\-forward\-word\fP و \fBshell\-backward\-word\fP. .TP \fBupcase\-word (M\-u)\fP تحويل الكلمة الحالية (أو التالية) إلى أحرف كبيرة. باستخدام معامل سالب، تُحول الكلمة السابقة إلى أحرف كبيرة، ولكن دون تحريك النقطة. .TP \fBdowncase\-word (M\-l)\fP حوّل الكلمة الحالية (أو التالية) إلى أحرف صغيرة. عند توفير معطى سالب، تُحوّل الكلمة السابقة إلى أحرف صغيرة، ولكن لا تُنقل النقطة. .TP \fBcapitalize\-word (M\-c)\fP اجعل الحرف الأول من الكلمة الحالية (أو التالية) كبيراً. عند توفير معطى سالب، يُحوّل الحرف الأول من الكلمة السابقة إلى حرف كبير، ولكن لا تُنقل النقطة. .TP \fBoverwrite\-mode\fP بدّل وضع الكتابة الفوقية. عند توفير معطى عددي موجب صريح، يُنتقل إلى وضع الكتابة الفوقية. وعند توفير معطى عددي غير موجب، يُنتقل إلى وضع الإدراج. يؤثر هذا الأمر على وضع \fBemacs\fP فقط؛ حيث يتعامل وضع \fBvi\fP مع الكتابة الفوقية بشكل مختلف. تبدأ كل استدعاء لـ \fIreadline()\fP بوضع الإدراج. .IP في وضع الكتابة الفوقية، المحارف المرتبطة بـ \fBself\-insert\fP تستبدل النص عند النقطة بدلاً من دفع النص إلى اليمين. المحارف المرتبطة بـ \fBbackward\-delete\-char\fP تستبدل المحرف الذي يسبق النقطة بمسافة. افتراضياً، هذا الأمر غير مرتبط بمفتاح، ولكن قد يُربط بمفتاح Insert في بعض لوحات المفاتيح. .PD .SS "القتل والجذب (Killing and Yanking)" .PD 0 .TP \fBkill\-line (C\-k)\fP اقضِ على (Kill) النص من النقطة إلى نهاية السطر الحالي. عند توفير معطى عددي سالب، يُقضى على النص رجوعاً من المؤشر إلى بداية السطر. .TP \fBbackward\-kill\-line (C\-x Rubout)\fP اقضِ على النص رجوعاً إلى بداية السطر الحالي. عند توفير معطى عددي سالب، يُقضى على النص للأمام من المؤشر إلى نهاية السطر. .TP \fBunix\-line\-discard (C\-u)\fP .\" There is no real difference between this and backward-kill-line اقضِ على النص رجوعاً من النقطة إلى بداية السطر، مع حفظ النص المقتول في حلقة القتل (kill\-ring). .TP \fBkill\-whole\-line\fP اقضِ على جميع المحارف في السطر الحالي، بغض النظر عن موقع النقطة. .TP \fBkill\-word (M\-d)\fP اقضِ على النص من النقطة إلى نهاية الكلمة الحالية، أو إلى نهاية الكلمة التالية إذا كنت بين الكلمات. حدود الكلمات هي نفسها المستخدمة في \fBforward\-word\fP. .TP \fBbackward\-kill\-word (M\-Rubout)\fP اقضِ على الكلمة التي خلف النقطة. حدود الكلمات هي نفسها المستخدمة في \fBbackward\-word\fP. .TP \fBshell\-kill\-word (M\-C\-d)\fP اقضِ على النص من النقطة إلى نهاية الكلمة الحالية، أو إلى نهاية الكلمة التالية إذا كنت بين الكلمات. حدود الكلمات هي نفسها المستخدمة في \fBshell\-forward\-word\fP. .TP \fBshell\-backward\-kill\-word\fP اقضِ على الكلمة التي خلف النقطة. حدود الكلمات هي نفسها المستخدمة في \fBshell\-backward\-word\fP. .TP \fBunix\-word\-rubout (C\-w)\fP اقضِ على الكلمة التي خلف النقطة، باستخدام المسافة الفارغة كحد للكلمة، مع حفظ النص المقتول في حلقة القتل. .TP \fBunix\-filename\-rubout\fP اقضِ على الكلمة التي خلف النقطة، باستخدام المسافة الفارغة وحرف المائل (slash) كحدود للكلمة، مع حفظ النص المقتول في حلقة القتل. .TP \fBdelete\-horizontal\-space (M\-\e)\fP احذف جميع المسافات وعلامات الجدولة حول النقطة. .TP \fBkill\-region\fP اقضِ على النص الموجود في المنطقة (region) الحالية. .TP \fBcopy\-region\-as\-kill\fP انسخ النص الموجود في المنطقة إلى مخزن القتل (kill buffer)، ليتمكن من جذبه (yanked) فوراً. .TP \fBcopy\-backward\-word\fP انسخ الكلمة التي تسبق النقطة إلى مخزن القتل. حدود الكلمات هي نفسها المستخدمة في \fBbackward\-word\fP. .TP \fBcopy\-forward\-word\fP انسخ الكلمة التي تلي النقطة إلى مخزن القتل. حدود الكلمات هي نفسها المستخدمة في \fBforward\-word\fP. .TP \fByank (C\-y)\fP اجذب رأس حلقة القتل إلى المخزن عند النقطة. .TP \fByank\-pop (M\-y)\fP دوّر حلقة القتل، واجذب الرأس الجديد. لا يعمل إلا بعد \fByank\fP أو \fByank\-pop\fP. .PD .SS "المعطيات العددية" .PD 0 .TP \fBdigit\-argument (M\-0, M\-1, \fP.\|.\|.\fB, M\-\-)\fP أضف هذا الرقم إلى المعطى المتراكم حالياً، أو ابدأ معطى جديداً. M\-\- تبدأ معطى سالباً. .TP \fBuniversal\-argument\fP هذه طريقة أخرى لتحديد معطى. إذا تلا هذا الأمر رقم أو أكثر، مسبوقاً اختيارياً بعلامة ناقص، فإن تلك الأرقام تُحدد المعطى. إذا تلا الأمر أرقام، فإن تنفيذ \fBuniversal\-argument\fP مرة أخرى ينهي المعطى العددي، ولكنه يُتجاهل فيما عدا ذلك. كحالة خاصة، إذا تلا هذا الأمر مباشرة محرف ليس رقماً ولا علامة ناقص، يُضرب عدد المعطيات للأمر التالي في أربعة. يكون عدد المعطيات واحداً في البداية، لذا فإن تنفيذ هذه الدالة للمرة الأولى يجعل العدد أربعة، وللمرة الثانية يجعله ستة عشر، وهكذا. .PD .SS الإكمال .PD 0 .TP \fBcomplete (TAB)\fP حاول إجراء إكمال للنص الذي يسبق النقطة. تحاول \fBBash\fP الإكمال بالتحقق أولاً من وجود أي عمليات إكمال قابلة للبرمجة لكلمة الأمر (انظر \fBProgrammable Completion\fP أدناه)، وإلا فإنها تعامل النص كمتغير (إذا بدأ بـ \fB$\fP)، أو اسم مستخدم (إذا بدأ بـ \fB\*~\fP)، أو اسم مضيف (إذا بدأ بـ \fB@\fP)، أو أمر (بما في ذلك الأسماء المستعارة والدوال والمبنيات الداخلية) على التوالي. إذا لم ينتج عن أي من هذه مطابقة، فإنها تعود إلى إكمال أسماء الملفات. .TP \fBpossible\-completions (M\-?)\fP اسرد الإكمالات المحتملة للنص الذي يسبق النقطة. عند عرض الإكمالات، تضبط \fBreadline\fP عدد الأعمدة المستخدمة للعرض حسب قيمة \fBcompletion\-display\-width\fP، أو قيمة متغير الصدفة .SM \fBCOLUMNS\fP، أو عرض الشاشة، بهذا الترتيب. .TP \fBinsert\-completions (M\-*)\fP أدرج جميع إكمالات النص الذي يسبق النقطة التي كان من الممكن إنتاجها بواسطة \fBpossible\-completions\fP، مفصولة بمسافة. .TP \fBmenu\-complete\fP مشابه لـ \fBcomplete\fP، ولكنه يستبدل الكلمة المراد إكمالها بمطابقة واحدة من قائمة الإكمالات المحتملة. يؤدي التنفيذ المتكرر لـ \fBmenu\-complete\fP إلى التنقل عبر قائمة الإكمالات المحتملة، وإدراج كل مطابقة بدورها. في نهاية قائمة الإكمالات، يقرع \fBmenu\-complete\fP الجرس (وفقاً لإعداد \fBbell\-style\fP) ويستعيد النص الأصلي. ينتقل المعطى \fIn\fP بمقدار \fIn\fP موضعاً للأمام في قائمة المطابقات؛ وينتقل المعطى السالب للخلف عبر القائمة. هذا الأمر مُعد ليُربط بمفتاح \fBTAB\fP، ولكنه غير مرتبط افتراضياً. .TP \fBmenu\-complete\-backward\fP مطابق لـ \fBmenu\-complete\fP، ولكنه يتحرك للخلف عبر قائمة الإكمالات المحتملة، كما لو كان \fBmenu\-complete\fP قد أُعطي معطى سالباً. هذا الأمر غير مرتبط افتراضياً. .TP \fBexport\-completions\fP أجرِ إكمالاً للكلمة التي تسبق النقطة كما هو موضح أعلاه واكتب قائمة الإكمالات المحتملة إلى دفق مخرجات \fBreadline\fP باستخدام التنسيق التالي، مع كتابة المعلومات في أسطر منفصلة: .RS .PD .IP \(bu .PD 0 عدد المطابقات \fIN\fP؛ .IP \(bu الكلمة التي يجري إكمالها؛ .IP \(bu \fIS\fP:\fIE\fP، حيث \fIS\fP و \fIE\fP هما إزاحتا البداية والنهاية للكلمة في مخزن سطر \fBreadline\fP؛ ثم .IP \(bu كل مطابقة، واحدة في كل سطر .RE .PD .IP إذا لم تكن هناك مطابقات، فسيكون السطر الأول .Q 0 , ولا يطبع هذا الأمر أي مخرجات بعد \fIS\fP:\fIE\fP. إذا كانت هناك مطابقة واحدة فقط، فسيطبع سطراً واحداً يحتوي عليها. إذا كان هناك أكثر من مطابقة، فسيطبع البادئة المشتركة للمطابقات (والتي قد تكون فارغة) في السطر الأول بعد \fIS\fP:\fIE\fP، ثم المطابقات في الأسطر اللاحقة. في هذه الحالة، سيشمل \fIN\fP السطر الأول الذي يحتوي على البادئة المشتركة. .IP يجب أن يكون المستخدم أو التطبيق قادراً على استيعاب إمكانية وجود سطر فارغ. القصد هو أن يقرأ المستخدم أو التطبيق \fIN\fP سطراً بعد السطر الذي يحتوي على \fIS\fP:\fIE\fP للحصول على قائمة المطابقة. هذا الأمر غير مرتبط افتراضياً. .TP \fBdelete\-char\-or\-list\fP يحذف المحرف الموجود تحت المؤشر إذا لم يكن في بداية أو نهاية السطر (مثل \fBdelete\-char\fP). وفي نهاية السطر، يتصرف بشكل مطابق لـ \fBpossible\-completions\fP. هذا الأمر غير مرتبط افتراضياً. .TP \fBcomplete\-filename (M\-/)\fP حاول إكمال اسم الملف للنص الذي يسبق النقطة. .TP \fBpossible\-filename\-completions (C\-x /)\fP اسرد الإكمالات المحتملة للنص الذي يسبق النقطة، مع معاملته كاسم ملف. .TP \fBcomplete\-username (M\-\*~)\fP حاول الإكمال للنص الذي يسبق النقطة، مع معاملته كاسم مستخدم. .TP \fBpossible\-username\-completions (C\-x \*~)\fP اسرد الإكمالات المحتملة للنص الذي يسبق النقطة، مع معاملته كاسم مستخدم. .TP \fBcomplete\-variable (M\-$)\fP حاول الإكمال للنص الذي يسبق النقطة، مع معاملته كمتغير صدفة. .TP \fBpossible\-variable\-completions (C\-x $)\fP اسرد الإكمالات المحتملة للنص الذي يسبق النقطة، مع معاملته كمتغير صدفة. .TP \fBcomplete\-hostname (M\-@)\fP حاول الإكمال للنص الذي يسبق النقطة، مع معاملته كاسم مضيف. .TP \fBpossible\-hostname\-completions (C\-x @)\fP اسرد الإكمالات المحتملة للنص الذي يسبق النقطة، مع معاملته كاسم مضيف. .TP \fBcomplete\-command (M\-!)\fP حاول الإكمال للنص الذي يسبق النقطة، مع معاملته كاسم أمر. يحاول إكمال الأوامر مطابقة النص مقابل الأسماء المستعارة، والكلمات المحجوزة، ودوال الصدفة، ومبنيات الصدفة الداخلية، وأخيراً أسماء الملفات القابلة للتنفيذ، بهذا الترتيب. .TP \fBpossible\-command\-completions (C\-x !)\fP اسرد الإكمالات المحتملة للنص الذي يسبق النقطة، مع معاملته كاسم أمر. .TP \fBdynamic\-complete\-history (M\-TAB)\fP حاول الإكمال للنص الذي يسبق النقطة، بمقارنة النص مقابل مدخلات قائمة التاريخ بحثاً عن مطابقات إكمال محتملة. .TP \fBdabbrev\-expand\fP حاول إجراء إكمال قائمة للنص الذي يسبق النقطة، بمقارنة النص مقابل أسطر من قائمة التاريخ بحثاً عن مطابقات إكمال محتملة. .TP \fBcomplete\-into\-braces (M\-{)\fP أجرِ إكمال اسم الملف وأدرج قائمة الإكمالات المحتملة محصورة بين أقواس متعرجة بحيث تكون القائمة متاحة للصدفة (انظر \fBBrace Expansion\fP أعلاه). .PD .SS "ماكروهات لوحة المفاتيح" .PD 0 .TP \fBstart\-kbd\-macro (C\-x (\^)\fP ابدأ حفظ المحارف المكتوبة في ماكرو لوحة المفاتيح الحالي. .TP \fBend\-kbd\-macro (C\-x )\^)\fP أوقف حفظ المحارف المكتوبة في ماكرو لوحة المفاتيح الحالي واحفظ التعريف. .TP \fBcall\-last\-kbd\-macro (C\-x e)\fP أعد تنفيذ آخر ماكرو لوحة مفاتيح عُرِّف، بجعل المحارف في الماكرو تظهر كما لو كانت مكتوبة من لوحة المفاتيح. .TP \fBprint\-last\-kbd\-macro ()\fP اطبع آخر ماكرو لوحة مفاتيح عُرِّف بتنسيق مناسب لملف \fIinputrc\fP. .PD .SS متفرقات .PD 0 .TP \fBre\-read\-init\-file (C\-x C\-r)\fP اقرأ محتويات ملف \fIinputrc\fP، وادمج أي ارتباطات أو تخصيصات متغيرات موجودة هناك. .TP \fBabort (C\-g)\fP أجهض أمر التحرير الحالي واقرع جرس المحطة الطرفية (وفقاً لإعداد \fBbell\-style\fP). .TP \fBdo\-lowercase\-version (M\-A, M\-B, M\-\fP\fIx\fP\fB, \fP.\|.\|.\fB)\fP إذا كان المحرف \fIx\fP (المقرون بمفتاح Meta) حرفاً كبيراً، فشغل الأمر المرتبط بالمحرف الصغير المقابل له. السلوك غير محدد إذا كان \fIx\fP حرفاً صغيراً بالفعل. .TP \fBprefix\-meta (ESC)\fP اقرن المحرف التالي المكتوب بمفتاح Meta. يُعد .SM \fBESC\fP \fBf\fP مكافئاً لـ \fBMeta\-f\fP. .TP \fBundo (C\-_, C\-x C\-u)\fP تراجع تزايدي، يُتذكر بشكل منفصل لكل سطر. .TP \fBrevert\-line (M\-r)\fP تراجع عن جميع التغييرات التي أجريت على هذا السطر. هذا يشبه تنفيذ أمر \fBundo\fP لمرات كافية لإعادة السطر إلى حالته الأولية. .TP \fBtilde\-expand (M\-&)\fP أجرِ توسيع علامة المدة (tilde expansion) على الكلمة الحالية. .TP \fBset\-mark (C\-@, M\-)\fP عيّن العلامة (mark) عند النقطة. إذا وُفر معطى عددي، تُعيّن العلامة عند ذلك الموضع. .TP \fBexchange\-point\-and\-mark (C\-x C\-x)\fP بادل النقطة مع العلامة. عيّن موضع المؤشر الحالي إلى الموضع المحفوظ، ثم عيّن العلامة إلى موضع المؤشر القديم. .TP \fBcharacter\-search (C\-])\fP اقرأ محرفاً وانقل النقطة إلى التواجد التالي لذلك المحرف. يبحث المعطى السالب عن التواجدات السابقة. .TP \fBcharacter\-search\-backward (M\-C\-])\fP اقرأ محرفاً وانقل النقطة إلى التواجد السابق لذلك المحرف. يبحث المعطى السالب عن التواجدات اللاحقة. .TP \fBskip\-csi\-sequence\fP اقرأ ما يكفي من المحارف لاستيعاب تسلسل متعدد المفاتيح مثل تلك المحددة لمفاتيح مثل Home و End. تبدأ تسلسلات CSI بمؤشر تسلسل تحكم (CSI)، وعادة ما يكون \fIESC [\fP. إذا كان هذا التسلسل مرتبطاً بـ .Q \ee[ , المفاتيح التي تنتج تسلسلات CSI لن يكون لها أي تأثير ما لم تُربط صراحة بأمر \fBreadline\fP، بدلاً من إدراج محارف شاردة في مخزن التحرير. هذا غير مرتبط افتراضياً، ولكنه يُربط عادة بـ \fIESC [\fP. .TP \fBinsert\-comment (M\-#)\fP بدون معطى عددي، أدرج قيمة متغير \fBcomment\-begin\fP الخاص بـ \fBreadline\fP في بداية السطر الحالي. إذا وُفر معطى عددي، يعمل هذا الأمر كمبدل: إذا كانت المحارف في بداية السطر لا تطابق قيمة \fBcomment\-begin\fP، فأدرج القيمة؛ وإلا فاحذف المحارف الموجودة في \fBcomment\-begin\fP من بداية السطر. في كلتا الحالتين، يُقبل السطر كما لو كُتب سطر جديد. القيمة الافتراضية لـ \fBcomment\-begin\fP تجعل هذا الأمر يحول السطر الحالي إلى تعليق صدفة. إذا أدى المعطى العددي إلى إزالة محرف التعليق، فستنفذ الصدفة السطر. .TP \fBspell\-correct\-word (C\-x s)\fP أجرِ تصحيحاً إملائياً للكلمة الحالية، مع معاملتها كدليل أو اسم ملف، بنفس طريقة خيار الصدفة \fBcdspell\fP. حدود الكلمات هي نفسها المستخدمة في \fBshell\-forward\-word\fP. .TP \fBglob\-complete\-word (M\-g)\fP عامل الكلمة التي تسبق النقطة كنمط لتوسيع مسار الملف، مع إلحاق نجمة ضمنياً، ثم استخدم النمط لإنشاء قائمة بأسماء الملفات المطابقة للإكمالات المحتملة. .TP \fBglob\-expand\-word (C\-x *)\fP عامل الكلمة التي تسبق النقطة كنمط لتوسيع مسار الملف، وأدرج قائمة بأسماء الملفات المطابقة، مستبدلاً الكلمة. إذا وُفر معطى عددي، فألحق \fB*\fP قبل توسيع المسار. .TP \fBglob\-list\-expansions (C\-x g)\fP اعرض قائمة التوسيعات التي كان من الممكن إنتاجها بواسطة \fBglob\-expand\-word\fP وأعد عرض السطر. إذا وُفر معطى عددي، فألحق \fB*\fP قبل توسيع المسار. .TP \fBdump\-functions\fP اطبع جميع الدوال وارتباطات مفاتيحها إلى دفق مخرجات \fBreadline\fP. إذا وُفر معطى عددي، فسيُنَسَّق المخرج بطريقة تسمح بجعله جزءاً من ملف \fIinputrc\fP. .TP \fBdump\-variables\fP اطبع جميع متغيرات \fBreadline\fP القابلة للضبط وقيمها إلى دفق مخرجات \fBreadline\fP. إذا وُفر معطى عددي، فسيُنَسَّق المخرج بطريقة تسمح بجعله جزءاً من ملف \fIinputrc\fP. .TP \fBdump\-macros\fP اطبع جميع تسلسلات مفاتيح \fBreadline\fP المرتبطة بماكروهات والسلاسل النصية التي تنتجها إلى دفق مخرجات \fBreadline\fP. إذا وُفر معطى عددي، فسيُنَسَّق المخرج بطريقة تسمح بجعله جزءاً من ملف \fIinputrc\fP. .TP \fBexecute\-named\-command (M\-x)\fP اقرأ اسم أمر \fBreadline\fP قابل للربط من المدخلات ونفذ الدالة المرتبط بها، كما لو ظهر تسلسل المفاتيح المرتبط به في المدخلات. إذا زُوِّدت هذه الدالة بمعطى عددي، فإنها تمرر ذلك المعطى إلى الدالة التي تنفذها. .TP \fBdisplay\-shell\-version (C\-x C\-v)\fP اعرض معلومات الإصدار عن نسخة \fBbash\fP الحالية. .PD .SS "الإكمال القابل للبرمجة" عندما يحاول مستخدم إكمال كلمة لأمر ما أو لمعامل أمر حُدِّدت له مواصفات إكمال (\fIcompspec\fP) باستخدام الأمر المدمج \fBcomplete\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه)، تستدعي مكتبة \fBreadline\fP مرافق الإكمال القابلة للبرمجة. .PP أولاً، تحدد \fBbash\fP اسم الأمر. إذا كانت مواصفات الإكمال (compspec) قد حُدِّدت لهذا الأمر، تُستخدم هذه المواصفات لإنشاء قائمة من الإكمالات الممكنة للكلمة. إذا كانت كلمة الأمر عبارة عن سلسلة نصية فارغة (محاولة الإكمال في بداية سطر فارغ)، تستخدم \fBbash\fP أي مواصفات إكمال حُدِّدت بالخيار \fB\-E\fP للأمر \fBcomplete\fP. يشير الخيار \fB\-I\fP للأمر \fBcomplete\fP إلى أن كلمة الأمر هي أول كلمة ليست تعييناً على السطر، أو بعد محدد أوامر مثل \fB;\fP أو \fB|\fP. يشير هذا عادةً إلى إكمال اسم الأمر. .PP إذا كانت كلمة الأمر مساراً كاملاً، تبحث \fBbash\fP عن مواصفات إكمال للمسار الكامل أولاً. وإذا لم توجد مواصفات للمسار الكامل، تحاول \fBbash\fP العثور على مواصفات للجزء الذي يلي آخر مائلة. وإذا لم تسفر عمليات البحث هذه عن مواصفات إكمال، أو إذا لم تكن هناك مواصفات لكلمة الأمر، تستخدم \fBbash\fP أي مواصفات إكمال حُدِّدت بالخيار \fB\-D\fP للأمر \fBcomplete\fP كإكمال مبدئي. وإذا لم تكن هناك مواصفات مبدئية، تُجري \fBbash\fP توسيع الأسماء المستعارة على كلمة الأمر كملجأ أخير، وتحاول العثور على مواصفات لكلمة الأمر الناتجة عن أي توسيع ناجح. .PP وإذا لم يُعثر على مواصفات إكمال، تُجري \fBbash\fP إكمالها المبدئي كما هو موضح أعلاه تحت \fBCompleting\fP. وخلاف ذلك، بمجرد العثور على مواصفات إكمال، تستخدمها \fBbash\fP لإنشاء قائمة من الكلمات المطابقة. .PP أولاً، تُنفذ \fBbash\fP الـ \fIactions\fP المحددة في مواصفات الإكمال. هذا لا يعيد سوى المطابقات التي تُعد سوابق للكلمة التي يُجرى إكمالها. عند استخدام الخيار \fB\-f\fP أو \fB\-d\fP لإكمال أسماء الملفات أو الدلائل، تستخدم \fBbash\fP متغير الصدفة .SM \fBFIGNORE\fP لتنقية المطابقات. .PP بعد ذلك، ينشئ الإكمال القابل للبرمجة مطابقات محددة بنمط توسيع مسار قُدِّم كمعامل للخيار \fB\-G\fP. لا يشترط في الكلمات الناتجة عن النمط أن تطابق الكلمة التي يُجرى إكمالها. تستخدم \fBBash\fP متغير .SM \fBFIGNORE\fP لتنقية المطابقات، لكنها لا تستخدم متغير الصدفة .SM \fBGLOBIGNORE\fP. .PP بعد ذلك، ينظر الإكمال في السلسلة المحددة كمعامل للخيار \fB\-W\fP. تُقسم السلسلة أولاً باستخدام الأحرف الموجودة في متغير .SM \fBIFS\fP الخاص كفواصل. يحترم هذا اقتباسات الصدفة داخل السلسلة، لتوفير آلية للكلمات كي تحتوي على رموز الصدفة الخاصة (metacharacters) أو أحرف من قيمة .SM \fBIFS\fP. ثم تُوسع كل كلمة باستخدام توسيع الأقواس، وتوسيع المدة (~)، وتوسيع المعاملات والمتغيرات، واستبدال الأوامر، والتوسيع الحسابي، كما هو موضح أعلاه تحت .SM \fBتوسيع\fP. تُقسم النتائج باستخدام القواعد الموضحة أعلاه تحت \fBWord Splitting\fP. تُطابق نتائج التوسيع كسوابق مع الكلمة التي يُجرى إكمالها، وتصبح الكلمات المطابقة إكمالات ممكنة. .PP بعد توليد هذه المطابقات، ينفذ \fBbash\fP أي دالة صدفة أو أمر حُدد بالخيارين \fB\-F\fP و \fB\-C\fP. عند استدعاء الأمر أو الدالة، يعين \fBbash\fP قيمًا لمتغيرات .SM \fBCOMP_LINE\fP، و .SM \fBCOMP_POINT\fP، و .SM \fBCOMP_KEY\fP، و .SM \fBCOMP_TYPE\fP كما هو موضح أعلاه تحت \fBمتغيرات الصدفة\fP. إذا استُدعيت دالة صدفة، يضبط \fBbash\fP أيضًا متغيرات .SM \fBCOMP_WORDS\fP و .SM \fBCOMP_CWORD\fP. عند استدعاء الدالة أو الأمر، يكون المعامل الأول (\fB$1\fP) هو اسم الأمر الذي يُجرى إكمال معاملاته، والمعامل الثاني (\fB$2\fP) هو الكلمة التي يُجرى إكمالها، والمعامل الثالث (\fB$3\fP) هو الكلمة التي تسبق الكلمة الجاري إكمالها في سطر الأوامر الحالي. لا يُجرى ترشيح لعمليات الإكمال المولدة مقابل الكلمة الجاري إكمالها؛ فالدالة أو الأمر يتمتعان بحرية كاملة في توليد المطابقات وليس بالضرورة أن تطابق سابقة الكلمة. .PP تُستدعى أي دالة محددة بـ \fB\-F\fP أولاً. يمكن للدالة استخدام أي من مرافق الصدفة، بما في ذلك الأوامر المدمجة \fBcompgen\fP و \fBcompopt\fP الموضحة أدناه، لتوليد المطابقات. ويجب أن تضع عمليات الإكمال الممكنة في متغير المصفوفة .SM \fBCOMPREPLY\fP، عنصرًا واحدًا لكل عنصر مصفوفة. .PP بعد ذلك، يُستدعى أي أمر محدد بالخيار \fB\-C\fP في بيئة مكافئة لاستبدال الأوامر. يجب أن يطبع قائمة بعمليات الإكمال، واحدة في كل سطر، إلى المخرج القياسي. ستقوم الخط المائل العكسي (Backslash) بهروب سطر جديد إذا لزم الأمر. تُضاف هذه إلى مجموعة عمليات الإكمال الممكنة. .PP بعد توليد جميع عمليات الإكمال الممكنة، يطبق \fBbash\fP أي مرشح (filter) محدد بالخيار \fB\-X\fP على عمليات الإكمال في القائمة. المرشح هو نمط يُستخدم كما في توسيع مسار الملف؛ وتُستبدل علامة \fB&\fP في النمط بنص الكلمة التي يُجرى إكمالها. يمكن هروب علامة \fB&\fP حرفية باستخدام الخط المائل العكسي؛ ويُحذف الخط المائل العكسي قبل محاولة المطابقة. يُحذف أي إكمال يطابق النمط من القائمة. علامة \fB!\fP في البداية تنفي النمط؛ وفي هذه الحالة يحذف \fBbash\fP أي إكمال لا يطابق النمط. إذا فُعّل خيار الصدفة \fBnocasematch\fP، فسيجري \fBbash\fP المطابقة دون مراعاة لحالة الأحرف. .PP أخيرًا، يضيف الإكمال القابل للبرمجة أي سابقة ولاحقة محددة بالخيارين \fB\-P\fP و \fB\-S\fP على التوالي إلى كل إكمال، ويعيد النتيجة إلى \fBreadline\fP كقائمة بعمليات الإكمال الممكنة. .PP إذا لم تُنشئ الإجراءات المطبقة سابقاً أي مطابقات، وكان الخيار \fB\-o dirnames\fP قد قُدِّم للأمر \fBcomplete\fP عند تعريف مواصفات الإكمال، تحاول \fBbash\fP إكمال أسماء الدلائل. .PP إذا قُدِّم الخيار \fB\-o plusdirs\fP للأمر \fBcomplete\fP عند تعريف مواصفات الإكمال، تحاول \fBbash\fP إكمال أسماء الدلائل وتضيف أي مطابقات إلى مجموعة الإكمالات الممكنة. .PP مبدئياً، إذا عُثر على مواصفات إكمال، فإن كل ما تنتجه يُعاد إلى كود الإكمال كالمجموعة الكاملة للإكمالات الممكنة. وتُعطل إكمالات \fBbash\fP المبدئية وإكمال أسماء الملفات المبدئي في \fBreadline\fP. إذا قُدِّم الخيار \fB\-o bashdefault\fP للأمر \fBcomplete\fP عند تعريف مواصفات الإكمال، ولم تنتج المواصفات أي مطابقات، تحاول \fBbash\fP إجراء إكمالاتها المبدئية. وإذا لم تنتج مواصفات الإكمال، وإكمالات \fBbash\fP المبدئية (في حال محاولتها)، أي مطابقات، وكان الخيار \fB\-o default\fP قد قُدِّم للأمر \fBcomplete\fP عند تعريف المواصفات، يُجري الإكمال القابل للبرمجة إكمال \fBreadline\fP المبدئي. .PP يمكن للخيارات المقدمة للأمرين \fBcomplete\fP و \fBcompopt\fP التحكم في كيفية تعامل \fBreadline\fP مع الإكمالات. على سبيل المثال، يخبر الخيار \fI\-o fullquote\fP مكتبة \fBreadline\fP باقتباس المطابقات كما لو كانت أسماء ملفات. انظر وصف \fBcomplete\fP أدناه للحصول على التفاصيل. .PP عندما تشير مواصفات الإكمال إلى أنها تريد إكمال أسماء الدلائل، تجبر وظائف الإكمال القابلة للبرمجة مكتبة \fBreadline\fP على إلحاق مائلة بالأسماء المكتملة التي هي روابط رمزية لدلائل، وفقاً لقيمة متغير \fBmark\-directories\fP في \fBreadline\fP، بغض النظر عن إعداد متغير \fBmark\-symlinked\-directories\fP في \fBreadline\fP. .PP يوجد بعض الدعم لتعديل الإكمالات ديناميكياً. هذا مفيد للغاية عند استخدامه مع إكمال مبدئي محدد باستخدام \fBcomplete \-D\fP. من الممكن لدوال الصدفة التي تُنفذ كدوال إكمال أن تشير إلى وجوب إعادة محاولة الإكمال عن طريق إعادة حالة خروج 124. إذا أعادت دالة صدفة القيمة 124، وغيرت مواصفات الإكمال المرتبطة بالأمر الذي يُجرى محاولة إكماله (المقدم كمعامل أول عند تنفيذ الدالة)، يبدأ الإكمال القابل للبرمجة من جديد، مع محاولة العثور على مواصفات إكمال جديدة لهذا الأمر. يمكن استخدام هذا لبناء مجموعة من الإكمالات ديناميكياً أثناء محاولة الإكمال، بدلاً من تحميلها جميعاً مرة واحدة. .PP على سبيل المثال، بفرض وجود مكتبة لمواصفات الإكمال، كل منها محفوظ في ملف يقابل اسم الأمر، فإن دالة الإكمال المبدئية التالية ستحمل الإكمالات ديناميكياً: .RS .EX .nf _completion_loader() { . \*"/etc/bash_completion.d/$1.sh\*".if \n(LL<80n \{\ \e .br .ti +4n .\} >/dev/null 2>&1 && return 124 } complete \-D \-F _completion_loader.if \n(LL<80n \{\ \e .br .ti +4n .\} \-o bashdefault \-o default .fi .EE .RE .SH التاريخ عند تمكين الخيار \fB\-o history\fP للأمر المدمج \fBset\fP، توفر الصدفة إمكانية الوصول إلى \fIتاريخ الأوامر\fP، وهي قائمة بالأوامر التي طُبعت سابقاً. تُستخدم قيمة متغير .SM \fBHISTSIZE\fP كعدد للأوامر المراد حفظها في قائمة التاريخ: تحفظ الصدفة نص آخر .SM \fBHISTSIZE\fP أمراً (المبدئي 500). تخزن الصدفة كل أمر في قائمة التاريخ قبل توسيع المعاملات والمتغيرات (انظر .SM \fBتوسيع\fP أعلاه) ولكن بعد إجراء توسيع التاريخ، وفقاً لقيم متغيرات الصدفة .SM \fBHISTIGNORE\fP و .SM \fBHISTCONTROL\fP. .PP On startup, \fBbash\fP initializes the history list by reading history entries from the file named by the .SM \fBHISTFILE\fP variable (default .FN \*~/.bash_history ). That file is referred to as the \fIhistory file\fP. The history file is truncated, if necessary, to contain no more than the number of history entries specified by the value of the .SM \fBHISTFILESIZE\fP variable. If .SM \fBHISTFILESIZE\fP is unset, or set to null, a non\-numeric value, or a numeric value less than zero, the history file is not truncated. .PP عند قراءة ملف التاريخ، تُفسر السطور التي تبدأ بحرف تعليق التاريخ متبوعاً مباشرة برقم كطوابع زمنية لسطر التاريخ التالي. تُعرض هذه الطوابع الزمنية اختيارياً اعتماداً على قيمة متغير .SM \fBHISTTIMEFORMAT\fP. عندما تكون موجودة، تحدد طوابع التاريخ الزمنية مدخلات التاريخ، مما يجعل المدخلات متعددة السطور ممكنة. .PP عند خروج صدفة مُفعل فيها التاريخ، تنسخ \fBbash\fP آخر مدخلات .SM \fB$HISTSIZE\fP من قائمة التاريخ إلى .SM \fB$HISTFILE\fP. إذا فُعِّل خيار الصدفة \fBhistappend\fP (انظر وصف \fBshopt\fP تحت .SM \fBأوامر الصدفة المدمجة\fP أدناه)، تُلحق \fBbash\fP المدخلات بملف التاريخ، وإلا فإنها تكتب فوق ملف التاريخ. إذا كان .SM \fBHISTFILE\fP غير معين أو فارغاً، أو إذا كان ملف التاريخ غير قابل للكتابة، فلا يُحفظ التاريخ. بعد حفظ التاريخ، تُقلّم \fBbash\fP ملف التاريخ ليحتوي على ما لا يزيد عن أسطر .SM \fBHISTFILESIZE\fP كما هو موضح أعلاه. .PP إذا عُيِّن متغير .SM \fBHISTTIMEFORMAT\fP، تكتب الصدفة معلومات الطابع الزمني المرتبطة بكل مدخل تاريخ في ملف التاريخ، مُميزة بحرف تعليق التاريخ، وبذلك تُحفظ الطوابع الزمنية عبر جلسات الصدفة. يستخدم هذا حرف تعليق التاريخ للتمييز بين الطوابع الزمنية وخطوط التاريخ الأخرى. وكما ذكر أعلاه، عند استخدام .SM \fBHISTTIMEFORMAT\fP، تحدد الطوابع الزمنية مدخلات التاريخ متعددة الأسطر. .PP سيقوم الأمر المدمج \fBfc\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه) بسرد أو تحرير وإعادة تنفيذ جزء من قائمة التاريخ. يمكن للأمر المدمج \fBhistory\fP عرض أو تعديل قائمة التاريخ ومعالجة ملف التاريخ. عند استخدام تحرير سطر الأوامر، تتوفر أوامر بحث في كل وضع تحرير توفر الوصول إلى قائمة التاريخ. .PP تسمح الصدفة بالتحكم في الأوامر التي تُحفظ في قائمة التاريخ. تُستخدم متغيرات .SM \fBHISTCONTROL\fP و .SM \fBHISTIGNORE\fP لحفظ مجموعة فرعية فقط من الأوامر المدخلة. إذا فُعِّل خيار الصدفة \fBcmdhist\fP، تحاول الصدفة حفظ كل سطر من أمر متعدد الأسطر في نفس مدخل التاريخ، مع إضافة فواصل منقوطة عند الضرورة للحفاظ على الصحة النحوية. يُعدل خيار الصدفة \fBlithist\fP خيار \fBcmdhist\fP بحفظ الأمر مع أسطر جديدة مضمنة بدلاً من الفواصل المنقوطة. انظر وصف الأمر المدمج \fBshopt\fP أدناه تحت .SM \fBأوامر الصدفة المدمجة\fP للحصول على معلومات حول تعيين وإلغاء تعيين خيارات الصدفة. .SH "توسيع التاريخ" تدعم الصدفة ميزة توسيع التاريخ المشابهة لتوسيع التاريخ في \fBcsh\fP. يصف هذا القسم ميزات النحو المتاحة. .PP يُفعل توسيع التاريخ مبدئياً للصدفات التفاعلية، ويمكن تعطيله باستخدام الخيار \fB+H\fP للأمر المدمج \fBset\fP (انظر .SM \fBأوامر الصدفة المدمجة\fP أدناه). لا تُجري الصدفات غير التفاعلية توسيع التاريخ مبدئياً، ولكن يمكن تفعيله باستخدام .Q "set -H" . .PP تُدخل توسيعات التاريخ كلمات من قائمة التاريخ إلى دفق المدخلات، مما يسهل تكرار الأوامر، أو إدراج معاملات أمر سابق في سطر المدخلات الحالي، أو إصلاح الأخطاء في الأوامر السابقة بسرعة. .PP يُجرى توسيع التاريخ فور قراءة سطر كامل، قبل أن تقوم الصدفة بتقسيمه إلى كلمات، ويُجرى على كل سطر على حدة. تحاول الصدفة إبلاغ دوال توسيع التاريخ بشأن الاقتباس الذي لا يزال سارياً من السطور السابقة. .PP يتم ذلك على جزأين. الأول هو تحديد أي مدخل من قائمة التاريخ سيُستخدم أثناء الاستبدال. والثاني هو اختيار أجزاء من ذلك المدخل لتضمينها في المدخل الحالي. .PP المدخل المختار من التاريخ هو الـ \fIحدث\fP (event)، والأجزاء من ذلك المدخل التي يُجرى العمل عليها هي \fIكلمات\fP. تتوفر \fIمغيرات\fP (modifiers) متنوعة لمعالجة الكلمات المختارة. يُقسم المدخل إلى كلمات بنفس الطريقة المتبعة عند قراءة المدخلات، بحيث تُعتبر الكلمات المتعددة المفصولة برموز خاصة (\fImetacharacter\fP) والمحاطة باقتباسات كلمة واحدة. يختار \fIواسم الحدث\fP الحدث، ويختار \fIواسم الكلمة\fP الاختياري كلمات من الحدث، وتتوفر \fIمغيرات\fP اختيارية متنوعة لمعالجة الكلمات المختارة. .PP تبدأ توسيعات التاريخ بظهور حرف توسيع التاريخ، وهو \^\fB!\fP\^ مبدئياً. قد تظهر توسيعات التاريخ في أي مكان في المدخلات، لكنها لا تتداخل. .PP المائلة الخلفية (\^\fB\e\fP\^) وعلامات الاقتباس المفردة فقط هي ما يمكنها اقتباس حرف توسيع التاريخ، ولكن يُعامل حرف توسيع التاريخ أيضاً على أنه مقتبس إذا سبقت مباشرة علامة الاقتباس المزدوجة الختامية في سلسلة مقتبسة اقتباساً مزدوجاً. .PP تمنع عدة أحرف توسيع التاريخ إذا وُجدت مباشرة بعد حرف توسيع التاريخ، حتى لو كان غير مقتبس: المسافة، والتبويب، والسطر الجديد، وعودة العربة، و \fB=\fP، ورموز الصدفة الخاصة الأخرى المعرفة أعلاه. .PP يوجد اختصار خاص للاستبدال، يكون نشطاً عندما يكون حرف \fIالاستبدال السريع\fP (الموصوف أعلاه تحت \fBhistchars\fP) هو الحرف الأول في السطر. يختار هذا المدخل السابق في قائمة التاريخ، باستخدام واسم حدث مكافئ لـ \fB!!\fP، ويستبدل سلسلة نصية بأخرى في ذلك المدخل. وهو موصوف أدناه تحت \fBواسمات الأحداث\fP. هذا هو توسيع التاريخ الوحيد الذي لا يبدأ بحرف توسيع التاريخ. .PP ستقوم عدة خيارات للصدفة قابلة للضبط باستخدام الأمر المدمج \fBshopt\fP بتعديل سلوك توسيع التاريخ (انظر وصف الأمر المدمج \fBshopt\fP أدناه). وإذا فُعِّل خيار الصدفة \fBhistverify\fP، وكانت مكتبة \fBreadline\fP مُستخدمة، فلن تُمرر استبدالات التاريخ فوراً إلى محلل الصدفة. وبدلاً من ذلك، يُعاد تحميل السطر الموسع في مخزن تحرير \fBreadline\fP لإجراء مزيد من التعديل. وإذا كانت \fBreadline\fP مُستخدمة، وفُعِّل خيار الصدفة \fBhistreedit\fP، يُعاد تحميل استبدال التاريخ الفاشل في مخزن تحرير \fBreadline\fP للتصحيح. .PP يُظهر الخيار \fB\-p\fP للأمر المدمج \fBhistory\fP ما سيفعله توسيع التاريخ قبل استخدامه. سيقوم الخيار \fB\-s\fP للأمر المدمج \fBhistory\fP بإضافة أوامر إلى نهاية قائمة التاريخ دون تنفيذها فعلياً، بحيث تكون متاحة للاستدعاء لاحقاً. .PP تسمح الصدفة بالتحكم في الأحرف المتنوعة التي تستخدمها آلية توسيع التاريخ (انظر وصف \fBhistchars\fP أعلاه تحت \fBمتغيرات الصدفة\fP). تستخدم الصدفة حرف تعليق التاريخ لتمييز طوابع التاريخ الزمنية عند كتابة ملف التاريخ. .SS "واسمات الأحداث" واسم الحدث هو مرجع لمدخل في قائمة التاريخ. يتكون واسم الحدث من جزء الكلمة الذي يبدأ بحرف توسيع التاريخ وينتهي بواسم الكلمة إذا وُجد، أو بنهاية الكلمة. وما لم يكن المرجع مطلقاً، تكون الأحداث نسبية للموضع الحالي في قائمة التاريخ. .PP .PD 0 .TP \fB!\fP بدء استبدال التاريخ، إلا إذا كان متبوعاً بـ \fBفراغ\fP، أو سطر جديد، أو عودة عربة، أو =، أو ( عندما يكون خيار الصدفة \fBextglob\fP مفعلاً باستخدام الأمر المدمج \fBshopt\fP. .TP \fB!\fP\fIn\fP الرجوع إلى مدخل قائمة التاريخ رقم \fIn\fP. .TP \fB!\-\fP\fIn\fP الرجوع إلى المدخل الحالي ناقص \fIn\fP. .TP \fB!!\fP الرجوع إلى المدخل السابق. هذا مرادف لـ .Q !\-1 . .TP \fB!\fP\fIstring\fP الرجوع إلى أحدث أمر يسبق الموضع الحالي في قائمة التاريخ ويبدأ بـ \fIstring\fP. .TP \fB!?\fP\fIstring\fP\fB[?]\fP الرجوع إلى أحدث أمر يسبق الموضع الحالي في قائمة التاريخ ويحتوي على \fIstring\fP. يمكن حذف علامة \fB?\fP الختامية إذا كان \fIstring\fP متبوعاً مباشرة بسطر جديد. إذا كان \fIstring\fP مفقوداً، فسيستخدم هذا السلسلة من أحدث بحث؛ ويُعد خطأً إذا لم توجد سلسلة بحث سابقة. .TP \fB\d\s+2\*^\s-2\u\fP\fIstring1\fP\fB\d\s+2\*^\s-2\u\fP\fIstring2\fP\fB\d\s+2\*^\s-2\u\fP استبدال سريع. تكرار الأمر السابق، مع استبدال \fIstring1\fP بـ \fIstring2\fP. مكافئ لـ .Q !!:s\d\s+2\*^\s-2\u\fIstring1\fP\d\s+2\*^\s-2\u\fIstring2\fP\d\s+2\*^\s-2\u (انظر \fBالمغيرات\fP أدناه). .TP \fB!#\fP كامل سطر الأوامر المكتوب حتى الآن. .PD .SS "واسمات الكلمات" تُستخدم واسمات الكلمات لاختيار كلمات محددة من الحدث. وهي اختيارية؛ إذا لم يُقدم واسم الكلمة، يستخدم توسيع التاريخ الحدث كاملاً. تفصل النقطتان \fB:\fP بين مواصفات الحدث وواسم الكلمة. يمكن حذفها إذا بدأ واسم الكلمة بـ \fB\*^\fP، أو \fB$\fP، أو \fB*\fP، أو \fB\-\fP، أو \fB%\fP. تُرقم الكلمات من بداية السطر، حيث يرمز للكلمة الأولى بالرقم 0 (صفر). تُدرج الكلمات في السطر الحالي مفصولة بمسافات مفردة. .PP .PD 0 .TP \fB0 (صفر)\fP الكلمة رقم صفر. بالنسبة للصدفة، هذه هي كلمة الأمر. .TP \fIn\fP الكلمة رقم \fIn\fP. .TP \fB\*^\fP المعامل الأول: الكلمة رقم 1. .TP \fB$\fP الكلمة الأخيرة. وعادة ما تكون هي المعامل الأخير، ولكنها ستتوسع إلى الكلمة رقم صفر إذا كانت هناك كلمة واحدة فقط في السطر. .TP \fB%\fP الكلمة الأولى المطابقة لأحدث .Q ?\fIstring\fP? بحث، إذا بدأت سلسلة البحث بحرف هو جزء من كلمة. مبدئياً، تبدأ عمليات البحث من نهاية كل سطر وتتجه نحو البداية، لذا فإن أول كلمة مطابقة هي الأقرب لنهاية السطر. .TP \fIx\fP\fB\-\fP\fIy\fP نطاق من الكلمات؛ .Q \-\fIy\fP تختصر .Q 0\-\fIy\fP . .TP \fB*\fP جميع الكلمات عدا الكلمة رقم صفر. هذا مرادف لـ .Q \fI1\-$\fP . ليس من الخطأ استخدام \fB*\fP إذا كانت هناك كلمة واحدة فقط في الحدث؛ إذ تتوسع إلى سلسلة نصية فارغة في تلك الحالة. .TP \fBx*\fP تختصر \fIx\-$\fP. .TP \fBx\-\fP تختصر \fIx\-$\fP مثل \fBx*\fP، ولكنها تحذف الكلمة الأخيرة. إذا كان \fBx\fP مفقوداً، فإن قيمته المبدئية تكون 0. .PD .PP إذا قُدم واسم كلمة بدون مواصفات حدث، يُستخدم الأمر السابق كحدث، وهذا يكافئ \fB!!\fP. .SS المعدلات بعد واسم الكلمة الاختياري، قد يتضمن التوسيع تسلسلاً من مغير واحد أو أكثر من المغيرات التالية، كل منها مسبوق بـ .Q : . تقوم هذه بتعديل أو تحرير الكلمة أو الكلمات المختارة من حدث التاريخ. .PP .PD 0 .TP \fBh\fP إزالة مكون مسار لاحق، مع ترك الرأس فقط. .TP \fBt\fP إزالة جميع مكونات المسار البادئة، مع ترك الذيل. .TP \fBr\fP إزالة لاحقة من شكل \fI.xxx\fP، مع ترك الاسم الأساسي. .TP \fBe\fP إزالة كل شيء ما عدا اللاحقة الأخيرة. .TP \fBp\fP طباعة الأمر الجديد دون تنفيذه. .TP \fBq\fP اقتباس الكلمات المستبدلة، مع هرب أي استبدالات أخرى. .TP \fBx\fP اقتباس الكلمات المستبدلة كما هو الحال مع \fBq\fP، ولكن مع تقسيمها إلى كلمات عند الـ \fBفراغات\fP والأسطر الجديدة. المغيران \fBq\fP و \fBx\fP متعارضان؛ ويستخدم التوسيع آخر مغير قُدم. .TP \fBs/\fP\fIold\fP\fB/\fP\fInew\fP\fB/\fP استبدال \fInew\fP بأول ظهور لـ \fIold\fP في سطر الحدث. يمكن استخدام أي حرف كمحدد بدلاً من /. المحدد النهائي اختياري إذا كان هو الحرف الأخير في سطر الحدث. تقوم المائلة الخلفية الواحدة باقتباس المحدد في \fIold\fP و \fInew\fP. إذا ظهرت علامة & في \fInew\fP، تُستبدل بـ \fIold\fP. وتقوم المائلة الخلفية الواحدة باقتباس &. إذا كان \fIold\fP فارغاً، يُعين على آخر \fIold\fP استُبدل، أو إذا لم تحدث استبدالات تاريخ سابقة، يُعين على آخر \fIstring\fP في بحث \fB!?\fP\fIstring\fP\fB[?]\fP. إذا كان \fInew\fP فارغاً، يُحذف كل \fIold\fP مطابق. .TP \fB&\fP تكرار الاستبدال السابق. .TP \fBg\fP جعل التغييرات تُطبق على سطر الحدث بالكامل. يُستخدم هذا بالاقتران مع .Q \fB:s\fP (على سبيل المثال، .Q \fB:gs/\fIold\fP/\fInew\fP/\fR ) أو .Q \fB:&\fP . وإذا استُخدم مع .Q \fB:s\fP , فيمكن استخدام أي محدد بدلاً من /، ويكون المحدد النهائي اختيارياً إذا كان هو الحرف الأخير في سطر الحدث. ويمكن استخدام \fBa\fP كمرادف لـ \fBg\fP. .TP \fBG\fP تطبيق الـ .Q \fBs\fP أو .Q \fB&\fP مغير التالي مرة واحدة على كل كلمة في سطر الحدث. .PD .SH "أوامر الصدفة المدمجة" .\" start of bash_builtins .zZ .PP ما لم يذكر خلاف ذلك، فإن كل أمر داخلي موثق في هذا القسم على أنه يقبل خيارات مسبوقة بـ \fB\-\fP يقبل \fB\-\-\fP للدلالة على نهاية الخيارات. الأوامر الداخلية \fB:\fP و \fBtrue\fP و \fBfalse\fP و \fBtest\fP/\fB[\fP لا تقبل خيارات ولا تعامل \fB\-\-\fP بمعاملة خاصة. الأوامر الداخلية \fBexit\fP و \fBlogout\fP و \fBreturn\fP و \fBbreak\fP و \fBcontinue\fP و \fBlet\fP و \fBshift\fP تقبل وتعالج المعطيات التي تبدأ بـ \fB\-\fP دون الحاجة إلى \fB\-\-\fP. الأوامر الداخلية الأخرى التي تقبل معطيات ولكن لم يحدد قبولها لخيارات، تفسر المعطيات التي تبدأ بـ \fB\-\fP كخيارات غير صالحة وتتطلب \fB\-\-\fP لمنع هذا التفسير. .PP .PD 0 .TP \fB:\fP [\fIمعطيات\fP] .PD لا تأثير؛ لا يفعل الأمر شيئًا سوى توسيع الوسائط \fIarguments\fP وتنفيذ أي عمليات إعادة توجيه محددة. حالة العودة هي صفر. .TP \fB\&.\&\fP [\fB\-p\fP \fIمسار\fP] \fIاسم_الملف\fP [\fIوسطاء\fP] .PD 0 .TP \fBsource\fP [\fB\-p\fP \fIمسار\fP] \fIاسم_الملف\fP [\fIمعطيات\fP] .PD يقرأ الأمر \fB\&.\&\fP (أو \fBsource\fP) الأوامر وينفذها من \fIfilename\fP في بيئة الصدفة الحالية ويعيد حالة الخروج لآخر أمر نُفذ من \fIfilename\fP. .IP إذا لم يحتوِ \fIfilename\fP على شرطة مائلة، يبحث \fB\&.\&\fP عنه. إذا زود الخيار \fB\-p\fP، يعامل \fB\&.\&\fP المسار \fIpath\fP كقائمة أدلة مفصولة بنقطتين للبحث فيها عن \fIfilename\fP؛ وإلا يستخدم \fB\&.\&\fP الإدخالات في .SM \fBPATH\fP للعثور على الدليل الذي يحتوي على \fIfilename\fP. لا يشترط أن يكون \fIfilename\fP قابلا للتنفيذ. عندما لا يكون \fBbash\fP في وضع posix، فإنه يبحث في الدليل الحالي إذا لم يُعثر على \fIfilename\fP في .SM \fBPATH\fP، ولكنه لا يبحث في الدليل الحالي إذا زود الخيار \fB\-p\fP. إذا عُطل خيار \fBsourcepath\fP في أمر الصدفة المدمج \fBshopt\fP، فلن يبحث \fB\&.\&\fP في .SM \fBPATH\fP. .IP إذا زودت أي \fIarguments\fP، فإنها تصبح المعاملات الموضعية عند تنفيذ \fIfilename\fP. وإلا تظل المعاملات الموضعية دون تغيير. .IP إذا جرى تفعيل الخيار \fB\-T\fP، يرث الأمر \fB.\fP أي فخ (trap) لـ \fBDEBUG\fP؛ وإذا لم يُفعل، يتم حفظ أي سلسلة فخ لـ \fBDEBUG\fP واستعادتها حول استدعاء \fB.\fP، ويقوم \&\fB.\fP بإلغاء ضبط فخ \fBDEBUG\fP أثناء تنفيذه. إذا لم يُضبط \fB\-T\fP، وقام الملف المصدر بتغيير فخ \fBDEBUG\fP، فستستمر القيمة الجديدة بعد اكتمال \fB.\fP. حالة الرجوع هي حالة آخر أمر نُفذ من \fIfilename\fP (0 في حال عدم تنفيذ أي أوامر)، وقيمة غير صفرية إذا لم يُعثر على \fIfilename\fP أو تعذرت قراءته. .TP \fBalias\fP [\fB\-p\fP] [\fIالاسم\fP[=\fIالقيمة\fP] .\|.\|.] بدون وسائط أو مع خيار \fB\-p\fP، يطبع \fBalias\fP قائمة الأسماء المستعارة بصيغة \fBalias\fP \fIname\fP=\fIvalue\fP على المخرجات القياسية. عند تقديم وسائط، يُعرف اسمًا مستعارًا لكل \fIname\fP مُعطى له \fIvalue\fP. تؤدي المسافة اللاحقة في \fIvalue\fP إلى فحص الكلمة التالية لاستبدال الاسم المستعار عند توسيعه أثناء تحليل الأمر. لكل \fIname\fP في قائمة الوسائط لم تُقدم له \fIvalue\fP، يُطبع اسم وقيمة الاسم المستعار \fIname\fP. يعيد \fBalias\fP قيمة صحيحة ما لم يُعطَ \fIname\fP (بدون =\fIvalue\fP مقابلة) لم يُعرف له اسم مستعار. .TP \fBbg\fP [\fIjobspec\fP .\|.\|.] استئناف كل وظيفة معلقة \fIjobspec\fP في الخلفية، كما لو أنها بدأت بـ \fB&\fP. إذا لم يوجد \fIjobspec\fP، تستخدم الصدفة تصورها لـ \fIالوظيفة الحالية\fP. يعيد \fBbg\fP \fIjobspec\fP القيمة 0 ما لم يشغل عند تعطيل التحكم في الوظائف، أو عند تشغيله مع تمكين التحكم في الوظائف إذا لم يتم العثور على أي \fIjobspec\fP محدد أو بدأ بدون التحكم في الوظائف. .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-lsvSVX\fP] .PD 0 .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] [\fB\-q\fP \fIfunction\fP] [\fB\-u\fP \fIfunction\fP] [\fB\-r\fP \fIkeyseq\fP] .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-f\fP \fIfilename\fP .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-x\fP \fIkeyseq\fP[:] \fIshell\-command\fP .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fB\-p\fP|\fB\-P\fP [\fIreadline\-command\fP] .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIreadline\-command\fP .TP \fBbind\fP \fIسطر\-أوامر\-readline\fP .PD اعرض ارتباطات مفاتيح ودوال \fBreadline\fP الحالية، أو اربط تسلسل مفاتيح بدالة أو ماكرو في \fBreadline\fP أو بأمر صدفة، أو اضبط متغير \fBreadline\fP. كل وسيط ليس خياراً هو ارتباط مفتاح أو أمر كما يظهر في ملف تهيئة \fBreadline\fP مثل \&\fI.inputrc\fP، ولكن يجب تمرير كل ارتباط أو أمر كوسيط منفصل؛ مثلاً، \*'\*"\eC\-x\eC\-r\*": re\-read\-init\-file\*'. في التوصيفات التالية، تُنسق المخرجات المتاحة لإعادة القراءة كأوامر تظهر في ملف تهيئة \fBreadline\fP أو تُقدم كوسائط فردية لأمر \fBbind\fP. الخيارات، إذا تم توفيرها، لها المعاني التالية: .RS .PD 0 .TP \fB\-m \fP\fIخارطة_المفاتيح\fP استخدم \fIkeymap\fP كخريطة مفاتيح لتتأثر بالارتباطات اللاحقة. أسماء \fIkeymap\fP المقبولة هي \fIemacs، emacs\-standard، emacs\-meta، emacs\-ctlx، vi، vi\-move، vi\-command\fP، و \fIvi\-insert\fP. رمز \fIvi\fP يعادل \fIvi\-command\fP (\fIvi\-move\fP مرادف أيضًا)؛ و \fIemacs\fP يعادل \fIemacs\-standard\fP. .TP \fB\-l\fP أدرج أسماء كافة دالات \fBreadline\fP. .TP \fB\-p\fP اعرض أسماء دوال \fBreadline\fP وارتباطاتها بطريقة تتيح استخدامها كوسيط لأمر \fBbind\fP لاحق أو في ملف تهيئة \fBreadline\fP. إذا تبقت وسائط بعد معالجة الخيارات، سيعاملها \fBbind\fP كأسماء أوامر \fBreadline\fP ويقصر المخرجات على تلك الأسماء. .TP \fB\-P\fP سرد أسماء دوال وارتباطات \fBreadline\fP الحالية. إذا بقيت معاملات بعد معالجة الخيارات، فإن \fBbind\fP يعاملها كأسماء أوامر \fBreadline\fP ويقيد المخرجات لتلك الأسماء. .TP \fB\-s\fP اعرض تسلسلات مفاتيح \fBreadline\fP المرتبطة بالماكرو والسلاسل النصية التي تخرجها بطريقة تتيح استخدامها كوسيط لأمر \fBbind\fP لاحق أو في ملف تهيئة \fBreadline\fP. .TP \fB\-S\fP اعرض تسلسلات مفاتيح \fBreadline\fP المرتبطة بالماكرو والسلاسل النصية التي تخرجها. .TP \fB\-v\fP اعرض أسماء متغيرات \fBreadline\fP وقيمها بطريقة تتيح استخدامها كوسيط لأمر \fBbind\fP لاحق أو في ملف تهيئة \fBreadline\fP. .TP \fB\-V\fP سرد أسماء وقيم متغيرات \fBreadline\fP الحالية. .TP \fB\-f \fP\fIاسم_الملف\fP قراءة روابط المفاتيح من \fIfilename\fP. .TP \fB\-q \fP\fIدالة\fP يعرض تسلسلات المفاتيح التي تستدعي \fBreadline\fP \fIدالة\fP المسمى. .TP \fB\-u \fP\fIدالة\fP فك ربط كافة تسلسلات المفاتيح المربوطة بـ \fIfunction\fP المسماة في \fBreadline\fP. .TP \fB\-r \fP\fIتسلسل_المفاتيح\fP إزالة أي ربط حالي لـ \fIkeyseq\fP. .TP \fB\-x \fP\fIتسلسل_مفاتيح\fP\fB[: ]\fP\fIأمر\-صدفة\fP يؤدي إلى تنفيذ \fIأمر\-الصدفة\fP كلما أُدخل \fIkeyseq\fP. الفاصل بين \fIkeyseq\fP و\fIأمر\-الصدفة\fP هو إما مسافة بيضاء أو نقطتان متبوعتان اختياريًا بمسافة بيضاء. إذا كان الفاصل مسافة بيضاء، فيجب إحاطة \fIأمر\-الصدفة\fP بعلامات اقتباس مزدوجة ويقوم \fBreadline\fP بتوسيع أي من هروب الشرطة المائلة الخلفية الخاصة به في \fIأمر\-الصدفة\fP قبل حفظه. إذا كان الفاصل نقطتين، فإن أي علامات اقتباس مزدوجة محيطة تكون اختيارية، ولا يقوم \fBreadline\fP بتوسيع سلسلة الأمر قبل حفظها. بما أن تعبير ربط المفاتيح بالكامل يجب أن يكون معاملًا واحدًا، فينبغي إحاطته بعلامات اقتباس مفردة. عند تنفيذ \fIأمر\-الصدفة\fP، تضبط الصدفة متغير .SM \fBREADLINE_LINE\fP على محتويات خبيئة سطر \fBreadline\fP ومتغيري .SM \fBREADLINE_POINT\fP و .SM \fBREADLINE_MARK\fP على الموقع الحالي لنقطة الإدراج ونقطة الإدراج المحفوظة (العلامة)، على التوالي. تسند الصدفة أي معامل عددي قدمه المستخدم إلى متغير .SM \fBREADLINE_ARGUMENT\fP. إذا لم يكن هناك معامل، فلن يُضبط هذا المتغير. إذا قام الأمر المنفذ بتغيير قيمة أي من .SM \fBREADLINE_LINE\fP أو .SM \fBREADLINE_POINT\fP أو .SM \fBREADLINE_MARK\fP، فستنعكس تلك القيم الجديدة في حالة التحرير. .TP \fB\-X\fP سرد كافة تسلسلات المفاتيح المرتبطة بأوامر الصدفة والأوامر المرتبطة بها بتنسيق يمكن إعادة استخدامه كمعامل لأمر \fBbind\fP لاحق. .PD .PP القيمة المرجعة هي 0 ما لم يُقدم خيار غير معروف أو حدث خطأ. .RE .TP \fBbreak\fP [\fIn\fP] اخرج من داخل حلقة \fBfor\fP أو \fBwhile\fP أو \fBuntil\fP أو \fBselect\fP. إذا تم تحديد \fIn\fP، فإن \fBbreak\fP يخرج من عدد \fIn\fP من الحلقات المحيطة. يجب أن يكون \fIn\fP \(>= 1. إذا كان \fIn\fP أكبر من عدد الحلقات المحيطة، يتم الخروج من جميع الحلقات المحيطة. قيمة الإرجاع هي 0 ما لم يكن \fIn\fP غير أكبر من أو يساوي 1. .TP \fBbuiltin\fP \fIshell\-builtin\fP [\fIarguments\fP] نفذ أمر الصدفة المدمج المحدد \fIshell\-builtin\fP، ممررًا إليه \fIarguments\fP، وأرجع حالة الخروج الخاصة به. هذا مفيد عند تعريف دالة لها نفس اسم مدمج في الصدفة، مع الاحتفاظ بوظيفية المدمج داخل الدالة. يُعاد تعريف المدمج \fBcd\fP عادةً بهذه الطريقة. تكون حالة الرجوع خطأ (false) إذا لم يكن \fIshell\-builtin\fP أمرًا مدمجًا في الصدفة. .TP \fBcaller\fP [\fIexpr\fP] يعيد سياق أي استدعاء روتين فرعي نشط (دالة صدفة أو سكربت نُفذ باستخدام الأوامر المدمجة \fB.\fP أو \fBsource\fP). .IP بدون \fIexpr\fP، يعرض \fBcaller\fP رقم السطر واسم ملف المصدر لاستدعاء الروتين الفرعي الحالي. إذا قُدم عدد صحيح غير سالب كـ \fIexpr\fP، يعرض \fBcaller\fP رقم السطر، واسم الروتين الفرعي، وملف المصدر المقابل لذلك الموضع في مكدس نداءات التنفيذ الحالي. يمكن استخدام هذه المعلومات الإضافية، على سبيل المثال، لطباعة تتبع المكدس. الإطار الحالي هو الإطار 0. .IP القيمة المرجعة هي 0 ما لم تكن الصدفة لا تنفذ استدعاء روتين فرعي أو كان \fIexpr\fP لا يتوافق مع موضع صالح في مكدس الاستدعاءات. .TP .PD 0 \fBcd\fP [\fB\-L\fP] [\fB\-@\fP] [\fIdir\fP] .TP \fBcd\fP \fB\-P\fP [\fB\-e\fP] [\fB\-@\fP] [\fIdir\fP] .PD غير الدليل الحالي إلى \fIdir\fP. إذا لم يُزود \fIdir\fP، تُستخدم قيمة متغير صدفة .SM \fBHOME\fP كـ \fIdir\fP. يوجد المتغير .SM \fBCDPATH\fP، وإذا لم يبدأ \fIdir\fP بشرطة مائلة (/)، يستخدمه \fBcd\fP كمسار بحث: تبحث الصدفة عن كل اسم دليل في .SM \fBCDPATH\fP عن \fIdir\fP. تُفصل أسماء الأدلة البديلة في .SM \fBCDPATH\fP بنقطتين (:). اسم الدليل الفارغ في .SM \fBCDPATH\fP هو نفس الدليل الحالي، أي: .Q .\& . .IP The \fB\-P\fP option causes \fBcd\fP to use the physical directory structure by resolving symbolic links while traversing \fIdir\fP and before processing instances of .FN .\|.\& in \fIdir\fP (see also the \fB\-P\fP option to the \fBset\fP builtin command). .IP The \fB\-L\fP option forces \fBcd\fP to follow symbolic links by resolving the link after processing instances of .FN .\|.\& in \fIdir\fP. If .FN .\|.\& appears in \fIdir\fP, \fBcd\fP processes it by removing the immediately previous pathname component from \fIdir\fP, back to a slash or the beginning of \fIdir\fP, and verifying that the portion of \fIdir\fP it has processed to that point is still a valid directory name after removing the pathname component. If it is not a valid directory name, \fBcd\fP returns a non\-zero status. If neither \fB\-L\fP nor \fB\-P\fP is supplied, \fBcd\fP behaves as if \fB\-L\fP had been supplied. .IP إذا تم تزويد الخيار \fB\-e\fP مع \fB\-P\fP، وتعذر على \fBcd\fP تحديد مجلد العمل الحالي بنجاح بعد تغيير المجلد بنجاح، فإنه يرجع حالة غير صفرية. .IP في الأنظمة التي تدعم ذلك، يعرض الخيار \fB\-@\fP السمات الممتدة المرتبطة بملف كدليل. .IP يُحوّل معطى \fB\-\fP إلى .SM \fB$OLDPWD\fP قبل محاولة تغيير المجلد. .IP إذا استخدم \fBcd\fP اسم دليل غير فارغ من .SM \fBCDPATH\fP، أو إذا كان \fB\-\fP هو الوسيطة الأولى، وكان تغيير الدليل ناجحا، يكتب \fBcd\fP مسار الدليل المطلق لمجلد العمل الجديد في المخرجات القياسية. .IP إذا نجح تغيير المجلد، يقوم \fBcd\fP بضبط قيمة متغير البيئة \fBPWD\fP إلى اسم المجلد الجديد، ويضبط متغير البيئة \fBOLDPWD\fP إلى قيمة مجلد العمل الحالي قبل التغيير. .IP القيمة المرجعة هي true إذا غُير الدليل بنجاح؛ و false خلاف ذلك. .TP \fBcommand\fP [\fB\-pVv\fP] \fIcommand\fP [\fIarg\fP .\|.\|.] يشغل الأمر الداخلي \fBcommand\fP الـ \fIأمر\fP مع الـ \fIمعاملات\fP مع تعطيل البحث العادي عن دوال الصدفة للـ \fIأمر\fP. تُنفذ الأوامر الداخلية فقط أو الأوامر الموجودة في .SM \fBPATH\fP والمسمى \fIأمر\fP. إذا وُفر الخيار \fB\-p\fP، فسيُجرى البحث عن \fIأمر\fP باستخدام قيمة مبدئية لـ .SM \fBPATH\fP تضمن العثور على جميع الأدوات القياسية. .IP إذا زود أي من الخيارين \fB\-V\fP أو \fB\-v\fP، يطبع \fBcommand\fP وصفا لـ \fIcommand\fP. يعرض الخيار \fB\-v\fP كلمة واحدة تشير إلى الأمر أو اسم الملف المستخدم لاستدعاء \fIcommand\fP؛ بينما ينتج الخيار \fB\-V\fP وصفا أكثر تفصيلا. .IP إذا تم تزويد الخيار \fB\-V\fP أو \fB\-v\fP، تكون حالة الخروج صفرًا إذا تم العثور على \fIالأمر\fP، وغير صفرية إذا لم يتم العثور عليه. إذا لم يتم تزويد أي من الخيارين وحدث خطأ أو تعذر العثور على \fIالأمر\fP، تكون حالة الخروج 127. بخلاف ذلك، تكون حالة خروج المدمج \fBcommand\fP هي حالة خروج \fIالأمر\fP. .TP \fBcompgen\fP [\fB\-V\fP \fIvarname\fP] [\fIoption\fP] [\fIword\fP] ولد تطابقات إكمال محتملة لـ \fIword\fP وفقًا لـ \fIالخيارات\fP، والتي قد تكون أي خيار يقبله \fBcomplete\fP المدمج باستثناء \fB\-p\fP، \fB\-r\fP، \fB\-D\fP، \fB\-E\fP، و \fB\-I\fP، واكتب التطابقات إلى المخرج القياسي. .IP إذا تم تزويد الخيار \fB\-V\fP، يقوم \fBcompgen\fP بتخزين عمليات الإكمال المولدة في متغير مصفوفة مفهرسة \fIvarname\fP بدلاً من كتابتها في المخرجات القياسية. .IP عند استخدام خيارات \fB\-F\fP أو \fB\-C\fP، فإن متغيرات الصدفة المتنوعة التي تضبطها مرافق الإكمال القابلة للبرمجة، رغم توفرها، لن تحتوي على قيم مفيدة. .IP ستُولد التطابقات بنفس الطريقة التي يولدها بها كود الإكمال القابل للبرمجة مباشرة من مواصفات إكمال بنفس الأعلام. إذا حُددت \fIword\fP، فستُعرض أو تُخزن فقط عمليات الإكمال التي تطابق \fIword\fP. .IP القيمة المرجعة هي true ما لم يُقدم خيار غير صالح، أو لم تُولد أي تطابقات. .TP \fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp\-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIaction\fP] .br [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] .br [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname\fP \&.\|.\|.] .PD 0 .TP \fBcomplete\fP \fB\-pr\fP [\fB\-DEI\fP] [\fIname\fP .\|.\|.] .PD تحديد كيفية إكمال الوسائط لكل اسم \fIname\fP. .IP إذا وُفر الخيار \fB\-p\fP، أو إذا لم تُوفر خيارات أو \fIأسماء\fP، فتُطبع مواصفات الإكمال الحالية بطريقة تسمح بإعادة استخدامها كمدخلات. يزيل الخيار \fB\-r\fP مواصفة إكمال لكل \fIاسم\fP، أو إذا لم تُوفر \fIأسماء\fP، تُزال كل مواصفات الإكمال. .IP يشير الخيار \fB\-D\fP إلى أن الخيارات والإجراءات الأخرى المقدمة يجب أن تنطبق على .Q default إكمال الأوامر؛ أي الإكمال المحاول على أمر لم يسبق تعريف إكمال له. يشير الخيار \fB\-E\fP إلى أن الخيارات والإجراءات الأخرى الموفرة يجب أن تنطبق على .Q empty إكمال الأوامر؛ أي الإكمال المحاول في سطر فارغ. يشير الخيار \fB\-I\fP إلى أن الخيارات والإجراءات الأخرى الموفرة يجب أن تنطبق على الإكمال في الكلمة الأولى غير المسندة في السطر، أو بعد فاصل أوامر مثل \fB;\fP أو \fB|\fP، وهو عادةً إكمال اسم الأمر. إذا وُفرت خيارات متعددة، فإن الخيار \fB\-D\fP له الأولوية على \fB\-E\fP، وكلاهما لهما الأولوية على \fB\-I\fP. إذا وُفر أي من \fB\-D\fP أو \fB\-E\fP أو \fB\-I\fP، تُتجاهل أي وسائط \fIname\fP أخرى؛ وتنطبق عمليات الإكمال هذه فقط على الحالة المحددة بالخيار. .IP عملية تطبيق مواصفات الإكمال هذه عند محاولة إكمال الكلمات موصوفة .ie \n(zZ=1 in \fIbash\fP(1). .el above under \fBProgrammable Completion\fP. .IP الخيارات الأخرى، إذا حُددت، فلها المعاني التالية. يجب وضع وسائط الخيارات \fB\-G\fP و \fB\-W\fP و \fB\-X\fP (وإذا لزم الأمر، الخياران \fB\-P\fP و \fB\-S\fP) بين علامتي اقتباس لحمايتها من التوسع قبل استدعاء الأمر المدمج \fBcomplete\fP. .IP .RS .PD 0 .TP 8 \fB\-o\fP \fIخيار\-ضغط\fP يتحكم الـ \fIخيار\-الإكمال\fP في عدة جوانب من سلوك مواصفة الإكمال (compspec) بعيدًا عن التوليد البسيط للإكمالات. قد يكون \fIخيار\-الإكمال\fP واحدًا من: .RS .TP 8 \fBbashdefault\fP أجرِ بقية عمليات إكمال \fBbash\fP المبدئية إذا لم يولد compspec أي تطابقات. .TP 8 \fBdefault\fP استخدم إكمال أسماء الملفات المبدئي لـ \fBreadline\fP إذا لم يولد compspec أي تطابقات. .TP 8 \fBdirnames\fP أجرِ إكمالاً لاسم الدليل إذا لم يولد compspec أي تطابقات. .TP 8 \fBأسماء الملفات\fP إخبار \fBreadline\fP أن compspec يولد أسماء ملفات، حتى يتمكن من إجراء أي معالجة خاصة بأسماء الملفات (مثل إضافة شرطة مائلة لأسماء الأدلة، أو اقتباس المحارف الخاصة، أو منع المسافات اللاحقة). هذا مخصص للاستخدام مع دوال الغلاف. .TP 8 \fBfullquote\fP إخبار \fBreadline\fP باقتباس جميع الكلمات المكملة حتى لو لم تكن أسماء ملفات. .TP 8 \fBnoquote\fP إخبار \fBreadline\fP بعدم اقتباس الكلمات المكملة إذا كانت أسماء ملفات (اقتباس أسماء الملفات هو الافتراضي). .TP 8 \fBnosort\fP إخبار \fBreadline\fP بعدم فرز قائمة الإكمالات الممكنة أبجدياً. .TP 8 \fBnospace\fP إخبار \fBreadline\fP بعدم إلحاق مسافة (الافتراضي) بالكلمات التي تم إكمالها في نهاية السطر. .TP 8 \fBplusdirs\fP بعد توليد أي تطابقات محددة بواسطة compspec، حاول إكمال اسم الدليل وأضف أي تطابقات إلى نتائج الإجراءات الأخرى. .RE .TP 8 \fB\-A\fP \fIالإجراء\fP قد يكون الـ \fIإجراء\fP واحدًا مما يلي لتوليد قائمة بالإكمالات الممكنة: .RS .TP 8 \fBalias\fP أسماء مستعارة. يمكن تحديدها أيضاً باستخدام \fB\-a\fP. .TP 8 \fBarrayvar\fP أسماء متغيرات المصفوفة. .TP 8 \fBbinding\fP أسماء روابط مفاتيح \fBReadline\fP. .TP 8 \fBbuiltin\fP أسماء أوامر الصدفة المدمجة. يمكن تحديدها أيضًا كـ \fB\-b\fP. .TP 8 \fBcommand\fP أسماء الأوامر. قد تُحدد أيضًا كـ \fB\-c\fP. .TP 8 \fBdirectory\fP أسماء الأدلة. يمكن تحديدها أيضاً كـ \fB\-d\fP. .TP 8 \fBdisabled\fP أسماء أوامر الصدفة المدمجة المعطلة. .TP 8 \fBenabled\fP أسماء أوامر الصدفة المدمجة الممكنة. .TP 8 \fBexport\fP أسماء متغيرات الصدفة المصدرة. يمكن تحديدها أيضًا كـ \fB\-e\fP. .TP 8 \fBfile\fP أسماء الملفات والمجلدات، على غرار إكمال أسماء الملفات في \fBreadline\fP. قد يتم تحديده أيضًا كـ \fB\-f\fP. .TP 8 \fBالدالة\fP أسماء دوال الصدفة. .TP 8 \fBمجموعة\fP أسماء المجموعات. يمكن تحديدها أيضًا بـ \fB\-g\fP. .TP 8 \fBhelptopic\fP مواضيع المساعدة كما تقبلها الأداة المضمنة \fBhelp\fP. .TP 8 \fBhostname\fP أسماء المضيفين، كما هي مأخوذة من الملف المحدد بواسطة متغير الصدفة .SM \fBHOSTFILE\fP. .TP 8 \fBjob\fP أسماء الوظائف (Job names)، إذا كان التحكم في الوظائف نشطاً. يمكن تحديدها أيضاً كـ \fB\-j\fP. .TP 8 \fBkeyword\fP كلمات الصدفة المحجوزة. يمكن تحديدها أيضًا بـ \fB\-k\fP. .TP 8 \fBrunning\fP أسماء المهام الجارية، إذا كان التحكم بالمهام نشطًا. .TP 8 \fBservice\fP أسماء الخدمة. يمكن تحديدها أيضًا بـ \fB\-s\fP. .TP 8 \fBsetopt\fP المعطيات الصالحة للخيار \fB\-o\fP للأمر الداخلي \fBset\fP. .TP 8 \fBshopt\fP أسماء خيارات الصدفة كما يقبلها أمر \fBshopt\fP المدمج. .TP 8 \fBsignal\fP أسماء الإشارات (Signals). .TP 8 \fBstopped\fP أسماء المهام المتوقفة، إذا كان التحكم بالمهام نشطًا. .TP 8 \fBuser\fP أسماء المستخدمين. يمكن تحديدها أيضاً عبر \fB\-u\fP. .TP 8 \fBvariable\fP أسماء جميع متغيرات الصدفة. يمكن تحديدها أيضًا كـ \fB\-v\fP. .RE .TP 8 \fB\-C\fP \fIالأمر\fP يُنفذ \fIcommand\fP في بيئة صدفة فرعية، ويُستخدم خرجه كإكمالات ممكنة. تُمرر الوسائط كما هو الحال مع الخيار \fB\-F\fP. .TP 8 \fB\-F\fP \fIالدالة\fP تُنفذ دالة الصدفة \fIfunction\fP في بيئة الصدفة الحالية. عند تنفيذ الدالة، يكون الوسيط الأول (\fB$1\fP) هو اسم الأمر الذي تُكمل وسائطه، والوسيط الثاني (\fB$2\fP) هو الكلمة التي تُكمل، والوسيط الثالث (\fB$3\fP) هو الكلمة التي تسبق الكلمة التي تُكمل على سطر الأوامر الحالي. عندما تنتهي \fIfunction\fP، يسترجع الإكمال القابل للبرمجة الإكمالات الممكنة من قيمة متغير مصفوفة .SM \fBCOMPREPLY\fP. .TP 8 \fB\-G\fP \fIنمط_التعميم\fP قم بتوسيع نمط توسيع مسار الملف \fIglobpat\fP لتوليد الإكمال الممكن. .TP 8 \fB\-P\fP \fIبادئة\fP أضف \fIprefix\fP إلى بداية كل إكمال ممكن بعد تطبيق جميع الخيارات الأخرى. .TP 8 \fB\-S\fP \fIاللاحقة\fP ألحق \fIsuffix\fP لكل إكمال ممكن بعد تطبيق كل الخيارات الأخرى. .TP 8 \fB\-W\fP \fIقائمة_كلمات\fP تقسيم \fIwordlist\fP باستخدام المحارف الموجودة في متغير .SM \fBIFS\fP الخاص كفواصل، وتوسيع كل كلمة ناتجة. يتم احترام اقتباس الغلاف (Shell quoting) داخل \fIwordlist\fP لتوفير آلية للكلمات لكي تحتوي على محارف الغلاف الخاصة أو محارف في قيمة .SM \fBIFS\fP. الإكمالات الممكنة هي أعضاء القائمة الناتجة التي تطابق بادئة الكلمة التي يتم إكمالها. .TP 8 \fB\-X\fP \fIنمط_المرشح\fP يُعد \fIfilterpat\fP نمطًا يُستخدم لتوسيع أسماء المسارات. يُطبق على قائمة الإكمالات الممكنة التي ولدتها الخيارات والوسائط السابقة، وتُزال كل إكمال يطابق \fIfilterpat\fP من القائمة. علامة \fB!\fP البادئة في \fIfilterpat\fP تنفي النمط؛ في هذه الحالة، تُزال أي إكمال لا يطابق \fIfilterpat\fP. .PD .PP القيمة المرجعة هي true ما لم يُقدم خيار غير صالح، أو قُدم خيار غير \fB\-p\fP أو \fB\-r\fP أو \fB\-D\fP أو \fB\-E\fP أو \fB\-I\fP بدون وسيط \fIname\fP، أو حدثت محاولة لإزالة مواصفات إكمال لـ \fIname\fP لا توجد له مواصفات، أو حدث خطأ أثناء إضافة مواصفات إكمال. .RE .TP \fBcompopt\fP [\fB\-o\fP \fIoption\fP] [\fB\-DEI\fP] [\fB+o\fP \fIoption\fP] [\fIname\fP] تعديل خيارات الإكمال لكل \fIname\fP وفقاً لـ \fIoption\fPs، أو للإكمال الجاري تنفيذه حالياً إذا لم تُزود أسماء. إذا لم تُزود خيارات، تُعرض خيارات الإكمال لكل \fIname\fP أو الإكمال الحالي. القيم الممكنة لـ \fIoption\fP هي تلك الصالحة لـ \fBcomplete\fP المدمج الموصوف أعلاه. .IP يشير الخيار \fB\-D\fP إلى أن الخيارات الأخرى المقدمة يجب أن تنطبق على .Q default إكمال الأوامر؛ يشير الخيار \fB\-E\fP إلى أن الخيارات الأخرى الموفرة يجب أن تنطبق على .Q empty إكمال الأوامر؛ ويشير الخيار \fB\-I\fP إلى أن الخيارات الأخرى الموفرة يجب أن تنطبق على الإكمال في الكلمة الأولى في السطر. تُحدد هذه بنفس طريقة \fBcomplete\fP المدمجة. .IP إذا زودت عدة خيارات، يكون للخيار \fB\-D\fP الأولوية على \fB\-E\fP، وكلاهما لهما الأولوية على \fB\-I\fP. .IP القيمة المرجعة هي true ما لم يُقدم خيار غير صالح، أو حدثت محاولة لتعديل الخيارات لـ \fIname\fP لا يوجد له مواصفات إكمال، أو حدث خطأ في المخرج. .TP \fBcontinue\fP [\fIn\fP] يستأنف \fBcontinue\fP التكرار التالي للحلقة \fBfor\fP أو \fBwhile\fP أو \fBuntil\fP أو \fBselect\fP المحيطة. إذا حُدد \fIn\fP، تستأنف \fBbash\fP الحلقة المحيطة رقم \fIn\fP. يجب أن يكون \fIn\fP أكبر من أو يساوي 1. إذا كان \fIn\fP أكبر من عدد الحلقات المحيطة، تستأنف الصدفة آخر حلقة محيطة ( .Q top-level حلقة). القيمة الراجعة هي 0 ما لم تكن \fIn\fP ليست أكبر من أو تساوي 1. .TP \fBdeclare\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] .\|.\|.] .PD 0 .TP \fBtypeset\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIاسم\fP[=\fIقيمة\fP] .\|.\|.] .PD صرّح عن المتغيرات أو امنحها سمات. إذا لم تُعطَ أي أسماء (\fIname\fPs)، فاعرض قيم المتغيرات أو الدوال. سيعرض الخيار \fB\-p\fP السمات والقيم لكل اسم. عند استخدام \fB\-p\fP مع وسائط الأسماء، تُتجاهل الخيارات الإضافية بخلاف \fB\-f\fP و \fB\-F\fP. .IP عند تقديم \fB\-p\fP بدون وسائط \fIname\fP، سيعرض \fBdeclare\fP السمات والقيم لكافة المتغيرات التي لها السمات المحددة بواسطة الخيارات الإضافية. إذا لم تُقدم خيارات أخرى مع \fB\-p\fP، سيعرض \fBdeclare\fP السمات والقيم لكافة متغيرات الصدفة. يقصر الخيار \fB\-f\fP العرض على وظائف الصدفة. .IP يمنع الخيار \fB\-F\fP عرض تعريفات الدوال؛ حيث يُطبع اسم الدالة وسماتها فقط. إذا فُعّل خيار الصدفة \fBextdebug\fP باستخدام \fBshopt\fP، فسيُعرض اسم ملف المصدر ورقم السطر حيث عُرف كل \fIاسم\fP أيضًا. الخيار \fB\-F\fP يتضمن \fB\-f\fP. .IP يجبر الخيار \fB\-g\fP على إنشاء المتغيرات أو تعديلها في النطاق العام، حتى عند تنفيذ \fBdeclare\fP داخل دالة صدفة. يُتجاهل هذا الخيار عندما لا يُنفذ \fBdeclare\fP داخل دالة صدفة. .IP يجعل الخيار \fB\-I\fP المتغيرات المحلية ترث السمات (باستثناء سمة \fInameref\fP) وقيمة أي متغير موجود بنفس الـ \fIاسم\fP في النطاق المحيط. إذا لم يكن هناك متغير موجود، فإن المتغير المحلي يكون غير معين في البداية. .IP يمكن استخدام الخيارات التالية لتقييد المخرج للمتغيرات ذات السمة المحددة أو لإعطاء سمات للمتغيرات: .RS .PD 0 .TP \fB\-a\fP كل \fIاسم\fP هو متغير مصفوفة مفهرسة (راجع \fBالمصفوفات\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP \fB\-A\fP كل \fIاسم\fP هو متغير مصفوفة ترابطية (راجع \fBالمصفوفات\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP \fB\-f\fP يشير كل \fIاسم\fP إلى دالة في الصدفة. .TP \fB\-i\fP تُعامل المتغير كعدد صحيح؛ التقييم الحسابي (انظر .SM \fBARITHMETIC EVALUATION\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) يُنفذ عندما يُسند قيمة للمتغير. .TP \fB\-l\fP عند تعيين قيمة للمتغير، تُحول كافة المحارف الكبيرة إلى محارف صغيرة. تُعطل سمة المحارف الكبيرة. .TP \fB\-n\fP اعطِ كل \fIاسم\fP سمة \fInameref\fP، مما يجعله مرجع اسم لمتغير آخر. يتم تحديد ذلك المتغير الآخر بواسطة قيمة \fIالاسم\fP. جميع المراجع والتخصيصات وتعديلات السمات على \fIالاسم\fP، باستثناء تلك التي تستخدم أو تغير سمة \fB\-n\fP نفسها، تُنفذ على المتغير المشار إليه بواسطة قيمة \fIالاسم\fP. لا يمكن تطبيق سمة nameref على متغيرات المصفوفات. .TP \fB\-r\fP يجعل \fIname\fP للقراءة فقط. لا يمكن بعد ذلك تعيين قيم لهذه الأسماء بواسطة بيانات تعيين لاحقة أو إلغاء تعيينها. .TP \fB\-t\fP اعطِ كل \fIاسم\fP سمة \fItrace\fP. ترث الدوال المتتبعة مصائد \fBDEBUG\fP و \fBRETURN\fP من الصدفة المستدعية. ليس لسمة التتبع معنى خاص للمتغيرات. .TP \fB\-u\fP عند تعيين قيمة للمتغير، تُحول كافة المحارف الصغيرة إلى محارف كبيرة. تُعطل سمة المحارف الصغيرة. .TP \fB\-x\fP تعليم كل \fIname\fP للتصدير إلى الأوامر اللاحقة عبر البيئة. .PD .PP استخدام .Q + بدلاً من .Q \- يعطل السمة المحددة بدلًا من ذلك، مع استثناءات وهي أن \fB+a\fP و \fB+A\fP لا يمكن استخدامهما لتدمير متغيرات المصفوفة، و \fB+r\fP لن يزيل سمة القراءة فقط. .PP عند الاستخدام داخل وظيفة، يجعل \fBdeclare\fP و \fBtypeset\fP كل \fIname\fP محليًا، كما هو الحال مع أمر \fBlocal\fP، ما لم يُقدم خيار \fB\-g\fP. إذا تبع اسم المتغير =\fIvalue\fP، فتُضبط قيمة المتغير على \fIvalue\fP. عند استخدام \fB\-a\fP أو \fB\-A\fP وصيغة التعيين المركبة لإنشاء متغيرات مصفوفة، لا تسري السمات الإضافية إلا في التعيينات اللاحقة. .PP القيمة المرجعة هي 0 ما لم يُواجه خيار غير صالح، أو حدثت محاولة لتعريف دالة باستخدام .Q "\-f foo=bar" , جرت محاولة لتعيين قيمة لمتغير للقراءة فقط، أو جرت محاولة لتعيين قيمة لمتغير مصفوفة دون استخدام صيغة التعيين المركبة (انظر \fBArrays\fP .ie \n(zZ=1 in \fIbash\fP(1)), .el above), أحد \fIالأسماء\fP ليس اسم متغير صدفة صالح، أو بُذلت محاولة لإيقاف حالة القراءة فقط لمتغير قراءة فقط، أو بُذلت محاولة لإيقاف حالة المصفوفة لمتغير مصفوفة، أو بُذلت محاولة لعرض دالة غير موجودة باستخدام \fB\-f\fP. .RE .TP \fBdirs [\-clpv] [+\fP\fIn\fP\fB] [\-\fP\fIn\fP\fB]\fP بدون خيارات، اعرض قائمة المجلدات المتذكرة حاليًا. العرض المبدئي يكون في سطر واحد مع فصل أسماء المجلدات بمسافات. تُضاف المجلدات إلى القائمة باستخدام أمر \fBpushd\fP؛ ويزيل أمر \fBpopd\fP المدخلات من القائمة. المجلد الحالي هو دائمًا المجلد الأول في المكدس. .IP الخيارات، إذا زُودت، فلها المعاني التالية: .RS .PD 0 .TP \fB\-c\fP يمسح مكدس الأدلة بحذف جميع المدخلات. .TP \fB\-l\fP ينتج قائمة باستخدام أسماء المسارات الكاملة؛ يستخدم تنسيق القائمة المبدئي علامة المدة (~) للإشارة إلى دليل المنزل. .TP \fB\-p\fP اطبع مكدس الأدلة مع مدخل واحد لكل سطر. .TP \fB\-v\fP اطبع مكدس الأدلة مع مدخل واحد لكل سطر، مسبوقاً بفهرسه في المكدس. .TP \fB+\fP\fIn\fP يعرض المدخلة رقم \fIn\fP بالعد من يسار القائمة التي تظهر بواسطة \fBdirs\fP عند استدعائه بدون خيارات، بدءًا من الصفر. .TP \fB\-\fP\fIn\fP يعرض المدخلة رقم \fIn\fP بالعد من يمين القائمة التي تظهر بواسطة \fBdirs\fP عند استدعائه بدون خيارات، بدءًا من الصفر. .PD .PP القيمة المرجعة هي 0 ما لم يُقدم خيار غير صالح أو كان \fIn\fP يشير إلى ما بعد نهاية مكدس الدلائل. .RE .TP \fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIid\fP .\|.\|.] بدون خيارات، أزل كل \fIid\fP من جدول الوظائف النشطة. قد يكون كل \fIid\fP توصيف وظيفة \fIjobspec\fP أو معرف عملية \fIpid\fP؛ إذا كان \fIid\fP هو \fIpid\fP، يستخدم \fBdisown\fP الوظيفة التي تحتوي على \fIpid\fP كـ \fIjobspec\fP. .IP إذا تم تزويد الخيار \fB\-h\fP، لا يقوم \fBdisown\fP بإزالة المهام المقابلة لكل \fIمعرف\fP من جدول المهام، بل يميزها بحيث لا ترسل الصدفة إشارة .SM \fBSIGHUP\fP إلى المهمة إذا استقبلت الصدفة إشارة .SM \fBSIGHUP\fP. .IP إذا لم يزود \fIid\fP، فإن خيار \fB\-a\fP يعني إزالة أو وسم جميع المهام؛ وخيار \fB\-r\fP بدون وسيطة \fIid\fP يزيل أو يسم المهام الجارية. إذا لم يزود \fIid\fP، ولم يزود أي من الخيارين \fB\-a\fP أو \fB\-r\fP، يزيل \fBdisown\fP أو يسم المهمة الحالية. .IP القيمة المرجعة هي 0 ما لم يكن \fIid\fP لا يحدد وظيفة صالحة. .TP \fBecho\fP [\fB\-neE\fP] [\fIarg\fP .\|.\|.] أخرج \fIarg\fPs، مفصولة بمسافات، متبوعة بسطر جديد. حالة العودة هي 0 ما لم يحدث خطأ في الكتابة. إذا حُدد \fB\-n\fP، فلا يُطبع السطر الجديد اللاحق. .IP إذا تم إعطاء الخيار \fB\-e\fP، يقوم \fBecho\fP بتفسير محارف الهروب التالية المسبوقة بشرطة مائلة خلفية. يعطل الخيار \fB\-E\fP تفسير محارف الهروب هذه، حتى في الأنظمة التي يتم تفسيرها فيها افتراضيًا. يحدد خيار الصدفة \fBxpg_echo\fP ما إذا كان \fBecho\fP سيفسر أي خيارات ويوسع محارف الهروب هذه أم لا. لا يفسر \fBecho\fP العلامة \fB\-\-\fP على أنها تعني نهاية الخيارات. .IP يفسر \fBecho\fP تسلسلات الهروب التالية: .RS .PD 0 .TP \fB\ea\fP تنبيه (جرس) .TP \fB\eb\fP backspace .TP \fB\ec\fP اقمع المزيد من المخرجات .TP \fB\ee\fP .TP \fB\eE\fP محرف هروب .TP \fB\ef\fP تغذية الصفحة .TP \fB\en\fP سطر جديد .TP \fB\er\fP رجوع العربة .TP \fB\et\fP جدولة أفقية .TP \fB\ev\fP علامة جدولة عمودية .TP \fB\e\e\fP backslash .TP \fB\e0\fP\fInnn\fP المحرف المكون من ثمانية بتات والذي قيمته هي القيمة الثمانية \fInnn\fP (من صفر إلى ثلاثة أرقام ثمانية). .TP \fB\ex\fP\fIHH\fP المحرف المكون من ثمانية بتات والذي قيمته هي القيمة الست عشرية \fIHH\fP (رقم أو رقمان ست عشريان). .TP \fB\eu\fP\fIHHHH\fP محرف يونيكود (ISO/IEC 10646) الذي قيمته هي القيمة الست عشرية \fIHHHH\fP (من رقم واحد إلى أربعة أرقام ست عشرية). .TP \fB\eU\fP\fIHHHHHHHH\fP محرف يونيكود (ISO/IEC 10646) الذي قيمته هي القيمة الست عشرية \fIHHHHHHHH\fP (من رقم واحد إلى ثمانية أرقام ست عشرية). .PD .PP يكتب \fBecho\fP أي محارف هروب غير معروفة دون تغيير. .RE .TP \fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fIfilename\fP] [\fIname\fP .\|.\|.] تفعيل وتعطيل أوامر الصدفة المدمجة. يسمح تعطيل المدمج بتنفيذ ملف قابل للتنفيذ له نفس اسم مدمج الصدفة دون تحديد مسار كامل، على الرغم من أن الصدفة تبحث عادةً عن المدمجات قبل الملفات. .IP إذا زودت الخيار \fB\-n\fP، يُعطل كل \fIname\fP؛ وإلا تُمكن الـ \fIname\fPs. على سبيل المثال، لاستخدام البرنامج الثنائي \fBtest\fP الموجود عبر .SM \fBPATH\fP بدلا من نسخة الصدفة المدمجة، نفذ .QN "enable \-n test" . .IP إذا لم تزود وسيطات \fIname\fP، أو إذا زود الخيار \fB\-p\fP، اطبع قائمة بأوامر الصدفة المدمجة. بدون وسيطات خيارات أخرى، تتكون القائمة من جميع أوامر الصدفة المدمجة الممكنة. إذا زود \fB\-n\fP، اطبع فقط الأوامر المعطلة. إذا زود \fB\-a\fP، تتضمن القائمة المطبوعة جميع الأوامر، مع إشارة إلى ما إذا كان كل منها ممكنا أم لا. خيار \fB\-s\fP يعني قصر المخرجات على أوامر .SM POSIX \fIالخاصة\fP المدمجة. .IP يعني الخيار \fB\-f\fP تحميل الأمر الداخلي الجديد \fIاسم\fP من الكائن المشترك \fIfilename\fP، في الأنظمة التي تدعم التحميل الديناميكي. إذا كان \fIfilename\fP لا يحتوي على شرطة مائلة، فستستخدم صدفة \fBBash\fP قيمة المتغير \fBBASH_LOADABLES_PATH\fP كقائمة أدلة مفصولة بنقطتين للبحث فيها عن \fIfilename\fP. القيمة المبدئية لـ \fBBASH_LOADABLES_PATH\fP تعتمد على النظام، وقد تتضمن .Q .\& لإجبار البحث في الدليل الحالي. سيحذف الخيار \fB\-d\fP وظيفة مدمجة محملة مسبقًا بـ \fB\-f\fP. إذا استُخدم \fI\-s\fP مع \fI\-f\fP، ستصبح الوظيفة المدمجة الجديدة وظيفة مدمجة خاصة بـ .SM POSIX . .IP إذا لم تورد خيارات وكان \fIname\fP ليس أمرا مدمجا في الصدفة، سيحاول \fBenable\fP تحميل \fIname\fP من كائن مشترك مسمى \fIname\fP، كما لو كان الأمر .QN "enable \-f \fIname name\fP" . .IP القيمة المرجعة هي 0 ما لم يكن \fIname\fP ليس وظيفة صدفة مدمجة أو حدث خطأ أثناء تحميل وظيفة مدمجة جديدة من كائن مشترك. .TP \fBeval\fP [\fIarg\fP .\|.\|.] اربط المعطيات \fIarg\fPs معًا في أمر واحد، مع الفصل بينها بمسافات. ثم يقرأ \fBصدفة\fP وينفذ هذا الأمر، ويعيد حالة خروجه كحالة عودة \fBeval\fP. إذا لم تكن هناك معطيات، أو كانت المعطيات خالية فقط، تعيد \fBeval\fP القيمة 0. .TP \fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIname\fP] [\fIcommand\fP [\fIarguments\fP]] إذا حُدد \fIcommand\fP، فإنه يستبدل الصدفة دون إنشاء عملية جديدة. لا يمكن أن يكون \fIcommand\fP أمرا مدمجا أو دالة في الصدفة. تصبح الـ \fIarguments\fP هي وسيطات \fIcommand\fP. إذا زود الخيار \fB\-l\fP، تضع الصدفة شرطة في بداية الوسيطة الصفرية الممرة لـ \fIcommand\fP. هذا ما يفعله \fIlogin\fP(1). يسبب الخيار \fB\-c\fP تنفيذ \fIcommand\fP ببيئة فارغة. إذا زود \fB\-a\fP، تمرر الصدفة \fIname\fP كوسيطة صفرية للأمر المنفذ. .IP إذا تعذر تنفيذ \fIcommand\fP لسبب ما، تخرج الصدفة غير التفاعلية، ما لم يُمكن خيار الصدفة \fBexecfail\fP. في هذه الحالة، تعيد حالة غير صفرية. تعيد الصدفة التفاعلية حالة غير صفرية إذا تعذر تنفيذ الملف. تخرج الصدفة الفرعية دون قيد أو شرط إذا فشل \fBexec\fP. .IP إذا لم يُحدد \fIcommand\fP، تسري أي عمليات إعادة توجيه في الصدفة الحالية، وتكون حالة العودة 0. إذا حدث خطأ في إعادة التوجيه، تكون حالة العودة 1. .TP \fBexit\fP [\fIn\fP] يؤدي إلى خروج الصدفة بحالة \fIn\fP. إذا حُذف \fIn\fP، فإن حالة الخروج هي حالة آخر أمر نُفذ. يتم تنفيذ أي مصيدة (trap) على .SM \fBEXIT\fP قبل إنهاء الصدفة. .TP \fBexport\fP [\fB\-fn\fP\^] [\fIname\fP[=\fIvalue\fP]] .\|.\|. .PD 0 .TP \fBexport \-p [\-f\^]\fP .PD تُعلّم \fInames\fP الممررة للتصدير الآلي إلى بيئة الأوامر المنفذة لاحقًا. إذا أُعطي الخيار \fB\-f\fP، فإن \fInames\fP تشير إلى دوال. .IP يزيل الخيار \fB\-n\fP تصدير كل \fIاسم\fP، أو يزيل سمة التصدير عنه. إذا لم تُعطَ أي \fIأسماء\fP، أو إذا وُفر الخيار \fB\-p\fP فقط، يعرض \fBexport\fP قائمة بأسماء جميع المتغيرات المصدرة على المخرجات القياسية. استخدام \fB\-p\fP و \fB\-f\fP معًا يعرض الدوال المصدرة. يعرض الخيار \fB\-p\fP المخرجات بصيغة يمكن إعادة استخدامها كمدخلات. .IP يسمح \fBexport\fP بتعيين قيمة المتغير عند تصديره أو إلغاء تصديره عن طريق إلحاق اسم المتغير بـ =\fIvalue\fP. هذا يضبط قيمة المتغير إلى \fIvalue\fP أثناء تعديل سمة التصدير. يعيد \fBexport\fP حالة خروج 0 ما لم يُواجه خيار غير صالح، أو لم يكن أحد الـ \fInames\fP اسم متغير صدفة صالح، أو إذا استُخدم \fB\-f\fP مع \fIname\fP لا يمثل دالة. .TP \fBfalse\fP لا يفعل شيئاً؛ ويُرجع حالة غير صفرية. .TP \fBfc\fP [\fB\-e\fP \fIename\fP] [\fB\-lnr\fP] [\fIfirst\fP] [\fIlast\fP] .PD 0 .TP \fBfc\fP \fB\-s\fP [\fIpat\fP=\fIrep\fP] [\fIcmd\fP] .PD يختار النموذج الأول نطاقًا من الأوامر من \fIfirst\fP إلى \fIlast\fP من قائمة السجل ويعرضها أو يحررها ويعيد تنفيذها. يمكن تحديد \fIFirst\fP و \fIlast\fP كسلسلة (لتحديد موقع آخر أمر يبدأ بتلك السلسلة) أو كرقم (فهرس في قائمة السجل، حيث يُستخدم الرقم السالب كإزاحة من رقم الأمر الحالي). .IP عند القائمة، فإن قيمة \fIfirst\fP أو \fIlast\fP بـ 0 تعادل \-1، وقيمة \-0 تعادل الأمر الحالي (عادةً أمر \fBfc\fP)؛ عدا ذلك فإن 0 تعادل \-1 و \-0 غير صالحة. إذا لم تُحدد \fIlast\fP، فإنها تُضبط على الأمر الحالي للقائمة (بحيث .QN "fc \-l \-10" تطبع آخر 10 أوامر) وإلى \fIfirst\fP بخلاف ذلك. إذا لم يُحدد \fIfirst\fP، فيُضبط على الأمر السابق للتحرير وعلى \-16 للقائمة. .IP إذا تم تزويد الخيار \fB\-l\fP، يتم سرد الأوامر على المخرجات القياسية. يعطل الخيار \fB\-n\fP أرقام الأوامر عند السرد. ويقوم الخيار \fB\-r\fP بعكس ترتيب الأوامر. .IP Otherwise, \fBfc\fP invokes the editor named by \fIename\fP on a file containing those commands. If \fIename\fP is not supplied, \fBfc\fP uses the value of the .SM \fBFCEDIT\fP variable, and the value of .SM \fBEDITOR\fP if .SM \fBFCEDIT\fP is not set. If neither variable is set, \fBfc\fP uses .FN vi. When editing is complete, \fBfc\fP reads the file containing the edited commands and echoes and executes them. .IP في النموذج الثاني، يقوم \fBfc\fP بإعادة تنفيذ \fIcommand\fP بعد استبدال كل مثيل لـ \fIpat\fP بـ \fIrep\fP. يتم تفسير \fICommand\fP بنفس الطريقة كما في \fIfirst\fP أعلاه. .IP اسم مستعار مفيد لاستخدامه مع \fBfc\fP هو .Q r=\* fc \-s\*\(dq\(dq , حتى تجعل الكتابة .Q "r cc" يُشغِّل آخر أمر يبدأ بـ .Q cc والكتابة .Q r يعيد تنفيذ الأمر الأخير. .IP إذا جرى استخدام الصيغة الأولى، تكون قيمة الإرجاع صفرًا ما لم يتم مواجهة خيار غير صالح أو كان \fIfirst\fP أو \fIlast\fP يحددان أسطر تاريخ خارج النطاق. عند تحرير ملف أوامر وإعادة تنفيذه، تكون قيمة الإرجاع هي قيمة آخر أمر تم تنفيذه أو الفشل في حال حدوث خطأ في الملف المؤقت. إذا تم استخدام الصيغة الثانية، تكون حالة الرجوع هي حالة الأمر المعاد تنفيذه، ما لم يكن \fIcmd\fP لا يحدد إدخال تاريخ صالح، وفي هذه الحالة يرجع \fBfc\fP حالة غير صفرية. .TP \fBfg\fP [\fIjobspec\fP] استئناف \fIjobspec\fP في الواجهة، وجعلها الوظيفة الحالية. إذا لم يوجد \fIjobspec\fP، يستخدم \fBfg\fP تصور الصدفة لـ \fIالوكيل الحالي\fP. قيمة الإرجاع هي قيمة الأمر الموضوع في الواجهة، أو الفشل إذا شُغل عند تعطيل التحكم في الوظائف، أو عند تشغيله مع تمكين التحكم في الوظائف إذا لم يحدد \fIjobspec\fP وظيفة صالحة أو حدد وظيفة بدأت بدون التحكم في الوظائف. .TP \fBgetopts\fP \fIسلسلة_الخيارات\fP \fIالاسم\fP [\fIمعطى\fP .\|.\|.] تستخدم البرمجيات النصية للصدفة ودوالها \fBgetopts\fP لتحليل المعاملات الموضعية والحصول على الخيارات ووسائطها. تحتوي \fIسلسلة_الخيارات\fP على محارف الخيارات المراد التعرف عليها؛ وإذا تبع المحرف نقطتان رأسيتان، فمن المتوقع أن يكون للخيار وسيط، ويجب أن يُفصل بينهما بمسافة بيضاء. لا يجوز استخدام محرفي النقطتين وعلامة الاستفهام كمحارف خيارات. .IP في كل مرة يُستدعى فيها \fBgetopts\fP، يضع الخيار التالي في متغير الصدفة \fIname\fP، مع تهيئة \fIname\fP إذا لم يكن موجودًا، وفهرس الوسيط التالي الذي ستتم معالجته في المتغير .SM \fBOPTIND\fP. تتم تهيئة .SM \fBOPTIND\fP إلى 1 في كل مرة تُستدعى فيها الصدفة أو نص برمجي للصدفة. عندما يتطلب خيار ما وسيطًا، يضع \fBgetopts\fP هذا الوسيط في المتغير .SM \fBOPTARG\fP. .IP لا تعيد الصدفة ضبط .SM \fBOPTIND\fP آلياً؛ بل يجب إعادة ضبطه يدوياً بين المكالمات المتعددة لـ \fBgetopts\fP داخل نفس استدعاء الصدفة لاستخدام مجموعة جديدة من المعاملات. .IP عند الوصول إلى نهاية الخيارات، يخرج \fBgetopts\fP بقيمة إعادة أكبر من الصفر. يُضبط .SM \fBOPTIND\fP على فهرس أول وسيط ليس خيارًا، ويُضبط \fIname\fP على ?. .IP يحلل \fBgetopts\fP عادةً المعاملات الموضعية، ولكن إذا وُفرت معطيات إضافية كقيم \fIمعطى\fP، يحلل \fBgetopts\fP تلك المعطيات بدلًا منها. .IP يستطيع \fBgetopts\fP الإبلاغ عن الأخطاء بطريقتين. إذا كان المحرف الأول في \fIسلسلة_الخيارات\fP هو نقطتين رأسيتين، يستخدم \fBgetopts\fP إبلاغًا \fIصامتًا\fP عن الأخطاء. وفي وضع التشغيل العادي، يطبع \fBgetopts\fP رسائل تشخيصية عند مواجهة خيارات غير صالحة أو وسائط خيارات مفقودة. إذا ضُبط المتغير .SM \fBOPTERR\fP على 0، فلن يعرض \fBgetopts\fP أي رسائل خطأ، حتى لو لم يبدأ \fIسلسلة_الخيارات\fP بنقطتين. .IP إذا اكتشف \fBgetopts\fP خيارا غير صالح، فإنه يضع ? في \fIname\fP، وإذا لم يكن صامتا، يطبع رسالة خطأ ويزيل ضبط .SM \fBOPTARG\fP. إذا كان \fBgetopts\fP صامتا، فإنه يعين محرف الخيار الموجود لـ .SM \fBOPTARG\fP ولا يطبع رسالة تشخيصية. .IP إذا لم يُعثر على وسيطة مطلوبة، ولم يكن \fBgetopts\fP صامتا، فإنه يضبط قيمة \fIname\fP إلى علامة استفهام (\^\fB?\fP\^)، ويزيل ضبط .SM \fBOPTARG\fP، ويطبع رسالة تشخيصية. إذا كان \fBgetopts\fP صامتا، فإنه يضبط قيمة \fIname\fP إلى نقطتين (\^\fB:\fP\^) ويضبط .SM \fBOPTARG\fP إلى محرف الخيار الموجود. .IP يعيد \fBgetopts\fP قيمة صواب (true) إذا عُثر على خيار، سواء كان محددًا أو غير محدد. ويعيد خطأ (false) عند الوصول إلى نهاية الخيارات أو حدوث خطأ. .TP \fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIاسم_الملف\fP] [\fB\-dt\fP] [\fIالاسم\fP] في كل مرة يُستدعى فيها \fBhash\fP، فإنه يتذكر مسار الملف الكامل للأمر \fIname\fP كما حُدد من خلال البحث في المجلدات الموجودة في \fB$PATH\fP. يُهمل أي مسار ملف جرى تذكره سابقًا ومرتبط بالاسم \fIname\fP. إذا تم تزويد الخيار \fB\-p\fP، يستخدم \fBhash\fP اسم الملف \fIfilename\fP كمسار كامل للأمر. .IP يجعل الخيار \fB\-r\fP الصدفة تنسى جميع المواقع المحفوظة. يؤدي التعيين إلى متغير \fBPATH\fP أيضًا إلى مسح جميع أسماء الملفات المخزنة بطريقة التجزئة (hashed). يجعل الخيار \fB\-d\fP الصدفة تنسى الموقع المحفوظ لكل \fIاسم\fP. .IP إذا تم تزويد الخيار \fB\-t\fP، يطبع \fBhash\fP مسار الملف الكامل المقابل لكل \fIاسم\fP. إذا تم تزويد وسائط متعددة لـ \fIالاسم\fP مع \fB\-t\fP، يطبع \fBhash\fP \fIالاسم\fP قبل مسار الملف المقطع الكامل المقابل. يعرض الخيار \fB\-l\fP المخرجات بتنسيق يمكن إعادة استخدامه كمدخلات. .IP إذا لم تُعطَ وسيطات، أو إذا زود \fB\-l\fP فقط، يطبع \fBhash\fP معلومات حول الأوامر المتذكرة. الخيارات \fB\-t\fP و \fB\-d\fP و \fB\-p\fP (الخيارات التي تعمل على وسيطات \fIname\fP) متنافية. واحد فقط سيكون نشطا. إذا زود أكثر من واحد، يكون لـ \fB\-t\fP أولوية أعلى من \fB\-p\fP، وكلاهما لهما أولوية أعلى من \fB\-d\fP. .IP حالة الإرجاع هي صفر ما لم يُعثر على \fIname\fP أو قُدم خيار غير صالح. .TP \fBhelp\fP [\fB\-dms\fP] [\fIنمط\fP] اعرض معلومات مفيدة حول الأوامر المضمنة. إذا حُدد نمط \fIpattern\fP، فسيعطي أمر \fBhelp\fP مساعدة مفصلة حول جميع الأوامر التي تطابق النمط كما هو موضح أدناه؛ خلاف ذلك، فإنه يعرض قائمة بجميع الأوامر المضمنة وأوامر الصدفة المركبة. .IP الخيارات، إذا زُودت، فلها المعاني التالية: .RS .TP .PD 0 \fB\-d\fP اعرض وصفاً قصيراً لكل نمط \fIpattern\fP .TP \fB\-m\fP اعرض وصف كل نمط \fIpattern\fP بتنسيق يشبه صفحات الدليل .TP \fB\-s\fP اعرض فقط ملخص استخدام قصير لكل نمط \fIpattern\fP .PD .RE .IP إذا احتوى \fIpattern\fP على محارف مطابقة الأنماط (انظر .SM \fBPattern Matching\fP أعلاه) فسيُعامل كنمط صدفة ويطبع \fBhelp\fP وصف كل موضوع مساعدة يطابق \fIpattern\fP. .IP إذا لم يكن كذلك، وطابق \fIpattern\fP تماما اسم موضوع مساعدة، يطبع \fBhelp\fP الوصف المرتبط بذلك الموضوع. وإلا، يقوم \fBhelp\fP بمطابقة البادئة ويطبع أوصاف جميع مواضيع المساعدة المطابقة. .IP حالة الإرجاع هي 0 ما لم يطابق أي أمر \fIpattern\fP. .TP \fBhistory [\fP\fIn\fP\fB]\fP .PD 0 .TP \fBhistory\fP \fB\-c\fP .TP \fBhistory \-d\fP \fIإزاحة\fP .TP \fBhistory \-d\fP \fIبداية\fP\-\fIنهاية\fP .TP \fBhistory\fP \fB\-anrw\fP [\fIاسم_الملف\fP] .TP \fBhistory\fP \fB\-p\fP \fIمعطى\fP [\fIمعطى\fP .\|.\|.] .TP \fBhistory\fP \fB\-s\fP \fIمعطى\fP [\fIمعطى\fP .\|.\|.] .PD بدون خيارات، اعرض قائمة سجل الأوامر مع الأرقام. المدخلات المسبوقة بـ \fB*\fP هي التي عُدلت. وسيط \fIn\fP يسرد آخر \fIn\fP مدخلاً فقط. إذا كان متغير الصدفة .SM \fBHISTTIMEFORMAT\fP مضبوطًا وليس فارغًا، فسيُستخدم كسلسلة تنسيق لـ \fIstrftime\fP(3) لعرض الختم الزمني المرتبط بكل مدخل سجل معروض. إذا استخدم \fBhistory\fP .SM \fBHISTTIMEFORMAT\fP، فإنه لا يطبع مسافة فاصلة بين الختم الزمني المنسق ومدخل السجل. .IP إذا زود \fIfilename\fP، يستخدمه \fBhistory\fP كاسم لملف التاريخ؛ وإلا يستخدم قيمة .SM \fBHISTFILE\fP. إذا لم يزود \fIfilename\fP وكان .SM \fBHISTFILE\fP غير مضبوط أو فارغا، فلن يكون لخيارات \fB\-a, \-n, \-r,\fP و \fB\-w\fP أي تأثير. .IP الخيارات، إذا زُودت، فلها المعاني التالية: .RS .PD 0 .TP \fB\-c\fP امسح قائمة التأريخ بحذف جميع المدخلات. يمكن استخدام هذا مع الخيارات الأخرى لاستبدال قائمة التأريخ. .TP \fB\-d\fP \fIالإزاحة\fP احذف مدخلة التاريخ في الموضع \fIoffset\fP. إذا كانت قيمة \fIoffset\fP سالبة، فستُفسر بالنسبة إلى موضع يزيد بواحد عن آخر موضع في التاريخ، لذا فإن الفهارس السالبة تعُد تنازلياً من نهاية التاريخ، ويشير الفهرس \-1 إلى أمر \fBhistory \-d\fP الحالي. .TP \fB\-d\fP \fIالبداية\fP\-\fIالنهاية\fP احذف نطاق مدخلات التاريخ بين الموضعين \fIstart\fP و \fIend\fP، بما في ذلك الموضعين. تُفسر القيم الموجبة والسالبة لـ \fIstart\fP و \fIend\fP كما هو موضح أعلاه. .TP \fB\-a\fP ألحق الـ .Q new أسطر التاريخ إلى ملف التاريخ. هذه هي أسطر التاريخ المدخلة منذ بداية جلسة \fBbash\fP الحالية، ولكنها لم تُلحق بعد بملف التاريخ. .TP \fB\-n\fP قراءة أسطر التاريخ التي لم تُقرأ بعد من ملف التاريخ وإضافتها إلى قائمة التاريخ الحالية. هذه هي الأسطر الملحقة بملف التاريخ منذ بداية جلسة \fBbash\fP الحالية. .TP \fB\-r\fP قراءة ملف التاريخ وإلحاق محتوياته بقائمة التاريخ الحالية. .TP \fB\-w\fP اكتب قائمة السجل الحالية إلى ملف السجل، مع الكتابة فوق ملف السجل. .TP \fB\-p\fP أجرِ استبدالاً للتاريخ على \fIargs\fP التالية واعرض النتيجة على المخرج القياسي، دون تخزين النتائج في قائمة التاريخ. يجب وضع كل \fIarg\fP بين علامات اقتباس لتعطيل توسيع التاريخ العادي. .TP \fB\-s\fP تخزين الوسائط \fIargs\fP في قائمة السجل كـ إدخال واحد. يتم إزالة آخر أمر في قائمة السجل قبل إضافة \fIargs\fP. .PD .RE .IP إذا تم ضبط المتغير .SM \fBHISTTIMEFORMAT\fP، يقوم \fBhistory\fP بكتابة معلومات الطابع الزمني المرتبطة بكل إدخال في سجل التاريخ إلى ملف التاريخ، مع تمييزها بمحرف تعليق التاريخ كما هو موضح أعلاه. عند قراءة ملف التاريخ، يتم تفسير الأسطر التي تبدأ بمحرف تعليق التاريخ ويتبعها رقم مباشرةً كطوابع زمنية لإدخال التاريخ التالي. .IP القيمة المرجعة هي 0 ما لم يُواجه خيار غير صالح، أو حدث خطأ أثناء قراءة أو كتابة ملف التاريخ، أو قُدم \fIoffset\fP أو نطاق غير صالح كوسيط لـ \fB\-d\fP، أو فشل توسيع التاريخ المقدم كوسيط لـ \fB\-p\fP. .TP \fBjobs\fP [\fB\-lnprs\fP] [ \fIواصف_المهمة\fP .\|.\|. ] .PD 0 .TP \fBjobs\fP \fB\-x\fP \fIالأمر\fP [ \fIالوسائط\fP .\|.\|. ] .PD النموذج الأول يسرد الوظائف النشطة. الخيارات لها المعاني التالية: .RS .PD 0 .TP \fB\-l\fP أدرج معرفات العمليات بالإضافة إلى المعلومات العادية. .TP \fB\-n\fP اعرض معلومات فقط حول الوظائف التي تغيرت حالتها منذ آخر مرة تم فيها إخطار المستخدم بحالتها. .TP \fB\-p\fP أدرج فقط معرف العملية (PID) لقائد مجموعة عمليات المهمة. .TP \fB\-r\fP اعرض فقط الوظائف الجارية. .TP \fB\-s\fP اعرض فقط الوظائف المتوقفة. .PD .RE .IP إذا زود \fIjobspec\fP، يقصر \fBjobs\fP المخرجات على معلومات تلك المهمة. حالة العودة هي 0 ما لم يُصادف خيار غير صالح أو يزود \fIjobspec\fP غير صالح. .IP إذا تم تزويد الخيار \fB\-x\fP، يستبدل \fBjobs\fP أي \fIjobspec\fP موجود في \fIالأمر\fP أو \fIالوسائط\fP بمعرف مجموعة العمليات المقابل، وينفذ \fIالأمر\fP ممررًا إليه \fIالوسائط\fP، مع إرجاع حالة الخروج الخاصة به. .TP \fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] \fIid\fP [ .\|.\|. ] .PD 0 .TP \fBkill\fP \fB\-l\fP|\fB\-L\fP [\fIsigspec\fP | \fIexit_status\fP] .PD أرسل الإشارة المحددة بـ \fIsigspec\fP أو \fIsignum\fP إلى العمليات المسماة بكل \fIid\fP. يمكن أن يكون كل \fIid\fP مواصفات وظيفة \fIjobspec\fP أو معرف عملية \fIpid\fP. \fIsigspec\fP هي إما اسم إشارة غير حساس لحالة الأحرف مثل .SM \fBSIGKILL\fP (مع بادئة .SM \fBSIG\fP أو بدونها) أو رقم إشارة؛ \fIsignum\fP هو رقم إشارة. إذا لم تُوفر \fIsigspec\fP، فإن \fBkill\fP يرسل .SM \fBSIGTERM\fP. .IP يسرد الخيار \fB\-l\fP أسماء الإشارات. إذا وُفرت أي معاملات عند إعطاء \fB\-l\fP، يسرد \fBkill\fP أسماء الإشارات المقابلة لهذه المعاملات، وتكون حالة العودة 0. معامل \fIexit_status\fP لـ \fB\-l\fP هو رقم يحدد إما رقم الإشارة أو حالة خروج العملية التي أنهتها إشارة؛ إذا وُفر، يطبع \fBkill\fP اسم الإشارة التي تسببت في إنهاء العملية. يفترض \fBkill\fP أن حالات خروج العمليات أكبر من 128؛ وأي شيء أقل من ذلك هو رقم إشارة. الخيار \fB\-L\fP يكافئ \fB\-l\fP. .IP يعيد \fBkill\fP القيمة true إذا أُرسلت إشارة واحدة على الأقل بنجاح، أو false في حال حدوث خطأ أو العثور على خيار غير صالح. .TP \fBlet\fP \fIarg\fP [\fIarg\fP .\|.\|.] يُقيم كل \fIمعطى\fP كتعبير حسابي (راجع .SM \fBالتقييم الحسابي\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). إذا كان تقييم \fIالوسيط\fP الأخير هو 0، يرجع \fBlet\fP القيمة 1؛ وبخلاف ذلك يرجع \fBlet\fP 0. .TP \fBlocal\fP [\fIخيار\fP] [\fIالاسم\fP[=\fIالقيمة\fP] .\|.\|. | \- ] لكل وسيط، أنشئ متغيرًا محليًا باسم \fIname\fP واخصص له \fIvalue\fP. يمكن أن يكون \fIoption\fP أيًا من الخيارات التي يقبلها \fBdeclare\fP. عند استخدام \fBlocal\fP داخل دالة، فإنه يجعل نطاق المتغير \fIname\fP المرئي مقصورًا على تلك الدالة وأبنائها. من الخطأ استخدام \fBlocal\fP خارج دالة. .IP إذا كان \fIname\fP هو \-، فإنه يجعل مجموعة خيارات الصدفة محلية للدالة التي استُدعي فيها \fBlocal\fP: أي خيارات صدفة تُغير باستخدام أمر \fBset\fP المدمج داخل الدالة بعد استدعاء \fBlocal\fP تُستعاد لقيمها الأصلية عند عودة الدالة. تتم الاستعادة كما لو نُفذت سلسلة أوامر \fBset\fP لاستعادة القيم التي كانت موجودة قبل الدالة. .IP بدون معاملات، يكتب \fBlocal\fP قائمة بالمتغيرات المحلية إلى المخرجات القياسية. .IP حالة الإرجاع هي 0 ما لم يُستخدم \fBlocal\fP خارج دالة، أو قُدم \fIname\fP غير صالح، أو كان \fIname\fP متغيراً للقراءة فقط. .TP \fBlogout [\fP\fIn\fP\fB]\fP اخرج من صدفة تسجيل الدخول، مع إرجاع الحالة \fIn\fP إلى والد الصدفة. .TP \fBmapfile\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] .PD 0 .TP \fBreadarray\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIالمصفوفة\fP] .PD قراءة الأسطر من المدخل القياسي، أو من واصف الملف \fIfd\fP إذا زُوّد الخيار \fB\-u\fP، إلى متغير المصفوفة المفهرسة \fIarray\fP. المتغير .SM \fBMAPFILE\fP هو المصفوفة \fIarray\fP المبدئية. الخيارات، إن وجدت، لها المعاني التالية: .RS .PD 0 .TP \fB\-d\fP استخدم المحرف الأول من \fIdelim\fP لإنهاء كل سطر مدخلات، بدلاً من سطر جديد. إذا كان \fIdelim\fP سلسلة فارغة، فسينهي \fBmapfile\fP السطر عندما يقرأ محرف NUL. .TP \fB\-n\fP انسخ \fIcount\fP من الأسطر كحد أقصى. إذا كان \fIcount\fP هو 0، انسخ جميع الأسطر. .TP \fB\-O\fP ابدأ الإسناد إلى \fIالمصفوفة\fP عند المؤشر \fIorigin\fP. المؤشر المبدئي هو 0. .TP \fB\-s\fP اهمل أول \fIcount\fP أسطر تم قراءتها. .TP \fB\-t\fP إزالة المحدد \fIdelim\fP اللاحق (المبدئي هو سطر جديد) من كل سطر مقروء. .TP \fB\-u\fP قراءة الأسطر من واصف الملف \fIfd\fP بدلًا من المدخل القياسي. .TP \fB\-C\fP تقييم \fIcallback\fP في كل مرة تُقرأ فيها \fIquantum\fP من الأسطر. يحدد الخيار \fB\-c\fP مقدار \fIquantum\fP. .TP \fB\-c\fP تحديد عدد الأسطر المقروءة بين كل استدعاء لـ \fIcallback\fP. .PD .RE .IP إذا حُدد \fB\-C\fP بدون \fB\-c\fP، فإن الكم المبدئي هو 5000. عند تقييم \fIcallback\fP، يزود بفهرس عنصر المصفوفة التالي المراد تعيينه والسطر المراد تعيينه لهذا العنصر كوسيطات إضافية. يتم تقييم \fIcallback\fP بعد قراءة السطر ولكن قبل تعيين عنصر المصفوفة. .IP إذا لم يزود بأصل صريح، سيقوم \fBmapfile\fP بمسح \fIarray\fP قبل التعيين إليها. .IP يعيد \fBmapfile\fP صفراً ما لم يُزوّد بخيار أو وسيط خيار غير صالح، أو إذا كانت \fIالمصفوفة\fP غير صالحة أو لا يمكن التعيين إليها، أو إذا لم تكن \fIالمصفوفة\fP مصفوفة مفهرسة. .TP \fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] إزالة المداخل من مكدس الأدلة. العناصر مرقمة من 0 بدءًا من أول دليل مدرج بواسطة \fBdirs\fP، لذا فإن \fBpopd\fP يكافئ .Q "popd +0." بدون وسائط، يزيل \fBpopd\fP المجلد العلوي من المكدس، وينتقل إلى المجلد العلوي الجديد. الوسائط، إن وُجدت، لها المعاني التالية: .RS .PD 0 .TP \fB\-n\fP منع التغيير العادي للدليل عند إزالة الأدلة من المكدس (stack)، فقط القيام بالتلاعب بالمكدس. .TP \fB+\fP\fIn\fP إزالة المدخل رقم \fIn\fP بالعد من يسار القائمة المعروضة بواسطة \fBdirs\fP، بدءًا من الصفر، من المكدس. على سبيل المثال: .Q "popd +0" يزيل الدليل الأول، .Q "popd +1" الثاني. .TP \fB\-\fP\fIn\fP إزالة المدخل رقم \fIn\fP بالعد من يمين القائمة المعروضة بواسطة \fBdirs\fP، بدءًا من الصفر. على سبيل المثال: .Q "popd \-0" يزيل الدليل الأخير، .Q "popd \-1" قبل الأخير. .PD .RE .IP إذا عُدّل العنصر العلوي في مكدس الأدلة، ولم يتم توفير الخيار \fI\-n\fP، يستخدم الأمر \fBpopd\fP الأمر الداخلي \fBcd\fP للانتقال إلى الدليل الموجود في أعلى المكدس. وإذا فشل \fBcd\fP، يعيد \fBpopd\fP قيمة غير صفرية. .IP وإلا، يعيد \fBpopd\fP قيمة خطأ إذا قُدم خيار غير صالح، أو كان مكدس الأدلة فارغاً، أو حدد \fIn\fP مدخلاً غير موجود في مكدس الأدلة. .IP إذا نجح أمر \fBpopd\fP، يقوم \fBbash\fP بتشغيل \fBdirs\fP لعرض المحتويات النهائية لكومة المجلدات، وتكون حالة الرجوع 0. .TP \fBprintf\fP [\fB\-v\fP \fIالمتغير\fP] \fIالتنسيق\fP [\fIالمعطيات\fP] اكتب الوسائط \fIarguments\fP المنسقة إلى المخرجات القياسية تحت تحكم تنسيق \fIformat\fP. يقوم الخيار \fB\-v\fP بتعيين الخرج للمتغير \fIvar\fP بدلاً من طباعته على المخرجات القياسية. .IP الـ \fIتنسيق\fP هو سلسلة نصية تحتوي على ثلاثة أنواع من الكائنات: محارف عادية، تُنسخ ببساطة إلى المخرجات القياسية؛ وتسلسلات هروب محارف، تُحول وتُنسخ إلى المخرجات القياسية؛ ومواصفات تنسيق، كل منها يتسبب في طباعة الـ \fIمعامل\fP التالي على التوالي. بالإضافة إلى محارف تنسيق \fIprintf\fP(3) القياسية \fBcCsSndiouxXeEfFgGaA\fP، يفسر \fBprintf\fP محددات التنسيق الإضافية التالية: .RS .PD 0 .TP \fB%b\fP يتسبب في قيام \fBprintf\fP بتوسيع متواليات الهروب للشرطة المائلة العكسية في \fIargument\fP المقابل بنفس الطريقة التي يقوم بها \fBecho \-e\fP. .TP \fB%q\fP يتسبب في قيام \fBprintf\fP بإخراج \fIargument\fP المقابل بتنسيق يمكن إعادة استخدامه كمدخل للصدفة. يستخدم \fB%q\fP و \fB%Q\fP نمط الاقتباس \fB$\*'\*'\fP إذا كانت أي أحرف في سلسلة المعامل تتطلب ذلك، واقتباس الشرطة المائلة العكسية خلاف ذلك. إذا كانت سلسلة التنسيق تستخدم النموذج البديل لـ \fIprintf\fP، فإن هذين التنسيقين يقتبسان سلسلة المعامل باستخدام علامات اقتباس مفردة. .TP \fB%Q\fP مثل \fB%q\fP، ولكن يطبق أي دقة معطاة على \fIargument\fP قبل وضعه بين علامتي اقتباس. .TP \fB%(\fP\fIdatefmt\fP\fB)T\fP يتسبب في قيام \fBprintf\fP بإخراج سلسلة التاريخ والوقت الناتجة عن استخدام \fIdatefmt\fP كسلسلة تنسيق لـ \fIstrftime\fP(3). \fIargument\fP المقابل هو عدد صحيح يمثل عدد الثواني منذ بداية العصر (epoch). يتعرف محدد التنسيق هذا على قيمتين خاصتين للمعامل: \-1 يمثل الوقت الحالي، و \-2 يمثل الوقت الذي تم فيه استدعاء الصدفة. إذا لم يتم تحديد أي معامل، يتصرف التحويل كما لو تم توفير \-1. هذا استثناء لسلوك \fBprintf\fP المعتاد. .PD .RE .IP تستخدم محددات التنسيق %b و %q و %T جميعًا وسائط عرض الحقل والدقة من مواصفات التنسيق وتكتب ذلك العدد من البايتات من (أو تستخدم حقلًا بهذا العرض لـ) الوسيط الموسع، والذي يحتوي عادةً على أحرف أكثر من الأصلي. .IP يقبل محدد التنسيق %n وسيطًا مُناظرًا يُعامل كاسم متغير صدفة. .IP .\" .IP .\" The %s format specifier understands the "altform" flag (#) and behaves .\" identically to the %b format specifier if it's supplied. يقبل محددا التنسيق %s و %c المعدل l (طويل)، مما يجبرهما على تحويل سلسلة الوسيط إلى سلسلة محارف عريضة وتطبيق أي عرض حقل ودقة مُعطاة بدلالة المحارف، لا البايتات. محددا التنسيق %S و %C يكافئان %ls و %lc على التوالي. .IP تُعامل معطيات محددات التنسيق غير النصية كثوابت C، باستثناء أنه يُسمح بعلامة زائد أو ناقص بادئة، وإذا كان الحرف البادئ علامة اقتباس مفردة أو مزدوجة، تكون القيمة هي القيمة الرقمية للحرف التالي، باستخدام المنطقة الحالية. .IP يُعاد استخدام الـ \fIتنسيق\fP حسب الضرورة لاستهلاك جميع الـ \fIمعاملات\fP. إذا تطلب الـ \fIتنسيق\fP معاملات أكثر مما هو مقدم، فإن مواصفات التنسيق الإضافية تتصرف كما لو كانت هناك قيمة صفرية أو سلسلة نصية فارغة قد قُدمت، حسب الاقتضاء. قيمة العودة هي صفر عند النجاح، وغير صفرية إذا قُدم خيار غير صالح أو حدث خطأ في الكتابة أو التعيين. .TP \fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] .PD 0 .TP \fBpushd\fP [\fB\-n\fP] [\fIالمسار\fP] .PD أضف دليلًا إلى قمة مكدس الأدلة، أو دور المكدس، جاعلاً القمة الجديدة للمكدس هي دليل العمل الحالي. بدون معاملات، تبدل \fBpushd\fP العنصرين العلويين في مكدس الأدلة. المعاملات، إذا زُودت، لها المعاني التالية: .RS .PD 0 .TP \fB\-n\fP منع التغيير العادي للدليل عند تدوير أو إضافة الأدلة إلى المكدس، فقط القيام بالتلاعب بالمكدس. .TP \fB+\fP\fIn\fP تدوير المكدس بحيث يكون الدليل رقم \fIn\fP (بالعد من يسار القائمة المعروضة بواسطة \fBdirs\fP، بدءًا من الصفر) في الأعلى. .TP \fB\-\fP\fIn\fP تدوير المكدس بحيث يكون الدليل رقم \fIn\fP (بالعد من يمين القائمة المعروضة بواسطة \fBdirs\fP، بدءًا من الصفر) في الأعلى. .TP \fIdir\fP أضف \fIdir\fP إلى مكدس الأدلة في القمة. .PD .RE .IP بعد تعديل المكدس، إذا لم يُزود خيار \fB\-n\fP، يستخدم \fBpushd\fP أمر \fBcd\fP المضمن للانتقال إلى الدليل الموجود في قمة المكدس. إذا فشل \fBcd\fP، يعيد \fBpushd\fP قيمة غير صفرية. .IP وإلا، في حال عدم تقديم أي وسائط، يعيد \fBpushd\fP صفراً ما لم يكن مكدس الأدلة فارغاً. وعند تدوير مكدس الأدلة، يعيد \fBpushd\fP صفراً ما لم يكن مكدس الأدلة فارغاً أو يحدد \fIn\fP عنصراً غير موجود في مكدس الأدلة. .IP إذا نجح أمر \fBpushd\fP، يقوم \fBbash\fP بتشغيل \fBdirs\fP لعرض المحتويات النهائية لكومة المجلدات. .TP \fBpwd\fP [\fB\-LP\fP] اطبع مسار الاسم المطلق لدليل العمل الحالي. لا يحتوي مسار الاسم المطبوع على روابط رمزية إذا قُدم الخيار \fB\-P\fP أو مُكن الخيار \fB\-o physical\fP للأمر المدمج \fBset\fP. إذا استُخدم الخيار \fB\-L\fP، فقد يحتوي مسار الاسم المطبوع على روابط رمزية. حالة العودة هي 0 ما لم يحدث خطأ أثناء قراءة اسم الدليل الحالي أو قُدم خيار غير صالح. .TP \fBread\fP [\fB\-Eers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIالاسم\fP .\|.\|.] قراءة سطر واحد من المدخل القياسي، أو من واصف الملف \fIfd\fP المزود كمعامل للخيار \fB\-u\fP، وتقسيمه إلى كلمات كما هو موضح .ie \n(zZ=1 in \fIbash\fP (1) .el above تحت \fBتقسيم الكلمات\fP، وتعيين الكلمة الأولى إلى \fIname\fP الأول، والكلمة الثانية إلى \fIname\fP الثاني، وهكذا. إذا كان هناك كلمات أكثر من الأسماء، تُعين الكلمات المتبقية وفواصلها إلى \fIname\fP الأخير. إذا قُرئت كلمات من دفق المدخلات أقل من الأسماء، تُعين قيم فارغة للأسماء المتبقية. تُستخدم الحروف الموجودة في قيمة متغير .SM \fBIFS\fP لتقسيم السطر إلى كلمات باستخدام القواعد نفسها التي تستخدمها الصدفة للتوسيع (الموصوفة .ie \n(zZ=1 in \fIbash\fP (1) .el above تحت \fBتقسيم الكلمات\fP). تزيل علامة الشرطة المائلة الخلفية (\fB\e\fP) أي معنى خاص للحرف التالي المقروء وتُستخدم لمتابعة السطر. .IP الخيارات، إذا زُودت، فلها المعاني التالية: .RS .PD 0 .TP \fB\-a \fP\fIاسم_ألفا\fP تُسند الكلمات إلى فهارس متسلسلة لمتغير المصفوفة \fIaname\fP، بدءًا من 0. يُلغى تحديد \fIaname\fP قبل إسناد أي قيم جديدة. وتُتجاهل معاملات \fIname\fP الأخرى. .TP \fB\-d \fP\fIالمحدد\fP ينهي الحرف الأول من \fIdelim\fP سطر الإدخال، بدلاً من السطر الجديد. إذا كانت \fIdelim\fP سلسلة فارغة، فسيقوم \fBread\fP بإنهاء السطر عند قراءة محرف NUL. .TP \fB\-e\fP إذا كان الدخل القياسي قادماً من طرفية، يستخدم الأمر \fBread\fP مكتبة \fBreadline\fP (راجع .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) للحصول على السطر. يستخدم \fBReadline\fP إعدادات التحرير الحالية (أو المبدئية، إذا لم يكن تحرير السطر نشطًا سابقًا)، ولكنه يستخدم إكمال أسماء الملفات المبدئي لـ \fBreadline\fP. .TP \fB\-E\fP إذا كان الدخل القياسي قادماً من طرفية، يستخدم الأمر \fBread\fP مكتبة \fBreadline\fP (راجع .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) للحصول على السطر. يستخدم \fBReadline\fP إعدادات التحرير الحالية (أو المبدئية، إذا لم يكن تحرير السطر نشطًا سابقًا)، ولكنه يستخدم إكمال صدفة bash المبدئي، بما في ذلك الإكمال القابل للبرمجة. .TP \fB\-i \fP\fIالنص\fP إذا كان \fBreadline\fP مستخدما لقراءة السطر، يضع \fBread\fP الـ \fItext\fP في مخزن التحرير قبل بدء التحرير. .TP \fB\-n \fP\fIعدد_المحارف\fP يعود \fBread\fP بعد قراءة \fInchars\fP حرفًا بدلًا من انتظار سطر إدخال كامل، ما لم يواجه نهاية الملف EOF أو تنتهي مهلة \fBread\fP، ولكنه يحترم المحدد إذا قرأ أقل من \fInchars\fP حرفًا قبل المحدد. .TP \fB\-N \fP\fIعدد_المحارف\fP يعود \fBread\fP بعد قراءة بالضبط \fInchars\fP حرفًا بدلًا من انتظار سطر إدخال كامل، ما لم يواجه نهاية الملف EOF أو تنتهي مهلة \fBread\fP. لا تُعامل أي أحرف محددة في الإدخال معاملة خاصة ولا تتسبب في عودة \fBread\fP حتى يقرأ \fInchars\fP حرفًا. لا تُقسم النتيجة بناءً على الأحرف في \fBIFS\fP؛ القصد هو تعيين الأحرف المقروءة بالضبط للمتغير (باستثناء الشرطة المائلة العكسية؛ راجع الخيار \fB\-r\fP أدناه). .TP \fB\-p \fP\fIمحث\fP اعرض المطالبة \fIprompt\fP على الخطأ القياسي، بدون سطر جديد ختامي، قبل محاولة قراءة أي مدخلات، ولكن فقط إذا كانت المدخلات آتية من طرفية. .TP \fB\-r\fP لا تعمل الشرطة المائلة الخلفية كحرف هروب. تُعتبر الشرطة المائلة الخلفية جزءًا من السطر. وبوجه خاص، لا يجوز استخدام زوج (شرطة مائلة خلفية\-سطر جديد) كتكملة للسطر. .TP \fB\-s\fP الوضع الصامت. إذا كان الإدخال قادمًا من طرفية، فلن يتم ترديد (echo) المحارف. .TP \fB\-t \fP\fIمهلة_الانتظار\fP يتسبب في انتهاء مهلة \fBread\fP وإرجاع فشل إذا لم يقرأ سطر إدخال كاملاً (أو عددًا محددًا من الأحرف) خلال ثوانٍ قدرها \fIالمهلة\fP. قد تكون \fIالمهلة\fP رقمًا عشريًا بجزء كسري يتبع النقطة العشرية. لا يكون هذا الخيار فعالاً إلا إذا كان \fBread\fP يقرأ الإدخال من طرفية، أو أنبوب، أو ملف خاص آخر؛ وليس له أي تأثير عند القراءة من ملفات عادية. إذا انتهت مهلة \fBread\fP، فإنه يحفظ أي إدخال جزئي قُرئ في المتغير المحدد \fIname\fP، وتكون حالة الخروج أكبر من 128. إذا كانت \fIالمهلة\fP 0، فإن \fBread\fP يعود على الفور، دون محاولة قراءة أي بيانات. في هذه الحالة، تكون حالة الخروج 0 إذا كان الإدخال متاحًا على واصف الملف المحدد، أو سيعيد القراءة EOF، وغير ذلك فستكون غير صفرية. .TP \fB\-u \fP\fIواصف_ملف\fP قراءة المدخلات من واصف الملف \fIfd\fP بدلًا من المدخل القياسي. .PD .RE .IP باستثناء الحالة التي تكون فيها \fIdelim\fP سلسلة فارغة، يتجاهل الأمر \fBread\fP أي محارف NUL في المدخلات. .IP إذا لم يزود \fInames\fP، يعين \fBread\fP السطر المقروء، بدون محدد النهاية ولكن دون تعديل بخلاف ذلك، للمتغير .SM \fBREPLY\fP. .IP حالة الخروج هي صفر، ما لم تتم مواجهة نهاية الملف، أو انتهاء مهلة \fBread\fP (وفي هذه الحالة تكون الحالة أكبر من 128)، أو حدوث خطأ في تعيين متغير (مثل التعيين لمتغير للقراءة فقط)، أو تقديم واصف ملف غير صالح كمعامل لـ \fB\-u\fP. .TP \fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fIالاسم\fP[=\fIكلمة\fP] .\|.\|.] .PD يتم وضع علامة "للقراءة فقط" على \fInames\fP المعطاة؛ ولا يجوز تغيير قيم هذه الأسماء عن طريق تعيين لاحق أو إلغاء تعيين. إذا تم توفير الخيار \fB\-f\fP، فإن كل \fIname\fP يشير إلى وظيفة شل. يقيد الخيار \fB\-a\fP المتغيرات بالمصفوفات المفهرسة؛ ويقيد الخيار \fB\-A\fP المتغيرات بالمصفوفات الترابطية. إذا تم توفير كلا الخيارين، فإن \fB\-A\fP له الأولوية. إذا لم يتم توفير أي معاملات \fIname\fP، أو إذا تم توفير الخيار \fB\-p\fP، يتم طباعة قائمة بجميع الأسماء التي للقراءة فقط. يمكن استخدام الخيارات الأخرى لتقييد المخرج لمجموعة فرعية من مجموعة الأسماء التي للقراءة فقط. يعرض الخيار \fB\-p\fP المخرج بتنسيق يمكن إعادة استخدامه كمدخل. .IP يسمح \fBreadonly\fP بضبط قيمة المتغير في نفس الوقت الذي يتم فيه تغيير سمة القراءة فقط عن طريق إتباع اسم المتغير بـ =\fIالقيمة\fP. هذا يضبط قيمة المتغير إلى \fIالقيمة\fP أثناء تعديل سمة القراءة فقط. .IP حالة الإرجاع هي 0 ما لم يُواجه خيار غير صالح، أو كان أحد \fInames\fP ليس اسم متغير صدفة صالحاً، أو زُود \fB\-f\fP بـ \fIname\fP ليس دالة. .TP \fBreturn\fP [\fIn\fP] إيقاف تنفيذ دالة غلاف (shell function) أو ملف مصدر (sourced file) وإعادة القيمة المحددة بواسطة \fIn\fP إلى مستدعيها. إذا تم حذف \fIn\fP، تكون حالة الإرجاع هي حالة آخر أمر تم تنفيذه. إذا تم تنفيذ \fBreturn\fP بواسطة معالج فخ (trap handler)، فإن آخر أمر يُستخدم لتحديد الحالة هو آخر أمر نُفذ قبل معالج الفخ. إذا تم تنفيذ \fBreturn\fP أثناء فخ \fBDEBUG\fP، فإن آخر أمر يُستخدم لتحديد الحالة هو آخر أمر نفذه معالج الفخ قبل استدعاء \fBreturn\fP. .IP عند استخدام \fBreturn\fP لإنهاء تنفيذ نص برمج يجري تنفيذه بواسطة أمر \fB.\fP (\fBsource\fP)، فإنه يتسبب في توقف الصدفة عن تنفيذ هذا النص وإعادة إما \fIn\fP أو حالة الخروج لآخر أمر نُفذ داخل النص كحالة خروج للنص البرمج. إذا قُدمت \fIn\fP، فإن القيمة المعادة هي أقل 8 بتات أهمية منها. .IP يُنفذ أي أمر مرتبط بمصيدة \fBRETURN\fP قبل استئناف التنفيذ بعد الدالة أو البرنامج النصي. .IP حالة الإرجاع ليست صفراً إذا زُود \fBreturn\fP بوسيط غير عددي، أو استُخدم خارج دالة وليس أثناء تنفيذ سكريبت بواسطة \fB.\fP\^ أو \fBsource\fP. .TP \fBset\fP [\fB\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIاسم\-الخيار\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIمعطى\fP .\|.\|.] .PD 0 .TP \fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIاسم\-الخيار\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIمعطى\fP .\|.\|.] .TP \fBset \-o\fP .TP \fBset +o\fP .PD بدون خيارات، اعرض اسم وقيمة كل متغير صدفة بتنسيق يمكن إعادة استخدامه كمدخلات لضبط أو تصفير المتغيرات المضبوطة حاليًا. لا يمكن تصفير المتغيرات المخصصة للقراءة فقط. في نمط posix، تُسرد متغيرات الصدفة فقط. يُفرز الخرج وفقًا للمحلية الحالية. عند تحديد خيارات، فإنها تضبط أو تلغي ضبط سمات الصدفة. تُعامل أي وسائط متبقية بعد معالجة الخيارات كقيم للمعاملات الموضعية وتُعين، بالترتيب، لـ \fB$1\fP، \fB$2\fP، \&.\|.\|.، \fB$\fP\fIn\fP. الخيارات، إذا حُددت، لها المعاني التالية: .RS .PD 0 .TP 8 \fB\-a\fP يتم إعطاء كل متغير أو دالة تُنشأ أو تُعدل سمة التصدير وتُحدد للتصدير إلى بيئة الأوامر اللاحقة. .TP 8 \fB\-b\fP الإبلاغ عن حالة وظائف الخلفية المنتهية فورًا، بدلًا من الانتظار لما قبل المطالبة الرئيسة التالية أو بعد انتهاء أمر أمامي. هذا فعال فقط عند تمكين التحكم في الوظائف. .TP 8 \fB\-e\fP .PD اخرج فورًا إذا كان هناك \fIpipeline\fP (الذي قد يتكون من أمر بسيط واحد)، أو \fIlist\fP، أو \fIcompound command\fP (انظر .SM \fBSHELL GRAMMAR\fP) .ie \n(zZ=1 in \fIbash\fP(1)), .el above), يخرج بحالة غير صفرية. لا تخرج الـ \fBصدفة\fP إذا كان الأمر الذي فشل جزءًا من قائمة أوامر تلي مباشرة كلمة \fBwhile\fP أو \fBuntil\fP المحجوزة، أو جزءًا من الاختبار الذي يلي كلمات \fBif\fP أو \fBelif\fP المحجوزة، أو جزءًا من أي أمر نُفذ في قائمة \fB&&\fP أو \fB||\fP باستثناء الأمر الذي يلي \fB&&\fP أو \fB||\fP النهائية، أو أي أمر في خط أنابيب عدا الأخير (يخضع لحالة خيار الصدفة \fBpipefail\fP)، أو إذا كانت قيمة إرجاع الأمر معكوسة بـ \fB!\fP. إذا أرجع أمر مركب بخلاف الصدفة الفرعية حالة غير صفرية بسبب فشل أمر أثناء تجاهل \fB\-e\fP، فلا تخرج الصدفة. يُنفذ صائد \fBERR\fP، إذا ضُبط، قبل خروج الصدفة. ينطبق هذا الخيار على بيئة الصدفة وكل بيئة صدفة فرعية بشكل منفصل (انظر .SM \fBبيئة تنفيذ الأوامر\fP .ie \n(zZ=1 in \fIbash\fP(1)), .el above), وقد يتسبب في خروج الصدفات الفرعية قبل تنفيذ جميع الأوامر فيها. .IP إذا نُفذ أمر مركب أو دالة صدفة في سياق يتم فيه تجاهل \fB\-e\fP، فلن يتأثر أي من الأوامر المنفذة داخل الأمر المركب أو جسم الدالة بإعداد \fB\-e\fP، حتى لو ضُبط \fB\-e\fP وأعاد أمر ما حالة فشل. إذا ضبط أمر مركب أو دالة صدفة \fB\-e\fP أثناء التنفيذ في سياق يتم فيه تجاهل \fB\-e\fP، فلن يكون لهذا الإعداد أي تأثير حتى يكتمل الأمر المركب أو الأمر الذي يحتوي على استدعاء الدالة. .PD 0 .TP 8 \fB\-f\fP عطّل توسيع اسم المسار. .TP 8 \fB\-h\fP تذكر موقع الأوامر أثناء البحث عنها للتنفيذ. هذا مفعل مبدئيًا. .TP 8 \fB\-k\fP يتم وضع جميع الوسائط التي تأتي على شكل عبارات تخصيص في بيئة الأمر، وليس فقط تلك التي تسبق اسم الأمر. .TP 8 \fB\-m\fP وضع المراقبة. تم تمكين التحكم في الوظائف. هذا الخيار مفعل مبدئياً للأصداف التفاعلية على الأنظمة التي تدعمه (انظر .SM \fBJOB CONTROL\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). تعمل جميع العمليات في مجموعة عمليات منفصلة. عندما تنتهي مهمة خلفية، يقوم الغلاف (shell) بطباعة سطر يحتوي على حالة الخروج الخاصة بها. .TP 8 \fB\-n\fP قراءة الأوامر دون تنفيذها. قد يُستخدم هذا لفحص أخطاء الصيغة في سكربت صدفة. تتجاهل الصدف التفاعلية هذا. .TP 8 \fB\-o \fP\fIاسم\-الخيار\fP يمكن أن يكون \fIاسم\-الخيار\fP واحدًا مما يلي: .RS .TP 8 \fBallexport\fP نفس الخيار \fB\-a\fP. .TP 8 \fBbraceexpand\fP نفس \fB\-B\fP. .TP 8 \fBemacs\fP استخدم واجهة تحرير سطر أوامر بأسلوب emacs. يُفعل هذا مبدئيًا عندما تكون الصدفة تفاعلية، ما لم تُبدأ الصدفة بخيار \fB\-\-noediting\fP. يؤثر هذا أيضًا على واجهة التحرير المستخدمة لـ \fBread \-e\fP. .TP 8 \fBerrexit\fP نفس \fB\-e\fP. .TP 8 \fBerrtrace\fP نفس \fB\-E\fP. .TP 8 \fBfunctrace\fP نفس \fB\-T\fP. .TP 8 \fBhashall\fP مماثل لـ \fB\-h\fP. .TP 8 \fBhistexpand\fP نفس \fB\-H\fP. .TP 8 \fBhistory\fP تفعيل تاريخ الأوامر، كما هو موضح .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت .SM \fBHISTORY\fP. هذا الخيار مفعّل مبدئيًا في الصدفات التفاعلية. .TP 8 \fBignoreeof\fP التأثير كما لو كان أمر الشل .QN IGNOREEOF=10 قد نُفذ (انظر \fBمتغيرات الصدفة\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP 8 \fBkeyword\fP مماثل لـ \fB\-k\fP. .TP 8 \fBmonitor\fP مماثل لـ \fB\-m\fP. .TP 8 \fBnoclobber\fP نفس \fB\-C\fP. .TP 8 \fBnoexec\fP مماثل لـ \fB\-n\fP. .TP 8 \fBnoglob\fP مماثل لـ \fB\-f\fP. .TP 8 \fBnolog\fP يُتجاهل حاليًا. .TP 8 \fBnotify\fP نفس \fB\-b\fP. .TP 8 \fBnounset\fP مماثل لـ \fB\-u\fP. .TP 8 \fBonecmd\fP نفس \fB\-t\fP. .TP 8 \fBphysical\fP نفس \fB\-P\fP. .TP 8 \fBpipefail\fP إذا ضُبطت، فإن القيمة المعادة من أنبوب هي قيمة آخر أمر (الأكثر يميناً) يخرج بحالة غير صفرية، أو صفر إذا خرجت كل أوامر الأنبوب بنجاح. هذا الخيار مُعطّل مبدئياً. .TP 8 \fBposix\fP تفعيل وضع posix؛ يغير سلوك \fBbash\fP حيثما تختلف العملية الافتراضية عن معيار .SM POSIX لمطابقة المعيار. انظر .SM \fBSEE ALSO\fP .ie \n(zZ=1 in \fIbash\fP(1) .el below لمرجع إلى مستند يفصل كيف يؤثر وضع posix على سلوك bash. .TP 8 \fBprivileged\fP نفس الخيار \fB\-p\fP. .TP 8 \fBverbose\fP مماثل لـ \fB\-v\fP. .TP 8 \fBvi\fP استخدم واجهة تحرير سطر أوامر بأسلوب vi. يؤثر هذا أيضًا على واجهة التحرير المستخدمة لـ \fBread \-e\fP. .TP 8 \fBxtrace\fP نفس \fB\-x\fP. .PP إذا زود \fB\-o\fP بدون \fIoption\-name\fP، يطبع \fBset\fP إعدادات خيارات الصدفة الحالية. إذا زود \fB+o\fP بدون \fIoption\-name\fP، يطبع \fBset\fP سلسلة من أوامر \fBset\fP لإعادة إنشاء إعدادات الخيارات الحالية على المخرجات القياسية. .RE .TP 8 \fB\-p\fP فعل نمط \fIالامتياز\fP. في هذا النمط، لا تقرأ الصدفة ملفات .SM \fB$ENV\fP و .SM \fB$BASH_ENV\fP، ولا تُورث وظائف الصدفة من البيئة، وتُتجاهل متغيرات .SM \fBSHELLOPTS\fP، و .SM \fBBASHOPTS\fP، و .SM \fBCDPATH\fP، و .SM \fBGLOBIGNORE\fP إذا ظهرت في البيئة. إذا بُدئت الصدفة بمعرف مستخدم (أو مجموعة) فعلي لا يساوي معرف المستخدم (أو المجموعة) الحقيقي، ولم يُقدم الخيار \fB\-p\fP، تُتخذ هذه الإجراءات ويُضبط معرف المستخدم الفعلي إلى معرف المستخدم الحقيقي. إذا قُدم الخيار \fB\-p\fP عند البدء، لا يُعاد ضبط معرف المستخدم الفعلي. يؤدي إيقاف هذا الخيار إلى ضبط معرفات المستخدم والمجموعة الفعلية لتطابق المعرفات الحقيقية. .TP 8 \fB\-r\fP تفعيل وضع الصدفة المقيدة. لا يمكن إلغاء ضبط هذا الخيار بمجرد ضبطه. .TP 8 \fB\-t\fP اخرج بعد قراءة وتنفيذ أمر واحد. .TP 8 \fB\-u\fP عامل المتغيرات والوسائط غير المضبوطة بخلاف الوسائط الخاصة .Q @ و .Q * , أو متغيرات مصفوفة مفهرسة بـ .Q @ أو .Q * , كخطأ عند إجراء توسيع المعاملات. إذا جرت محاولة توسيع لمتغير أو معامل غير مضبوط، تطبع الصدفة رسالة خطأ، وتخرج بحالة غير صفرية إذا لم تكن تفاعلية. .TP 8 \fB\-v\fP اطبع أسطر مدخلات الصدفة فور قراءتها. .TP 8 \fB\-x\fP بعد توسيع كل \fIsimple command\fP، أو أمر \fBfor\fP، أو أمر \fBcase\fP، أو أمر \fBselect\fP، أو أمر \fBfor\fP الحسابي، اعرض القيمة الموسعة لـ .SM \fBPS4\fP، متبوعة بالأمر ومعطياته الموسعة أو قائمة الكلمات المرتبطة به، إلى الخطأ القياسي. .TP 8 \fB\-B\fP تقوم الصدفة بتوسيع الأقواس (انظر \fBتوسيع الأقواس\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). هذا الخيار مفعل افتراضياً. .TP 8 \fB\-C\fP إذا ضُبطت، فلن يكتب \fBbash\fP فوق ملف موجود باستخدام معاملات إعادة التوجيه \fB>\fP و \fB>&\fP و \fB<>\fP. استخدام معامل إعادة التوجيه \fB>|\fP بدلاً من \fB>\fP سيتجاوز هذا ويفرض إنشاء ملف مخرجات. .TP 8 \fB\-E\fP إذا ضُبطت، فإن أي اعتراض (trap) على \fBERR\fP ستورثه دوال الصدفة، وتبديلات الأوامر، والأوامر المنفذة في بيئة صدفة فرعية. عادةً لا يُورث اعتراض \fBERR\fP في هذه الحالات. .TP 8 \fB\-H\fP تفعيل استبدال التاريخ بأسلوب \fB!\fP. هذا الخيار مفعل افتراضيًا عندما تكون الصدفة تفاعلية. .TP 8 \fB\-P\fP إذا ضُبطت، فلن تحلل الصدفة الروابط الرمزية عند تنفيذ أوامر مثل \fBcd\fP التي تغير دليل العمل الحالي. بل ستستخدم هيكل الأدلة الفيزيائي بدلاً من ذلك. مبدئياً، يتبع \fBbash\fP السلسلة المنطقية للأدلة عند تنفيذ الأوامر التي تغير الدليل الحالي. .TP 8 \fB\-T\fP إذا ضُبطت، فإن أي اعتراضات على \fBDEBUG\fP و \fBRETURN\fP ستورثها دوال الصدفة، وتبديلات الأوامر، والأوامر المنفذة في بيئة صدفة فرعية. عادةً لا تُورث اعتراضات \fBDEBUG\fP و \fBRETURN\fP في هذه الحالات. .TP 8 \fB\-\-\fP إذا لم تتبع أي وسيطات هذا الخيار، ازل ضبط المعاملات الموضعية. وإلا، اضبط المعاملات الموضعية على الـ \fIarg\fPs، حتى لو بدأ بعضها بـ \fB\-\fP. .TP 8 \fB\-\fP الإشارة إلى نهاية الخيارات، وتعيين جميع الوسائط \fIarg\fP المتبقية للمعاملات الموضعية. يتم إيقاف تشغيل الخيارين \fB\-x\fP و \fB\-v\fP. إذا لم تكن هناك وسائط \fIarg\fP، تظل المعاملات الموضعية دون تغيير. .PD .PP تكون الخيارات معطلة مبدئياً ما لم يذكر خلاف ذلك. استخدام + بدلاً من \- يؤدي إلى تعطيل هذه الخيارات. يمكن أيضاً تحديد الخيارات كوسائط لاستدعاء الصدفة. يمكن العثور على المجموعة الحالية من الخيارات في \fB$\-\fP. حالة الإرجاع هي دائماً صفر ما لم يُواجه خيار غير صالح. .RE .TP \fBshift\fP [\fIn\fP] إعادة تسمية المعاملات الموضعية من \fIn\fP+1 .\|.\|.\& إلى \fB$1\fP \fB.\|.\|..\fP المعاملات الممثلة بالأرقام من \fB$#\fP تنازليًا إلى \fB$#\fP\-\fIn\fP+1 غير مضبوطة. يجب أن يكون \fIn\fP رقمًا غير سالب أقل من أو يساوي \fB$#\fP. إذا كان \fIn\fP هو 0، فلا تتغير أي معاملات. إذا لم يُعطَ \fIn\fP، فيُفترض أنه 1. إذا كان \fIn\fP أكبر من \fB$#\fP، فلا تتغير المعاملات الموضعية. حالة الإرجاع أكبر من الصفر إذا كان \fIn\fP أكبر من \fB$#\fP أو أقل من الصفر؛ وخلاف ذلك تكون 0. .TP \fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIاسم\-الخيار\fP .\|.\|.] يبدل قيم الإعدادات التي تتحكم في سلوك الصدفة الاختياري. يمكن أن تكون الإعدادات إما تلك المدرجة أدناه، أو، في حال استخدام الخيار \fB\-o\fP، تلك المتاحة مع الخيار \fB\-o\fP لأمر \fBset\fP المدمج. .IP بدون خيارات، أو مع خيار \fB\-p\fP، اعرض قائمة بكافة الخيارات القابلة للضبط، مع توضيح ما إذا كان كل منها مضبوطًا أم لا؛ إذا قُدمت أي \fIoptnames\fP، فيقتصر الخرج على تلك الخيارات. يعرض الخيار \fB\-p\fP المخرجات بصيغة يمكن إعادة استخدامها كمدخلات. .IP الخيارات الأخرى لها المعاني التالية: .RS .PD 0 .TP \fB\-s\fP تفعيل (ضبط) كل \fIoptname\fP. .TP \fB\-u\fP عطّل (ألغِ ضبط) كل \fIoptname\fP. .TP \fB\-q\fP يمنع الإخراج العادي (الوضع الهادئ)؛ تشير حالة الإرجاع إلى ما إذا كان \fIoptname\fP معيناً أم لا. إذا تم تقديم وسائط \fIoptname\fP متعددة مع \fB\-q\fP، تكون حالة الإرجاع صفراً إذا كانت جميع خيارات \fIoptnames\fP ممكنة؛ وغير صفرية بخلاف ذلك. .TP \fB\-o\fP قصر قيم \fIoptname\fP على تلك المعرفة للخيار \fB\-o\fP للأمر المدمج \fBset\fP. .PD .PP إذا استُخدم إما \fB\-s\fP أو \fB\-u\fP بدون وسيطات \fIoptname\fP، يعرض \fBshopt\fP فقط الخيارات المضبوطة أو غير المضبوطة، على التوالي. ما لم يُذكر خلاف ذلك، تكون خيارات \fBshopt\fP معطلة (غير مضبوطة) مبدئيا. .PP حالة الإرجاع عند سرد الخيارات هي صفر إذا كانت جميع \fIoptnames\fP مفعلة، وغير ذلك تكون غير صفرية. عند ضبط الخيارات أو إلغاء ضبطها، تكون حالة الإرجاع صفراً ما لم يكن \fIoptname\fP ليس خيار صدفة صالحاً. .PP قائمة خيارات \fBshopt\fP هي: .PP .PD 0 .TP 8 \fBarray_expand_once\fP إذا ضُبطت، فستكبح الصدفة التقييم المتعدد لمنخفضات المصفوفات الترابطية والمفهرسة أثناء تقييم التعبيرات الحسابية، وأثناء تنفيذ الأوامر المدمجة التي يمكنها إجراء تعيينات للمتغيرات، وأثناء تنفيذ الأوامر المدمجة التي تجري فك إحالة للمصفوفات. .TP 8 \fBassoc_expand_once\fP مهجور؛ مرادف لـ \fBarray_expand_once\fP. .TP 8 \fBautocd\fP إذا ضُبطت، فإن اسم الأمر الذي يمثل اسم دليل يُنفّذ كما لو كان معاملًا لأمر \fBcd\fP. هذا الخيار يُستخدم فقط بواسطة الصدف التفاعلية. .TP 8 \fBbash_source_fullpath\fP إذا ضُبطت، فستُحوّل أسماء الملفات المضافة إلى متغير المصفوفة \fBBASH_SOURCE\fP إلى أسماء مسارات كاملة (انظر \fBShell Variables\fP أعلاه). .TP 8 \fBcdable_vars\fP إذا ضُبطت، فإن أي معامل للأمر المدمج \fBcd\fP ليس دليلاً يُفترض أنه اسم لمتغير قيمته هي الدليل المراد الانتقال إليه. .TP 8 \fBcdspell\fP إذا ضُبطت، فسيحاول أمر \fBcd\fP تصحيح الأخطاء الطفيفة في إملاء مكون الدليل. تشمل الأخطاء الطفيفة تبديل المحارف، أو محرف مفقود، أو محرف إضافي واحد. إذا صحح \fBcd\fP اسم الدليل، فسيطبع اسم الملف المصحح، ويستمر الأمر. هذا الخيار يُستخدم فقط بواسطة الصدف التفاعلية. .TP 8 \fBcheckhash\fP إذا ضُبطت، فسيتحقق \fBbash\fP من وجود الأمر الموجود في جدول التلبيد قبل محاولة تنفيذه. إذا لم يعد الأمر الملبّد موجوداً، فسيجري \fBbash\fP بحثاً عادياً عن المسار. .TP 8 \fBcheckjobs\fP إذا ضُبطت، فسيُدرج \fBbash\fP حالة أي مهام متوقفة أو مشغّلة قبل الخروج من صدفة تفاعلية. إذا كانت هناك أي مهام مشغّلة، فسيؤجل \fBbash\fP الخروج حتى تُحاول عملية خروج ثانية دون أمر وسيط (انظر .SM \fBJOB CONTROL\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). تؤجل الصدفة دائماً الخروج إذا كانت هناك أي وظائف متوقفة. .TP 8 \fBcheckwinsize\fP إذا ضُبطت، فسيتحقق \fBbash\fP من حجم النافذة بعد كل أمر خارجي (غير مدمج)، وإذا لزم الأمر، سيحدّث قيم .SM \fBLINES\fP و .SM \fBCOLUMNS\fP، مستخدماً واصف الملف المرتبط بالخطأ القياسي إذا كان طرفية. هذا الخيار مُفعّل مبدئياً. .TP 8 \fBcmdhist\fP إذا ضُبطت، فسيحاول \fBbash\fP حفظ كل أسطر الأمر المتعدد الأسطر في نفس مدخلة التأريخ. مما يسمح بإعادة تحرير الأوامر المتعددة الأسطر بسهولة. هذا الخيار مُفعّل مبدئياً، لكن لا تأثير له إلا إذا فُعّل تأريخ الأوامر، كما هو موضح .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت .SM \fBHISTORY\fP. .PD 0 .TP 8 \fBcompat31\fP .TP 8 \fBcompat32\fP .TP 8 \fBcompat40\fP .TP 8 \fBcompat41\fP .TP 8 \fBcompat42\fP .TP 8 \fBcompat43\fP .TP 8 \fBcompat44\fP .PD تتحكم هذه في جوانب وضع توافق الصدفة (انظر .SM \fBSHELL COMPATIBILITY MODE\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el below). .PD 0 .TP 8 \fBcomplete_fullquote\fP إذا ضُبطت، فسيقتبس \fBbash\fP كل المحارف الميتا (metacharacters) للصدفة في أسماء الملفات وأسماء الأدلة عند إجراء الإكمال. إذا لم تُضبط، فسيحذف \fBbash\fP المحارف الميتا مثل علامة الدولار من مجموعة المحارف التي ستُقتبس في أسماء الملفات المكتملة عندما تظهر هذه المحارف في مراجع متغيرات الصدفة في الكلمات المراد إكمالها. هذا يعني أن علامات الدولار في أسماء المتغيرات التي تتوسع إلى أدلة لن تُقتبس؛ ومع ذلك، لن تُقتبس أي علامات دولار تظهر في أسماء الملفات أيضاً. هذا فعال فقط عندما يستخدم bash الخطوط المائلة الخلفية لاقتباس أسماء الملفات المكتملة. هذا المتغير مضبوط مبدئياً، وهو سلوك bash المبدئي في الإصدارات حتى 4.2. .TP 8 \fBdirexpand\fP إذا ضُبطت، فسيستبدل \fBbash\fP أسماء الأدلة بنتائج توسيع الكلمات عند إجراء إكمال اسم الملف. وهذا يغيّر محتويات مخزن التحرير المؤقت لـ \fBreadline\fP. إذا لم تُضبط، فسيحاول \fBbash\fP الحفاظ على ما كتبه المستخدم. .TP 8 \fBdirspell\fP إذا ضُبطت، فسيحاول \fBbash\fP تصحيح إملاء أسماء الأدلة أثناء إكمال الكلمات إذا كان اسم الدليل المقدّم أولياً غير موجود. .TP 8 \fBdotglob\fP إذا ضُبطت، فسيضمّن \fBbash\fP أسماء الملفات التي تبدأ بـ .Q .\& in the results of pathname expansion. The filenames .FN .\& and .FN ..\& must always be matched explicitly, even if \fBdotglob\fP is set. .TP 8 \fBexecfail\fP إذا ضُبطت، فلن تخرج الصدفة غير التفاعلية إذا تعذر عليها تنفيذ الملف المحدد كعامل للأمر المدمج \fBexec\fP. الصدفة التفاعلية لا تخرج إذا فشل \fBexec\fP. .TP 8 \fBexpand_aliases\fP إذا ضُبطت، فستُوسّع الأسماء المستعارة كما هو موضح .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت .SM \fBALIASES\fP. هذا الخيار مفعّل مبدئيًا للصدمات التفاعلية. .TP 8 \fBextdebug\fP إذا ضُبطت عند استدعاء الصدفة، أو في ملف بدء تشغيل الصدفة، فرتّب لتنفيذ تشكيلة المنقّح قبل بدء الصدفة، وهو ما يطابق خيار \fB\-\-debugger\fP. أما إذا ضُبطت بعد الاستدعاء، فيُفعّل السلوك المخصص لاستخدام المنقّحين: .RS .TP \fB1.\fP يعرض الخيار \fB\-F\fP للأمر الداخلي \fBdeclare\fP اسم ملف المصدر ورقم السطر المقابل لكل اسم دالة مُرر كمعامل. .TP \fB2.\fP إذا أرجع الأمر الذي تم تشغيله بواسطة فخ \fBDEBUG\fP قيمة غير صفرية، فسيتم تخطي الأمر التالي وعدم تنفيذه. .TP \fB3.\fP إذا أرجع الأمر الذي تم تشغيله بواسطة فخ \fBDEBUG\fP القيمة 2، وكانت الصدفة تنفذ داخل روتين فرعي (دالة صدفة أو نص صدفة يتم تنفيذه بواسطة المدمجات \fB.\fP أو \fBsource\fP)، فإن الصدفة تحاكي استدعاء \fBreturn\fP. .TP \fB4.\fP يُحدّث .SM \fBBASH_ARGC\fP و .SM \fBBASH_ARGV\fP كما هو موضح في أوصافهما .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP \fB5.\fP تتبع الدوال مُمكّن: استبدال الأوامر، ودوال الصدفة، والصدفات الفرعية المستدعاة بـ \fB(\fP \fIالأمر\fP \fB)\fP ترث مصائد \fBDEBUG\fP و \fBRETURN\fP. .TP \fB6.\fP تتبع الأخطاء مفعل: استبدال الأوامر، ودوال الصدفة، والصدفات الفرعية المستدعاة باستخدام \fB(\fP \fIcommand\fP \fB)\fP ترث فخ \fBERR\fP. .RE .TP 8 \fBextglob\fP إذا ضُبطت، فستُفعّل ميزات مطابقة الأنماط الموسعة الموضحة .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت \fBتوسيع مسار الملف\fP. .TP 8 \fBextquote\fP إذا ضُبطت، فسيُجرى اقتباس \fB$\fP\*'\fIstring\fP\*' و \fB$\fP\*"\fIstring\fP\*" ضمن توسيعات \fB${\fP\fIparameter\fP\fB}\fP المحاطة بعلامات اقتباس مزدوجة. هذا الخيار مُفعّل مبدئياً. .TP 8 \fBfailglob\fP إذا ضُبطت، فإن الأنماط التي تفشل في مطابقة أسماء الملفات أثناء توسيع مسار الملف ستؤدي إلى خطأ في التوسيع. .TP 8 \fBforce_fignore\fP إذا ضُبطت، فإن اللاحقات المحددة بواسطة متغير الصدفة .SM \fBFIGNORE\fP ستؤدي إلى تجاهل الكلمات عند إجراء إكمال الكلمات حتى لو كانت الكلمات المتجاهلة هي الإكمالات الوحيدة الممكنة. انظر \fBShell Variables\fP .ie \n(zZ=1 in \fIbash\fP(1) .el above للحصول على وصف لـ .SM \fBFIGNORE\fP. هذا الخيار مفعّل بشكل مبدئي. .TP 8 \fBglobasciiranges\fP إذا ضُبطت، فإن تعبيرات النطاق المستخدمة في تعبيرات الأقواس لمطابقة الأنماط (انظر .SM \fBPattern Matching\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) التصرف كما لو كان في محلية C التقليدية عند إجراء المقارنات. أي أن مطابقة الأنماط لا تأخذ في الاعتبار تسلسل الفرز في المحلية الحالية، لذا لن يتم فرز \fBb\fP بين \fBA\fP و \fBB\fP، وسيتم فرز أحرف ASCII الكبيرة والصغيرة معًا. .TP 8 \fBglobskipdots\fP If set, pathname expansion will never match the filenames .FN .\& and .FN ..\& , even if the pattern begins with a .Q .\& . هذا الخيار مُمكّن مبدئيًا. .TP 8 \fBglobstar\fP إذا ضُبطت، فإن النمط \fB**\fP المستخدم في سياق توسيع مسار الملف سيطابق كل الملفات وصفرًا أو أكثر من الأدلة والأدلة الفرعية. إذا تبع النمط \fB/\fP، فستتطابق الأدلة والأدلة الفرعية فقط. .TP 8 \fBgnu_errfmt\fP إذا ضُبطت، فستُكتب رسائل خطأ الصدفة بتنسيق رسائل خطأ GNU القياسي. .TP 8 \fBhistappend\fP إذا ضُبطت، فستُلحق قائمة التأريخ بالملف المسمى حسب قيمة متغير .SM \fBHISTFILE\fP عند خروج الصدفة، بدلاً من الكتابة فوق الملف. .TP 8 \fBhistreedit\fP إذا ضُبطت، وكان \fBreadline\fP مستخدماً، فستُعطى للمستخدم فرصة لإعادة تحرير عملية تبديل تأريخ فاشلة. .TP 8 \fBhistverify\fP إذا ضُبطت، وكان \fBreadline\fP مستخدماً، فلن تُمرر نتائج تبديل التأريخ فوراً إلى محلل الصدفة. بدلاً من ذلك، يُحمّل السطر الناتج في مخزن تحرير \fBreadline\fP، مما يسمح بإجراء مزيد من التعديلات. .TP 8 \fBhostcomplete\fP إذا ضُبطت، وكان \fBreadline\fP مستخدماً، فسيحاول \fBbash\fP إجراء إكمال لاسم المضيف عندما تكون الكلمة التي تحتوي على \fB@\fP قيد الإكمال (انظر \fBCompleting\fP تحت .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). هذا مفعل مبدئيًا. .TP 8 \fBhuponexit\fP إذا ضُبطت، فسيُرسل \fBbash\fP إشارة .SM \fBSIGHUP\fP إلى كل المهام عند الخروج من صدفة ولوج تفاعلية. .TP 8 \fBinherit_errexit\fP إذا ضُبطت، فسيورث تبديل الأوامر قيمة خيار \fBerrexit\fP، بدلاً من إلغاء ضبطه في بيئة الصدفة الفرعية. هذا الخيار مُفعّل عند تفعيل وضع posix. .TP 8 \fBinteractive_comments\fP في الصدفة التفاعلية، تؤدي الكلمة التي تبدأ بـ \fB#\fP إلى تجاهل تلك الكلمة وجميع المحارف المتبقية في ذلك السطر، كما هو الحال في الصدفة غير التفاعلية (راجع .SM \fBCOMMENTS\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). هذا الخيار مُمكّن مبدئيًا. .TP 8 \fBlastpipe\fP إذا ضُبطت، ولم يكن التحكم في المهام نشطاً، فستشغّل الصدفة آخر أمر في أنبوب لم يُنفّذ في الخلفية في بيئة الصدفة الحالية. .TP 8 \fBlithist\fP إذا ضُبطت، وفُعّل الخيار \fBcmdhist\fP، فستُحفظ الأوامر المتعددة الأسطر في التأريخ مع أسطر جديدة مضمنة بدلاً من استخدام فواصل الفاصلة المنقوطة كلما أمكن ذلك. .TP 8 \fBlocalvar_inherit\fP إذا ضُبطت، فستورث المتغيرات المحلية قيمة وسمات متغير بنفس الاسم موجود في نطاق سابق قبل تعيين أي قيمة جديدة. سمة nameref لا تُورث. .TP 8 \fBlocalvar_unset\fP إذا ضُبطت، فإن استدعاء \fBunset\fP على المتغيرات المحلية في نطاقات الدوال السابقة يسمها بحيث تجدها عمليات البحث اللاحقة غير مضبوطة حتى تعود تلك الدالة. وهذا يطابق سلوك إلغاء ضبط المتغيرات المحلية في نطاق الدالة الحالي. .TP 8 \fBlogin_shell\fP تضبط الصدفة هذا الخيار إذا بُدئت كصدفة تسجيل دخول (انظر .SM \fBالاستدعاء\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). لا يجوز تغيير القيمة. .TP 8 \fBmailwarn\fP إذا ضُبطت، وكان الملف الذي يتحقق منه \fBbash\fP بحثاً عن بريد قد وُصل إليه منذ آخر مرة فُحص فيها، فسيظهر \fBbash\fP الرسالة .Q "The mail in \fImailfile\fP has been read" . .TP 8 \fBno_empty_cmd_completion\fP إذا ضُبطت، وكان \fBreadline\fP مستخدماً، فلن يبحث \fBbash\fP في .SM \fBPATH\fP عن إكمالات ممكنة عند محاولة الإكمال في سطر فارغ. .TP 8 \fBnocaseglob\fP إذا ضُبطت، فسيطابق \fBbash\fP أسماء الملفات بطريقة غير حساسة لحالة الأحرف عند إجراء توسيع مسار الملف (انظر \fBPathname Expansion\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP 8 \fBnocasematch\fP إذا ضُبطت، فسيُطابق \fBbash\fP الأنماط بطريقة غير حساسة لحالة الأحرف عند إجراء المطابقة أثناء تنفيذ أوامر \fBcase\fP أو الأوامر الشرطية \fB[[\fP، أو عند إجراء توسيعات كلمات تبديل الأنماط، أو عند تصفية الإكمالات الممكنة كجزء من الإكمال المبرمج. .TP 8 \fBnoexpand_translation\fP إذا ضُبطت، فسيحيط \fBbash\fP النتائج المترجمة لاقتباس \fB$\*"\fP.\|.\|.\&\fB\*"\fP بعلامات اقتباس مفردة بدلاً من المزدوجة. إذا لم تترجم السلسلة، فلن يكون لهذا أي تأثير. .TP 8 \fBnullglob\fP إذا ضُبطت، فإن أنماط توسيع مسار الملف التي لا تطابق أي ملفات (انظر \fBPathname Expansion\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) تتوسع إلى لا شيء وتُزال، بدلاً من التوسع إلى نفسها. .TP 8 \fBpatsub_replacement\fP إذا ضُبطت، فسيوسع \fBbash\fP حالات ظهور \fB&\fP في سلسلة الاستبدال لتبديل الأنماط إلى النص المطابق للنمط، كما هو موضح تحت \fBParameter Expansion\fP .ie \n(zZ=1 in \fIbash\fP(1). .el above. هذا الخيار مُمكّن مبدئيًا. .TP 8 \fBprogcomp\fP إذا ضُبطت، فستُفعّل تسهيلات الإكمال المبرمج (انظر \fBProgrammable Completion\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). هذا الخيار مُمكّن مبدئيًا. .TP 8 \fBprogcomp_alias\fP إذا ضُبطت، وفُعّل الإكمال المبرمج، فسيعامل \fBbash\fP اسم الأمر الذي ليس له أي إكمالات كاسم مستعار محتمل ويحاول توسيع الاسم المستعار. إذا كان له اسم مستعار، فسيحاول \fBbash\fP الإكمال المبرمج باستخدام كلمة الأمر الناتجة عن الاسم المستعار الموسع. .TP 8 \fBpromptvars\fP إذا ضُبطت، فستخضع سلاسل الحث لتوسيع المعاملات، وتبديل الأوامر، والتوسيع الحسابي، وإزالة الاقتباس بعد توسيعها كما هو موضح في .SM \fBPROMPTING\fP .ie \n(zZ=1 in \fIbash\fP(1). .el above. هذا الخيار مُمكّن مبدئيًا. .TP 8 \fBrestricted_shell\fP تضبط الصدفة هذا الخيار إذا بُدئت في الوضع المقيد (انظر .SM \fBالصدفة المقيدة\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el below). لا يجوز تغيير القيمة. لا يُعاد ضبط هذا عند تنفيذ ملفات بدء التشغيل، مما يسمح لملفات بدء التشغيل باكتشاف ما إذا كانت الصدفة مقيدة أم لا. .TP 8 \fBshift_verbose\fP إذا ضُبطت، فسيطبع الأمر المدمج \fBshift\fP رسالة خطأ عندما يتجاوز عدد الإزاحات عدد المعاملات الموضعية. .TP 8 \fBمسار_المصدر\fP إذا ضُبطت، فإن الأمر المدمج \fB.\fP (\fBsource\fP) سيستخدم قيمة .SM \fBPATH\fP للعثور على الدليل الذي يحتوي على الملف المقدم كعامل عندما لا يتوفر الخيار \fB\-p\fP. هذا الخيار مُفعّل مبدئياً. .TP 8 \fBvarredir_close\fP إذا ضُبطت، فستغلق الصدفة آلياً واصفات الملفات المعينة باستخدام صيغة إعادة التوجيه \fI{varname}\fP (انظر .SM \fBREDIRECTION\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) بدلاً من تركها مفتوحة عند اكتمال الأمر. .TP 8 \fBxpg_echo\fP إذا ضُبطت، فسيوسع الأمر المدمج \fBecho\fP تتابعات الهروب ذات الخط المائل الخلفي مبدئياً. إذا فُعّل خيار صدفة \fBposix\fP أيضاً، فلن يفسر \fBecho\fP أي خيارات. .RE .PD .TP \fBsuspend\fP [\fB\-f\fP] تعليق تنفيذ هذا الغلاف حتى يستلم إشارة .SM \fBSIGCONT\fP. لا يمكن تعليق غلاف تسجيل الدخول، أو غلاف بدون تمكين التحكم في الوظائف؛ سيقوم الخيار \fB\-f\fP بتجاوز ذلك وفرض التعليق. حالة الإرجاع هي 0 ما لم يكن الغلاف هو غلاف تسجيل دخول أو لم يتم تمكين التحكم في الوظائف ولم يتم توفير \fB\-f\fP. .TP \fBtest\fP \fIexpr\fP .PD 0 .TP \fB[\fP \fIتعبير\fP \fB]\fP .PD إرجاع حالة 0 (صواب) أو 1 (خطأ) بناءً على تقييم التعبير الشرطي \fIexpr\fP. يجب أن يكون كل عامل ومعامل وسيطًا منفصلًا. تتكون التعبيرات من الأساسيات الموصوفة .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت .SM \fBالتعبيرات الشرطية\fP. لا يقبل \fBtest\fP أي خيارات، ولا يقبل ويتجاهل معامل \fB\-\-\fP كعلامة على نهاية الخيارات. .IP يمكن دمج التعبيرات باستخدام العمليات التالية، والمدرجة بترتيب تنازلي حسب الأسبقية. يعتمد التقييم على عدد الوسائط؛ انظر أدناه. يستخدم \fBtest\fP أسبقية العمليات عندما يكون هناك خمسة وسائط أو أكثر. .RS .PD 0 .TP \fB! \fP\fIexpr\fP صحيح إذا كان \fIexpr\fP خاطئًا. .TP \fB( \fP\fIexpr\fP\fB )\fP يعيد قيمة \fIexpr\fP. قد يُستخدم هذا لتجاوز أسبقية العوامل العادية. .TP \fIexpr1\fP \-\fBa\fP \fIexpr2\fP صحيح إذا كان كل من \fIexpr1\fP و \fIexpr2\fP صحيحين. .TP \fIexpr1\fP \-\fBo\fP \fIexpr2\fP صحيح إذا كان أي من \fIexpr1\fP أو \fIexpr2\fP صحيحًا. .PD .PP يُقيم \fBtest\fP و \fB[\fP التعبيرات الشرطية باستخدام مجموعة من القواعد المبنية على عدد المعطيات. .PP .PD 0 .TP 0 arguments التعبير خاطئ. .TP معطى واحد يكون التعبير صحيحًا إذا وفقط إذا كان المعامل ليس فارغًا (not null). .TP معطيان إذا كان الوسيط الأول \fB!\fP، يكون التعبير صحيحًا فقط إذا كان الوسيط الثاني فارغًا. إذا كان الوسيط الأول أحد العمليات الشرطية الأحادية المدرجة .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت .SM \fBالتعبيرات الشرطية\fP، يكون التعبير صحيحًا إذا كان الاختبار الأحادي صحيحًا. إذا لم يكن المعامل الأول عاملًا شرطيًا أحاديًا صالحًا، يكون التعبير خاطئًا. .TP 3 معطيات يتم تطبيق الشروط التالية بالترتيب المذكور. إذا كان المعامل الثاني هو أحد العوامل الشرطية الثنائية المدرجة .ie \n(zZ=1 in \fIbash\fP(1) .el above تحت .SM \fBالتعبيرات الشرطية\fP، تكون نتيجة التعبير هي نتيجة الاختبار الثنائي باستخدام المعاملين الأول والثالث. يُعتبر العاملان \fB\-a\fP و \fB\-o\fP عوامل ثنائية عندما يوجد ثلاثة معاملات. إذا كان المعامل الأول هو \fB!\fP، تكون القيمة نفيًا لاختبار المعاملين الثاني والثالث. إذا كان المعامل الأول هو \fB(\fP تمامًا والمعامل الثالث هو \fB)\fP تمامًا، تكون النتيجة هي اختبار المعامل الواحد للمعامل الثاني. خلاف ذلك، يكون التعبير خاطئًا. .TP 4 معطيات يتم تطبيق الشروط التالية بالترتيب المذكور. إذا كان المعامل الأول هو \fB!\fP، فإن النتيجة هي نفي التعبير المكون من ثلاثة معاملات والمؤلف من المعاملات المتبقية. إذا كان المعامل الأول هو \fB(\fP بالضبط والمعامل الرابع هو \fB)\fP بالضبط، فإن النتيجة هي اختبار المعاملين للثاني والثالث. بخلاف ذلك، يتم تحليل التعبير وتقييمه وفقًا للأسبقية باستخدام القواعد المذكورة أعلاه. .TP 5 معطيات أو أكثر يتم تحليل التعبير وتقييمه وفقًا للأسبقية باستخدام القواعد المذكورة أعلاه. .PD .PP عندما تكون الصدفة في نمط posix، أو إذا كان التعبير جزءًا من أمر \fB[[\fP، فإن العوامل \fB<\fP و \fB>\fP تقوم بالفرز باستخدام المحلية الحالية. إذا لم تكن الصدفة في نمط posix، فإن الأوامر \fBtest\fP و \fB[\fP تفرز معجميًا باستخدام ترتيب ASCII. .PP يمكن أن يؤدي تحليل أسبقية العوامل التاريخي مع 4 معاملات أو أكثر إلى غموض عندما يواجه سلاسل تبدو كعناصر أساسية (primaries). لقد عفا الزمن على معيار .SM POSIX للعناصر الأساسية \fB\-a\fP و \fB\-o\fP وإحاطة التعبيرات بين أقواس. يجب ألا تستخدمها السكربتات بعد الآن. من الموثوق به أكثر قصر استدعاءات الاختبار على عنصر أساسي واحد، واستبدال استخدامات \fB\-a\fP و \fB\-o\fP بعوامل القائمة \fB&&\fP و \fB||\fP الخاصة بالشل. .RE .TP \fBtimes\fP اطبع أوقات المستخدم والنظام المتراكمة للصدفة وللعمليات التي يتم تشغيلها من الصدفة. حالة العودة هي 0. .TP \fBtrap\fP [\fB\-lpP\fP] [[\fIإجراء\fP] \fIsigspec\fP .\|.\|.] الـ \fIإجراء\fP هو أمر يُقرأ ويُنفذ عندما تتلقى الصدفة أيًا من الإشارات \fIsigspec\fP. إذا كان \fIإجراء\fP غائبًا (وكانت هناك إشارة \fIsigspec\fP واحدة) أو كان \fB\-\fP، فستُعاد كل \fIsigspec\fP محددة إلى القيمة التي كانت عليها عند بدء الصدفة. إذا كان \fIإجراء\fP هو السلسلة النصية الفارغة (null string)، فستتجاهل الصدفة والأوامر التي تستدعيها الإشارة المحددة بكل \fIsigspec\fP. .IP إذا لم تورد وسيطات، يعرض \fBtrap\fP الإجراءات المرتبطة بكل إشارة مقتنصة كمجموعة من أوامر \fBtrap\fP التي يمكن إعادة استخدامها كمدخلات للصدفة لاستعادة ترتيبات الإشارة الحالية. إذا أُعطي \fB\-p\fP، ولم يتواجد \fIaction\fP، يعرض \fBtrap\fP الإجراءات المرتبطة بكل \fIsigspec\fP أو، إذا لم يزود أي منها، لكل الإشارات المقتنصة، كمجموعة أوامر \fBtrap\fP يمكن إعادة استخدامها لاستعادة الحالة. يتصرف الخيار \fB\-P\fP بشكل مشابه، لكنه يعرض فقط الإجراءات المرتبطة بكل وسيطة \fIsigspec\fP. يتطلب \fB\-P\fP وسيطة \fIsigspec\fP واحدة على الأقل. يمكن استخدام الخيارات \fB\-P\fP أو \fB\-p\fP في بيئة صدفة فرعية، وطالما استُخدمت قبل استخدام \fBtrap\fP لتغيير معالجة الإشارة، فستعرض حالة فخاخ الصدفة الأم. .IP يطبع الخيار \fB\-l\fP قائمة بأسماء الإشارات والأرقام المقابلة لها. كل \fIsigspec\fP إما اسم إشارة معرف في <\fIsignal.h\fP>، أو رقم إشارة. أسماء الإشارات غير حساسة لحالة الأحرف والبادئة .SM \fBSIG\fP اختيارية. إذا وُفر \fB\-l\fP بدون معاملات \fIsigspec\fP، فإنه يطبع قائمة بأسماء الإشارات الصالحة. .IP إذا كانت \fIsigspec\fP هي .SM \fBEXIT\fP (0)، يُنفذ \fIaction\fP عند الخروج من الصدفة. إذا كانت \fIsigspec\fP هي .SM \fBDEBUG\fP، يُنفذ \fIaction\fP قبل كل \fIsimple command\fP، وأمر \fIfor\fP، وأمر \fIcase\fP، وأمر \fIselect\fP، والأمر الحسابي ((، والأمر الشرطي [[، وأمر \fIfor\fP الحسابي، وقبل تنفيذ أول أمر في دالة صدفة (انظر .SM \fBSHELL GRAMMAR\fP) .ie \n(zZ=1 in \fIbash\fP(1)). .el above). راجع وصف خيار الصدفة \fBextdebug\fP (انظر \fBshopt\fP) .ie \n(zZ=1 in \fIbash\fP(1)) .el above) لتفاصيل تأثيره على صائد \fBDEBUG\fP. إذا كان \fIsigspec\fP هو .SM \fBRETURN\fP، يُنفذ \fIaction\fP في كل مرة تنتهي فيها وظيفة صدفة أو سكربت نُفذ باستخدام الأوامر المدمجة \fB.\fP أو \fBsource\fP. .IP إذا كانت \fIsigspec\fP هي .SM \fBERR\fP، يُنفذ \fIaction\fP كلما أعاد أنبوب (قد يتكون من أمر بسيط واحد) أو قائمة أو أمر مركب حالة خروج غير صفرية، مع مراعاة الشروط التالية. لا يُنفذ فخ .SM \fBERR\fP إذا كان الأمر الفاشل جزءا من قائمة أوامر تلي مباشرة الكلمة المحجوزة \fBwhile\fP أو \fBuntil\fP، أو جزءا من اختبار في جملة \fIif\fP، أو جزءا من أمر نُفذ في قائمة \fB&&\fP أو \fB||\fP باستثناء الأمر الذي يلي \fB&&\fP أو \fB||\fP النهائية، أو أي أمر في أنبوب ما عدا الأخير (مع مراعاة حالة خيار الصدفة \fBpipefail\fP)، أو إذا كانت قيمة عودة الأمر معكوسة باستخدام \fB!\fP. هذه هي نفس الشروط التي يلتزم بها خيار \fBerrexit\fP (\fB\-e\fP). .IP عندما لا تكون الصدفة تفاعلية، لا يمكن اعتراض الإشارات التي تم تجاهلها عند الدخول إلى الصدفة أو إعادة ضبطها. تسمح الصدفات التفاعلية باعتراض الإشارات المتجاهلة عند الدخول. تُعاد الإشارات المعترضة التي لا يتم تجاهلها إلى قيمها الأصلية في صدفة فرعية أو بيئة صدفة فرعية عند إنشائها. تكون حالة الإعادة خاطئة إذا كان أي \fIsigspec\fP غير صالح؛ عدا ذلك يعيد \fBtrap\fP قيمة صحيحة. .TP \fBtrue\fP لا يفعل شيئاً، ويُرجع حالة 0. .TP \fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP .\|.\|.] توضيح كيف سيتم تفسير كل \fIname\fP إذا استخدم كاسم أمر. .IP إذا تم استخدام الخيار \fB\-t\fP، يطبع \fBtype\fP سلسلة نصية تكون إحدى القيم: \fIalias\fP أو \fIkeyword\fP أو \fIfunction\fP أو \fIbuiltin\fP أو \fIfile\fP إذا كان \fIالاسم\fP هو اسم مستعار، أو كلمة محجوزة في الصدفة، أو دالة، أو مدمج، أو ملف قابل للتنفيذ، على التوالي. إذا لم يتم العثور على \fIالاسم\fP، فلا يطبع \fBtype\fP شيئًا ويرجع حالة خروج غير صفرية. .IP إذا تم استخدام الخيار \fB\-p\fP، يرجع \fBtype\fP إما مسار الملف القابل للتنفيذ الذي سيتم العثور عليه بالبحث في \fB$PATH\fP عن \fIالاسم\fP أو لا شيء إذا .Q "type \-t name" لن يعيد \fIfile\fP. يجبر الخيار \fB\-P\fP البحث في .SM \fBPATH\fP عن كل \fIname\fP، حتى لو .Q "type \-t name" لن يعيد \fIfile\fP. إذا كان \fIname\fP موجودًا في جدول الأوامر المقطعة، يطبع \fB\-p\fP و \fB\-P\fP القيمة المقطعة، والتي ليست بالضرورة الملف الذي يظهر أولًا في .SM \fBPATH\fP. .IP إذا تم استخدام الخيار \fB\-a\fP، يطبع \fBtype\fP جميع الأماكن التي تحتوي على أمر يسمى \fIname\fP. يتضمن ذلك الأسماء المستعارة، والكلمات المحجوزة، والدوال، والمدمجات، ولكن يمكن تزويد خيارات البحث في المسار (\fB\-p\fP و \fB\-P\fP) لقصر المخرجات على الملفات القابلة للتنفيذ. لا يراجع \fBtype\fP جدول الأوامر المقطعة (hashed) عند استخدام \fB\-a\fP مع \fB\-p\fP، ويقوم فقط بالبحث في .SM \fBPATH\fP عن \fIname\fP. .IP يعطل الخيار \fB\-f\fP البحث عن دوال الصدفة، تمامًا كما يفعل الأمر الداخلي \fBcommand\fP. يعيد \fBtype\fP القيمة صواب (true) إذا عُثر على جميع المعاملات، وخطأ (false) إذا لم يُعثر على أي منها. .TP \fBulimit\fP [\fB\-HS\fP] \fB\-a\fP .PD 0 .TP \fBulimit\fP [\fB\-HS\fP] [\fB\-bcdefiklmnpqrstuvxPRT\fP [\fIحد\fP]] .PD يوفر التحكم في الموارد المتاحة للصدفة وللعمليات التي تبدأها، على الأنظمة التي تسمح بهذا التحكم. .IP يحدد الخياران \fB\-H\fP و \fB\-S\fP ما إذا كان سيُضبط الحد الصارم أو المرن للمورد المعطى. لا يمكن للمستخدم غير الجذر زيادة الحد الصارم بمجرد ضبطه؛ بينما يمكن زيادة الحد المرن حتى قيمة الحد الصارم. إذا لم يُحدد أي من \fB\-H\fP أو \fB\-S\fP، فيضبط \fBulimit\fP كلا الحدين المرن والصارم. .IP يمكن أن تكون قيمة \fIlimit\fP رقمًا بالوحدة المحددة للمورد أو إحدى القيم الخاصة \fBhard\fP أو \fBsoft\fP أو \fBunlimited\fP، والتي ترمز إلى الحد الصلب الحالي، والحد المرن الحالي، وعدم وجود حد، على التوالي. إذا حُذف \fIlimit\fP، فسيطبع \fBulimit\fP القيمة الحالية للحد المرن للمورد، ما لم يُعط الخيار \fB\-H\fP. عند تحديد أكثر من مورد، يطبع اسم الحد ووحدته، إذا كان ذلك مناسبًا، قبل القيمة. تُفسر الخيارات الأخرى كما يلي: .RS .PD 0 .TP \fB\-a\fP الإبلاغ عن جميع الحدود الحالية؛ لم تُضبط أي حدود. .TP \fB\-b\fP أقصى حجم للمخزن المؤقت للمقبس. .TP \fB\-c\fP أقصى حجم لملفات لُب النظام المنشأة. .TP \fB\-d\fP أقصى حجم لقطاع بيانات العملية. .TP \fB\-e\fP أقصى أولوية جدولة ( .Q nice ). .TP \fB\-f\fP أقصى حجم للملفات المكتوبة بواسطة الصدفة وأبنائها. .TP \fB\-i\fP أقصى عدد من الإشارات المعلقة. .TP \fB\-k\fP أقصى عدد من kqueues التي يمكن تخصيصها. .TP \fB\-l\fP أقصى حجم يمكن قفله في الذاكرة. .TP \fB\-m\fP أقصى حجم للمجموعة المقيمة (كثير من الأنظمة لا تلتزم بهذا الحد). .TP \fB\-n\fP أقصى عدد من واصفات الملفات المفتوحة (معظم الأنظمة لا تسمح بضبط هذه القيمة). .TP \fB\-p\fP حجم الأنبوب بكتل سعة 512 بايت (قد لا يُضبط هذا). .TP \fB\-q\fP أقصى عدد من البايتات في طوابير رسائل .SM POSIX . .TP \fB\-r\fP أقصى أولوية لجدولة الوقت الحقيقي. .TP \fB\-s\fP أقصى حجم للمكدس. .TP \fB\-t\fP أقصى قدر من وقت المعالج بالثواني. .TP \fB\-u\fP أقصى عدد من العمليات المتاحة لمستخدم واحد. .TP \fB\-v\fP أقصى قدر من الذاكرة الافتراضية المتاحة للصدفة، وفي بعض الأنظمة، لأبنائها. .TP \fB\-x\fP أقصى عدد من أقفال الملفات. .TP \fB\-P\fP أقصى عدد من الطرفيات الوهمية. .TP \fB\-R\fP أقصى وقت يمكن أن تعمل فيه عملية وقت حقيقي قبل الحجب، بالميكروثانية. .TP \fB\-T\fP أقصى عدد من الخيوط. .PD .PP إذا زود \fIlimit\fP، ولم يُستخدم الخيار \fB\-a\fP، يكون \fIlimit\fP هو القيمة الجديدة للمورد المحدد. إذا لم يزود أي خيار، يُفترض استخدام \fB\-f\fP. .PP القيم هي بزيادات قدرها 1024 بايت، باستثناء \fB\-t\fP بالثواني؛ و \fB\-R\fP بالميكروثانية؛ و \fB\-p\fP بوحدات كتل من 512 بايت؛ و \fB\-P\fP و \fB\-T\fP و \fB\-b\fP و \fB\-k\fP و \fB\-n\fP و \fB\-u\fP وهي قيم غير مقاسة؛ وعندما تكون في نمط posix، تكون \fB\-c\fP و \fB\-f\fP بزيادات قدرها 512 بايت. حالة الإرجاع هي 0 ما لم يُقدم خيار أو معطى غير صالح، أو يحدث خطأ أثناء ضبط حد جديد. .RE .TP \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fIوضع\fP] اضبط قناع إنشاء ملفات المستخدم على \fImode\fP. إذا بدأ \fImode\fP برقم، يُفسر كعدد ثماني؛ وإلا يُفسر كقناع نمط رمزي مشابه لما يقبله \fIchmod\fP(1). إذا حُذف \fImode\fP، يطبع \fBumask\fP القيمة الحالية للقناع. الخيار \fB\-S\fP بدون معامل \fImode\fP يطبع القناع بتنسيق رمزي؛ المخرجات المبدئية هي عدد ثماني. إذا قُدم الخيار \fB\-p\fP وحُذف \fImode\fP، تكون المخرجات في شكل يمكن إعادة استخدامه كمدخلات. حالة العودة هي صفر إذا غُير النمط بنجاح أو إذا لم يُقدم معامل \fImode\fP، وغير ذلك تكون غير صفرية. .TP \fBunalias\fP [\-\fBa\fP] [\fIاسم\fP .\|.\|.] إزالة كل \fIname\fP من قائمة الأسماء المستعارة المعرفة. إذا زُوّد \fB\-a\fP، تُزال جميع تعريفات الأسماء المستعارة. قيمة الإرجاع هي صواب ما لم يكن \fIname\fP المزود ليس اسمًا مستعارًا معرفًا. .TP \fBunset\fP [\-\fBfv\fP] [\-\fBn\fP] [\fIاسم\fP .\|.\|.] لكل \fIاسم\fP، أزل المتغير أو الدالة المقابلة. إذا أُعطي الخيار \fB\-v\fP، يشير كل \fIاسم\fP إلى متغير صدفة، ويُزال ذلك المتغير. إذا حُدد \fB\-f\fP، يشير كل \fIاسم\fP إلى دالة صدفة، ويُزال تعريف الدالة. إذا وُفر الخيار \fB\-n\fP، وكان \fIالاسم\fP متغيرًا بسمة \fInameref\fP، فسيتم إلغاء تعيين \fIالاسم\fP نفسه بدلاً من المتغير الذي يشير إليه. لا يكون لـ \fB\-n\fP أي تأثير في حال توفير الخيار \fB\-f\fP. لا يجوز إلغاء تعيين المتغيرات والدوال المخصصة للقراءة فقط. عند إزالة المتغيرات أو الدوال، فإنها تُزال أيضًا من البيئة الممرة للأوامر اللاحقة. إذا لم تُوفر خيارات، يشير كل \fIاسم\fP إلى متغير؛ وإذا لم يوجد متغير بهذا الاسم، يتم إلغاء تعيين دالة بهذا الاسم إن وجدت. بعض متغيرات الصدفة لا يمكن إلغاء تعيينها. إذا أُلغي تعيين أي من .SM \fBBASH_ALIASES\fP، .SM \fBBASH_ARGV0\fP، .SM \fBBASH_CMDS\fP، .SM \fBBASH_COMMAND\fP، .SM \fBBASH_SUBSHELL\fP، .SM \fBBASHPID\fP، .SM \fBCOMP_WORDBREAKS\fP، .SM \fBDIRSTACK\fP، .SM \fBEPOCHREALTIME\fP، .SM \fBEPOCHSECONDS\fP، .SM \fBFUNCNAME\fP، .SM \fBGROUPS\fP، .SM \fBHISTCMD\fP، .SM \fBLINENO\fP، .SM \fBRANDOM\fP، .SM \fBSECONDS\fP، أو .SM \fBSRANDOM\fP، فإنها تفقد خصائصها الخاصة، حتى لو أعيد تعيينها لاحقًا. حالة الخروج هي 'صواب' ما لم يكن \fIالاسم\fP للقراءة فقط أو لا يمكن إلغاء تعيينه. .TP \fBwait\fP [\fB\-fn\fP] [\fB\-p\fP \fIvarname\fP] [\fIid\fP .\|.\|.] انتظر كل عملية ابنة محددة \fIid\fP وأعد حالة الإنهاء لآخر \fIid\fP. قد يكون كل \fIid\fP معرف عملية \fIpid\fP أو توصيف وظيفة \fIjobspec\fP؛ إذا قُدم توصيف وظيفة، فإن \fBwait\fP ينتظر كافة العمليات في تلك الوظيفة. .IP إذا لم تورد خيارات أو \fIid\fPs، ينتظر \fBwait\fP جميع مهام الخلفية الجارية وآخر إحلال لعملية نُفذ، إذا كان معرف العملية الخاص به هو نفسه \fB$!\fP، وتكون حالة العودة صفرا. .IP إذا تم تزويد الخيار \fB\-n\fP، ينتظر \fBwait\fP اكتمال أي من \fIالمعرفات\fP المعطاة، أو في حال عدم تزويد أي منها، ينتظر أي مهمة أو استبدال عملية، ويرجع حالة الخروج الخاصة بها. إذا لم يكن أي من المعرفات المزودة ابنًا للصدفة، أو إذا لم تُزود أي معرفات ولم يكن لدى الصدفة أبناء لم تنتظرهم بعد، تكون حالة الخروج 127. .IP إذا تم تزويد الخيار \fB\-p\fP، يقوم \fBwait\fP بتعيين معرف العملية أو المهمة التي تم إرجاع حالة الخروج الخاصة بها إلى المتغير \fIvarname\fP المسمى بوسيط الخيار. سيتم إلغاء ضبط المتغير، الذي لا يمكن أن يكون للقراءة فقط، في البداية قبل أي تعيين. هذا مفيد فقط عند استخدامه مع الخيار \fB\-n\fP. .IP يؤدي تقديم الخيار \fB\-f\fP، عند تمكين التحكم في الوظائف، إلى إجبار \fBwait\fP على انتظار انتهاء كل معرف \fIid\fP قبل إرجاع حالته، بدلاً من الإرجاع عندما تتغير حالته. .IP إذا لم يحدد أي من الـ \fIid\fPs إحدى عمليات الصدفة التابعة النشطة، تكون حالة العودة 127. إذا قوطع \fBwait\fP بواسطة إشارة، فسيظل أي \fIvarname\fP غير مضبوط، وستكون حالة العودة أكبر من 128، كما هو موضح تحت \fBSIGNALS\fP .ie \n(zZ=1 in \fIbash\fP(1). .el above. وإلا، تكون حالة العودة هي حالة الخروج لآخر \fIid\fP. .SH "وضع توافق الصدفة" قدم Bash\-4.0 مفهوم \fIمستوى توافق الصدفة\fP، المحدد كمجموعة من الخيارات لأمر shopt المدمج (\fBcompat31\fP، \fBcompat32\fP، \fBcompat40\fP، \fBcompat41\fP، وما إلى ذلك). يوجد مستوى توافق وحيد حالي — كل خيار مانع للآخر تبادليًا. يهدف مستوى التوافق إلى السماح للمستخدمين باختيار سلوك من إصدارات سابقة غير متوافق مع الإصدارات الأحدث أثناء قيامهم بنقل البرمجيات النصية لاستخدام الميزات والسلوكيات الحالية. ويُقصد به أن يكون حلاً مؤقتًا. .PP لا يذكر هذا القسم السلوك القياسي لإصدار معين (على سبيل المثال، تعني تهيئة \fBcompat32\fP أن وضع علامات الاقتباس على الجانب الأيمن من معامل مطابقة التعبير النمطي يقتبس محارف التعبير النمطي الخاصة في الكلمة، وهو السلوك المبدئي في bash\-3.2 والإصدارات اللاحقة). .PP إذا مكن مستخدم ما، على سبيل المثال، \fBcompat32\fP، فقد يؤثر ذلك على سلوك مستويات التوافق الأخرى وصولاً إلى مستوى التوافق الحالي وتضمينه. الفكرة هي أن كل مستوى توافق يتحكم في السلوك الذي تغير في ذلك الإصدار من \fBbash\fP، ولكن هذا السلوك قد يكون موجودا في إصدارات سابقة. على سبيل المثال، التغيير لاستخدام المقارنات القائمة على الإعدادات المحلية (locale) مع أمر \fB[[\fP جاء في bash\-4.1، واستخدمت الإصدارات الأقدم مقارنات قائمة على ASCII، لذا فإن تمكين \fBcompat32\fP سيمكن المقارنات القائمة على ASCII أيضا. قد لا تكون هذه الدقة كافية لجميع الاستخدامات، ونتيجة لذلك يجب على المستخدمين استخدام مستويات التوافق بحذر. اقرأ الوثائق الخاصة بميزة معينة لمعرفة السلوك الحالي. .PP قدم Bash\-4.3 متغير صدفة جديدًا: .SM \fBBASH_COMPAT\fP. تحدد القيمة المسندة لهذا المتغير (رقم إصدار عشري مثل 4.2، أو عدد صحيح مقابل لخيار \fBcompat\fP\fINN\fP، مثل 42) مستوى التوافق. .PP بدءاً من bash\-4.4، بدأ \fBbash\fP في إهمال مستويات التوافق القديمة. في النهاية، سيتم إزالة الخيارات لصالح .SM \fBBASH_COMPAT\fP. .PP كان Bash\-5.0 هو الإصدار الأخير الذي توفر له خيار shopt فردي للإصدار السابق. يعد .SM \fBBASH_COMPAT\fP الآلية الوحيدة للتحكم في مستوى التوافق في الإصدارات الأحدث من bash\-5.0. .PP يصف الجدول التالي تغييرات السلوك التي يتحكم فيها كل إعداد لمستوى التوافق. يُستخدم وسم \fBcompat\fP\fINN\fP كاختصار لضبط مستوى التوافق على \fINN\fP باستخدام إحدى الآليات التالية. بالنسبة للإصدارات الأقدم من bash\-5.0، يمكن ضبط مستوى التوافق باستخدام خيار shopt المقابل \fBcompat\fP\fINN\fP. بالنسبة لـ bash\-4.3 والإصدارات الأحدث، يُفضل متغير \fBBASH_COMPAT\fP، وهو مطلوب لـ bash\-5.1 والإصدارات الأحدث. .TP \fBcompat31\fP .PD 0 .RS .IP \(bu وضع الطرف الأيمن لعامل مطابقة التعبيرات النمطية للأمر \fB[[\fP (=\*~) بين علامات اقتباس ليس له تأثير خاص. .RE .PD .TP \fBcompat32\fP .PD 0 .RS .IP \(bu لا تراعي عوامل التشغيل \fB<\fP و \fB>\fP للأمر \fB[[\fP المحلية الحالية عند مقارنة السلاسل النصية؛ فهي تستخدم ترتيب ASCII. .RE .PD .TP \fBcompat40\fP .PD 0 .RS .IP \(bu لا تراعي عوامل التشغيل \fB<\fP و \fB>\fP للأمر \fB[[\fP المحلية الحالية عند مقارنة السلاسل النصية؛ فهي تستخدم ترتيب ASCII. تستخدم إصدارات \fBBash\fP الأقدم من bash\-4.1 ترتيب ASCII و \fIstrcmp\fP(3)؛ بينما تستخدم bash\-4.1 وما بعدها تسلسل ترتيب المحلية الحالية و \fIstrcoll\fP(3). .RE .PD .TP \fBcompat41\fP .PD 0 .RS .IP \(bu في وضع posix، قد يتبع \fBtime\fP خيارات ومع ذلك يظل معروفاً ككلمة محجوزة (هذا هو تفسير .SM POSIX رقم 267). .IP \(bu في وضع \fIposix\fP، يتطلب المحلل وجود عدد زوجي من علامات الاقتباس المفردة في جزء \fIword\fP من توسيع المعامل المقتبس اقتباساً مزدوجاً، ويعاملها معاملة خاصة، بحيث تُعتبر المحارف الموجودة داخل علامات الاقتباس المفردة مقتبسة (هذا هو تفسير .SM POSIX رقم 221). .RE .PD .TP \fBcompat42\fP .PD 0 .RS .IP \(bu سلسلة الاستبدال في استبدال الأنماط المحاطة بعلامات اقتباس مزدوجة لا تخضع لإزالة علامات الاقتباس، كما يحدث في الإصدارات بعد bash\-4.2. .IP \(bu في وضع posix، تعتبر علامات الاقتباس المفردة خاصة عند توسيع جزء \fIword\fP من توسيع معامل مقتبس اقتباساً مزدوجاً، ويمكن استخدامها لاقتباس قوس إغلاق أو محرف خاص آخر (هذا جزء من تفسير .SM POSIX رقم 221)؛ في الإصدارات اللاحقة، لا تكون علامات الاقتباس المفردة خاصة داخل توسعات الكلمات المقتبسة اقتباساً مزدوجاً. .RE .PD .TP \fBcompat43\fP .PD 0 .RS .IP \(bu تُعتبر أخطاء توسيع الكلمات أخطاءً غير قاتلة تؤدي إلى فشل الأمر الحالي، حتى في نمط posix (السلوك المبدئي هو جعلها أخطاء قاتلة تؤدي إلى خروج الصدفة). .IP \(bu عند تنفيذ وظيفة صدفة، لا تُصفر حالة الحلقة (while/until/إلخ)، لذا فإن \fBbreak\fP أو \fBcontinue\fP في تلك الوظيفة سيؤديان لكسر أو متابعة الحلقات في سياق المستدعي. يقوم Bash\-4.4 والإصدارات الأحدث بتصفير حالة الحلقة لمنع هذا. .RE .PD .TP \fBcompat44\fP .PD 0 .RS .IP \(bu تعد الصدفة القيم المستخدمة بواسطة .SM \fBBASH_ARGV\fP و .SM \fBBASH_ARGC\fP حتى تتمكن من التوسع إلى المعاملات الموضعية للصدفة حتى لو لم يكن وضع التنقيح الموسع مفعلاً. .IP \(bu ترث الصدفة الفرعية الحلقات من سياقها الأب، لذا فإن \fBbreak\fP أو \fBcontinue\fP سيؤديان إلى خروج الصدفة الفرعية. تقوم Bash\-5.0 والإصدارات الأحدث بتصفير حالة الحلقة لمنع الخروج .IP \(bu تعيينات المتغيرات التي تسبق الأوامر الداخلية مثل \fBexport\fP و \fBreadonly\fP التي تضبط الخصائص تستمر في التأثير على المتغيرات التي تحمل نفس الاسم في بيئة الاستدعاء حتى لو لم تكن الصدفة في نمط posix. .RE .PD .TP \fBcompat50\fP .PD 0 .RS .IP \(bu غير Bash\-5.1 طريقة توليد .SM \fB$RANDOM\fP لتقديم عشوائية أكبر قليلاً. إذا ضُبط مستوى توافق الصدفة على 50 أو أقل، فإنه يعود إلى الطريقة المتبعة في bash\-5.0 والإصدارات السابقة، لذا فإن بذر مولد الأرقام العشوائية عن طريق إسناد قيمة إلى .SM \fBRANDOM\fP سينتج نفس التسلسل كما في bash\-5.0. .IP \(bu إذا كان جدول تقطيع الأوامر فارغًا، كانت إصدارات bash قبل 5.1 تطبع رسالة إعلامية بهذا المعنى، حتى عند إنتاج مخرجات يمكن إعادة استخدامها كمدخلات. يقوم Bash\-5.1 بكتم تلك الرسالة عند تزويد الخيار \fB\-l\fP. .RE .PD .TP \fBcompat51\fP .PD 0 .RS .IP \(bu يعامل الأمر الداخلي \fBunset\fP محاولات إلغاء تعيين أدلة المصفوفة \fB@\fP و \fB*\fP بشكل مختلف اعتمادًا على ما إذا كانت المصفوفة مفهرسة أو ترابطية، وبشكل مختلف عما كان في الإصدارات السابقة. .IP \(bu أوامر الحساب ( \fB((\fP.\|.\|.\&\fB))\fP ) والتعبيرات في جملة for الحسابية يمكن توسيعها أكثر من مرة. .IP \(bu التعبيرات المستخدمة كوسائط للعمليات الحسابية في الأمر الشرطي \fB[[\fP يمكن توسيعها أكثر من مرة. .IP \(bu يمكن توسيع التعبيرات في توسيع الأقواس لمعاملات السلسلة الفرعية أكثر من مرة. .IP \(bu يمكن توسيع التعبيرات في توسيع الكلمات \fB$((\fP.\|.\|.\&\fB))\fP أكثر من مرة. .IP \(bu التعبيرات الحسابية المستخدمة كفهارس للمصفوفات المفهرسة يمكن توسيعها أكثر من مرة. .IP \(bu \fBtest \-v\fP، عند إعطائه معطى \fBA[@]\fP، حيث \fBA\fP مصفوفة ترابطية موجودة، سيعيد القيمة صحيح إذا كانت المصفوفة تحتوي على أي عناصر مضبوطة. سيبحث Bash\-5.2 ويبلغ عن مفتاح باسم \fB@\fP. .IP \(bu سيُعيد توسيع الكلمات ${\fIparameter\fP\fB[:]=\fP\fIvalue\fP} القيمة \fIvalue\fP، قبل إجراء أي تحويلات خاصة بالمتغير (على سبيل المثال، التحويل إلى أحرف صغيرة). أما Bash\-5.2 فسيُعيد القيمة النهائية المُسندة للمتغير. .IP \(bu سيتصرف تحليل استبدالات الأوامر كما لو كان تعميم الأنماط الممتد (انظر وصف \fBshopt\fP المدمج أعلاه) ممكناً، بحيث لا يفشل تحليل استبدال أمر يحتوي على نمط extglob (مثلاً، كجزء من دالة صدفة). يفترض هذا أن النية هي تمكين extglob قبل تنفيذ الأمر وإجراء توسيعات الكلمات. سيفشل عند وقت توسيع الكلمات إذا لم يكن extglob قد مُكن بحلول وقت تنفيذ الأمر. .RE .PD .TP \fBcompat52\fP .PD 0 .RS .IP \(bu يستخدم الأمر الداخلي \fBtest\fP خوارزميته التاريخية لتحليل التعبيرات الفرعية الموضوعة بين قوسين عند إعطائه خمسة معاملات أو أكثر. .IP \(bu إذا تم تزويد الخيار \fB\-p\fP أو \fB\-P\fP للمدمج \fBbind\fP، فإن \fBbind\fP يعامل أي وسائط متبقية بعد معالجة الخيارات كأسماء أوامر قابلة للربط، ويعرض أي تتابعات مفاتيح مربوطة بتلك الأوامر، بدلاً من معاملة الوسائط كتتابعات مفاتيح للربط. .RE .PD .if \n(zZ=1 .ig zZ .\" bash_builtins .SH "صدفة مقيدة" .\" rbash.1 .zY .PP إذا بُدئ \fBbash\fP باسم \fBrbash\fP، أو زود الخيار \fB\-r\fP عند الاستدعاء، تصبح الصدفة \fIمقيدة\fP. تُستخدم الصدفة المقيدة لإعداد بيئة أكثر تحكما من الصدفة القياسية. وهي تتصرف تماما مثل \fBbash\fP باستثناء أن الأمور التالية غير مسموح بها أو لا تُنفذ: .IP \(bu تغيير الأدلة باستخدام \fBcd\fP. .IP \(bu ضبط أو إلغاء ضبط قيم .SM \fBSHELL\fP أو .SM \fBPATH\fP أو .SM \fBHISTFILE\fP أو .SM \fBENV\fP أو .SM \fBBASH_ENV\fP. .IP \(bu تحديد أسماء أوامر تحتوي على \fB/\fP. .IP \(bu تحديد اسم ملف يحتوي على \fB/\fP كـ وسيط للأمر المدمج \fB.\fP. .IP \(bu استخدام الخيار \fB\-p\fP للأمر الداخلي \fB.\fP لتحديد مسار بحث. .IP \(bu تحديد اسم ملف يحتوي على شرطة مائلة كـ وسيط للأمر المدمج \fBhistory\fP. .IP \(bu تحديد اسم ملف يحتوي على شرطة مائلة (slash) كـ وسيط للخيار \fB\-p\fP للأمر المدمج \fBhash\fP. .IP \(bu استيراد تعاريف الدوال من بيئة الصدفة عند بدء التشغيل. .IP \(bu تحليل قيم .SM \fBBASHOPTS\fP و .SM \fBSHELLOPTS\fP من بيئة الصدفة عند بدء التشغيل. .IP \(bu إعادة توجيه المخرجات باستخدام عوامل إعادة التوجيه >، و >|، و <>، و >&، و &>، و >>. .IP \(bu استخدام الأمر الداخلي \fBexec\fP لاستبدال الصدفة بأمر آخر. .IP \(bu أضف أو احذف الأوامر المضمنة بخياري \fB\-f\fP و \fB\-d\fP إلى أمر \fBenable\fP المضمن. .IP \(bu استخدام الأمر الداخلي \fBenable\fP لتفعيل أوامر الصدفة الداخلية المعطلة. .IP \(bu تحديد الخيار \fB\-p\fP للأمر المدمج \fBcommand\fP. .IP \(bu إيقاف النمط المقيد باستخدام \fBset +r\fP أو \fBshopt \-u restricted_shell\fP. .PP تُطبق هذه القيود بعد قراءة أي ملفات بدء تشغيل. .PP .ie \n(zY=1 When a command that is found to be a shell script is executed, .el \{ When a command that is found to be a shell script is executed (see .SM .B "COMMAND EXECUTION" above), .\} \fBrbash\fP يوقف أي قيود في الصدفة التي تم إنشاؤها لتنفيذ البرنامج النصي. .if \n(zY=1 .ig zY .\" end of rbash.1 .SH "انظر أيضًا" .PD 0 .TP \fIدليل مرجع Bash\fP، برايان فوكس وتشيت رامي .TP \fIمكتبة Gnu Readline\fP، برايان فوكس وتشيت رامي .TP \fIمكتبة Gnu History\fP، برايان فوكس وتشيت رامي .TP \fIواجهة نظام التشغيل المحمولة (POSIX) الجزء 2: الصدفة والأدوات المساعدة\fP، IEEE \(em http://pubs.opengroup.org/onlinepubs/9799919799/ .TP http://tiswww.case.edu/\*~chet/bash/POSIX \(em وصف لوضع posix .TP \fIsh\fP(1)، \fIksh\fP(1)، \fIcsh\fP(1) .TP \fIemacs\fP(1)، \fIvi\fP(1) .TP \fIreadline\fP(3) .PD .SH الملفات .PD 0 .TP .FN /bin/bash ملف \fBbash\fP التنفيذي .TP .FN /etc/profile ملف تهيئة النظام، يُنفذ لصدفات الولوج .TP .FN \*~/.bash_profile ملف التهيئة الشخصي، يُنفذ لصدفات الولوج .TP .FN \*~/.bashrc ملف بدء التشغيل الفردي لكل صدفة تفاعلية .TP .FN \*~/.bash_logout ملف تنظيف صدفة الولوج الفردي، يُنفذ عند خروج صدفة الولوج .TP .FN \*~/.bash_history القيمة المبدئية لـ \fBHISTFILE\fP، الملف الذي تحفظ فيه bash تاريخ الأوامر .TP .FN \*~/.inputrc ملف تهيئة \fIreadline\fP الفردي .PD .SH المؤلفون برايان فوكس، مؤسسة البرمجيات الحرة .br bfox@gnu.org .PP تشيت رامي، جامعة كيس وسترن ريسرف .br chet.ramey@case.edu .SH "تقارير العلات" إذا وجدت علة في \fBbash\fP، فيجب عليك الإبلاغ عنها. ولكن أولاً، يجب عليك التأكد من أنها علة حقاً، وأنها تظهر في أحدث نسخة من \fBbash\fP. تتوفر أحدث نسخة دائماً على \fIftp://ftp.gnu.org/pub/gnu/bash/\fP و \fIhttp://git.savannah.gnu.org/cgit/bash.git/snapshot/bash\-master.tar.gz\fP. .PP بمجرد التأكد من وجود علة بالفعل، استخدم أمر \fIbashbug\fP لتقديم بلاغ عن علة. وإذا كان لديك إصلاح، فنحن نشجعك على إرساله أيضاً! يمكنك إرسال الاقتراحات و .Q philosophical بلاغات العلل إلى \fIbug\-bash@gnu.org\fP أو نشرها في مجموعة أخبار Usenet المسماة \fBgnu.bash.bug\fP. .PP يجب أن تتضمن جميع بلاغات العلل ما يلي: .PP .PD 0 .TP 20 رقم نسخة \fBbash\fP .TP العتاد ونظام التشغيل .TP المُصنف المستخدم للتصنيف .TP وصف لسلوك العلة .TP سكربت قصير أو .Q recipe يُظهر العلة .PD .PP يُدرج \fIbashbug\fP العناصر الثلاثة الأولى آلياً في النموذج الذي يوفره لتقديم بلاغ عن علة. .PP يجب توجيه التعليقات وبلاغات العلل المتعلقة بصفحة الدليل هذه إلى \fIchet.ramey@case.edu\fP. .SH العلل إنها ضخمة للغاية وبطيئة للغاية. .PP توجد بعض الاختلافات الدقيقة بين \fBbash\fP والنسخ التقليدية من \fBsh\fP، ومعظمها بسبب مواصفات .SM POSIX . .PP الأسماء المستعارة مربكة في بعض الاستخدامات. .PP أوامر الصدفة المدمجة ودوالها غير قابلة للإيقاف أو إعادة التشغيل. .PP الأوامر المركبة وقوائم الأوامر التي تكون على شكل .Q "a ; b ; c" لا تُعالج بسلاسة عند دمجها مع تعليق العمليات. فعند إيقاف عملية ما، تنفذ الصدفة فوراً الأمر التالي في القائمة أو تخرج من أي حلقات موجودة. يكفي إحاطة الأمر بين قوسين لإجباره على العمل في صدفة فرعية، والتي قد تُوقف كوحدة واحدة، أو بدء الأمر في الخلفية وإحضاره فوراً إلى الواجهة. .PP متغيرات المصفوفة لا يمكن (حتى الآن) تصديرها. .zZ .zY .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .