نظرية باش

/ بن / باش

0. الفهرس

  1. الأشياء التي تحدث لمعظم الناس
  2. هيكل النص
  3. اطبع على الشاشة
  4. قراءة المستخدم INPUT
  5. الحسابات في باش
  6. حيث
  7. الحلقات
  8. وظائف
  9. غيتوبس

1. الأشياء التي تحدث لمعظم الناس

/ bin / bash أو / bin / sh

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

Unicode مقابل ASCII

هل تساءلت يومًا لماذا لا يمكنك استخدام "¿" أو "ñ" في نصوصك؟ أو استخدام لهجات؟ يمكن أن يكون مزعجًا جدًا في البرامج النصية التفاعلية. هذا لأن التشفير الافتراضي لـ Bash هو ASCII ، أو ما هو نفسه ، مجموعة الأحرف الإنجليزية. لتغييره ، علينا فقط إخبار البرنامج النصي الخاص بنا بأننا نريد استخدام Unicode. لذلك عليك إضافة سطر بعد مترجم الأوامر مباشرة:

# - * - التشفير: UTF-8 - * -

كن حذرًا ، من المهم أن يكون هذا السطر في بداية النص.

اجعل البرنامج النصي قابلاً للتنفيذ

من المضحك عدد الأشخاص الذين يديرون السيناريوهات بـ «سيناريو باش $" بدلا من "$ ./script.sh.بعد كل شيء ، هذا ما حددناه لصدفة.

لإضافة أذونات التنفيذ ، يجب عليك تنفيذ:

sudo + x script.sh
إذا كان البرنامج النصي الخاص بنا قابلاً للتنفيذ ، فيمكننا إضافته إلى PATH وجعله قابلاً للتنفيذ من أي مكان / مجلد على جهاز الكمبيوتر الخاص بنا. لذلك يجب أن نضيف إما إلى .bashrc الخاص بمستخدمنا أو إلى / etc / bashrc الخط
BIN = "المجلد الذي توجد به البرامج النصية" PATH = "$ BIN $ PATH"
من قواعد Bash كتابة أسماء المتغيرات بأحرف كبيرة. كثير من الناس لا يتبعون هذه القاعدة ، ولكن بالنسبة للنصوص الطويلة فهي موضع تقدير لأنها تجعلها أكثر قابلية للقراءة

2. هيكل النص

  1. رئيس
  2. تعريف المتغيرات العالمية
  3. مساعدة
  4. وظائف
  5. الجسم الرئيسي

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

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

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

function help () {echo "" "نص المساعدة جيد التنسيق." "" exit if [[-z $ 1 || 1 دولار == ​​"-h" || 1 دولار == ​​"- مساعدة"]] ؛ ثم ساعد فاي

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

يشير الشرط إلى عرض التعليمات على الشاشة والخروج إذا تم تشغيل البرنامج النصي بدون معلمات أو إذا تم تحديد -h / –help. إذا نظرت إليه ، فهذا هو السلوك القياسي لمعظم برامج لينكس.

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

3. الطباعة على الشاشة

هناك أمرين رئيسيين للطباعة على الشاشة في باش: «صدى»Y«printf«. كلاهما بنفس السرعة وكلاهما جزء من باش. الفارق الأساسي للمبتدئين هو أن الصدى يضيف سطرًا جديدًا في النهاية ، بينما «printf"لا.

الصدى جيد جدًا وهو ما يستخدمه معظم الناس ، ولكن عند قراءة مدخلات المستخدم ، أو عندما تريد طباعة متغيرات مأخوذة من الملفات عن طريق معالجة الكلمات ، يمكن أن تحدث أشياء غريبة. عادة ما يتم حلها بسهولة ، مثل تغيير علامات الاقتباس المزدوجة إلى واحدة أو العكس ، أو إزالة المراجع المتغيرة من علامات الاقتباس. «صدى»تقوم بأشياء غريبة أيضًا اعتمادًا على كيفية تجميعها ، إذا استخدمنا Ubuntu دائمًا أو دائمًا Fedora ، فلن يؤثر ذلك علينا ، ولكن إذا قمنا بتغيير التوزيع فإنه يؤثر.

لهذا السبب أستخدم «printf«الذي لا يصيبني بالصداع كما يتصرف مثل«printf»من C أو«طباعة»من Python ، هذا مهم جدًا إذا كنت تريد نقل البرنامج النصي إلى لغة برمجة أخرى.

لمزيد من المناقشة الشاملة يمكنك زيارة هذا السؤال من Unix & Linux على Stack Exchange.

4. قراءة المستخدم INPUT

كل ما نكتبه بعد اسم البرنامج النصي الخاص بنا وقبل الضغط على مفتاح ENTER يتم حفظه تلقائيًا في متغيرات خاصة. هذه المتغيرات من النوع $ X حيث X عبارة عن رقم.

«$0»يشير إلى اسم السيناريو الخاص بنا ومن«$1»إلى اللانهاية كل شيء كتبناه لاحقًا متغير. فمثلا:

cat << EOF >> test.sh #! / bin / bash # - * - الترميز: UTF-8 - * - printf "\ $ 0 = $ 0 \ n" printf "\ $ 1 = $ 1 \ n" printf "\ $ 2 = $ 2 \ n "EOF chmod + x script.sh ./script.sh my file.txt

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

$ 0 = ./script.sh $ 1 = بلدي $ 2 = file.txt

باستخدام علامات الاقتباس ، كان بإمكاننا تمرير "my file.txt" إلى "$ 1".

يمكننا أيضًا قراءة INPUT للمستخدم باستخدام الأمر "read" ، الذي يشير مباشرةً إلى المتغير الذي نريد حفظ المعلمة فيه. فمثلا:

printf "ما اسمك؟ \ n" قراءة NAME printf "مرحبًا ، $ NAME. \ n"
كن حذرا في تعيين المتغيرات. سينتج عن "$ VAR = content" خطأ ، ولا يمكن ترك مسافات بين علامة التساوي واسم المتغير والمحتوى. الاستخدام الصحيح هو "VAR = content"

5. الحسابات في باش

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

عادة ما نريد إسناد نتيجة expr إلى متغير. يمكننا القيام بذلك بطريقتين:

VAR2 = `expr $ VAR1 / 10` VAR2 = $ (expr $ VAR1 / 100)

يمكنك أيضًا تخطي «على سبيل المثال»استخدام الأقواس المزدوجة:

VAR2 = دولار ((VAR1 دولار / 100))
لمزيد من الشرح لـ «على سبيل المثال»أو بديل يستخدم الأعداد الصحيحة ، يمكنك إلقاء نظرة عليه هذا الدخول KZKG ^ gaara.

6. حيث

لقد تم كتابته بالفعل بطريقة مكثفة للغاية حول «if"آخر"أليف"والشروط. يمكنك أن تقرأ عن ذلك في:

أريد فقط إبراز الفرق بين استخدام الأقواس المربعة البسيطة ، «[]«، وقوسين مزدوجين ،«[[]]«، للشروط. مع الأقواس المزدوجة يمكننا استخدام شروط إضافية:

  • «&&"لو
  • «||»من أجل أو

ليستخدم "&&»Y«||»باستخدام أقواس مربعة بسيطة ، يجب فصل كل جزء في أقواس مربعة منفصلة. المثال المستخدم لجزء من البرنامج النصي الذي يبحث لمعرفة ما إذا كانت المساعدة بحاجة إلى التنفيذ سيكون:

إذا [-z "$ 1"] || ["$ 1" == "-h"] || ["$ 1" == "- مساعدة"]] ؛ ثم ساعد فاي

كما أنه يحفظنا من الاضطرار إلى كتابة أسماء المتغيرات بين علامتي اقتباس لمنع الأخطاء. فمثلا:

إذا [$ 1 = 1] ؛ ثم printf "المعلمة تساوي 1." ؛ fi إذا ["$ 1" = 1]؛ ثم printf "المعلمة تساوي 1." ؛ fi إذا [[$ 1 = 1]]؛ ثم printf "المعلمة تساوي 1." ؛ فاي

إذا تم تشغيل script.sh بدون أي معاملات ، فإن الحالة الأولى ستعطي خطأ:

bash: [: =: عامل أحادي متوقع
في Bash "=" و "==" يتم تفسيرهما بنفس الطريقة. لا يحدث هذا في لغات البرمجة الأخرى حيث يتم استخدام "=" فقط لتعيين المتغيرات.

ما لم يتم الحديث عنه هو «حقيبة«، يُستخدم للتبسيط«if«. لنبدأ من البداية ، عندما لا يكون لدينا أي «if»سيتم تنفيذ جميع التعليمات البرمجية. إذا أضفنا شرط «if»سيكون لدينا حالتان ، واحدة يكون فيها الكود بلوك الموجود داخل«if»والحالة الأخرى التي لا يتم فيها تنفيذ هذا البلوك.

إذا أضفنا «آخر«سيكون لدينا أيضًا حالتان ، لكن هاتين الحالتين مختلفتان عن الحالات السابقة. لأنه سيكون هناك الآن كتلتان من الكود الشرطي ، A و B ، وكتلة C ، وهي بقية البرنامج. سيتم تنفيذ A أو B ، و C. في الحالة السابقة كان A و C أو فقط C.

لتجنب شروط الكتابة «إذا كان غير ذلك" في غضون "آخر»ولتسهيل قراءة الكود تم إنشاؤه«أليف«. عندما يكون لدينا العديد من الشروط التي تعتمد على الشرط السابق ، على سبيل المثال نطاق الأرقام أو النوع:

VAR1 = 1 دولار إذا [[$ VAR1 = 1]] ؛ ثم اطبع "1 \ n" elif [[$ VAR1 = 2]]؛ ثم اطبع "2 \ n" elif [[$ VAR1 = 3]]؛ ثم printf "3 \ n" else printf "none \ n" fi

في حالة الاخير «أليف»ستتم قراءة العديد من الشروط. في حالة تبسيط هذه العملية:

VAR1 = حالة $ 1 VAR في 1) printf "1 \ n" ؛؛ 2) printf "2 \ n" ؛؛ 3 | 4) printf "3 أو 4 ، يعتمد ذلك \ n" ؛؛ *) printf "بلا \ n" ؛؛ أن ج

سيتم قراءة متغير ، في هذه الحالة VAR1 ، وسيتم التحقق منه إذا كان مكافئًا لأي من الحالات ، وإذا لم يكن كذلك ، فسيتم تنفيذ الحالة الافتراضية "*". الفاصلة المنقوطة المزدوجة تعادل «استراحة«يقولون«حقيبة»هذا يجب أن ينتهي.

«الإطار»يمكن استخدامها أيضًا كسلسلة لـ«if«، لذلك عليك استخدام« ؛؛ & »(متابعة) بدلاً من« ؛؛ » (قف).

7. الحلقات

عدد قليل جدًا من الحلقات معروف في أي لغة برمجة. في باش هم «في حين"حتى»Y«For«. لقد تمت كتابته بالفعل في المدونة حول هذه:

هناك نوعان من الحلقات «For«، تلك التي من النوع«$ مقابل VAR في LOQUESEA»وما هو نوع ج«$ لـ ((I = 0 ؛ I <= 10 ؛ I ++))«. النوع الثاني من الحلقات «For»مفيدة جدًا ، فهي تتكون من 3 أجزاء في بداية الحلقة:

  • إعلان وبدء المتغيرات (في هذه الحالة متغير مساعد "I = 0").
  • شرط التنفيذ (حتى أكون أقل من أو يساوي 10).
  • زيادة المتغير المساعد

في رأيي هي أقوى حلقة على الإطلاق. مثال يطبع جميع الأرقام من 0 إلى 10 ، بما في ذلك:

#! / bin / bash لـ ((I = 0 ؛ I <= 10 ؛ I ++)) ؛ هل تم طباعة "$ I \ n"

8. وظائف

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

لا تفعل شيئًا مثل:

#! / bin / bash VAR = 1 printc "$ VAR \ n" function hello () {VAR = 2 printf "$ VAR \ n"} hello printf "$ VAR \ n"

تتم الطباعة على الشاشة 1 و 2 و 2.

للإعلان عن المتغيرات المحلية ، أضف «محلي»عند التصريح:

#! / bin / bash VAR = 1 printf "$ VAR1 \ n" function foo () {local VAR1 = 2 printf "$ VAR1 \ n"} printf "$ VAR1 \ n" foo printf "$ VAR1 \ n"

هذا يطبع 1 ، 1 ، 2 ، 1 على الشاشة.

كيف تمرر المعلمات إلى وظيفة؟

#! / bin / bash # - * - الترميز: UTF-8 - * - function hello () {printf "Hello $ 1 \ n"}

printf "ما اسمك؟ \ n"
قراءة VAR1
مرحبًا $ VAR1

كيف يتم إرجاع المعلمات؟

#! / bin / bash # - * - الترميز: UTF-8 - * - function hello () {printf "Hello holita"} printf "ما اسمك؟ \ n" اقرأ VAR1 VAR1 = $ (مرحبًا) # هنا هو printf "$ VAR1 $ VAR2 \ n"

كما ترى ، هذا له عيبان ، يمكنك فقط إرجاع معلمة واحدة ، والتي يمكن أن تكون متجه 😀 ، وإذا كنت تريد إرجاع معلمة ، فلن تتمكن من الطباعة على الشاشة من تلك الوظيفة.

يمكنك العثور على المزيد من الأشياء حول الوظائف على [url=https://blog.desdelinux.net/programando-en-bash-parte-3/]هذه المقالة من Usemoslinux[/url].

9. جيتوبس

من آخر الأشياء التي تحتاج لمعرفتها حول Bash لإنشاء نصوص معقدة هو «getops.«. يتم استخدامه لتمرير الخيارات إلى البرنامج النصي بغض النظر عن الترتيب. الجانب السلبي الوحيد هو أنه يؤثر فقط على الخيارات القصيرة:

#! / bin / bash # - * - الترميز: UTF-8 - * - VARC = 0 وظيفة مساعدة () {printf "Help message \ n" exit} if [[-z $ 1]]؛ ثم ساعد fi ​​أثناء getopts: ha: b: c OPT؛ do case $ OPT in h) help ؛؛ :) مساعدة ؛؛ أ) VARA = OPTARG دولار ؛؛ ب) VARB = $ OPTARG ؛؛ ج) VARC = 1 ؛؛ \؟) مساعدة ؛؛ أنجز esac # الكتلة الرئيسية للنص الذي # يقوم بأشياء باستخدام VARA و VARB و VARC

«getopts»يقرأ الخيارات واحدًا تلو الآخر ، لذلك هناك حاجة إلى حلقة.

هناك نوعان من الخيارات التي يمكن تمريرها باستخدام «com.getopts":

  • تسمى المعلمات إشارات ، في هذه الحالة -c أو -h. تم تحديدها بالحرف الذي نريد استخدامه. إنها مثل المتغيرات المنطقية ، «صحيح»(هل) أو«زائف"(هم ليسوا هنا).
  • المعلمات مع الحجج المرتبطة ، -أي شيء ، -ب أي شيء. يتم تحديدها بالحرف الذي نريده مع نقطتين أدناه. الوسيطة مخزنة في OPTARG (هذا الاسم غير قابل للتغيير).
النقاط المزدوجة الأولية هي عدم إظهار أي أخطاء.

ماذا يفعل هذا السيناريو؟

عرض رسالة التعليمات عند عدم تمرير أي خيار ، أو عند تمرير المعلمة "-h" ، أو عند تمرير معلمة غير صالحة (على سبيل المثال "-x" ، يتم ذلك بواسطة "\؟") أو عند معلمة صالحة بدون وسيطة (":"). في باقي الحالات ، يحفظ وجود "-c" باعتباره 1 في VARC ، والقيم التي تم تمريرها مع "-a" و "-b" في VARA و VARB.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   إيلاف قال

    براعة. أنا لا أقول أكثر من U_U

  2.   ميغيل قال

    مرحبا مقال جيد جدا.
    مرحبًا ، أنت تضع منح الأذونات sudo + x بدلاً من chmod + x

    1.    هنري قال

      sudo chmod + x script.sh
      (لنكون أكثر دقة ، هههه)

      آه ، مبروك وشكرا!

  3.   ناري قال

    منشور جيد جدا ، الحقيقة هي أني أهنئكم ، استمروا في ذلك ، تحياتي

  4.   غوستافو قال

    وإذا كنت تريد أن يكون النص مرئيًا عند تنفيذه ، خطوة بخطوة ، مع رؤية على سبيل المثال كيف تتصرف المتغيرات والظروف وكل شيء ، يمكنك استخدام:

    sh -x النصي

    تحياتي

  5.   داغو قال

    قطعة من الوصاية. ممتاز وشرح جيد جدا
    غراسياس.

  6.   غابرييل قال

    مشاركة ممتازة في الموضوع 😉

  7.   ماريو جييرمو زافالا سيلفا قال

    ممتع جدا ومهم جدا شكرا للمعلومات….
    في صحتك !!!

  8.   notfrombrooklyn قال

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

  9.   ادريان قال

    جيد جدا

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

    ومع ذلك ، فقد وجدت بعض التفاصيل التي أعتقد أنه ينبغي تصحيحها.

    أولاً: في القسم «2. هيكل النص »الوظيفة ليست مغلقة ، مما سيؤدي إلى مشاكل عند تنفيذها في برنامج نصي.
    سيكون الحل هو إضافة قوس بعد أمر "الخروج" مباشرة.

    ثانيًا: في القسم «4. قراءة إدخال المستخدم »أنت تؤكد أن المعلمات التي يمكن للمستخدم إدخالها تنتقل من $ 0 إلى ما لا نهاية ، ومع ذلك ، فإن" bash "ستترجم فقط من $ 0 إلى $ 9 ، نظرًا لأن $ 10 ستكون مساوية لـ $ 1 + 0.
    لحل هذه المشكلة ، يمكنك إما استخدام الأمر "shift" للحصول على المتغيرات التالية. أو حدد المتغير بين الأقواس "$ {10}" ، بحيث تأخذ bash القيم معًا ، وليس مثل $ 1 + 0.

    بدون مزيد من اللغط ، تحياتي!

    1.    notfrombrooklyn قال

      شكرا على تعليقك. لقد فشل تمامًا في شرح الاستخدام الصحيح للخروج ، سواء في البرنامج النصي أو في الوظائف. بالنسبة إلى $ {10} لم أرث الكثير من قبل ، لذلك لم أواجه هذه المشكلة ، من الجيد معرفة أن هناك حلًا لذلك (لقد شطبت بالفعل الشيء الجديد الذي تعلمته اليوم 😀).

  10.   شانيو قال

    شكرا جزيلا على هذه المقالة! بعض الأشياء التي ذكرتها لا تزال تفتقر إلى التوضيح. على سبيل المثال ، getops.
    في جزء مخرجات الشاشة لم تذكر القط الذي ذكرته فيما بعد ...
    قطة <
    ***************************************
    * هذا النموذج معبر جدًا *
    ***************************************
    EOF

    في مثالك:
    القط << EOF >> test.sh
    هناك شيئان يجب ذكرهما ... >> هو "إلحاق" أي ، إذا كررت نفس الأمر ، سيكون لديك النص بأكمله مكررًا ... يجب عليك استخدام واحد فقط ...
    القط << EOF> script.sh
    نعم ، يجب أن يطلق عليه أيضًا script.sh
    ثم في
    إذا [-z "$ 1"] || ["$ 1" == "-h"] || ["$ 1" == "–help"]] ؛ ثم
    مساعدة
    fi

    أعتقد أنه يجب أن يكتب ...
    إذا [[-z "$ 1"] || ["$ 1" == "-h"] || ["$ 1" == "–help"]] ؛ ثم
    ...

    هناك الكثير لتكتشفه من BASH.
    هل يمكنك تسميتها "أساسيات"؟ 🙂
    على سبيل المثال ، المعلمة "المختبرين" مثل -z لمعرفة ما إذا كانت فارغة ، أو -f لمعرفة ما إذا كانت موجودة كملف.

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

  11.   clow_eriol قال

    برنامج تعليمي جيد جدًا لسيناريو bash!

  12.   عذب الكلام قال

    -- الترميز: UTF-8 --

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

    في رأيي ، لكتابة نصوص في Bash باستخدام UTF-8 ، ما عليك سوى حفظ الملف النصي على هذا النحو (بدون BOM) ولديك متغيرات بيئة معينة ، (LANG و LC_ *) ، مضبوطة بشكل صحيح.
    بعد ذلك ، من الواضح أنه من الضروري أن يتم تحضير الأوامر المنفذة لترميزات أخرى غير ASCII. على سبيل المثال ، إذا أردنا الانتقال إلى الأحرف الكبيرة ، فلا يبدو أن هذا يعمل:
    «صدى صوتي | tr az AZ »
    o:
    «صدى صوتي | tr [: Lower:] [: upper:] »
    والأفضل استخدام:
    «صدى صوتي | awk '{print toupper ($ 0)}' ».

    1.    notfrombrooklyn قال

      حول ال "ترميز»تم ذكره في هذه المدونة من قبل:

      باش: كيف تجعل نصًا قابلاً للتنفيذ
      البرنامج النصي بعد التثبيت

    2.    borriquito مثلك قال

      شخص ما يصحح لي ، لكن خط الترميز هذا (# -- الترميز: UTF-8 --) لا علاقة له بـ bash أو shell: إنه سطر تعليق (يبدأ بعلامة #) ويعمل على إخبار المحرر بأننا نستخدمه لكتابة السيناريو (vim، emacs ...) ترميز الملف.

      في الواقع ، لا يرى bash مثل هذا السطر ، لأنه سطر تعليق.

  13.   خورخي 1987. قال

    برنامج تعليمي ممتاز ، نظرًا لأن معرفة مسؤول النظام بالبرمجة في Bash أمر ضروري ، فهي مفيدة لكل شيء.

    جيد جدا جدا!

    تحيات!

  14.   إدواردو كومو قال

    في حال كانت مفيدة لأي شخص ، فإليك العديد من الاستخدامات والأمثلة لإنشاء البرامج النصية الخاصة بك: https://github.com/reduardo7/hsabx

  15.   ليتو بلاك قال

    جيد جدا. أشياء جديدة لإضافتها إلى نصوصي. الشيء encodig و printf لم يكن بهما.
    شكرا!!!

  16.   XXXTONIXXX. قال

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