linux - সময - হার্টের যোগ ব্যায়াম




কিভাবে আমি স্ট্যাডাউট এবং স্টেডারর উভয়কে পুনঃনির্দেশিত করতে এবং বাশের সাথে একটি ফাইলে যোগ করতে পারি? (4)

Bash এ একটি truncated ফাইলে stdout পুনঃনির্দেশ করার জন্য, আমি ব্যবহার করতে জানি:

cmd > file.txt

Bash এ stdout পুনঃনির্দেশ করার জন্য, একটি ফাইল যুক্ত করার জন্য, আমি ব্যবহার করতে জানি:

cmd >> file.txt

Stdout এবং stderr উভয় একটি truncated ফাইলে পুনঃনির্দেশিত করতে, আমি ব্যবহার করতে জানি:

cmd &> file.txt

আমি কিভাবে একটি ফাইল যুক্ত stdout এবং stderr উভয় পুনঃনির্দেশিত করবেন? cmd &>> file.txt আমার জন্য কাজ করে নি।


আপনার বাশ সংস্করণের উপর নির্ভর করে এটি করার দুটি উপায় রয়েছে।

ক্লাসিক এবং পোর্টেবল ( বাশ প্রাক -4 ) উপায় হল:

cmd >> outfile 2>&1

একটি nonportable উপায়, বাশ 4 দিয়ে শুরু হয়

cmd &>> outfile

(এনালগ &> outfile )

ভাল কোডিং শৈলী জন্য, আপনি উচিত

  • পোর্টেবিলিটি একটি উদ্বেগ কিনা তা নির্ধারণ করুন (তারপরে ক্লাসিক ভাবে ব্যবহার করুন)
  • বাশ pre-4 এমনকি পোর্টেবিলিটি একটি উদ্বেগ কিনা তা নির্ধারণ করুন (তারপরে ক্লাসিক ভাবে ব্যবহার করুন)
  • আপনি কোন সিনট্যাক্স ব্যবহার করেন তা কোনও ব্যাপার নয়, একই স্ক্রিপ্টের মধ্যে এটি পরিবর্তন করবেন না (বিভ্রান্তি!)

আপনার স্ক্রিপ্ট ইতিমধ্যে #!/bin/sh (যদি কোনও ব্যাপার না থাকে বা না হোক) দিয়ে শুরু হয়, তাহলে Bash 4 সমাধান, এবং সাধারণভাবে যে কোনও Bash- নির্দিষ্ট কোডটি যাওয়ার উপায় নেই।

এছাড়াও মনে রাখবেন যে বাশ 4 &>> শুধুমাত্র ছোট বাক্য গঠন - এটি কোনও নতুন কার্যকারিতা বা এরকম কিছু উপস্থাপিত করে না।

সিনট্যাক্সটি এখানে বর্ণিত (পুনঃনির্দেশকরণ সিন্ট্যাক্সের পাশে): http://bash-hackers.org/wiki/doku.php/syntax/redirection#appending_redirected_output_and_error_output


এই জরিমানা কাজ করা উচিত:

your_command 2>&1 | tee -a file.txt

এটি file.txt এ সমস্ত লগ সংরক্ষণ করবে এবং সেইসাথে টার্মিনালে ডাম্প করবে।


বাশ 4 (পাশাপাশি ZSH 4.3.11):

cmd &>>outfile

শুধু বাক্সের বাইরে


ব্যাশে আপনি স্পষ্টভাবে বিভিন্ন ফাইলগুলিতে আপনার পুনঃনির্দেশগুলি উল্লেখ করতে পারেন:

cmd >log.out 2>log_error.out

যোগ করা হবে:

cmd >>log.out 2>>log_error.out




pipe