linux - ফাইলের সমস্ত আউটপুট পুনঃনির্দেশিত করুন




bash io-redirection (7)

আমি জানি যে লিনাক্সে স্ক্রীন থেকে আউটপুটটিকে একটি ফাইলে পুনঃনির্দেশিত করতে, আমি বা > tee ব্যবহার করতে পারি। যাইহোক, আমি নিশ্চিত নই যে কেন আউটপুট অংশ এখনও পর্দায় আউটপুট হয় এবং ফাইলটিতে লেখা হয় না।

ফাইল থেকে সব আউটপুট পুনঃনির্দেশিত করার একটি উপায় আছে কি?


COMMAND:

foo >> output.txt 2>&1

কন্টেন্ট প্রতিস্থাপন ছাড়া আউটপুট . txt ফাইল যোগ করে।


Osexp2003 এবং জা ...

পরিবর্তে নির্বাণ

&>> your_file.log

একটি লাইন পিছনে

crontab -e

আমি ব্যবহার করি

#!/bin/bash
exec &>> your_file.log

একটি BASH স্ক্রিপ্ট শুরুতে।

উপকারিতা: আপনার স্ক্রিপ্টের মধ্যে আপনার লগ সংজ্ঞা রয়েছে। গিট ইত্যাদি জন্য ভাল


এটা মান ত্রুটি হতে পারে। আপনি এটি পুনঃনির্দেশিত করতে পারেন:

... > out.txt 2>&1

এটি ব্যবহার করুন - "require command here" > log_file_name 2>&1

ইউনিক্স / লিনাক্সে পুনঃনির্দেশ অপারেটরের বিস্তারিত বিবরণ।

> অপারেটর সাধারণত আউটপুটটিকে একটি ফাইলে পুনঃনির্দেশিত করে তবে এটি একটি ডিভাইস হতে পারে। আপনি যোগ করতে >> ব্যবহার করতে পারেন।

যদি আপনি একটি নম্বর নির্দিষ্ট না করেন তবে স্ট্যান্ডার্ড আউটপুট স্ট্রিমটি ধরা হয় তবে আপনি ত্রুটিগুলি পুনঃনির্দেশ করতে পারেন

> file redirects stdout to file
1> file redirects stdout to file
2> file redirects stderr to file
&> file redirects stdout and stderr to file

/ dev / null হল নল ডিভাইস এটি আপনার যে কোনও ইনপুট নেয় এবং এটি ফেলে দেয়। এটি কোনো আউটপুট দমন করতে ব্যবহার করা যেতে পারে।


ব্যবহার করুন >> যোগ করার জন্য:

command >> file


যে অংশ stderr লেখা হয়, 2> এটি পুনঃনির্দেশিত ব্যবহার করুন। উদাহরণ স্বরূপ:

foo > stdout.txt 2> stderr.txt

অথবা যদি আপনি একই ফাইল করতে চান:

foo > allout.txt 2>&1

নোট: এটি (ba) sh তে কাজ করে, সঠিক সিনট্যাক্সের জন্য আপনার শেলটি পরীক্ষা করে দেখুন


সমস্ত POSIX অপারেটিং সিস্টেমের 3 টি স্ট্রিম রয়েছে : স্টেডিন, স্টডাউট, এবং স্টডার। stdin ইনপুট, যা stdout বা stderr গ্রহণ করতে পারেন। stdout প্রাথমিক আউটপুট, যা > , >> , বা | সাথে পুনঃনির্দেশিত হয় । stderr ত্রুটি আউটপুট, যা আলাদাভাবে পরিচালনা করা হয় যাতে কোনও ব্যতিক্রম কোনও কমান্ডে প্রেরিত হয় না বা এটি কোনও ফাইলটিকে ভাঙ্গতে পারে; সাধারণত, এটি কোনও ধরনের লগে পাঠানো হয় বা সরাসরি ডাম্প করা হয়, এমনকি stdout পুনঃনির্দেশিত হওয়ার পরেও। একই জায়গায় উভয় পুনঃনির্দেশিত করতে, ব্যবহার করুন:

command &> /some/file

সম্পাদনা করুন : উপরের সমাধানটি পোর্টেবল নয় তা নির্দেশ করার জন্য জ্যাককে ধন্যবাদ - পরিবর্তে ব্যবহার করুন:

*command* > file 2>&1 

যদি আপনি ত্রুটি নীরব করতে চান, তাহলে:

*command* 2> /dev/null





io-redirection