linux - সময - হার্টের যোগ ব্যায়াম
কিভাবে আমি স্ট্যাডাউট এবং স্টেডারর উভয়কে পুনঃনির্দেশিত করতে এবং বাশের সাথে একটি ফাইলে যোগ করতে পারি? (4)
আপনার বাশ সংস্করণের উপর নির্ভর করে এটি করার দুটি উপায় রয়েছে।
ক্লাসিক এবং পোর্টেবল ( বাশ প্রাক -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
Bash এ একটি truncated ফাইলে stdout পুনঃনির্দেশ করার জন্য, আমি ব্যবহার করতে জানি:
cmd > file.txt
Bash এ stdout পুনঃনির্দেশ করার জন্য, একটি ফাইল যুক্ত করার জন্য, আমি ব্যবহার করতে জানি:
cmd >> file.txt
Stdout এবং stderr উভয় একটি truncated ফাইলে পুনঃনির্দেশিত করতে, আমি ব্যবহার করতে জানি:
cmd &> file.txt
আমি কিভাবে একটি ফাইল যুক্ত stdout এবং stderr উভয় পুনঃনির্দেশিত করবেন? cmd &>> file.txt
আমার জন্য কাজ করে নি।
এই জরিমানা কাজ করা উচিত:
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