الفرق بين المراجعتين ل"Bash/more Bash options"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إدخال 1.0، عنوان الصفحة)
 
(إدخال 2.0 محتوى وتنسيق)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:المزيد من خيارات Bash}}</noinclude>
+
ناقشنا بعض خيارات صدفة Bash التي قد تفيدك في [[Bash/debugging Bash scripts|تنقيح برامج Bash]]، وسننظر الآن في مزيد من تلك الخيارات بتفصيل أكثر.<noinclude>{{DISPLAYTITLE:المزيد من خيارات Bash}}</noinclude>
 +
 
 +
== عرض الخيارات ==
 +
استخدم خيار <code>o-</code> لأمر <code>set</code> لعرض كل خيارات الصدفة:<syntaxhighlight lang="bash">
 +
 
 +
 
 +
hsoub:~> set -o
 +
allexport off
 +
braceexpand on
 +
emacs on
 +
errexit off
 +
hashall on
 +
histexpand on
 +
history on
 +
ignoreeof off
 +
interactive-comments on
 +
keyword off
 +
monitor on
 +
noclobber off
 +
noexec off
 +
noglob off
 +
nolog off
 +
notify off
 +
nounset off
 +
onecmd off
 +
physical off
 +
posix off
 +
privileged off
 +
verbose off
 +
vi off
 +
xtrace off
 +
</syntaxhighlight>انظر صفحات دليل <code>info</code> > قسم أوامر الصدفة المُضمَّنة > أمر <code>Set</code>، من أجل مزيد من التفصيل عن كل خيار، إذ ستجد أن كثيرًا من الخيارات بها اختزال وحيد المحرف (one-character)، فمثلًا خيار <code>xtrace</code> يساوي تحديد <code>set -x</code>.
 +
 
 +
== تغيير الخيارات ==
 +
يمكن ضبط خيارات الصدفة بشكل مختلف عند استدعاء الصدفة عن الشكل الافتراضي، أو يمكن ضبطها أثناء عمل الصدفة، كذلك قد توضع تلك الخيارات في ملفات إعدادات موارد الصدفة (shell resource configuration files). ينفِّذ الأمر التالي برنامجًا في وضع التوافق مع <code>POSIX</code>:<syntaxhighlight lang="bash">
 +
hsoub:~/scripts> bash --posix script.sh
 +
 
 +
</syntaxhighlight>لتغيير البيئة الحالية بشكل مؤقت أو للاستخدام داخل برنامج نصي، استخدم أمر <code>set</code>. وإن أردت تفعيل خيار فاسبقه بشرطة <code>-</code>، أما إن أردت تعطيله فاسبقه بعلامة الموجب <code>+</code>:<syntaxhighlight lang="bash">
 +
hsoub:~/test> set -o noclobber
 +
 
 +
hsoub:~/test> touch test
 +
 
 +
hsoub:~/test> date > test
 +
bash: test: cannot overwrite existing file
 +
 
 +
hsoub:~/test> set +o noclobber
 +
 
 +
hsoub:~/test> date > test
 +
</syntaxhighlight>يعرض المثال السابق خيار <code>noclobber</code> الذي يمنع عمليات إعادة التوجيه من إلغاء الملفات الحالية، وكذلك الأمر بالنسبة للخيارات وحيدة المحرف (one-character)، مثل <code>u-</code> الذي سيعامل المتغيرات التي أُلغي ضبطها على أنها أخطاء حين تُضبط، ويغلق الصدفة إن كانت غير تفاعلية عند حدوث تلك الأخطاء.<syntaxhighlight lang="bash">
 +
hsoub:~> echo $VAR
 +
hsoub:~> set -u
 +
hsoub:~> echo $VAR
 +
bash: VAR: unbound variable
 +
</syntaxhighlight>هذا الخيار مفيد في التقاط التعيينات الخاطئة للمحتوى إلى المتغيرات، إذ سيحدث نفس الخطأ مثلًا عند تعيين نص محرف (character string) إلى متغير صُرِّح بوضوح أنه يحمل قيَمًا لأعداد صحيحة فقط. مثال آخر يعرض خيار <code>noglob</code> الذي يمنع توسع المحارف الخاصة:<syntaxhighlight lang="bash">
 +
hsoub:~/testdir> set -o noglob
 +
 
 +
hsoub:~/testdir> touch *
 +
 
 +
hsoub:~/testdir> ls -l *
 +
-rw-rw-r--    1 hsoub    hsoub 0 Feb 27 13:37 *
 +
</syntaxhighlight>
 +
 
 +
== انظر أيضًا ==
 +
* [[Bash/variables|المتغيرات في Bash]].
 +
* [[Bash/shell expansion|التوسعات في Bash]].
 +
 
 +
== مصادر ==
 +
* <span> </span>[http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_06.html دليل Bash للمبتدئين، باب بيئة Bash، فصل مزيد من خيارات في Bash].
 +
[[تصنيف:Bash]]
 +
[[تصنيف:Bash Options]]

مراجعة 09:55، 20 أغسطس 2018

ناقشنا بعض خيارات صدفة Bash التي قد تفيدك في تنقيح برامج Bash، وسننظر الآن في مزيد من تلك الخيارات بتفصيل أكثر.

عرض الخيارات

استخدم خيار o- لأمر set لعرض كل خيارات الصدفة:

hsoub:~> set -o
allexport		off
braceexpand		on
emacs			on
errexit			off
hashall			on
histexpand		on
history			on
ignoreeof		off
interactive-comments	on
keyword			off
monitor			on
noclobber		off
noexec			off
noglob			off
nolog			off
notify			off
nounset			off
onecmd			off
physical		off
posix			off
privileged		off
verbose			off
vi			off
xtrace			off

انظر صفحات دليل info > قسم أوامر الصدفة المُضمَّنة > أمر Set، من أجل مزيد من التفصيل عن كل خيار، إذ ستجد أن كثيرًا من الخيارات بها اختزال وحيد المحرف (one-character)، فمثلًا خيار xtrace يساوي تحديد set -x.

تغيير الخيارات

يمكن ضبط خيارات الصدفة بشكل مختلف عند استدعاء الصدفة عن الشكل الافتراضي، أو يمكن ضبطها أثناء عمل الصدفة، كذلك قد توضع تلك الخيارات في ملفات إعدادات موارد الصدفة (shell resource configuration files). ينفِّذ الأمر التالي برنامجًا في وضع التوافق مع POSIX:

hsoub:~/scripts> bash --posix script.sh

لتغيير البيئة الحالية بشكل مؤقت أو للاستخدام داخل برنامج نصي، استخدم أمر set. وإن أردت تفعيل خيار فاسبقه بشرطة -، أما إن أردت تعطيله فاسبقه بعلامة الموجب +:

hsoub:~/test> set -o noclobber

hsoub:~/test> touch test

hsoub:~/test> date > test
bash: test: cannot overwrite existing file

hsoub:~/test> set +o noclobber

hsoub:~/test> date > test

يعرض المثال السابق خيار noclobber الذي يمنع عمليات إعادة التوجيه من إلغاء الملفات الحالية، وكذلك الأمر بالنسبة للخيارات وحيدة المحرف (one-character)، مثل u- الذي سيعامل المتغيرات التي أُلغي ضبطها على أنها أخطاء حين تُضبط، ويغلق الصدفة إن كانت غير تفاعلية عند حدوث تلك الأخطاء.

hsoub:~> echo $VAR
hsoub:~> set -u
hsoub:~> echo $VAR
bash: VAR: unbound variable

هذا الخيار مفيد في التقاط التعيينات الخاطئة للمحتوى إلى المتغيرات، إذ سيحدث نفس الخطأ مثلًا عند تعيين نص محرف (character string) إلى متغير صُرِّح بوضوح أنه يحمل قيَمًا لأعداد صحيحة فقط. مثال آخر يعرض خيار noglob الذي يمنع توسع المحارف الخاصة:

hsoub:~/testdir> set -o noglob

hsoub:~/testdir> touch *

hsoub:~/testdir> ls -l *
-rw-rw-r--    1 hsoub    hsoub		0 Feb 27 13:37 *

انظر أيضًا

مصادر