كيفية استخدام أمر 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؟
هذا ذخيرة صدى
أمر بسيط ولكن لا غنى عنه. إذا لم يكن موجودًا ، فسنضطر إلى اختراعه.
خدع زيوس قاموا ببعض الخير ، بعد كل شيء.