كيفية استخدام أمر wc في Linux
نشرت: 2022-07-23 يعد حساب عدد الأسطر والكلمات والبايت في ملف مفيدًا ، لكن المرونة الحقيقية لأمر Linux wc
تأتي من العمل مع أوامر أخرى. لنلقي نظرة.
ما هو أمر مرحاض؟
الأمر wc
هو تطبيق صغير. إنها إحدى أدوات Linux المساعدة الأساسية ، لذلك ليست هناك حاجة لتثبيتها. سيكون موجودًا بالفعل على كمبيوتر Linux الخاص بك.
يمكنك وصف ما يفعله بكلمات قليلة جدًا. يقوم بحساب الأسطر والكلمات والبايت في ملف أو اختيار الملفات ويطبع النتيجة في نافذة طرفية. يمكن أيضًا أن يأخذ مدخلاته من دفق STDIN ، مما يعني أنه يمكن إدخال النص الذي تريده لمعالجته. هذا هو المكان الذي يبدأ فيه wc
بالفعل بإضافة قيمة.
إنه مثال رائع على شعار Linux "افعل شيئًا وافعله جيدًا". نظرًا لأنه يقبل الإدخال عبر الأنابيب ، يمكن استخدامه في التعاويذ متعددة الأوامر. كما سنرى ، هذه الأداة المستقلة الصغيرة هي في الواقع لاعب فريق رائع.
إحدى الطرق التي أستخدم بها wc
هي كعنصر نائب في أمر معقد أو اسم مستعار أقوم بإعداده. إذا كان من المحتمل أن يكون الأمر النهائي مدمرًا ويحذف الملفات ، فغالبًا ما أستخدم wc
كبديل للأمر الحقيقي الخطير.
بهذه الطريقة ، أثناء تطوير الأمر ، أحصل على ملاحظات مرئية تفيد بأن كل ملف تتم معالجته كما توقعت. لا توجد فرصة لحدوث أي شيء سيء بينما أنا أتصارع مع بناء الجملة.
بسيطة مثل wc
، لا تزال هناك بعض المراوغات الصغيرة التي تحتاج إلى معرفتها.
الشروع في العمل مع مرحاض
إن أبسط طريقة لاستخدام wc
هي تمرير اسم ملف نصي في سطر الأوامر.
wc lorem.txt
يؤدي هذا إلى قيام wc
بمسح الملف وإحصاء الأسطر والكلمات والبايت ، وكتابتها في نافذة المحطة الطرفية.
تعتبر الكلمات أي شيء محدد بمسافة بيضاء. سواء كانت كلمات من لغة حقيقية أم لا ، فهذا غير ذي صلة. إذا احتوى الملف على "frd g lkj" ، فسيظل يمثل ثلاث كلمات.
السطور عبارة عن تسلسلات من الأحرف تنتهي إما بحرف رجوع أو بنهاية الملف. لا يهم ما إذا كان السطر يلتف حوله في المحرر الخاص بك أو في النافذة الطرفية ، حتى يواجه wc
حرف إرجاع أو نهاية الملف ، فإنه لا يزال هو نفسه.
وجد مثالنا الأول سطرًا واحدًا في الملف بأكمله. هذا هو محتوى ملف “lorem.txt”.
القط lorem.txt
كل ذلك يعد سطرًا واحدًا لأنه لا توجد أحرف إرجاع. قارن هذا بملف آخر ، “lorem2.txt” ، وكيف يفسره wc
.
مرحاض lorem2.txt
القط lorem2.txt
هذه المرة ، يحسب wc
15 سطراً لأنه تم إدراج أحرف الإرجاع في النص لبدء سطر جديد في نقاط محددة. ومع ذلك ، إذا قمت بحساب الأسطر التي تحتوي على نص فيها ، فسترى أنه لا يوجد سوى 12.
الأسطر الثلاثة الأخرى عبارة عن أسطر فارغة في نهاية الملف. هذه تحتوي فقط على إرجاع السطر. على الرغم من عدم وجود نص في هذه السطور ، فقد تم بدء سطر جديد ولذا wc
على هذا النحو.
يمكننا تمرير العديد من الملفات إلى wc
كما نود.
wc lorem.txt lorem2.txt
نحصل على إحصائيات لكل ملف على حدة وإجمالي لكل الملفات.
يمكننا أيضًا استخدام أحرف البدل حتى نتمكن من تحديد الملفات المطابقة بدلاً من الملفات المسماة صراحة.
wc * .txt *.؟
خيارات سطر الأوامر
بشكل افتراضي ، سيعرض wc
الأسطر والكلمات والبايت في كل ملف. إنه نفس استخدام الخيارات -l
(الأسطر) -w
(الكلمات) و -c
(بايت).
wc lorem.txt
مرحاض -l -w -c lorem.txt
يمكننا تحديد مجموعة الأرقام التي نرغب في رؤيتها.
مرحاض -l lorem.txt wc -w lorem.txt مرحاض -c lorem.txt مرحاض -l -c lorem.txt
يجب إيلاء اهتمام خاص للرقم الأخير الذي تم إنشاؤه بواسطة الخيار -c
(بايت). كثير من الناس يخطئون في هذا على أنه عد الشخصيات. انها تحسب فعلا بايت . قد يكون عدد الأحرف وعدد البايت هو نفسه. لكن ليس دائما.
لنلق نظرة على محتويات ملف يسمى “unicode.txt”.
القط unicode.txt
تتكون من ثلاث كلمات وحرف أبجدي غير لاتيني. سنسمح لـ wc
بمعالجة الملف بالإعداد الافتراضي للبايتات ، وسنفعل ذلك مرة أخرى لكننا نطلب أحرفًا باستخدام الخيار -m
(أحرف).
wc unicode.txt
wc -l -w -m unicode.txt
عدد البايتات أكثر من عدد الأحرف.
دعنا نلقي نظرة على ملف التفريغ السداسي عشرية للملف ونرى ما يحدث. يعرض الخيار -C
(الأساسي) الخاص بأمر hexdump
وحدات البايت الموجودة في الملف في أسطر 16 ، مع ما يعادل ASCII العادي (إذا كان هناك واحد) في نهاية السطر. إذا لم يكن هناك حرف ASCII مطابق ، فستكون النقطة " .
بدلا من ذلك.
hexdump -C unicode.txt
في ASCII ، تمثل القيمة السداسية العشرية 0x20
حرف مسافة. إذا عدنا ثلاث قيم من اليسار ، فسنلاحظ أن القيمة التالية هي حرف مسافة. لذا فإن هذه القيم الثلاث الأولى 0x62
و 0x6f
و 0x79
تمثل الأحرف الموجودة في "boy".
من خلال القفز فوق 0x20
، نرى مجموعة أخرى من ثلاث قيم سداسية عشرية: 0x63
و 0x61
و 0x74
. هذه تكتب كلمة "قطة". بالانتقال فوق حرف المسافة التالي ، نرى ثلاث قيم أخرى للأحرف في "كلب". هذه هي 0x64
و 0x5f
و 0x67
.
خلف كلمة "كلب" مباشرة يمكننا رؤية حرف مسافة 0x20
وخمس قيم سداسية عشرية أخرى. الأخيران هما إرجاع السطر ، 0x0a
.
تمثل البايتات الثلاثة الأخرى الحرف غير اللاتيني ، الذي قرعناه باللون الأخضر. إنه حرف Unicode ، ويستغرق تشفيره ثلاثة بايت. هذه هي 0xe1
و 0xaf
و 0x8a
.
لذا تأكد من أنك تعرف ما تحسبه ، وأن البايت والأحرف لا يجب أن تكون متطابقة. عادةً ما يكون حساب البايت أكثر فائدة لأنه يخبرك بما هو موجود بالفعل داخل الملف. يمنحك العد حسب الأحرف عدد الأشياء التي تمثلها محتويات الملف.
ذات صلة: ما هي ترميزات الأحرف مثل ANSI و Unicode ، وكيف تختلف؟
أخذ أسماء الملفات من ملف
هناك طريقة أخرى لتوفير أسماء الملفات wc
. يمكنك وضع أسماء الملفات في ملف ، وتمرير اسم هذا الملف إلى wc
. يفتح الملف ويستخرج أسماء الملفات ويعالجها كما لو تم تمريرها في سطر الأوامر. يتيح لك هذا تخزين مجموعة عشوائية من أسماء الملفات لإعادة استخدامها.
ولكن هناك مسكتك ، وهي مشكلة كبيرة. يجب إنهاء أسماء الملفات فارغة ، وليس إنهاء حرف إرجاع . أي أنه بعد كل اسم ملف ، يجب أن يكون هناك بايت فارغ بقيمة 0x00
بدلاً من البايت الذي يرجع إلى الحرف المعتاد 0x0a
.
لا يمكنك فتح محرر وإنشاء ملف بهذا التنسيق. عادةً ما يتم إنشاء ملفات مثل هذه بواسطة برامج أخرى. ولكن ، إذا كان لديك مثل هذا الملف ، فهذه هي الطريقة التي ستستخدمه بها.
هذا هو ملفنا الذي يحتوي على أسماء الملفات. فتحه بكميات less
يظهر لك الأحرف " ^@
" الغريبة التي تستخدم less
للإشارة إلى بايتات خالية.
أقل من ملفات المصدر list.txt
لاستخدام الملف مع wc
، نحتاج إلى استخدام --files0-from
(قراءة الإدخال من) وتمرير اسم الملف الذي يحتوي على أسماء الملفات.
wc --- files0-from = مصدر-ملفات-list.txt
تتم معالجة الملفات تمامًا كما لو تم تقديمها في سطر الأوامر.
إدخال الأنابيب إلى مرحاض
هناك طريقة أكثر شيوعًا ومرونة وإنتاجية لإرسال المدخلات إلى wc
وهي توجيه الإخراج من الأوامر الأخرى إلى wc
. يمكننا إثبات ذلك بأمر echo
.
صدى "عد هذا من أجلي" | مرحاض
echo -e "عد هذا \ n من أجلي" | مرحاض
يستخدم أمر echo
الثاني الخيار -e
(أحرف تم تجاوزها) للسماح بالتسلسلات التي تم تجاوزها مثل " \n
" رمز تنسيق السطر الجديد. يؤدي هذا إلى حقن خط جديد ، مما يتسبب في رؤية wc
للإدخال على هيئة سطرين.
إليك سلسلة من الأوامر تغذي مدخلاتها من واحد إلى آخر.
find ./* -type f | مراجعة | قطع -d '.' -f1 | مراجعة | فرز | فريد
- البحث عن الملفات (
type -f
) بشكل متكرر ، بدءًا من الدليل الحالي.rev
يعكس أسماء الملفات. - قص مقتطفات الحقل الأول (
-f1
) عن طريق تحديد محدد المجال ليكون فترة “.
"والقراءة من" مقدمة "اسم الملف المعكوس حتى النقطة الأولى التي يعثر عليها. لقد قمنا الآن باستخراج امتداد الملف. - rev يعكس الحقل الأول المستخرج.
- قم بفرزها بترتيب أبجدي تصاعدي.
- uniq يسرد إدخالات فريدة إلى نافذة المحطة.
يسرد هذا الأمر جميع امتدادات الملفات الفريدة في الدليل الحالي وأي أدلة فرعية.
إذا أضفنا الخيار -c
(count) إلى الأمر uniq
، فسيتم حساب تكرارات كل نوع من أنواع الامتدادات. ولكن إذا أردنا معرفة عدد امتدادات الملفات الفريدة والمختلفة الموجودة ، فيمكننا إسقاط wc
كآخر أمر في السطر ، واستخدام الخيار -l
(الأسطر).
find ./* -type f | مراجعة | قطع -d '.' -f1 | مراجعة | فرز | uniq | مرحاض -l
ذات صلة: كيفية استخدام Linux cut Command
وأخيرًا
إليك خدعة wc
يمكن للمرء أن يفعلها لك. سيخبرك بطول أطول سطر في الملف. للأسف ، لا يخبرك أي خط هو. إنه يمنحك الطول فقط.
مرحاض -L taf.c
احذر من أن علامات التبويب يتم حسابها على أنها ثماني مسافات. إذا تم عرضها في المحرر الخاص بي ، فهناك ثلاث علامات تبويب ذات مسافتين في بداية هذا السطر. طوله الحقيقي 124 حرفًا. لذلك تم توسيع الرقم المبلغ عنه بشكل مصطنع.
كنت سأعالج هذه الوظيفة بقليل من الملح. وبهذا أعني لا تستخدمه. ناتجها مضلل.
على الرغم من المراوغات ، تعد wc
أداة رائعة للإسقاط في أوامر الأنابيب عندما تحتاج إلى حساب جميع أنواع القيم ، وليس فقط الكلمات الموجودة في الملف.
ذات صلة: 37 أمرًا مهمًا من أوامر Linux يجب أن تعرفه