كيفية استخدام أمر القراءة في نظام التشغيل 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>
بعد تخزين كلمة المرور في المتغير المحدد، يمكنك عرضها في الجهاز باستخدام الأمر echo
يأمر:
echo -e "\nPassword: $password"
هنا، -e
العلم يسمح بتفسير تسلسل الهروب، و \n
يضيف تسلسل الهروب سطرًا جديدًا قبل الإخراج.
تغليف
بحلول الوقت الذي تنتهي فيه من قراءة هذه المقالة والعمل على الأمثلة، ستكون على دراية باستخدام أمر القراءة في محطة Linux. ومع ذلك، هناك العديد من الأوامر الأخرى التي يمكنك استكشافها. تابع القراءة لمعرفة الأوامر الأساسية للوافدين الجدد.
حقوق الصورة: غابرييل هاينزر عبر Unsplash. جميع لقطات الشاشة بواسطة هارون جافيد.
اشترك في نشرتنا الإخبارية!
يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك
اكتشاف المزيد من تكتك تكنولوجيا
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.