Stderr এবং stdout উভয়ই / dev / নাল / / bin / sh এর সাথে পুনঃনির্দেশ করুন


61

উভয়ই পুনঃনির্দেশিত করতে stdoutএবং কোনও সাফল্য ছাড়াই আমি বিভিন্ন ধরণের চেষ্টা করেছি । আমার প্রায় পুরো জীবন চালানো বাশ আমার সাথে এই সমস্যাটি কখনও আসেনি, তবে বিএসডিতে একবারের জন্য আমি আটকে আছি ।stderr/dev/null/bin/sh

আমি যা চেষ্টা করেছি:

if ls ./python* 2> /dev/null; then
    echo found Python
fi

... যা কাজ করে; পাইথন উপস্থিত না থাকলে এটি ls এর ত্রুটি বার্তাগুলিকে নিঃশব্দ করবে। যাইহোক, যদি python.tgzউপস্থিত থাকে তবে আউটপুটযুক্ত একটি লাইন এটির মতো দেখায়:

# ./test.sh
./python-2.7.3p1.tgz

আমি চেষ্টা করেছিলাম:

if ls ./python* &> /dev/null; then
    echo found Python
fi

এবং

if ls ./python* 2>1 > /dev/null; then
    echo found Python
fi

এবং

if ls ./python* > /dev/null; then
    echo found Python
fi

কিছুই আসলে কাজ করে না। আমি কেবলমাত্র আউটপুটগুলির মধ্যে একটির পুনর্নির্দেশ করতে পারি, একই সাথে উভয়ই নয়।

উত্তর:


102

এটি যে কোনও পোস্টিক্স-সামঞ্জস্যপূর্ণ শেলটিতে কাজ করবে:

ls good bad >/dev/null 2>&1

স্ট্যাডারে নকল করার আগে আপনাকে প্রথমে স্টডআউট পুনর্নির্দেশ করতে হবে ; আপনি যদি প্রথমে এটির সদৃশ করেন তবে স্ট্যাডার কেবল স্টডআউটটি মূলত কী নির্দেশ করেছেন।

বাশ , জেডএস এবং অন্যান্য কয়েকটি শেল শর্টকাট সরবরাহ করে

ls good bad &>/dev/null

যা কমান্ড-লাইনে সুবিধাজনক তবে স্ক্রিপ্টগুলিতে এড়ানো উচিত যা পোর্টেবল হতে পারে।


1
আসলে, আমি বোর্ন শেল ম্যানুয়ালটি পড়েছি read এতে বলা হয়েছে যে পরবর্তী সংস্করণগুলি সিনট্যাক্সটি /bin/shবাস্তবায়িত করেছে &>/dev/null, স্পষ্টতই তাই নয় বা আমার একটি পুরানো সংস্করণ রয়েছে (যা আমি
কোনওভাবেই

8
@ টরক্সেড, ওপেনবিএসডি পিডিএক্স এর shউপর ভিত্তি করে। আজকাল আর কোনও বোর্ন শেল নেই। cshচালু >&উপলব্ধ zshbashবেছে নেওয়া হয়েছে &>(এখন এটিও সমর্থিত zshএবং কিছু pdkshডেরাইভেটিভস) যদিও এটি স্পষ্টভাবে পসিক্স সম্মতি ভঙ্গ করে যেহেতু foo &> fileপুরোপুরি বৈধ পসিক্স সিনট্যাক্স যার অর্থ সম্পূর্ণ ভিন্ন।
স্টাফেন চেজেলাস

3
@ স্টাফেনচাজেলাস (...) যার অর্থ সম্পূর্ণ ভিন্ন কিছু আপনি আমাকে এই ক্ষেত্রে এর অর্থ কী তা ভাবতে ছাড়লেন ... :)
পিয়োটার ডব্রোগস্ট

4
@ পাইওটারডব্রোগস্ট, foo &> fileএর মতো foo & > fileবা foo & : > fileএটি পটভূমিতে ফু চালানো হয় এবং বিনা নির্দেশে লেখার জন্য ফাইল উন্মুক্ত করা হয় (এরকম ব্যবহারের সম্ভাবনা নেই)।
স্টাফেন চেজেলাস

5
@PiotrDobrogost, >&আদর্শ নয় আর তা হয় তাকে সাথে সংঘাত যেমন >&2, >&-অপারেটর। zshএটি সিএসএস ব্যবহারকারীদের সুবিধার্থে যুক্ত করেছে (সিএসএস নেই >&2)। এগুলি কেবল সিনট্যাকটিক চিনি, কেবলমাত্র এটি ব্যবহার করুন > file 2>&1যা মানক এবং পোর্টেবল (বোর্নের মতো শেলগুলি)।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.