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

فاطماواتي أحمد زينوري / Shutterstock.com



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

الأمر نعم

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





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

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

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



yes

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

yes



yes

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

الإخراج من long_script.sh يمكن نقلها إلى برامج أو نصوص أخرى.

الإعلانات

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

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

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

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

yes

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

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

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

yesالإعلانات

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

yes

للحصول على apt-get لتقديم ردنا على سؤال البرنامج النصي ، أرسل الإخراج من yes إلى البرنامج النصي.

-y

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

apt-get

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

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

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

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

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

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

الإعلانات

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

fsck

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

-y

سترى أن yes لم تسأل حتى من المعتاد هل تريد الاستمرار؟ [نعم / لا] سؤال. لقد افترضت أن الإجابة ستكون نعم.

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

yes

ال seq استبدل مدير الحزم sleep و yes لها ls (افترض نعم) الخيار.

wcالإعلانات

الأمر نفسه ينطبق على head و -50 و head. لكل من هذه الأوامر test.txt الخاصة به (قوة) أو test.txt (افترض نعم) الخيارات.

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

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

يمكنك استخدام yes بتسلسل من الأرقام تم إنشاؤه بواسطة

yes
للتحكم في حلقة من الإجراءات المتكررة.

يردد هذا الخط الأحادي صدى الأرقام التي تم إنشاؤها في النافذة الطرفية ثم يستدعي

yes yes
لثانية واحدة.

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

yes anything you like

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

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

الإعلانات

يمكنك إنشاء ملفات كبيرة بسرعة باستخدام

#!/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
. كل ما عليك فعله هو إعطائها سلسلة طويلة من النص للعمل معها وإعادة توجيه الإخراج إلى ملف. لا تخطئ ستنمو هذه الملفات بسرعة. كن مستعدًا للضغط على Ctrl + C في غضون ثوانٍ قليلة.

chmod +x long_script.sh
./long_script.sh
yes | ./long_script.sh

إنشاء ملفات الاختبار بنعم أنا نافذة طرفية

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

yes yes | ./long_script.sh
تشير إلى أن حجمها 557 ميغا بايت ، و
yes | sudo apt-get install fortune-mod
أخبرنا أن هناك 12.4 مليون سطر فيه.

يمكننا تحديد حجم الملف بتضمين

sudo apt-get -y install fortune-mod
في سلسلة الأوامر لدينا. نخبرها بعدد الأسطر المراد تضمينها في الملف. ال
yes | yum install fortune-mod
يعني
dnf -y install fortune-mod
سيسمح لـ 50 سطرًا فقط بالمرور إلى
yes '$(seq 1 20)' | while read digit; do echo digit; sleep 1; done
ملف.

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

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

بمجرد وجود 50 سطرًا في

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

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


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

yes long line of meaningless text for file padding | head -50 > test.txt
الأمر لن يكون جزءًا من مجموعة أدواتك اليومية من الأوامر. ولكن عندما تحتاج إليها ، ستجد أنها البساطة بحد ذاتها - وكل ذلك في ستة أسطر من الشفرة الذهبية.

أوامر لينكس
الملفات قطران · الكهروضوئية · قط · تاك · chmod · سيطرة · فرق · سيد · مع · رجل · Pushd · popd · fsck · اختبار · فيما يليها · فد · باندوك · قرص مضغوط · المسار $ · awk · انضم · جي ق · يطوى · فريد · جورنال سي تي ال · ذيل · حالة · ls · fstab · رما - طرد - قذف · أقل · chgrp · تشاون · مراجعة · نظرة · سلاسل · نوع · إعادة تسمية · أزيز · بفك · تتعدد · أومونت · تثبيت · fdisk · مكفس · جمهورية مقدونيا · rmdir · رسينك · مدافع · gpg · نحن · نانو · مكدير · ال · ln · تصحيح · يتحول · rclone · أجاد · SRM
العمليات الاسم المستعار · شاشة · أعلى · لطيف · رائع · تقدم · دعامة · النظام · تمكس · chsh · التاريخ · في · حزمة · مجانا · التي · dmesg · usermod · ملاحظة · الجذور · xargs · tty · الخنصر · lsof · vmstat · نفذ الوقت · حائط · نعم · قتل · نايم · سودو · له · زمن · المجموعة · usermod · مجموعات · lshw · اغلق · اعادة التشغيل · توقف · انقطاع التيار الكهربائي · passwd · lscpu · كرونتاب · تاريخ · bg · fg
الشبكات netstat · بينغ · مسار التتبع · IP · ss · الذي هو · fail2ban · bmon · أنت · اصبع اليد · nmap · بروتوكول نقل الملفات · لفة · wget · من الذى · من أنا · في · iptables · ssh-كجن · ufw

ذات صلة: أفضل أجهزة كمبيوتر Linux المحمولة للمطورين والمتحمسين

اقرأ التالي صورة الملف الشخصي لـ Dave McKay ديف مكاي
استخدم Dave McKay أجهزة الكمبيوتر لأول مرة عندما كان الشريط الورقي المثقوب رائجًا ، وهو يقوم بالبرمجة منذ ذلك الحين. بعد أكثر من 30 عامًا في صناعة تكنولوجيا المعلومات ، أصبح الآن صحفيًا متخصصًا في مجال التكنولوجيا. خلال مسيرته المهنية ، عمل كمبرمج مستقل ، ومدير فريق تطوير برمجيات دولي ، ومدير مشروع خدمات تكنولوجيا المعلومات ، ومؤخراً كمسؤول حماية البيانات. تم نشر كتاباته على موقع howtogeek.com و cloudavvyit.com و itenterpriser.com و opensource.com. ديف هو مبشر لينكس ومدافع مفتوح المصدر.
اقرأ السيرة الذاتية الكاملة

مقالات مثيرة للاهتمام