প্রশ্ন কিভাবে আমি একটি ফাইল টার্মিনাল আউটপুট সংরক্ষণ করবেন?


কিভাবে আমি একটি কমান্ড আউটপুট একটি ফাইল সংরক্ষণ করতে পারি?

কোন সফ্টওয়্যার ব্যবহার করে একটি উপায় আছে? আমি কিভাবে জানতে চাই।


397
2018-02-14 19:49


উত্স




উত্তর:


হ্যাঁ এটা সম্ভব, আউটপুটটিকে একটি ফাইলে পুনঃনির্দেশিত করুন:

someCommand > someFile.txt  

অথবা আপনি তথ্য যোগ করতে চান:

someCommand >> someFile.txt

তুমি যদি চাও stderr খুব এই ব্যবহার করুন:

someCommand &> someFile.txt  

অথবা এই যোগ করা:

someCommand &>> someFile.txt  

390
2018-02-14 19:52



মনে রাখবেন যে someCommand 2> someFile.txt এবং someCommand 2>> someFile.txt এছাড়াও পুনঃনির্দেশ stterr কিছু File.txt যাও - Slothworks
আমি gcc কমান্ড দিয়ে এটি করার চেষ্টা করছি কিন্তু এটি কাজ করে না। এটি অন্য কমান্ডের সাথে কাজ করে, কিন্তু এটি এক নয়। এটি কেবল ভিতরে কিছু দিয়ে আউটপুট ফাইল তৈরি করে। - Nik-Lz
@ নিক-লিজ প্রায়শই এই কারণ হ'ল কমান্ড স্টারারের সমস্ত আউটপুট প্রেরণ করছে। যদি gcc ত্রুটি বার্তা তৈরি হয়, এটি সম্ভবত মনে হয়। Stdout পরিবর্তে stderr ক্যাপচার কিভাবে Slothworks মন্তব্য দেখুন। - Jonathan Hartley
এনবি: আউটপুট পেতে make একটি ফাইলের মধ্যে কমান্ডের পরিবর্তে এর জন্য এই সিনট্যাক্স প্রয়োজন: make > someFile.txt 2>&1 (উৎস: linuxquestions.org/questions/linux-newbie-8/...) - Gabriel Staples
@ কাইলিব্রিডেনস্টাইন দেখুন tee নীচের উত্তরaskubuntu.com/a/485762/44179) - Seth♦


একটি ফাইলের কমান্ডের আউটপুট লেখার জন্য, মূলত 10 টি সাধারণভাবে ব্যবহৃত উপায়ে রয়েছে।

সংক্ষিপ্ত বিবরণ:

দয়া করে মনে রাখবেন যে n.e. সিনট্যাক্স কলাম মানে "বিদ্যমান নেই"।
  একটি উপায় আছে, কিন্তু কলাম মধ্যে মাপসই করা খুব জটিল। আপনি এটি সম্পর্কে তালিকা বিভাগে একটি সহায়ক লিঙ্ক খুঁজে পেতে পারেন।

          || visible in terminal ||   visible in file   || existing
  Syntax  ||  StdOut  |  StdErr  ||  StdOut  |  StdErr  ||   file   
==========++==========+==========++==========+==========++===========
    >     ||    no    |   yes    ||   yes    |    no    || overwrite
    >>    ||    no    |   yes    ||   yes    |    no    ||  append
          ||          |          ||          |          ||
   2>     ||   yes    |    no    ||    no    |   yes    || overwrite
   2>>    ||   yes    |    no    ||    no    |   yes    ||  append
          ||          |          ||          |          ||
   &>     ||    no    |    no    ||   yes    |   yes    || overwrite
   &>>    ||    no    |    no    ||   yes    |   yes    ||  append
          ||          |          ||          |          ||
 | tee    ||   yes    |   yes    ||   yes    |    no    || overwrite
 | tee -a ||   yes    |   yes    ||   yes    |    no    ||  append
          ||          |          ||          |          ||
 n.e. (*) ||   yes    |   yes    ||    no    |   yes    || overwrite
 n.e. (*) ||   yes    |   yes    ||    no    |   yes    ||  append
          ||          |          ||          |          ||
|& tee    ||   yes    |   yes    ||   yes    |   yes    || overwrite
|& tee -a ||   yes    |   yes    ||   yes    |   yes    ||  append

তালিকা:

  • command > output.txt

    স্ট্যান্ডার্ড আউটপুট প্রবাহ কেবলমাত্র ফাইলটিতে পুনঃনির্দেশিত হবে, এটি টার্মিনালে দৃশ্যমান হবে না। ফাইল ইতিমধ্যে বিদ্যমান থাকলে, এটি overwritten পায়।

  • command >> output.txt

    স্ট্যান্ডার্ড আউটপুট প্রবাহ কেবলমাত্র ফাইলটিতে পুনঃনির্দেশিত হবে, এটি টার্মিনালে দৃশ্যমান হবে না। যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে ফাইলটির শেষে নতুন তথ্য যোগ করা হবে।

  • command 2> output.txt

    স্ট্যান্ডার্ড ত্রুটি প্রবাহটি শুধুমাত্র ফাইলটিতে পুনঃনির্দেশিত হবে, এটি টার্মিনালে দৃশ্যমান হবে না। ফাইল ইতিমধ্যে বিদ্যমান থাকলে, এটি overwritten পায়।

  • command 2>> output.txt

    স্ট্যান্ডার্ড ত্রুটি প্রবাহটি শুধুমাত্র ফাইলটিতে পুনঃনির্দেশিত হবে, এটি টার্মিনালে দৃশ্যমান হবে না। যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে ফাইলটির শেষে নতুন তথ্য যোগ করা হবে।

  • command &> output.txt

    স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি প্রবাহ উভয়ই কেবল ফাইলটিতে পুনঃনির্দেশিত হবে, টার্মিনালে কিছুই দৃশ্যমান হবে না। ফাইল ইতিমধ্যে বিদ্যমান থাকলে, এটি overwritten পায়।

  • command &>> output.txt

    স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি প্রবাহ উভয়ই কেবল ফাইলটিতে পুনঃনির্দেশিত হবে, টার্মিনালে কিছুই দৃশ্যমান হবে না। যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে ফাইলটির শেষে নতুন তথ্য যোগ করা হবে ..

  • command | tee output.txt

    স্ট্যান্ডার্ড আউটপুট প্রবাহটি ফাইলটিতে অনুলিপি করা হবে, এটি এখনও টার্মিনালে দৃশ্যমান হবে। ফাইল ইতিমধ্যে বিদ্যমান থাকলে, এটি overwritten পায়।

  • command | tee -a output.txt

    স্ট্যান্ডার্ড আউটপুট প্রবাহটি ফাইলটিতে অনুলিপি করা হবে, এটি এখনও টার্মিনালে দৃশ্যমান হবে। যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে ফাইলটির শেষে নতুন তথ্য যোগ করা হবে।

  • (*)

    বাশের কোনও শর্ট্যান্ড সিনট্যাক্স নেই যা শুধুমাত্র স্টেডারের দ্বিতীয় কমান্ডের পাইপিংয়ের অনুমতি দেয়, যা এখানে মিলবে tee আবার টেবিল সম্পূর্ণ করতে। আপনি যদি সত্যিই এমন কিছু প্রয়োজন, দয়া করে তাকান "কিভাবে স্টিডার পাইপ, এবং stdout না?" স্ট্যাক ওভারফ্লো উপর কিছু উপায়ে কিভাবে এটি করা যেতে পারে যেমন প্রবাহ swapping বা প্রক্রিয়া প্রতিস্থাপন ব্যবহার করে।

  • command |& tee output.txt

    স্ট্যান্ডার্ড আউটপুট এবং মান ত্রুটি উভয় স্ট্রিমগুলি এখনও টার্মিনালে দৃশ্যমান অবস্থায় ফাইলটিতে অনুলিপি করা হবে। ফাইল ইতিমধ্যে বিদ্যমান থাকলে, এটি overwritten পায়।

  • command |& tee -a output.txt

    স্ট্যান্ডার্ড আউটপুট এবং মান ত্রুটি উভয় স্ট্রিমগুলি এখনও টার্মিনালে দৃশ্যমান অবস্থায় ফাইলটিতে অনুলিপি করা হবে। যদি ফাইলটি ইতিমধ্যে বিদ্যমান থাকে তবে ফাইলটির শেষে নতুন তথ্য যোগ করা হবে।


539
2018-02-08 14:52



টেবিলের জন্য ধন্যবাদ, এটা চমৎকার! এই শীর্ষ উত্তর হতে হবে - DevShark
@ karthick87 এটি প্রকৃতপক্ষে একটি ফাইলকে আউটপুট পুনঃনির্দেশিত করার প্রশ্নটির সাথে সম্পর্কিত নয়, কারণ এটি কেবল এক প্রবাহকে অন্যের দিকে পুনঃনির্দেশিত করে। 2>&1 STDERR থেকে STDOUT পুনঃনির্দেশিত করে, 1>&2 STDOUT থেকে STDERR এবং পুনঃনির্দেশিত করে 3>&1 STDERR স্ট্রিম 3 পুনঃনির্দেশিত হবে। - Byte Commander
শুধু একটি নোট যে '| &' ম্যাকওসে আমার জন্য কাজ করে না। এটি ব্যাশের একটি পুরোনো সংস্করণ থাকার কারণে (আমি মনে করি)। কম মার্জিত '2> & 1 |' যদিও জরিমানা কাজ করে - Danny Parker
এন, Y, Y, Y সম্পর্কে কি? - user1133275
@ স্টারডার (2) এবং স্টডাউট (1) স্ট্রিমগুলি পুনঃনির্দেশিত করতে। - Byte Commander


আপনি ব্যবহার করতে পারেন tee একটি ফাইল আউটপুট পাঠাতে:

command | tee ~/outputfile.txt

সামান্য সংশোধন এছাড়াও stderr ধরা হবে:

command 2>&1 | tee ~/outputfile.txt

বা সামান্য সংক্ষিপ্ত এবং কম জটিল:

command |& tee ~/outputfile.txt

tee যদি আপনি সক্ষম হতে চান দরকারী এটি লাইভ দেখার সময় কমান্ড আউটপুট ক্যাপচার


81
2018-06-20 04:45



tee এটি লাইভ এটি দেখার সময় আপনি কমান্ড আউটপুট ক্যাপচার করতে সক্ষম হবেন যদি দরকারী। এই লাইন করুন সাহসী হারুন। এটি একটি সময়ে দুটি কাজ করতে হবে। উত্তরের জন্য ধন্যবাদ. - learner
এটি বলে যে & অপ্রত্যাশিত, এবং কমান্ড রান হিসাবে একই সময়ে লগ লিখতে না। আমি একটি ব্যাশ ফাইল এই ব্যবহার করছি, তবে, যে কোন পার্থক্য করতে? - tim687
@ tim687 আমি সেই সম্পাদনাটি মুছে ফেলেছি। যে সম্পর্কে দুঃখিত ... আমার মূল উত্তর অংশ ছিল না। - Aaron
@ হারুন ধন্যবাদ! tee সঠিক সময় ফাইল যোগ করা হবে, ডান? আমি একটি ব্যাকআপ স্ক্রিপ্ট আছে যা আমি ব্যবহার করি, lol, আমার পিসি ব্যাকআপ করুন, কিন্তু লগিং রিয়েল টাইমে নেই। ব্যাকআপ শেষ হওয়ার পরে আমার পিসি ঘুমিয়ে যায়, এবং লগ ফাইল খালি। আমি কমান্ড লগ করার জন্য অন্য কমান্ড ব্যবহার করা উচিত? - tim687
কোটি কোটি ধন্যবাদ ব্রো - Mahesha999


আপনি কমান্ড আউটপুটটিকে একটি ফাইলে পুনঃনির্দেশিত করতে পারেন:

your_command >/path/to/file

কমান্ডের আউটপুটটিকে ওভাররাইট করার পরিবর্তে ফাইলটিতে যোগ করার জন্য ব্যবহার করুন:

your_command >>/path/to/file

17
2018-02-14 19:52



অনেক ধন্যবাদ ! কোন সীমা আছে? ফাইলের সর্বোচ্চ আকার মত? - led-Zepp
সর্বোচ্চ ফাইলের আকার শুধুমাত্র ফাইল সিস্টেমের মাধ্যমে সীমাবদ্ধ - chaos
এই উত্তর stderr সংরক্ষণ করা হবে না। & ব্যবহার করুন, দেখুন stackoverflow.com/questions/637827/... এবং tldp.org/LDP/abs/html/io-redirection.html - Panther
ওসি কখনোই স্টারডারকে বাঁচাতে বলেনি! - chaos


বিবেচনা একটি বর্ধিতকরণ -

বিভিন্ন স্ক্রিপ্টগুলি আউটপুটগুলিতে রঙ কোডগুলিকে ইনজেক্ট করবে যা আপনি আপনার লগ ফাইলটি আপলোড করতে চান না।

এই ঠিক করার জন্য, আপনি প্রোগ্রাম ব্যবহার করতে পারেন কিন্তু যারা কোড ফালা আউট। উদাহরণ:

command 2>&1 | sed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g' | tee ~/outputfile.txt

11
2017-07-08 20:57



কিভাবে আউটপুট সংরক্ষণ করা যায় যে রং সংরক্ষণ করা হয়? আমি libreoffice একটি কমান্ড ফলাফল আমদানি এবং রং রাখা চাই। - madrang
@madrang: আমি কেবল এখনই আপনার মন্তব্যটি পড়েছি কিন্তু আপনি এটি খুঁজে পেতে পারেন উত্তর দরকারী। - Sylvain Pineau
ওহ, প্রায় ঠিক কি আমি খুঁজছেন। পর্দায় আউটপুট কিভাবে প্রিন্ট করবেন? - Sigur
উল্লেখ্য যে অনেক কমান্ড যা রঙিন আউটপুট উত্পাদন করে ls এবং grep, সমর্থন --color=auto, মান আউটপুট একটি টার্মিনাল যদি শুধুমাত্র রঙ কোড আউটপুট। - Eliah Kagan


জন্য cron কাজ ইত্যাদি আপনি বাশ এক্সটেনশান এড়াতে চান। সমতুল্য POSIX sh পুনঃনির্দেশ অপারেটরদের হয়

Bash            POSIX
--------------  --------------
foo &> bar      foo >bar 2&>1
foo &>> bar     foo >>bar 2>&1
foo |& bar      foo 2>&1 | bar

আপনি লক্ষ্য করবেন যে POSIX সুবিধা কিছু অর্থে সহজ এবং আরও সহজতর। দ্য &> সিনট্যাক্স থেকে ধার করা হয় csh যা ইতিমধ্যেই আপনাকে এটি একটি খারাপ ধারণা যে সন্তুষ্ট করা উচিত।


1
2018-04-11 12:25





some_command | tee command.log এবং some_command > command.log সমস্যা আছে যে তারা কমান্ড আউটপুট সংরক্ষণ করবেন না command.log বাস্তব সময় ফাইল।

সেই সমস্যা এড়াতে এবং রিয়েল-টাইমে কমান্ড আউটপুট সংরক্ষণ করতে, আপনি যোগ করতে পারেন unbuffer, যা সঙ্গে আসে expect প্যাকেজ।


উদাহরণ:

sudo apt-get install expect
unbuffer some_command | tee command.log
unbuffer some_command > command.log

অভিমানী log.py রয়েছে:

import time
print('testing')
time.sleep(100) # sleeping for 100 seconds

আপনি চালাতে পারেন unbuffer python log.py | tee command.log অথবা unbuffer python log.py > command.log

অধিক তথ্য: কিভাবে আমি রিয়েল-টাইমে একটি ফাইলের কমান্ড আউটপুট সংরক্ষণ করতে পারি?


0
2017-07-04 20:54



তারা আউটপুট সংরক্ষণ করার সময় এটি সংরক্ষণ করে, সমস্যাটি হল পাইথন বাফারিং চালু করে যখন আউটপুট টিটিই নয়। পাইথন এ এই নিষ্ক্রিয় করার জন্য অন্যান্য বিকল্প: stackoverflow.com/q/107705/2072269 - muru