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

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

الأمر نعم

يعد الأمر yes أحد أبسط الأوامر في Linux وأنظمة التشغيل الأخرى الشبيهة بـ Unix مثل macOS. وببساطة ، نعني البساطة في استخدامه وتنفيذه الأولي. الكود المصدري للإصدار الأصلي — تم إصداره في System 7 Unix ومن تأليفه كين طومسون—يمثل مجرد ستة أسطر من التعليمات البرمجية.

لكن لا تشطبها لكونها أمرًا بسيطًا. يمكن استخدامه ببعض الطرق الشيقة والمفيدة.

ماذا تفعل نعم؟

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

yes

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

yes yes

yes anything you like

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

يمكن نقل الإخراج من “نعم” إلى برامج أو نصوص أخرى.

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

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

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

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

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

#!/bin/bash

# ...
# in the middle of some long script
# obtain a response from the user
# ...

echo "Are you happy to proceed? [y,n]"
read input

# did we get an input value?
if [ "$input" == "" ]; then

   echo "Nothing was entered by the user"

# was it a y or a yes?
elif [[ "$input" == "y" ]] || [[ "$input" == "yes" ]]; then

   echo "Positive response: $input"

# treat anything else as a negative response
else

   echo "negative response: $input"

fi

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

تشير “نعم” أو “نعم” إلى استجابة إيجابية.
أي مدخلات أخرى تعتبر استجابة سلبية.
الضغط على Enter بدون إدخال نص لا يفعل شيئًا.

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

chmod +x long_script.sh

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

./long_script.sh

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

yes | ./long_script.sh

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

yes yes | ./long_script.sh

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

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

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

  كيفية مراقبة تقدم أوامر Linux (مع PV والتقدم)

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

باستخدام نعم مع الأوامر

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

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

yes | sudo apt-get install fortune-mod

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

sudo apt-get -y install fortune-mod

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

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

yes | yum install fortune-mod

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

dnf -y install fortune-mod

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

فهل يبدو أنه تم إقصاء “نعم” للعمل مع البرامج النصية فقط؟ ليس تماما. هناك بعض الحيل الأخرى في الكلب العجوز حتى الآن.

بعض الحيل نعم أخرى

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

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

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

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

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

  كيفية مشاهدة Twitch Streams بدون متصفح على نظام Linux

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

yes long line of meaningless text for file padding > test.txt
ls -lh test.txt
wc test.txt

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

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

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

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

يشير wc إلى وجود 50 سطرًا بالضبط في الملف ، و 400 كلمة وحجمها 2350 بايت.

على الرغم من أنه لا يزال مفيدًا لتغذية الاستجابات في البرامج النصية طويلة المدى (وبعض الحيل الأخرى) ، فإن الأمر “نعم” لن يكون جزءًا من مجموعة أدواتك اليومية من الأوامر. ولكن عندما تحتاج إليها ، ستجد أنها البساطة بحد ذاتها – وكل ذلك في ستة أسطر من الشفرة الذهبية.