Rah Insaki - Mohamad Bash / رح انساكي - محمد باش
جدول المحتويات:
عند كتابة البرامج النصية shell ، قد تكون في موقف تحتاج فيه إلى تمرير كتلة متعددة الأسطر من النص أو التعليمات البرمجية إلى أمر تفاعلي ، مثل
tee
أو
cat
أو
sftp
.
في Bash والأصداف الأخرى مثل Zsh ، يعد المستند Here (Heredoc) نوعًا من إعادة التوجيه التي تتيح لك تمرير سطور متعددة من المدخلات إلى أمر ما.
بناء جملة الكتابة HereDoc يأخذ النموذج التالي:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- يبدأ السطر الأول بأمر اختياري يتبعه عامل إعادة التوجيه الخاص
<<ومعرف التحديد.- يمكنك استخدام أي سلسلة كمعرف لتعيين الحدود ، وأكثرها استخدامًا هو EOF أو END. إذا لم يكن معرّف الترسيم محددًا ، ستستبدل shell جميع المتغيرات والأوامر والأحرف الخاصة قبل تمرير سطور المستند هنا إلى الأمر. ناقص علامة إلى عامل إعادة التوجيه
<<-، سوف يتسبب في تجاهل جميع أحرف علامة التبويب الرائدة. هذا يسمح لك باستخدام المسافة البادئة عند كتابة المستندات هنا في البرامج النصية shell. لا يُسمح باستخدام رموز المسافات البادئة ، علامة التبويب فقط.
يمكن أن تحتوي كتلة المستند هنا على سلاسل ومتغيرات وأوامر وأي نوع آخر من المدخلات. وينتهي السطر الأخير بمعرف التحديد. غير مسموح بالمساحة البيضاء أمام المحدد. - يمكنك استخدام أي سلسلة كمعرف لتعيين الحدود ، وأكثرها استخدامًا هو EOF أو END. إذا لم يكن معرّف الترسيم محددًا ، ستستبدل shell جميع المتغيرات والأوامر والأحرف الخاصة قبل تمرير سطور المستند هنا إلى الأمر. ناقص علامة إلى عامل إعادة التوجيه
أمثلة Heredoc الأساسية
في هذا القسم ، سوف نلقي نظرة على بعض الأمثلة الأساسية لكيفية استخدام heredoc.
غالبًا ما يستخدم Heredoc بالاقتران مع أمر القط.
في المثال التالي ، نحن نمرر سطرين من النص يحتويان على متغير بيئة وأمر لاستخدام أداة هنا.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
كما ترون من الإخراج أدناه ، يتم استبدال كل من المتغير وإخراج الأمر:
The current working directory is: /home/linuxize You are logged in as: linuxize
دعونا نرى ما سيحدث إذا أرفقنا الفاصل في علامات اقتباس مفردة أو مزدوجة.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
يمكنك ملاحظة أنه عندما يتم تحديد المحدد لا يتم توسيع المعلمة ويتم استبدال الأمر بواسطة shell.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
بدلاً من عرض الإخراج على الشاشة ، يمكنك إعادة توجيهه إلى ملف باستخدام عوامل التشغيل
>
،
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
إذا كان file.txt غير موجود ، فسيتم إنشاؤه. عند استخدام
>
سيتم الكتابة فوق الملف ، بينما يقوم
>>
بإلحاق الإخراج بالملف.
ويمكن أيضا أن تكون مدخلات heredoc الأنابيب. في المثال التالي ، يستبدل الأمر
sed
جميع مثيلات الحرف
l
بالحرف
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
لكتابة بيانات الأنابيب إلى ملف:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
باستخدام Heredoc مع SSH
يعد استخدام Heredoc أحد أكثر الطرق ملاءمة وأسهل لتنفيذ أوامر متعددة على نظام بعيد عبر SSH.
عند استخدام محدد غير مدرج ، تأكد من هروبك من جميع المتغيرات والأوامر والأحرف الخاصة وإلا فسيتم إقحامها محليًا:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
قد ترغب أيضًا في إعداد مصادقة تستند إلى مفتاح SSH والاتصال بخوادم Linux دون إدخال كلمة مرور.
استنتاج
في هذا الدليل ، تعلمت ما هو
heredoc
وكيفية استخدامه في البرامج النصية الخاصة بك.
صفائف باش
المصفوفات هي واحدة من هياكل البيانات الأكثر استخدامًا والأساسية. في هذه المقالة ، سنقوم بتغطية صفائف Bash ، وشرح كيفية استخدامها في البرامج النصية Bash.
باش للحلقة
هناك 3 تصميمات حلقة أساسية في البرمجة النصية Bash ، للحلقة ، أثناء الحلقة ، وحتى الحلقة. في هذا البرنامج التعليمي ، سنغطي أساسيات الحلقات في Bash بالإضافة إلى استراحة واستمرار البيانات لتغيير تدفق الحلقة.
باش: إلحاق الملف
في Linux ، هناك طرق متعددة لإلحاق النص بملف. يشرح هذا المقال البعض منهم.







