الفرق بين المراجعتين ل"Bash/pattern matching using Bash features"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إدخال 1.0، عنوان الصفحة)
 
(مراجعة 6: إضافة تصانيف)
 
(4 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:مطابقة الأنماط باستخدام ميزات Bash}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:مطابقة الأنماط باستخدام ميزات Bash}}</noinclude>
 +
== مدى المحارف Character Ranges ==
 +
خلافًا لأمر <code>grep</code> والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي <code>*</code> و <code>?</code> يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة:<syntaxhighlight lang="bash">
 +
hsoub ~> touch "*"
 +
 +
hsoub ~> ls "*"
 +
*
 +
</syntaxhighlight>يمكنك استخدام الأقواس المربعة لمطابقة أي محرف أو مجموعة محارف بداخل تلك الأقواس إن فُصلت أزواج المحارف بشَرطة <code>-</code>، انظر المثال التالي الذي يعرض كل الملفات التي تبدأ بأحد الحروف التالية: <code>a، b، c، x، y، z</code> في مجلد المنزل الخاص بالمستخدم <code>hsoub</code>:<syntaxhighlight lang="bash">
 +
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/
 +
</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]]
 +
[[تصنيف:Bash Regular Expressions]]
 +
[[تصنيف:Bash Grep]]

المراجعة الحالية بتاريخ 15:37، 6 سبتمبر 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).

انظر أيضًا

مصادر