كيفية حفظ مخرجات وحدة التحكم (المحطة) في ملف في Linux. Linux: كتابة نتائج أمر طرفي إلى ملف، يقوم Linux بإخراج الأمر إلى ملف

04.08.2023

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

القليل من النظرية

يجب أن نبدأ بحقيقة أن النظام يوفر لكل عملية ثلاث قنوات معلومات على الأقل "للاستخدام":

  • ستدين - الإدخال القياسي؛
  • STDOUT - الإخراج القياسي؛
  • STDERR – خطأ قياسي.

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

في الأنظمة المشابهة لنظام UNIX، وفقًا لنموذج الإدخال/الإخراج. يتم تعيين قيمة عددية كرقم لكل قناة من قنوات المعلومات. ومع ذلك، للوصول الآمن. إلى القنوات المذكورة أعلاه. الأرقام الدائمة محجوزة لهم - 0 و1 و2 لـ STDIN وSTDOUT وSTDERR، على التوالي. أثناء تنفيذ العمليات، تتم قراءة البيانات المدخلة عبر STDIN. عبر لوحة المفاتيح، من إخراج عملية أخرى، ملف، إلخ. وإخراج البيانات (عبر STDOUT)، وكذلك بيانات الخطأ (عبر STDERR). يتم عرضها على الشاشة، في ملف، عند الإدخال (بالفعل من خلال STDIN لعملية أخرى) في برنامج آخر.

لتغيير اتجاه قنوات المعلومات وربطها بالملفات هناك تعليمات خاصة على شكل رموز<, >و >>. لذلك، على سبيل المثال، التعليمات< можно заставить направить процессу по STDIN содержимое файла. А с помощью инструкции >تستخدم العملية STDOUT لنقل بيانات الإخراج إلى ملف، والذي يحل محل محتويات الملف الموجود بالكامل. إذا كان مفقودا، سيتم إنشاؤه. تقوم التعليمة >> بنفس الشيء مثل التعليمة >، ولكنها لا تقوم بالكتابة فوق الملف، ولكنها تقوم بإلحاق الإخراج بنهاية الملف. لدمج التدفقات (أي لتوجيهها إلى نفس الوجهة) STDOUT وSTDERR، تحتاج إلى استخدام البناء >&. لتوجيه أحد التدفقات، على سبيل المثال STDERR، إلى موقع منفصل، هناك تعليمات 2>.

لربط قناتين معا. على سبيل المثال، عندما تحتاج إلى توجيه مخرجات أحد الأوامر إلى مدخلات أمر آخر. يجب عليك استخدام التعليمات (الرمز) "|" لهذا الغرض. وهو ما يعني العملية المنطقية "أو". ومع ذلك، في سياق ربط الخيط، لا يهم هذا التفسير، والذي غالبًا ما يربك المبتدئين. وبفضل هذه الإمكانات، يمكن إنشاء مسارات أوامر كاملة. وهذا يجعل العمل في قذائف الأوامر فعالاً للغاية.

الإخراج إلى الملف

قم بتوجيه إخراج الأمر واكتب هذا الإخراج إلى ملف /tmp/somemessage:

$ echo "هذه رسالة اختبارية" > /tmp/somemessage

في هذه الحالة، كأمر يتم إعادة توجيه البيانات منه (عبر STDOUT) في شكل نص " هذايكونأامتحانتدليك"هي أداة الصدى. ونتيجة لذلك، سيتم إنشاء ملف /tmp/somemessage، حيث سيكون هناك إدخال "هذه رسالة اختبارية". إذا لم يتم إنشاء الملف، فسيتم إنشاؤه؛ وإذا تم إنشاؤه، فسيتم الكتابة فوق جميع البيانات الموجودة فيه. إذا كنت بحاجة إلى إلحاق الإخراج بنهاية الملف، فستحتاج إلى استخدام عامل التشغيل ">>".

$ echo "هذه رسالة اختبارية" >> /tmp/somemessage $ cat /tmp/somemessage هذه رسالة اختبارية هذه رسالة اختبارية

كما نرى من المثال، أضاف الأمر الثاني سطرًا إلى نهاية الملف.

استرجاع البيانات من ملف

يوضح المثال التالي إعادة توجيه تسجيل الدخول:

$ mail -s "اختبار البريد" جون< /tmp/somemessage

على الجانب الأيمن من الأمر (بعد الرمز<) находится файл-источник /tmp/somemesage, содержимое которого перенаправляется в утилиту mail (через STDIN), которая в свою очередь, имеет в качестве собственных параметров заголовок письма и адресата (john).

أمثلة أخرى

يوضح المثال التالي لماذا يكون من المفيد في بعض الأحيان فصل التدفقات عن القناتين STDIN وSTDERR:

$ تجد / -اسم النواة 2> /dev/null

الحقيقة هي أن الأمر find / -name core سوف "ينثر" رسائل الخطأ، ويرسلها افتراضيًا إلى نفس مكان نتائج البحث. وهذا هو، إلى محطة وحدة التحكم، الأمر الذي سيؤدي إلى تعقيد تصور المستخدم للمعلومات بشكل كبير. لأن النتائج التي تبحث عنها ستضيع بين رسائل الخطأ العديدة المتعلقة بوضع الوصول. يؤدي البناء 2>/dev/null إلى إرسال رسائل خطأ (باتباع قناة STDERR ذات الرقم المحجوز 2) إلى الجهاز الوهمي /dev/null، مما يترك نتائج البحث فقط في المخرجات.

$ find / -name core > /tmp/corefiles 2> /dev/null

هنا يقوم البناء > /tmp/corefiles بإعادة توجيه إخراج أداة البحث المساعدة (عبر أنبوب STDOUT) إلى الملف /tmp/corefiles. تتم تصفية رسائل الخطأ إلى /dev/null، بدلاً من الظهور في مخرجات الوحدة الطرفية لوحدة التحكم بالأوامر.

لربط قنوات مختلفة لأوامر مختلفة:

$ fsck --مساعدة | دريب م

م لا تتحقق من أنظمة الملفات المثبتة

سيقوم هذا الأمر بطباعة السطر (أو السطور) الذي يحتوي على الحرف "M" من صفحة المساعدة السريعة الخاصة بالأداة المساعدة. يعد هذا مناسبًا جدًا عندما تحتاج إلى عرض المعلومات التي تهمك فقط. في هذه الحالة، تتلقى الأداة المساعدة grep الإخراج (باستخدام التعليمات |) من الأمر fsck --help. وبعد ذلك، وفقًا للنمط "M"، يتم التخلص من كل ما هو غير ضروري.

إذا كنت تريد تنفيذ الأمر التالي في المسار فقط بعد اكتمال الأمر السابق بشكل كامل وبنجاح، فيجب عليك استخدام التعليمات &&، على سبيل المثال:

$ lpr /tmp/t2 && rm /tmp/page1

سيقوم هذا الأمر بحذف الملف /tmp/page1 فقط عندما يتم إرسال محتوياته من قائمة انتظار الطباعة. لتحقيق التأثير المعاكس، أي عندما تحتاج إلى تنفيذ الأمر التالي في المسار فقط بعد فشل الأمر السابق (فشل بسبب خطأ برمز غير صفري)، يجب عليك استخدام البناء ||.

عندما يكون من الصعب فهم سطر من التعليمات البرمجية يتضمن مسار أوامر طويل جدًا، يمكنك تقسيمه إلى مكوناته المنطقية سطرًا تلو الآخر باستخدام حرف الشرطة المائلة العكسية "\":

$ cf --preserve --recursive /etc/* /spare/backup \ || صدى "خطأ في النسخ الاحتياطي"

يمكن دمج الأوامر الفردية التي يجب تنفيذها واحدًا تلو الآخر في سطر واحد، مفصولة بحرف النقطتين ";"::

إذا وجدت خطأ، يرجى تحديد جزء من النص والنقر عليه السيطرة + أدخل.

نظام الإدخال والإخراج في لينكس.

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

يتوافق كل جهاز متصل (محطة، أقراص، طابعة، إلخ) مع ملف خاص واحد على الأقل. يتم تخزين معظم هذه الملفات الخاصة في الدليل /dev:
$ قرص مضغوط / ديف
$ ليرة سورية -ل
لوحة تحكم نظام النعل
أجزاء dsk على القرص
القرص المرن fd0 1
ذاكرة الذاكرة
طابعة ليرة لبنانية
lr0 المنفذ المتوازي 0
. . .
الجزء الجذر الموجود على القرص لنظام الملفات الجذر
مبادلة جزء المبادلة
syscon الاسم البديل لوحدة التحكم
systty هو اسم آخر لوحدة تحكم النظام
دليل المصطلحات للمحطات الطرفية
المنفذ التسلسلي ttyS0 0 (COM1)
. . .

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

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

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

يمكنك إنشاء أنظمة ملفات متعددة على قرص واحد. تستخدم بعض الأنظمة نظام ملفات واحدًا لكل قرص، بينما يستخدم البعض الآخر عدة أنظمة. يمكن إنشاء نظام ملفات جديد باستخدام الأمر mkfs (إنشاء نظام الملفات). على سبيل المثال، التعبير # /sbin/mkfs /dev/dsk/fl1 512 يعني: إنشاء قرص مرن ب: بحجم 512 قطعة.

اختياريًا، يمكنك تحديد حجم نظام الملفات في الكتل وعدد العقد i (أي الحد الأقصى لعدد الملفات التي يمكن تخزينها في نظام الملفات). بشكل افتراضي، عدد العقد i يساوي عدد الكتل مقسومًا على أربعة. الحد الأقصى لعدد عقد i لكل نظام ملفات هو 65000 إذا كنت تحتاج لسبب ما إلى أكثر من 65000 عقدة i على القرص، فيجب عليك إنشاء نظامي ملفات أو أكثر على هذا القرص.

يمكن إرفاق (تثبيت) أي نظام ملفات بشجرة دليل مشتركة في أي نقطة فيه. على سبيل المثال، الدليل / هو الدليل الجذر للنظام، بالإضافة إلى أنه أساس نظام الملفات الذي يتم تثبيته دائمًا. يقع الدليل /usr1 في الدليل /، ولكنه في هذه الحالة هو نظام ملفات منفصل عن نظام الملفات الجذر، حيث أن جميع الملفات الموجودة فيه موجودة على جزء منفصل من القرص أو على قرص منفصل تمامًا. نظام الملفات /usr1 هو نظام الملفات المثبت - الجذر عند النقطة التي يوجد فيها الدليل /usr1 في التسلسل الهرمي العام (الشكلان 1 و2).

أرز. 1. نظام الملفات من قبل
تركيب /dev/dsk/os1

أرز. 2. نظام الملفات بعد
جبل /dev/dsk/os1 كـ /usr/

لتركيب نظام ملفات، استخدم الأمر /sbin/mount. يسمح هذا الأمر بوضع نظام الملفات المحدد في أي مكان في بنية الدليل الموجودة:
#/sbin/mount/dev/dsk/osl/usr1 يتصاعد /dev/dsk/osl إلى /usr1
#/sbin/mount/dev/dsk/flt/a يتصاعد /dev/dsk/flt إلى /a

إذا كنت تريد تحميل نظام ملفات على الأقراص التي تحتاج إلى الحماية ضد الكتابة بحيث يكون النظام للقراءة فقط، فأنت بحاجة إلى إضافة الخيار -r إلى الأمر /sbin/mount.
يجب أن يكون الدليل الذي تم تثبيت نظام الملفات عليه فارغًا حاليًا، حيث لن يكون من الممكن الوصول إلى محتوياته أثناء تثبيت نظام الملفات.

للحصول على معلومات حول أنظمة الملفات المثبتة، على سبيل المثال، على نظام LINUX، يمكنك استخدام الأمر /sbin/mount بدون وسيطات (الشكل 3).

أرز. 3.

يطبع هذا الأمر الدليل الذي تم تثبيت نظام الملفات عليه (مثل usrl)، وجهاز /dev الموجود عليه، والساعة والتاريخ الذي تم تثبيته فيه. لإلغاء تحميل نظام الملفات، استخدم الأمر /sbin/umount، الذي له التأثير المعاكس لأمر التحميل. فهو يحرر نظام الملفات ويخرجه بالكامل من بنية الدليل، بحيث لا يمكن الوصول إلى جميع الملفات والأدلة الخاصة به:
# /sbin/umount /b
# /sbin/umount /dev/dsk/0s2

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

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

بالنسبة للأجهزة الفعلية في LINUX، هناك أدلة dsk وrdsk، والتي تحتوي على ملفات تتوافق مع أجهزة القرص. عادة ما تكون أسماء الملفات في هذه الدلائل هي نفسها والفرق الوحيد بينهما هو أن دليل rdsk يحتوي على أجهزة قرص ذات وصول خاص (خام)، والتي تستخدمها بعض أجهزة النظام للوصول بشكل أسرع إلى القرص. يحتوي دليل dsk النموذجي على الأجهزة التالية:
$1s /dev/dsk
0s0 1s0 c0t0d0s0 c0tld0s0 f0 f05q f13dt fld8d
0sl 1sl c0t0d0sl c0tld0sl f03d f05qt f13h fld8dt
0s2 1s2 c0t0d0s2 c0tld0s2 f03dt f0d8d f13ht fld8t
. . .
$

في نظام LINUX، يتم تقسيم أجهزة القرص بشكل منطقي إلى أقسام، على غرار الأقسام المحددة في Partition Table MasterBoot MS DOS. تتوافق الملفات 0s1 و0s2 و0s3 وما إلى ذلك مع الأقسام الأول والثاني والثالث وما إلى ذلك من رقم القرص 0. وتتوافق الملفات 1s0 و1sl و1s2 وما إلى ذلك مع الأقسام الأول والثاني والثالث وما إلى ذلك. إذا كان النظام يحتوي على المزيد من الأقراص، فسيتم ترقيم الأقسام ns0، nsl، وما إلى ذلك لكل رقم قرص n.

تستخدم الأنظمة التي تحتوي على عدد كبير من أجهزة الأقراص نظام الترقيم التالي:
مع قسم تحكم القرص d

حيث وحدة التحكم هي رقم وحدة التحكم بالقرص؛ القرص - رقم القرص؛ القسم - رقم قسم القرص.
وبالتالي، فإن 0s0 عادة ما يعادل c0t0d0s0، و0sl إلى c0t0d0sl، وأسماء الأقسام المكونة من ثلاثة أحرف هي ببساطة اختصار لرقم وحدة تحكم القرص 0.

تحدد الملفات التي تبدأ أسماؤها بالحرف f أنواعًا مختلفة من الأقراص المرنة. يحتوي دليل rmt على ملفات موجودة على أجهزة الأشرطة الممغنطة:
$1s /dev/rmt
c0s0 cls0 c3s0 ntape ntapel tape tapel

تحدد الملفات c0s0 وcls0 وc2s0 وc3s0 أربعة أجهزة تخزين لأشرطة الكاسيت. تحدد ملفات الشريط والشريط أجهزة تخزين مغناطيسية ذات بكرتين. الملفات التي تبدأ أسماؤها بـ n تنتمي إلى نفس الأجهزة، فقط الشريط لا يمكن إرجاعه بعد الاستخدام، بينما يؤدي استخدام ملفات أخرى إلى إرجاع الشريط عند انتهاء تشغيل البرنامج الذي يستخدمه.

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

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

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

في هذه المقالة سننظر في كيفية إجراء إعادة توجيه دفق الإدخال/الإخراج في Linux، وما هي العوامل المستخدمة لهذا، وأين يمكن استخدام كل هذا.

جميع الأوامر التي ننفذها تعيد لنا ثلاثة أنواع من البيانات:

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

في Linux، تعتبر جميع المواد ملفات، بما في ذلك تدفقات الإدخال/الإخراج في Linux - الملفات. يحتوي كل توزيع على ثلاثة ملفات دفق رئيسية يمكن للبرامج استخدامها، ويتم تعريفها بواسطة الصدفة ويتم تحديدها بواسطة رقم واصف الملف الخاص بها:

  • ستدين أو 0- يرتبط هذا الملف بلوحة المفاتيح وتستقبل معظم الأوامر البيانات لتعمل من هنا؛
  • ستدوت أو 1- هذا هو الإخراج القياسي، ويرسل البرنامج جميع نتائج عمله هنا. وهو مرتبط بالشاشة، أو بشكل أكثر دقة، بالمحطة التي يعمل عليها البرنامج؛
  • ستدير أو 2- يتم إخراج كافة رسائل الخطأ إلى هذا الملف.

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

إعادة توجيه الإخراج إلى الملف

كل شيء بسيط جدا. يمكنك إعادة توجيه الإخراج إلى ملف باستخدام الرمز >. على سبيل المثال، لنحفظ مخرجات الأمر العلوي:

أعلى مليار 5> top.log

يؤدي الخيار -b إلى تشغيل البرنامج في الوضع الدفعي غير التفاعلي، ويكرر الخيار n - العملية خمس مرات للحصول على معلومات حول جميع العمليات. الآن دعونا نرى ما حدث مع القطة:

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

أعلى مليار 5 >> top.log

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

أعلى مليار 5 1>top.log

إعادة توجيه الأخطاء إلى الملف

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

يمكنك إعادة توجيه الخطأ القياسي إلى ملف مثل هذا:

ls -l /root/ 2> ls-error.log
$ القط ls-error.log

لإلحاق البيانات بنهاية الملف، استخدم نفس الرمز:

ls -l /root/ 2 >>ls-error.log

إعادة توجيه الإخراج القياسي والأخطاء إلى الملف

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

ls -l /root/ >ls-error.log 2>&1

أولاً، سيتم إرسال مخرجات الأمر ls إلى ملف ls-error.log باستخدام حرف إعادة التوجيه الأول. ثم سيتم إرسال جميع الأخطاء إلى نفس الملف. الطريقة الثانية أبسط:

ls -l /root/ &> ls-error.log

يمكنك أيضًا استخدام الإلحاق بدلاً من إعادة الكتابة:

ls -l /root/ &>> ls-error.log

الإدخال القياسي من الملف

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

قطة

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

نوع فرز.الإخراج

وبالتالي، فإننا نعيد توجيه الإدخال/الإخراج إلى Linux بأمر واحد.

استخدام الأنفاق

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

ليرة سورية -lt | الرأس - ن 5

باستخدام الأداة المساعدة xargs، يمكنك دمج الأوامر بحيث يتم تمرير الإدخال القياسي كمعلمات. على سبيل المثال، لننسخ ملفًا واحدًا إلى عدة مجلدات:

اختبار الصدى/tmp/ | xargs -n 1 cp -v testfile.sh

هنا يحدد الخيار -n 1 أنه يجب توفير معلمة واحدة فقط لكل أمر، ويسمح الخيار -v لـ cp بطباعة معلومات مفصلة حول الحركات. أمر آخر مفيد في مثل هذه الحالات هو نقطة الإنطلاق. يقرأ البيانات من الإدخال القياسي ويكتب إلى الإخراج أو الملفات القياسية. على سبيل المثال:

صدى "اختبار تشغيل المحملة" | ملف المحملة1

وبالاشتراك مع أوامر أخرى، يمكن استخدامها لإنشاء تعليمات معقدة متعددة الأوامر.

الاستنتاجات

في هذه المقالة، قمنا بتغطية أساسيات إعادة توجيه دفق الإدخال/الإخراج في Linux. أنت الآن تعرف كيفية إعادة توجيه الإخراج إلى ملف Linux أو الإخراج من ملف. انها بسيطة جدا ومريحة. إذا كان لديك أي أسئلة، اسأل في التعليقات!

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

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

ثلاثة تيارات الإدخال/الإخراج القياسية

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

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

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

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

كما خمنت على الأرجح، فإن إعادة توجيه الإدخال/الإخراج تعني العمل مع التدفقات الموضحة أعلاه وإعادة توجيه البيانات حيث يحتاجها المبرمج. ويتم ذلك باستخدام الرموز > و< в различных комбинациях, применение которых зависит от того, куда, в итоге, должны попасть перенаправляемые данные.

إعادة توجيه الإخراج القياسي

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

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

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

نظرًا لأن لدينا بالفعل ملفًا يحتوي على التاريخ، فسيكون من المبرر تمامًا إلحاق البيانات المستلمة من Traceroute بهذا الملف. للقيام بذلك، تحتاج إلى استخدام رمزين >، يتم وضعهما واحدًا تلو الآخر. ونتيجة لذلك، فإن الأمر الجديد الذي يعيد توجيه الإخراج إلى ملف، ولكن لا يقوم بالكتابة فوقه، ولكنه يضيف بيانات جديدة بعد القديم، سيبدو كما يلي:

$ Traceroute google.com >> date.txt
الآن كل ما يتعين علينا القيام به هو تغيير اسم الملف إلى شيء ذي معنى أكبر باستخدام الأمر mv، الذي يأخذ اسم الملف الأصلي باعتباره الوسيط الأول واسم الملف الجديد باعتباره الوسيط الثاني:

$ MV date.txt Trace1.txt

إعادة توجيه الإدخال القياسي

باستخدام علامة< вместо >يمكننا إعادة توجيه الإدخال القياسي عن طريق استبداله بمحتويات الملف.

لنفترض أن لدينا ملفين: list1.txt وlist2.txt، يحتوي كل منهما على قائمة من السلاسل غير المصنفة. تحتوي كل قائمة على عناصر فريدة لها، ولكن بعض العناصر الموجودة في القائمة هي نفسها. يمكننا العثور على الأسطر الموجودة في القائمتين الأولى والثانية باستخدام الأمر comm، ولكن قبل استخدامه يجب فرز القوائم.

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

حتى نتمكن من استخدام الأمر< для перенаправления отсортированной версии каждого файла команде comm . Вот что у нас получилось:

$ بالاتصالات<(sort list1.txt) <(sort list2.txt)
الأقواس هنا لها نفس المعنى كما في الرياضيات. تقوم الصدفة بمعالجة الأوامر الموجودة بين قوسين أولاً، ثم كل شيء آخر. في مثالنا، يتم فرز السطور من الملفات أولاً، ثم يتم تمرير النتيجة إلى الأمر comm، الذي يقوم بعد ذلك بعرض نتيجة مقارنة القوائم.

إعادة توجيه دفق الخطأ القياسي

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

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

عادةً، عندما يقوم مستخدم عادي بتشغيل أمر البحث عبر النظام بأكمله، فإنه سيُخرج البيانات المفيدة والأخطاء إلى الجهاز. في الوقت نفسه، عادة ما يكون هناك عدد أكبر من الأخير مقارنة بالأول، مما يجعل من الصعب العثور على ما تحتاجه في إخراج الأمر. حل هذه المشكلة بسيط للغاية: ما عليك سوى إعادة توجيه تدفق الأخطاء القياسي إلى ملف باستخدام الأمر 2> (تذكر أن 2 هو واصف لتدفق الأخطاء القياسي). ونتيجة لذلك، لن يظهر على الشاشة سوى ما يرسله الأمر إلى الإخراج القياسي:

$ العثور على / -اسم لاسلكي 2> أنكرت.txt
ماذا لو كنت بحاجة إلى حفظ نتائج أمر ما في ملف منفصل دون خلط هذه البيانات بمعلومات الخطأ؟ بما أنه يمكن إعادة توجيه التدفقات بشكل مستقل عن بعضها البعض، فيمكننا إضافة أمر لإعادة توجيه الإخراج القياسي إلى ملف في نهاية البناء الخاص بنا:

$ العثور على / -اسم لاسلكي 2> أنكرت.txt> وجدت.txt
مع العلم أن قوس الزاوية الأول يأتي بالرقم - 2>، والثاني بدونه. وذلك لأن الإخراج القياسي له مقبض 1، والأمر > يهدف إلى إعادة توجيه الإخراج القياسي إذا لم يتم تحديد رقم مقبض.

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

$ البحث عن / - الاسم اللاسلكي &> results.txt

نتائج

قمنا هنا بتغطية أساسيات آلية إعادة توجيه مؤشر الترابط في مترجم سطر أوامر Linux فقط، ولكن حتى القليل الذي تعلمته اليوم يمنحك إمكانيات غير محدودة تقريبًا. وبالمناسبة، مثل كل شيء آخر متعلق بالعمل في المحطة، فإن إتقان إعادة توجيه الدفق يتطلب ممارسة. ولذلك، نوصي بأن تبدأ تجاربك الخاصة باستخدام > و< .

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

على الرغم من أن البرامج تتعامل عادةً مع التدفقات القياسية للإدخال/الإخراج، كما ذكرنا، فإن الصدفة لديها تسهيلات خاصة لإعادة توجيه الإدخال/الإخراج.

5.5.1 المشغلين >،< и >>

يتم استخدام الرموز " للإشارة إلى إعادة التوجيه > ", "< " و " >> ". الاستخدام الأكثر شيوعًا هو إعادة توجيه إخراج الأمر إلى ملف. فيما يلي مثال:

$ ls -l > /home/jim/dir.txt

سيحفظ هذا الأمر في الملف /home/jim/dir.txt قائمة بالملفات والأدلة الفرعية للدليل الذي كان موجودًا في وقت تنفيذ الأمر ليرة سورية; علاوة على ذلك، إذا كان الملف المحدد غير موجود، فسيتم إنشاؤه؛ إذا كان موجودا، سيتم الكتابة فوقه؛ إذا كنت تريد إلحاق مخرجات الأمر بنهاية ملف موجود، فبدلاً من الرمز الذي تحتاجه > يستخدم >> . وفي هذه الحالة وجود مسافات قبل أو بعد الأحرف > أو >> غير مادي ويخدم فقط لراحة المستخدم.

يمكنك إرسال الإخراج ليس فقط إلى ملف، ولكن أيضًا إلى إدخال أمر آخر أو إلى جهاز (مثل الطابعة). لذلك، لحساب عدد الكلمات في الملف /home/jim/report.txt، يمكنك استخدام الأمر التالي:

$ cat /home/jim/report.txt > wc -w

ولطباعة الملف استخدم الأمر:

$ cat /home/jim/report.txt > lpr

كما ترون، المشغل > يعمل على إعادة توجيه دفق الإخراج. فيما يتعلق بتدفق الإدخال، يتم تنفيذ وظيفة مماثلة من قبل المشغل < . يمكن إعادة كتابة الأمر المثال أعلاه لحساب عدد الكلمات في ملف معين على النحو التالي (لاحظ عدم وجود الأمر قطة):

$ مرحاض -ث< /home/jim/report.txt

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

يرجع ذلك إلى حقيقة أن الرموز < , > و >> تعمل على التدفقات القياسية، ويمكن استخدامها ليس فقط بالطريقة المعتادة، كما يحدث عادةً، ولكن أيضًا بطريقة مختلفة قليلاً. لذلك، الأوامر التالية متكافئة:

$ القط> ملف

$cat>ملف

$>ملف القط

$> ملف القط

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

$ملف 1 > ملف 2

الحصول على نسخة من الملف. لكن هذا لا يقلل من أهمية هذه الآلية، لأن الخيوط القياسية محددة لأي أمر. في هذه الحالة، يمكنك إعادة توجيه ليس فقط المدخلات والمخرجات القياسية، ولكن أيضًا التدفقات الأخرى. للقيام بذلك، حدد رقم الدفق المعاد توجيهه قبل رمز إعادة التوجيه. الإدخال القياسي stdin هو الرقم 0، والإخراج القياسي stdout هو الرقم 1، ورسالة الخطأ القياسية stderr هي الرقم 2. أي أن التنسيق الكامل لأمر إعادة التوجيه هو (تذكر أن المسافات القريبة > اختيارية):

الأمر ن>م

أين نو م- أعداد التدفقات القياسية (0،1،2) أو أسماء الملفات. استخدام الرموز في بعض الحالات < , > و >> دون تحديد رقم القناة أو اسم الملف ممكن فقط لأنه يتم استبدال 1 افتراضيًا بالرقم المفقود، أي الإخراج القياسي. نعم المشغل > دون تحديد عدد يتم تفسيره على أنه 1 > .

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

الأمر N> &M

هذا الأمر يعني أن إخراج رقم القناة نيتم إرساله إلى الإخراج القياسي ويتم تكراره في رقم القناة م. على سبيل المثال، لتكرار رسائل الخطأ على الإخراج القياسي، تحتاج إلى إعطاء الأمر 2>&1, بينما 1>&2 يكرر stdout إلى stderr. هذه الميزة مفيدة بشكل خاص عند إعادة توجيه الإخراج إلى ملف، حيث أننا بعد ذلك نرى الرسائل على الشاشة ونحفظها في الملف.

5.5.2 المشغل |

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

$ قطة ماي فايل | grep لينكس | مرحاض -ل

هذا السطر يعني أن إخراج الأمر هو قطة، أي سيتم إرسال النص من الملف myfile إلى إدخال الأمر grep، والذي سيتم تمييز الأسطر التي تحتوي على كلمة "Linux" فقط. إخراج الأمر grepوسيتم، بدوره، توجيهه إلى إدخال الأمر مرحاض -ل، والذي سيحسب عدد هذه الخطوط.

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

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

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

5.5.3 المرشحات

المثال الأخير أعلاه (مع الأمر grep) يمكن استخدامها لتوضيح مفهوم مهم آخر، وهو برنامج التصفية. المرشحات هي أوامر (أو برامج) تأخذ دفق بيانات الإدخال، وتجري بعض التحويلات عليه، وتخرج النتيجة إلى الإخراج القياسي (من حيث يمكن إعادة توجيهها إلى مكان آخر وفقًا لتقدير المستخدم). تتضمن أوامر التصفية الأوامر المذكورة أعلاه قطة، أكثر، أقل، مرحاض، cmp، فرق, وكذلك الأوامر التالية

الجدول 5.1.أوامر التصفية

فريق

وصف قصير

grep, com.fgrep, egrep

يبحث في ملف الإدخال أو الإدخال القياسي عن الأسطر التي تحتوي على النمط المحدد ويكتبها في الإخراج القياسي

يستبدل جميع الأحرف الموجودة في دفق الإدخال المدرج في القائمة المحددة بالأحرف المقابلة من القائمة المحددة الثانية

إتصالات

يقارن ملفين سطرًا تلو الآخر ويخرج 3 أعمدة إلى الإخراج القياسي: الأول - الأسطر التي تظهر فقط في ملف واحد، والثاني - الأسطر التي تحدث فقط في الملف الثاني: والثالث - الأسطر الموجودة في كلا الملفين

يقوم بتنسيق ملف نصي أو محتويات الإدخال القياسي للطباعة

سيد

محرر سلسلة يستخدم لإجراء بعض التحويلات على دفق بيانات الإدخال (مأخوذ من ملف أو من الإدخال القياسي)

مرشح خاص هو الأمر قمزة، الذي "يقسم" دفق الإدخال، ويوجهه من جانب إلى الإخراج القياسي، ومن الجانب الآخر إلى الملف (الذي يجب تحديد اسمه). ومن السهل أن نرى ذلك من خلال عمله الأمر قمزةعلى غرار عامل إعادة التوجيه 1>&ملف.

يمكن توسيع إمكانيات المرشحات بشكل كبير من خلال استخدام التعبيرات العادية، والتي تتيح لك تنظيم البحث، على سبيل المثال، باستخدام أنماط مختلفة، وغالبًا ما تكون معقدة للغاية.

يمكن أن يقال الكثير عن إعادة التوجيه والمرشحات. لكن هذه المادة متوفرة في معظم الكتب الخاصة بنظامي UNIX وLinux، على سبيل المثال Petersen [P1.4] وKelly-Bootle [P1.8]. لذلك سنقتصر على ما قيل وننتقل إلى النظر في ما يسمى بالبيئة أو البيئة التي خلقتها القذيفة.

V. Kostromin (كوس في rus-linux dot net) - 5.5. إعادة توجيه الإدخال/الإخراج والقنوات والمرشحات