OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

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

تسمح لنا إعادة توجيه الإدخال / الإخراج بإعادة تحديد أين يذهب الإخراج القياسي. لإعادة توجيه الإخراج القياسي إلى ملف آخر بدلاً من الشاشة ، نستخدم عامل إعادة التوجيه ">" متبوعًا باسم الملف. لماذا نريد أن نفعل هذا؟ غالبًا ما يكون من المفيد تخزين إخراج الأمر في ملف. على سبيل المثال ، يمكننا إخبار الغلاف بإرسال ناتج ملف ls الأمر إلى الملف ليرة سورية-output.txt بدلاً من الشاشة:


[me @ linuxbox ~] $ ls -l / usr / bin> ls-output.txt

[me @ linuxbox ~] $ ls -l / usr / bin> ls-output.txt


هنا ، أنشأنا قائمة طويلة من / البيرة / بن الدليل وأرسل النتائج إلى الملف

ls-output.txt. دعنا نفحص الإخراج المعاد توجيهه للأمر:


[me @ linuxbox ~] $ ليرة سورية -l ليرة سورية-output.txt

-rw-rw-r-- 1 me 167878 2016-02-01 15:07 ls-output.txt

[me @ linuxbox ~] $ ليرة سورية -l ليرة سورية-output.txt

-rw-rw-r-- 1 me 167878 2016-02-01 15:07 ls-output.txt


حسن؛ ملف نصي جميل وكبير. إذا نظرنا إلى الملف بامتداد أقل، سنرى أن الملف

يحتوي الملف ls-output.txt بالفعل على النتائج من الأمر ls الخاص بنا:


[me @ linuxbox ~] $ أقل ls-output.txt

[me @ linuxbox ~] $ أقل ls-output.txt


الآن ، دعنا نكرر اختبار إعادة التوجيه ، لكن هذه المرة مع بعض التغيير. سنقوم بتغيير اسم الدليل إلى اسم غير موجود:



[me @ linuxbox ~] $ ls -l / bin / usr> ls-output.txt

ls: لا يمكن الوصول إلى / bin / usr: لا يوجد مثل هذا الملف أو الدليل

[me @ linuxbox ~] $ ls -l / bin / usr> ls-output.txt

ls: لا يمكن الوصول إلى / bin / usr: لا يوجد مثل هذا الملف أو الدليل


لقد تلقينا رسالة خطأ. هذا منطقي لأننا حددنا الدليل غير الموجود / بن / البيرة، ولكن لماذا تم عرض رسالة الخطأ على الشاشة بدلاً من إعادة توجيهها إلى الملف ليرة سورية-output.txt؟؟؟ الجواب هو أن ls البرنامج لا يرسل رسائل الخطأ الخاصة به إلى الإخراج القياسي. بدلاً من ذلك ، مثل معظم برامج Unix المكتوبة جيدًا ، فإنه يرسل رسائل الخطأ الخاصة به إلى الخطأ القياسي. نظرًا لأننا أعدنا توجيه الإخراج القياسي فقط وليس الخطأ القياسي ، فلا يزال يتم إرسال رسالة الخطأ إلى الشاشة. سنرى كيف

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


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



[me @ linuxbox ~] $ ليرة سورية -l ليرة سورية-output.txt

-rw-rw-r-- 1 me 0 2016-02-01 15:08 ls-output.txt

[me @ linuxbox ~] $ ليرة سورية -l ليرة سورية-output.txt

-rw-rw-r-- 1 me 0 2016-02-01 15:08 ls-output.txt


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



[me @ linuxbox ~] $ > ls-output.txt

[me @ linuxbox ~] $ > ls-output.txt


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

إذن ، كيف يمكننا إلحاق الإخراج المعاد توجيهه إلى ملف بدلاً من الكتابة فوق الملف من البداية؟ لذلك ، نستخدم عامل إعادة التوجيه ">>" ، مثل:



[me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt

[me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt


سيؤدي استخدام عامل التشغيل ">>" إلى إلحاق الإخراج بالملف. إذا لم يكن الملف موجودًا بالفعل ، فسيتم إنشاؤه تمامًا كما لو تم استخدام عامل التشغيل ">". دعونا نختبرها:



[me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [me @ linuxbox ~] $ ليرة سورية -l ليرة سورية-output.txt

-rw-rw-r-- 1 me 503634 2016-02-01 15:45 ls-output.txt

[me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [me @ linuxbox ~] $ ls -l / usr / bin >> ls-output.txt [me @ linuxbox ~] $ ليرة سورية -l ليرة سورية-output.txt

-rw-rw-r-- 1 me 503634 2016-02-01 15:45 ls-output.txt


كررنا الأمر ثلاث مرات مما أدى إلى إنشاء ملف إخراج أكبر بثلاث مرات.


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: