كيفية استخدام الأمر yes على Linux

النقاط الرئيسية

  • يمكن لأمر “yes” في Linux وmacOS إنشاء أي رسالة تختارها بشكل متكرر، مثل سلاسل “نعم” أو “لا”.
  • يمكن توجيه الناتج من الأمر “نعم” إلى برامج أو نصوص برمجية أخرى لتوفير استجابات تلقائية.
  • يمكن أيضًا استخدام الأمر “نعم” لإنشاء ملفات كبيرة بسرعة عن طريق إعادة توجيه إخراجها إلى ملف.



يبدو أن الأمر yes بسيط للغاية بحيث لا يمكن أن يكون له أي استخدام عملي، ولكن في هذا البرنامج التعليمي، سنوضح لك تطبيقه وكيفية الاستفادة من إيجابيته المكبوتة في Linux وmacOS.


ماذا يفعل الأمر “نعم”؟

عند استخدام الأمر yes بدون أي معلمات لسطر الأوامر، فإنه يتصرف كما لو كنت تكتب “y” وتضغط على Enter، مرارًا وتكرارًا (ومرة تلو الأخرى). بسرعة كبيرة. وسيستمر في القيام بذلك حتى تضغط على Ctrl+C لمقاطعته.

yes

الإخراج من نعم في نافذة المحطة الطرفية

في الواقع، يمكن استخدام الأمر yes لتوليد أي رسالة تختارها بشكل متكرر. ما عليك سوى كتابة yes ومسافة والسلسلة التي ترغب في استخدامها، ثم الضغط على Enter. غالبًا ما يُستخدم هذا الأمر لجعل الأمر yes يولد دفق إخراج من سلاسل “نعم” أو “لا”.


yes yes

الإخراج من نعم نعم في نافذة المحطة الطرفية

yes anything you like

الإخراج من نعم مع سطر من النص في نافذة المحطة الطرفية

ولكن ما الفائدة من ذلك؟

يمكن توجيه الناتج من yes إلى برامج أو نصوص أخرى.

هل يبدو هذا مألوفًا؟ تبدأ عملية طويلة ثم تبتعد عنها، تاركًا إياها لتستمر في العمل. وعندما تعود إلى جهاز الكمبيوتر الخاص بك، تجد أن العملية لم تكتمل على الإطلاق. وفي غيابك، يكون الجهاز قد طرح عليك سؤالاً ويجلس منتظرًا إجابة بـ “نعم” أو “لا”.


إذا كنت تعلم مسبقًا أن جميع إجاباتك ستكون إيجابية (“نعم” أو “y”) أو سلبية (“لا” أو “n”)، فيمكنك استخدام “نعم” لتقديم هذه الإجابات لك. بعد ذلك، ستستمر العملية الطويلة الخاصة بك حتى اكتمالها دون مراقبة، حيث توفر “نعم” إجابات لأي أسئلة تطرحها العملية.

استخدام yes مع البرامج النصية

انظر إلى نص Bash shell التالي. (علينا أن نتخيل أن هذا جزء من نص أكبر بكثير سيستغرق وقتًا طويلاً لتشغيله.)

#!/bin/bash

echo "Are you happy to proceed? (y,n)"
read input


if ( "$input" == "" ); then

   echo "Nothing was entered by the user"


elif (( "$input" == "y" )) || (( "$input" == "yes" )); then

   echo "Positive response: $input"


else

   echo "negative response: $input"

fi

يطرح هذا البرنامج النصي سؤالاً وينتظر إجابة. يتم تحديد التدفق المنطقي داخل البرنامج النصي بناءً على المدخلات من المستخدم.

  • يشير “نعم” أو “ي” إلى استجابة إيجابية.
  • وأي مدخلات أخرى تعتبر بمثابة استجابة سلبية.
  • إن الضغط على Enter بدون إدخال نص لا يؤدي إلى أي شيء.

لاختبار ذلك، انسخ البرنامج النصي إلى ملف واحفظه باسم “long_script.sh”. استخدم chmod لجعله قابلاً للتنفيذ.

chmod +x long_script.sh


قم بتشغيل البرنامج النصي باستخدام الأمر التالي. حاول إدخال “yes” و”y” وأي شيء آخر كمدخلات، بما في ذلك الضغط على Enter بدون إدخال نص.

./long_script.sh

الإخراج من long_script.sh في نافذة المحطة الطرفية

للحصول على نعم لتقديم استجابتنا لسؤال البرنامج النصي، قم بإرسال الناتج من نعم إلى البرنامج النصي.

yes | ./long_script.sh

1725189476 936 كيفية استخدام الأمر yes على

بعض البرامج النصية أكثر صرامة في متطلباتها ولا تقبل إلا الكلمة الكاملة “نعم” كإجابة إيجابية. يمكنك تقديم “نعم” كمعلمة لـ “نعم”، على النحو التالي:


yes yes | ./long_script.sh

توجيه yes yes إلى long_script.sh في نافذة المحطة الطرفية

لا تقل نعم دون التفكير مليًا

يجب أن تتأكد من أن المدخلات التي ستقدمها إلى النص أو البرنامج ستمنحك النتيجة التي تتوقعها بالتأكيد. لكي تتمكن من اتخاذ هذا القرار، يجب أن تعرف الأسئلة وما ينبغي أن تكون ردودك عليها.

قد لا يتوافق المنطق في النص أو الأمر أو البرنامج مع توقعاتك. في نص المثال الخاص بنا، ربما كان السؤال “هل ترغب في التوقف؟ (y,n).” إذا كان الأمر كذلك، فإن الإجابة السلبية كانت ستسمح للنص بالاستمرار.

يجب أن تكون على دراية بالنص أو الأمر أو البرنامج قبل أن تقوم بالتوصيل بسهولة yes فيه.


استخدام الأمر yes مع الأوامر

في طفولته، yes سيتم استخدامه مع أوامر Linux الأخرى. منذ ذلك الحين، أصبحت معظم أوامر Linux الأخرى هذه لها طريقتها الخاصة في التشغيل دون تدخل بشري. yes لم يعد هناك حاجة لتحقيق ذلك.

دعونا نأخذ مدير حزم أوبونتو apt-get على سبيل المثال، لتثبيت تطبيق دون الحاجة إلى الضغط على “y” في منتصف عملية التثبيت، yes كان من الممكن استخدامها على النحو التالي:

yes | sudo apt-get install fortune-mod

1725189477 215 كيفية استخدام الأمر yes على

يمكن تحقيق نفس النتيجة باستخدام -y (افترض نعم) الخيار في apt-get:

sudo apt-get -y install fortune-mod

استخدام apt-get مع خيار assume yes في نافذة المحطة الطرفية


سوف ترى ذلك apt-get لم يسأل حتى سؤاله المعتاد “هل تريد الاستمرار؟ (Y/n)”. لقد افترض فقط أن الإجابة ستكون “نعم”.

في توزيعات Linux الأخرى، يكون الوضع مماثلاً. في Fedora، كنت تستخدم هذا النوع من أوامر إدارة الحزم في وقت ما:

yes | yum install fortune-mod

ال dnf تم استبدال مدير الحزمة yum و dnf لديه خاصته -y (افترض نعم) الخيار.

dnf -y install fortune-mod

وينطبق نفس الشيء على cp, fsck، و rm. كل هذه الأوامر لها أوامرها الخاصة -f (القوة) أو -y (افترض نعم) الخيارات.

فهل يبدو الأمر كذلك؟ yes هل تم تقليص العمل إلى العمل بالنصوص فقط؟ ليس تمامًا. لا يزال هناك بعض الحيل الأخرى في النسخة القديمة.

بعض الحيل الإضافية

يمكنك استخدام yes مع تسلسل الأرقام التي تم إنشاؤها بواسطة seq للتحكم في حلقة من الإجراءات المتكررة.

يردد هذا السطر الواحد الأرقام المولدة إلى نافذة المحطة الطرفية ثم يستدعي sleep لثانية واحدة.


بدلاً من مجرد تكرار الأرقام في نافذة المحطة الطرفية، يمكنك استدعاء أمر أو نص برمجي آخر. ولا يحتاج هذا الأمر أو النص البرمجي حتى إلى استخدام الأرقام، وهي موجودة فقط لبدء كل دورة من دورات الحلقة.

yes "$(seq 1 20)" | while read digit; do echo digit; sleep 1; done

نعم، سطر واحد ينظم حلقة في نافذة المحطة الطرفية

في بعض الأحيان يكون من المفيد أن يكون لديك ملف كبير للاختبار به. ربما تريد التدرب على استخدام أمر zip، أو تريد أن يكون لديك ملف كبير الحجم لاختبار عمليات التحميل عبر FTP به.

يمكنك إنشاء ملفات كبيرة بسرعة باستخدام yesكل ما عليك فعله هو إعطاؤه سلسلة طويلة من النصوص للعمل عليها وإعادة توجيه الناتج إلى ملف. لا تخطئ؛ ستنمو هذه الملفات بسرعة. كن مستعدًا للضغط على Ctrl+C في غضون ثوانٍ قليلة.


yes long line of meaningless text for file padding > test.txt

ls -lh test.txt

wc test.txt

إنشاء ملفات اختبار باستخدام نافذة المحطة الطرفية yes ia

استغرق الملف الذي تم إنشاؤه هنا حوالي خمس ثوانٍ على جهاز الاختبار المستخدم لبحث هذه المقالة. ls يذكر أن حجمه 557 ميجا بايت، و wc أخبرنا أنه يوجد 12.4 مليون سطر فيه.

يمكننا تحديد حجم الملف عن طريق تضمين head في سلسلة الأوامر الخاصة بنا. نخبرها بعدد الأسطر التي يجب تضمينها في الملف. -50 وسائل head سوف يسمح فقط بمرور 50 خطًا إلى test.txt ملف.

yes long line of meaningless text for file padding | head -50 > test.txt


استخدام head لتحديد حجم الملف في نافذة المحطة الطرفية

بمجرد وجود 50 خطًا في test.txt الملف، ستتوقف العملية. لا تحتاج إلى استخدام Ctrl+C. ستتوقف العملية تلقائيًا.

wc يذكر أن الملف يحتوي على 50 سطرًا بالضبط، أي 400 كلمة، ويبلغ حجمه 2350 بايت.

يعد الأمر yes أحد أبسط الأوامر في Linux وأنظمة التشغيل الأخرى المشابهة لـ Unix مثل macOS. الكود المصدر للإصدار الأصلي – الذي تم إصداره في نظام التشغيل 7 Unix وتأليفه كين تومسون-يبلغ مجرد ستة أسطر من الكودعلى الرغم من أنه لا يزال مفيدًا في تغذية الاستجابات في البرامج النصية طويلة المدى (وبعض الحيل الأخرى)، yes لن يكون الأمر جزءًا من مجموعة أدواتك اليومية من الأوامر. ولكن عندما تحتاج إليه، ستجد أنه بسيط للغاية – وكل ذلك في ستة أسطر من التعليمات البرمجية الذهبية.


أضف تعليق