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

يعتبر echoالأمر مثاليًا لكتابة نص منسق في نافذة المحطة الطرفية. ولا يجب أن يكون نصًا ثابتًا. يمكن أن تتضمن متغيرات shell وأسماء الملفات والأدلة. يمكنك أيضًا إعادة توجيه echo لإنشاء ملفات نصية وملفات تسجيل. اتبع هذا الدليل البسيط لمعرفة كيفية القيام بذلك.

يكرر الصدى ما تقوله ليكرره

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

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

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

صدى صوت؟ صدى صوت!

توفر معظم أنظمة Linux نسختين من echo. يحتوي Bash shell على echoمدمج خاص به ، وهناك أيضًا نسخة ثنائية قابلة للتنفيذ echo.

يمكننا أن نرى نسختين مختلفتين باستخدام الأوامر التالية:

اكتب صدى
أين صدى

و typeالقيادة يقول لنا ما إذا كان الأمر نعبر إلى أنها حجتها هو المضمن قذيفة، قابل للتنفيذ ثنائي، اسم مستعار، أو وظيفة. يخبرنا أن echoقذيفة مبنية.

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

و whereisتبدو القيادة القابل للتنفيذ ثنائي، وشفرة المصدر، وصفحة الرجل للأمر نجتاز إلى أنها معلمة سطر الأوامر الخاصة به. لا يبحث عن shell buildins لأنه ليس لديهم ملف ثنائي منفصل قابل للتنفيذ. إنها جزء لا يتجزأ من ملف Bash القابل للتنفيذ.

يُبلغ whereisالأمر بأنه echoملف ثنائي قابل للتنفيذ موجود في /binالدليل.

لاستخدام هذا الإصدار ، echoستحتاج إلى الاتصال به صراحة من خلال توفير المسار إلى الملف القابل للتنفيذ في سطر الأوامر:

/ بن / صدى - الإصدار

لا تعرف shell builtin ما --versionهي وسيطة سطر الأوامر ، إنها تكررها فقط في النافذة الطرفية:

صدى - نسخة

تستخدم جميع الأمثلة الموضحة هنا الإصدار الافتراضي من echo، في Bash shell.

كتابة نص إلى المحطة

لكتابة سلسلة نصية بسيطة في النافذة الطرفية ، اكتب echoالسلسلة التي تريد عرضها:

صدى اسمي ديف.

النص مكرر لنا. ولكن أثناء التجربة ، ستكتشف قريبًا أن الأمور يمكن أن تصبح أكثر تعقيدًا بعض الشيء. انظر إلى هذا المثال:

صدى اسمي ديف وأنا مهووس.

تعرض نافذة المحطة   > إشارة وتجلس هناك ، تنتظر. سيعيدك Ctrl + C إلى موجه الأوامر. ماذا حدث هناك؟

الاقتباس الفردي أو الفاصلة العليا في كلمة "أنا" مرتبك echo. فسر ذلك الاقتباس الفردي على أنه بداية قسم مقتبس من النص. نظرًا لأنه لم يكتشف اقتباسًا منفردًا ،  echoكان ينتظر المزيد من المدخلات. وتوقع أن تتضمن المدخلات الإضافية الاقتباس الفردي المفقود الذي كان ينتظره.

لتضمين علامة اقتباس مفردة في سلسلة نصية ، فإن أبسط حل هو لف السلسلة بأكملها بين علامتي اقتباس:

صدى "اسمي ديف وأنا مهووس."

يُعد تغليف النص بعلامات اقتباس مزدوجة نصيحة عامة جيدة. في البرامج النصية ، تحدد بوضوح المعلمات التي تقوم بالتمرير إليها echo. هذا يجعل قراءة النصوص وتصحيحها أسهل بكثير.

ماذا لو كنت تريد تضمين حرف اقتباس مزدوج في سلسلة النص الخاصة بك؟ هذا سهل ، ما عليك سوى وضع شرطة مائلة للخلف \أمام علامة الاقتباس المزدوجة (مع عدم وجود مسافة بينهما).

صدى "اسمي ديف وأنا \" مهووس. \ ""

هذا يلف كلمة "المهوس" بعلامات اقتباس مزدوجة بالنسبة لنا. سنرى المزيد من هذه الأحرف التي تم تخطيها بالخط المائل العكسي قريبًا.

استخدام المتغيرات مع الصدى

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

my_name = "ديف"

my_nameتم إنشاء متغير يسمى . تم تعيين قيمة النص "ديف". يمكننا استخدام اسم المتغير في السلاسل التي نمررها echo ، وستتم كتابة قيمة المتغير في النافذة الطرفية. يجب أن تضع علامة الدولار $أمام اسم المتغير لتعرف echoأنه متغير.

هناك تحذير. إذا قمت بلف السلسلة الخاصة بك في علامات اقتباس مفردة echo ، فستتعامل مع كل شيء حرفيًا. لعرض القيمة المتغيرة ، وليس اسم المتغير ، استخدم علامات الاقتباس المزدوجة.

صدى "اسمي $ my_name"
صدى "اسمي $ my_name"

بشكل مناسب إلى حد ما ، هذا يستحق التكرار:

  • يؤدي استخدام علامات الاقتباس المفردة إلى كتابة النص في النافذة الطرفية بطريقة حرفية .
  • يؤدي استخدام  علامات الاقتباس المزدوجة إلى تفسير المتغير - ويسمى أيضًا التوسع المتغير - ويتم كتابة القيمة في النافذة الطرفية.

ذات صلة: كيفية العمل مع المتغيرات في Bash

استخدام الأوامر مع الصدى

يمكننا استخدام الأمر مع echoودمج مخرجاته في السلسلة المكتوبة في النافذة الطرفية. يجب أن نستخدم علامة الدولار $كما لو كان الأمر متغيرًا ، ونلف الأمر كله بين قوسين.

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

لذا ، جرب هذا في نافذة المحطة:

التاريخ +٪ د

وبعد اقتناعنا بأننا نحصل على ما نتوقعه من أمر التاريخ ، سنقوم بدمجه في echoأمر:

صدى "تاريخ اليوم هو: $ (تاريخ +٪ D)"

لاحظ أن الأمر موجود داخل الأقواس وأن علامة الدولار $ موجودة مباشرة قبل القوس الأول.

تنسيق النص بالصدى

و -eيتيح خيار (تمكين هروب مائل) لنا استخدام بعض الأحرف هرب مائل لتغيير تخطيط النص. هذه هي الأحرف التي تم تخطيها بالخط المائل العكسي التي يمكننا استخدامها:

  • \ أ : التنبيه (المعروف تاريخيًا باسم BEL). هذا يولد صوت التنبيه الافتراضي.
  • \ ب : يكتب حرف مسافة للخلف.
  • \ ج : يتخلى عن أي إخراج آخر.
  • \ e : يكتب حرف هروب.
  • \ f : يكتب حرف تغذية النموذج.
  • \ n : كتابة سطر جديد.
  • \ r : يكتب حرف إرجاع.
  • \ t : كتابة علامة تبويب أفقية.
  • \ v : يكتب علامة تبويب عمودية.
  • \\ : يكتب حرف الخط المائل العكسي.

دعونا نستخدم بعضها ونرى ماذا يفعلون.

echo -e "هذا سطر نص طويل \ n مقسم عبر ثلاثة أسطر \ n مع \ ttabs \ ton \ t \ t الخط الثالث \ t"

يتم تقسيم النص إلى سطر جديد حيث استخدمنا \nالأحرف ويتم إدراج علامة تبويب حيث استخدمنا \tالأحرف.

صدى -e "Here \ vare \ vertical \ vtabs"

مثل \nأحرف السطر الجديد ، \vتنقل علامة التبويب العمودية النص إلى السطر أدناه. ولكن ، بخلاف  \n أحرف السطر الجديد ، \vلا تبدأ علامة التبويب الرأسية السطر الجديد عند العمود صفر. يستخدم العمود الحالي.

تعمل \bأحرف backspace على تحريك المؤشر إلى الخلف بمقدار حرف واحد. إذا كان هناك المزيد من النص المراد كتابته في الجهاز ، فسيحل هذا النص محل الحرف السابق.

صدى -e "123 \ b4"

تمت كتابة "3" بواسطة "4".

يؤدي \rحرف إرجاع الحرف  echoإلى العودة إلى بداية السطر الحالي وكتابة أي نص إضافي من العمود صفر.

صدى -e "123 \ r456"

يتم الكتابة فوق الأحرف "123" بواسطة الأحرف "456".

و \aسوف حرف تنبيه تنتج "بليب". مسموعة يستخدم صوت التنبيه الافتراضي لموضوعك الحالي.

صدى صوت "جعل صفير \ a"

و -nالخيار (أي السطر الجديد) ليس تسلسل هرب مائل، ولكنها لا تؤثر على مستحضرات التجميل للتخطيط النص، لذلك سنناقش هنا. يمنع echoمن إضافة سطر جديد إلى نهاية النص. يظهر موجه الأوامر مباشرة بعد النص المكتوب في النافذة الطرفية.

صدى -n "لا يوجد سطر جديد نهائي"

استخدام الصدى مع الملفات والدلائل

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

يسرد هذا الأمر جميع الملفات والأدلة الموجودة في الدليل الحالي:

صدى صوت *

يسرد هذا الأمر جميع الملفات والأدلة الموجودة في المجلد الحالي والتي يبدأ اسمها بحرف "D":

صدى D *

يسرد هذا الأمر جميع ملفات ".desktop" في الدليل الحالي:

صدى *

بلى. هذا لا يلعب على echoنقاط القوة. استخدم ls.

الكتابة إلى الملفات مع الصدى

يمكننا إعادة توجيه الإخراج من echoوإنشاء ملفات نصية أو الكتابة في ملفات نصية موجودة.

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

إذا استخدمنا >>عامل إعادة التوجيه ، يتم إنشاء الملف إذا لم يكن موجودًا. echoتتم إضافة الإخراج من إلى نهاية الملف ولا يستبدل أي محتوى موجود بالملف.

صدى "إنشاء ملف جديد". > sample.txt
صدى "إضافة إلى الملف". >> sample.txt
عينة القط. xt

يتم إنشاء ملف جديد بواسطة الأمر الأول ، ويتم إدراج نص فيه. يضيف الأمر الثاني سطرًا نصيًا إلى أسفل الملف. و catيعرض الأمر محتويات الملف إلى إطار المحطة الطرفية.

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

لاحظ علامات الاقتباس المفردة حول معلمات dateالأمر. تمنع تفسير المسافة بين المعلمات على أنها نهاية قائمة المعلمات. أنها تضمن تمرير المعلمات  date بشكل صحيح.

صدى "بدأ ملف السجل: $ (date + '٪ D٪ T')"> logfile.txt
القط logfile.txt

تم إنشاء ملف السجل catلنا ويوضح لنا أنه تمت إضافة طابع التاريخ والطابع الزمني إليه.

ذات صلة: ما هي stdin و stdout و stderr على Linux؟

هذا ذخيرة صدى

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

خدع زيوس قاموا ببعض الخير ، بعد كل شيء.