• Fri. Sep 20th, 2024

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

Byadmin

Jul 31, 2024

قراءة صورة ميزة الأمر

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

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

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

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

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

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

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

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

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

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

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

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

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

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

دعونا نأخذ هذا كمثال:

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

الآن، بعد تقديم المدخلات، دعنا نعرضها باستخدام أمر echo:

استخدام أمر echo لعرض مخرجات متغير REPLY

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

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

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

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

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

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

دعونا ننظر إلى المثال التالي:

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

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

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

عرض قيم متعددة باستخدام أمر echo

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

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

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

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

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

يمكنك استخدام متغير فاصل الحقل الداخلي (IFS) مع الأمر read لتحديد كيفية تقسيم الإدخال إلى حقول منفصلة. بشكل افتراضي، يستخدم 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 مع الأمر read لإخفاء المعلومات

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

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

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

تغليف

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

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *