الفرق بين المراجعتين لصفحة: «Bash/pattern matching using Bash features»
أسامه-دمراني (نقاش | مساهمات) إدخال 2.0 إضافة محتوى |
أسامه-دمراني (نقاش | مساهمات) إدخال 2.1 إضافة محتوى وتصنيفات. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:مطابقة الأنماط باستخدام ميزات Bash}}</noinclude> | <noinclude>{{DISPLAYTITLE:مطابقة الأنماط باستخدام ميزات Bash}}</noinclude> | ||
== مدى المحارف == | == مدى المحارف Character Ranges == | ||
خلافًا لأمر grep والتعابير النمطية (regular expressions) | خلافًا لأمر <code>grep</code> والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي <code>*</code> و <code>?</code> يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة:<syntaxhighlight lang="bash"> | ||
hsoub ~> touch "*" | hsoub ~> touch "*" | ||
hsoub ~> ls "*" | hsoub ~> ls "*" | ||
* | * | ||
</syntaxhighlight> | </syntaxhighlight>يمكنك استخدام الأقواس المربعة لمطابقة أي محرف أو مجموعة محارف بداخل تلك الأقواس إن فُصلت أزواج المحارف بشَرطة <code>-</code>، انظر المثال التالي الذي يعرض كل الملفات التي تبدأ بأحد الحروف التالية: <code>a، b، c، x، y، z</code> في مجلد المنزل الخاص بالمستخدم <code>hsoub</code>:<syntaxhighlight lang="bash"> | ||
hsoub ~> ls -ld [a-cx-z]* | hsoub ~> ls -ld [a-cx-z]* | ||
drwxr-xr-x 2 hsoub hsoub 4096 Jul 20 2002 app-defaults/ | drwxr-xr-x 2 hsoub hsoub 4096 Jul 20 2002 app-defaults/ | ||
سطر 14: | سطر 14: | ||
drwxr-xr-x 7 hsoub hsoub 4096 Sep 2 2001 crossover/ | drwxr-xr-x 7 hsoub hsoub 4096 Sep 2 2001 crossover/ | ||
drwxrwxr-x 3 hsoub hsoub 4096 Mar 22 2002 xml/ | drwxrwxr-x 3 hsoub hsoub 4096 Mar 22 2002 xml/ | ||
</syntaxhighlight> | </syntaxhighlight>إن كان أول محرف بين القوسين هو <code>!</code> أو <code>^</code> فسيطابَق أي محرف '''غير''' '''موجود''' بين القوسيْن، ولمطابَقة الشَّرطة <code>-</code>، أدخِلها كأول أو آخر محرف في المجموعة، ويعتمد التصنيف على الإعدادات المحلية (locale) الحالية وعلى قيمة متغير <code>LC_COLLATE</code> -إن ضُبط على قيمة-، لاحظ أن الإعدادات المحلية الأخرى قد تفسر <code>[a-cx-z]</code> على أنها <code>[aBbCcXxYyZz]</code> إن كان التصنيف وفقًا لترتيب القاموس، وإن كنت تريد التأكد من تفسير المدى بالشكل التقليدي فاضبط <code>LC_COLLATE</code> أو <code>LC_ALL</code> على <code>C</code>. | ||
== فئات المحارف == | |||
يمكن تحديد فئات المحارف بين أقواس مربعة وفقًا للبنية اللغوية <code>[:CLASS:]</code> حيث تُعرَّف <code>CLASS</code> داخل معيار <code>POSIX</code> وتكون لها إحدى القيّم التالية: <code>alnum</code> - <code>alpha</code> - <code>ascii</code> - <code>blank</code> - <code>cntrl</code> - <code>digit</code> - <code>graph</code> - <code>lower</code> - <code>print</code> - <code>punct</code> - <code>space</code> - <code>upper</code> - <code>word</code> - <code>xdigit</code>. | |||
أمثلة:<syntaxhighlight lang="bash"> | |||
hsoub ~> ls -ld [[:digit:]]* | |||
drwxrwxr-x 2 hsoub hsoub 4096 Apr 20 13:45 2/ | |||
cathy ~> ls -ld [[:upper:]]* | |||
drwxrwxr-- 3 hsoub hsoub 4096 Sep 30 2001 Nautilus/ | |||
drwxrwxr-x 4 hsoub hsoub 4096 Jul 11 2002 OpenOffice.org1.0/ | |||
-rw-rw-r-- 1 hsoub hsoub 997376 Apr 18 15:39 Schedule.sdc | |||
</syntaxhighlight>تُعرَّف عدة معامِلات مطابقة أنماط ممتدة (extended pattern matching operators) عند تفعيل خيار <code>extglob</code> باستخدام أمر <code>shopt</code>، انظر صفحات دليل <code>info</code>، قسم مزايا الصدفة الأساسية (basic shell features) > توسعات الصدفة (shell expansions) > توسع اسم الملف (filename expansion) > مطابقة الأنماط (pattern matching). | |||
== انظر أيضًا == | |||
* [[Bash/displaying user messages|عرض رسائل المستخدم في Bash]]. | |||
* [[Bash/catching user input|الحصول على مدخلات المستخدم في Bash]]. | |||
== مصادر == | |||
* <span> </span>[http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_03.html دليل Bash للمبتدئين، باب التعابير النمطية، فصل مطابقة الأنماط باستخدام ميزات Bash]. | |||
[[تصنيف:Bash]] | |||
[[تصنيف:Bash Pattern Matching]] |
مراجعة 11:04، 25 أغسطس 2018
مدى المحارف Character Ranges
خلافًا لأمر grep
والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي *
و ?
يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة:
hsoub ~> touch "*"
hsoub ~> ls "*"
*
يمكنك استخدام الأقواس المربعة لمطابقة أي محرف أو مجموعة محارف بداخل تلك الأقواس إن فُصلت أزواج المحارف بشَرطة -
، انظر المثال التالي الذي يعرض كل الملفات التي تبدأ بأحد الحروف التالية: a، b، c، x، y، z
في مجلد المنزل الخاص بالمستخدم hsoub
:
hsoub ~> ls -ld [a-cx-z]*
drwxr-xr-x 2 hsoub hsoub 4096 Jul 20 2002 app-defaults/
drwxrwxr-x 4 hsoub hsoub 4096 May 25 2002 arabic/
drwxrwxr-x 2 hsoub hsoub 4096 Mar 4 18:30 bin/
drwxr-xr-x 7 hsoub hsoub 4096 Sep 2 2001 crossover/
drwxrwxr-x 3 hsoub hsoub 4096 Mar 22 2002 xml/
إن كان أول محرف بين القوسين هو !
أو ^
فسيطابَق أي محرف غير موجود بين القوسيْن، ولمطابَقة الشَّرطة -
، أدخِلها كأول أو آخر محرف في المجموعة، ويعتمد التصنيف على الإعدادات المحلية (locale) الحالية وعلى قيمة متغير LC_COLLATE
-إن ضُبط على قيمة-، لاحظ أن الإعدادات المحلية الأخرى قد تفسر [a-cx-z]
على أنها [aBbCcXxYyZz]
إن كان التصنيف وفقًا لترتيب القاموس، وإن كنت تريد التأكد من تفسير المدى بالشكل التقليدي فاضبط LC_COLLATE
أو LC_ALL
على C
.
فئات المحارف
يمكن تحديد فئات المحارف بين أقواس مربعة وفقًا للبنية اللغوية [:CLASS:]
حيث تُعرَّف CLASS
داخل معيار POSIX
وتكون لها إحدى القيّم التالية: alnum
- alpha
- ascii
- blank
- cntrl
- digit
- graph
- lower
- print
- punct
- space
- upper
- word
- xdigit
.
أمثلة:
hsoub ~> ls -ld [[:digit:]]*
drwxrwxr-x 2 hsoub hsoub 4096 Apr 20 13:45 2/
cathy ~> ls -ld [[:upper:]]*
drwxrwxr-- 3 hsoub hsoub 4096 Sep 30 2001 Nautilus/
drwxrwxr-x 4 hsoub hsoub 4096 Jul 11 2002 OpenOffice.org1.0/
-rw-rw-r-- 1 hsoub hsoub 997376 Apr 18 15:39 Schedule.sdc
تُعرَّف عدة معامِلات مطابقة أنماط ممتدة (extended pattern matching operators) عند تفعيل خيار extglob
باستخدام أمر shopt
، انظر صفحات دليل info
، قسم مزايا الصدفة الأساسية (basic shell features) > توسعات الصدفة (shell expansions) > توسع اسم الملف (filename expansion) > مطابقة الأنماط (pattern matching).