الفرق بين المراجعتين لصفحة: «Bash/pattern matching using Bash features»
أسامه-دمراني (نقاش | مساهمات) إدخال 2.1 إضافة محتوى وتصنيفات. |
أسامه-دمراني (نقاش | مساهمات) مراجعة 6: إضافة تصانيف |
||
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:مطابقة الأنماط باستخدام ميزات Bash}}</noinclude> | <noinclude>{{DISPLAYTITLE:مطابقة الأنماط باستخدام ميزات Bash}}</noinclude> | ||
== مدى المحارف Character Ranges == | == مدى المحارف Character Ranges == | ||
خلافًا لأمر <code>grep</code> والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي <code>*</code> و <code>?</code> يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة:<syntaxhighlight lang="bash"> | خلافًا لأمر <code>grep</code> والتعابير النمطية (regular expressions) فإن لدينا حالات كثيرة لمطابقة الأنماط التي يمكنك إجراؤها في الصدفة مباشرة دون الحاجة إلى استخدام برنامج خارجي، فلعلك تعلم أن محرفي <code>*</code> و <code>?</code> يطابقان أي نص أو محرف وحيد -على الترتيب-، ومن أجل مطابقة هذين المحرفيْن تحديدًا، ضع حول كل منهما علامات اقتباس مزدوجة:<syntaxhighlight lang="bash"> | ||
سطر 35: | سطر 34: | ||
== مصادر == | == مصادر == | ||
* <span> </span>[http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_03.html دليل Bash للمبتدئين، | * <span> </span>[http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_03.html دليل Bash للمبتدئين، صفحة مطابقة الأنماط باستخدام ميزات Bash]. | ||
[[تصنيف:Bash]] | [[تصنيف:Bash]] | ||
[[تصنيف:Bash Pattern Matching]] | [[تصنيف: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).