كيفية استخدام أمر القراءة في نظام التشغيل Linux


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

ستعلمك هذه المقالة أساسيات read الأمر وخياراته باستخدام العديد من أمثلة التعليمات البرمجية.

ما هو أمر القراءة

في نظام التشغيل Linux، يمكنك استخدام read أمر لالتقاط إدخال المستخدم أو قراءة سطر من الإدخال القياسي (stdin). يقرأ هذا الأمر إجمالي عدد البايتات من واصف الملف المحدد ويخزنها في المخزن المؤقت. بعد ذلك، يتم إرجاع عدد البايتات المقروءة، أو صفر، أو خطأ.

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

قبل استكشاف خيارات أمر القراءة، دعونا نلقي نظرة أولاً على بناء جملة أمر القراءة:

هنا، options تحدد المعلمة العلامات المختلفة المستخدمة لتعديل سلوك أمر القراءة. علاوة على ذلك، name تحدد المعلمة اسم المتغيرات المتعددة المستخدمة لتخزين الإدخال. إذا لم يتم توفير أسماء، فسيتم الاحتفاظ بالإدخال في ملف $REPLY متغير باش.

قراءة خيارات الأمر

يحتوي أمر Bash read على العديد من الخيارات للتحكم في إدخال المستخدم. لا تحتاج بعض الخيارات إلى معلمات إضافية، بينما يحتاج البعض الآخر إلى ذلك.

دعنا نستكشف بعض الخيارات التي يمكننا استخدامها مع أمر القراءة:

خيارات الأوصاف
-أ <صفيف> يقوم بتخزين المدخلات كمصفوفة بدلاً من المتغيرات المنفصلة.
يعمل بصمت، مما يعني عدم عرض الإدخال على الجهاز
يتيح دعم مكتبة readline، مما يسمح بقراءة سطر الإدخال
-أنا <البادئة> يوفر قيمة إدخال أولية تظهر في الموجه عند استخدام readline
-ص <مطالبة> يعرض المطالبة المحددة قبل قراءة الإدخال
-u <واصف الملف> يقرأ من واصف ملف محدد بدلاً من الإدخال القياسي (stdin)
-د <المحدد> يسمح لك بتحديد محدد سطر الإدخال بدلاً من حرف السطر الجديد الافتراضي
-ر <الوقت> يحدد فترة مهلة للإدخال؛ إذا لم يتم استلام الإدخال خلال هذا الوقت، فستُرجع الدالة read فشلًا
عند تعيينها، لا يتم التعامل مع الخطوط المائلة العكسية كأحرف هروب
-ن <رقم> يقرأ فقط العدد المحدد من الأحرف

اكتب الأمر التالي لإخراج قائمة تعليمات أمر القراءة:

كيفية قراءة الإدخال باستخدام أمر القراءة

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

لنأخذ هذا كمثال:

باستخدام أمر القراءة لالتقاط المدخلات من المستخدم

الآن، بعد توفير الإدخال، دعونا نعرضه باستخدام أمر الصدى:

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

أثناء قراءة قيمة الإدخال، يمكنك أيضًا تخزينها في أي متغيرات محددة أخرى. على سبيل المثال، لتخزين النتيجة في متغير، اكتب read الأمر متبوعًا باسم المتغير:

read variable1
<user_input>
قراءة قيمة إدخال المستخدم وتخزينها في متغير محدد

الآن، لعرض النتيجة، تحتاج إلى استخدام echo الأمر بالمتغير الذي يخزن القيمة الخاصة بك:

عرض القيمة الملتقطة المتغيرة باستخدام أمر الصدى

قراءة القيم المتعددة

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

لنتأمل المثال التالي:

read variable1 variable2 variable3
<user_input>
قراءة قيم متعددة وتخزينها لمتغيرات متعددة

هنا، تقوم بتخزين الكلمة الأولى من الجملة في المتغير الأول، والكلمة الثانية في المتغير الثاني، وجميع الكلمات المتبقية في المتغير الأخير المقدم.

دعنا نعيد الإخراج باستخدام الأمر التالي:

عرض قيم متعددة باستخدام أمر الصدى

القراءة من ملف

على الرغم من أن القراءة مخصصة في المقام الأول لإدخال المستخدم، إلا أنه يمكنك أيضًا استخدامها لقراءة الأسطر من الملف. للقيام بذلك، ما عليك سوى استخدام while حلقة، echo أمر، و read الأمر متبوعًا باسم متغير محدد:

while read line; do
echo "$line"
done < samplefile.txt
القراءة من الملف باستخدام أمر القراءة

هنا، while تقرأ الحلقة كل سطر من ملف “samplefile.txt” وتسجله في المتغير line. بعد قراءة جميع أسطر الملف، سيتم echo يظهر الأمر قيمة السطر.

قراءة المدخلات في حلقة

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

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

while read line; do
echo "Line: $line"
done
قراءة قيمة الإدخال من المستخدم في حلقة مستمرة

علاوة على ذلك، تستمر الحلقة حتى تتلقى إشارة نهاية الملف (EOF)، عادةً عن طريق الضغط كنترول + د.

كيفية المطالبة بالإدخال باستخدام أمر القراءة

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

لنعرض مطالبة مخصصة ونلتقط أيضًا الإدخال:

read -p "Enter your Name: " name
إنشاء موجه قبل قراءة المدخلات من المستخدم

الحد من إدخال المستخدم أثناء القراءة

هل تريد التحكم في ما يمكن للمستخدمين إدخاله؟ استخدم ال -n الخيار مع القراءة لتحديد طول الحرف المطلوب. على سبيل المثال، إذا كنت تريد التقاط الأحرف الأربعة الأولى من إدخال المستخدم، استخدم الأمر أدناه:

قراءة المدخلات بناءً على قيمة الحرف المحددة

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

فصل حقول الإخراج باستخدام IFS

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

على سبيل المثال، يمكنك تحديد قيمة النقطتين (:) كمحدد:

IFS=':' read name password
<user_input>
echo "Name: $name, Password: $password"
قراءة وتقسيم القيمة بناءً على قيمة المحدد المحددة

باستخدام المتغير IFS، يمكنك التقاط مدخلات سطر متعددة من المستخدم وفصلها بناءً على قيمة الفاصل.

ضبط المهلة على القراءة

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

لنقم بتعيين مهلة مدتها 10 ثوانٍ باستخدام الأمر -t خيار:

read -t 10 -p "Enter your name (10 seconds timeout): " name 
<user_input>
echo "Hello, $name!"
قراءة قيمة الإدخال خلال وقت معين

إذا لم يكتب المستخدم أي شيء خلال 10 ثوانٍ، فسيستمر البرنامج النصي في التنفيذ.

كيفية إخفاء إدخالات المستخدم

في بعض الأحيان، قد ترغب في إخفاء إدخالات المستخدم، كما هو الحال عند إدخال معلومات حساسة مثل كلمات المرور. يمكنك تحقيق ذلك باستخدام -s خيار أمر القراءة:

read -s -p "Enter your password: " password
<user_input>
استخدام الخيار -s مع أمر القراءة لإخفاء المعلومات

بعد تخزين كلمة المرور في المتغير المحدد، يمكنك عرضها في الجهاز باستخدام الأمر echo يأمر:

echo -e "\nPassword: $password"
عرض كلمة المرور الملتقطة باستخدام الخيار -e وأمر الصدى

هنا، -e العلم يسمح بتفسير تسلسل الهروب، و \n يضيف تسلسل الهروب سطرًا جديدًا قبل الإخراج.

تغليف

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

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

اشترك في نشرتنا الإخبارية!

يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك

هارون جافيد

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


اكتشاف المزيد من تكتك تكنولوجيا

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

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

زر الذهاب إلى الأعلى

اكتشاف المزيد من تكتك تكنولوجيا

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading