উভয় কীভাবে কনসোল-এ একটি কমান্ড লাইনের আউটপুট প্রদর্শন করবেন এবং পাঠ্য ফাইলে আউটপুট সংরক্ষণ করবেন?


25

আমি কিভাবে চালাতে পারেন sudo apt-get installদ্বারা উভয় ইনস্টলেশন প্রক্রিয়া এইজন্য (দীর্ঘ আমার ক্ষেত্রে) এবং একটি টেক্সট ফাইল মধ্যে নিজের আউটপুট সংরক্ষণ?


ঠিক কি apt-getঠিক?
ব্রায়াম

@ ব্রাইয়াম আমি মনে করি যে আমি গৃহীত সমাধানটি অন্য সমস্ত আদেশের ক্ষেত্রেও প্রয়োগ করা যেতে পারে, আপনি কি মনে করেন?

উত্তর:


17

scriptকমান্ড ব্যবহার করুন । এটি কোনও ফাইলে স্ক্রিনে যাওয়া সমস্ত কিছু অনুলিপি করবে

script -c "sudo apt-get install things" script-file.script

scriptএকটি ফাইলকে কমান্ড আউটপুট প্রেরণ করে, তবে এটি স্ক্রিনে প্রদর্শন করে না।
হারুন

2
@ BryceAtNetwork23। আপনি কমান্ড চেষ্টা করেছেন? স্ক্রিপ্ট স্ক্রিনে আউটপুট প্রেরণ করে না
পূর্বোক্ত করুন

1
আমি করেছিলাম. আমি দৌড়ে script -c "history" ~/hist.txtএবং করাত আউটপুট ইঙ্গিত Script startedএবং Script done, কিন্তু আমি পর্দায় প্রকৃত কমান্ডের ফলাফল দেখতে পাইনি।
অ্যারন

10
@ ব্রাইস্যাট নেট নেটওয়ার্ক 23 historyএকটি শেল বিল্টিন্ট, কোনও বাহ্যিক আদেশ নয় command যা ঘটে তা হ'ল: 1) স্ক্রিপ্ট শুরু হয়, 2) স্ক্রিপ্ট ইতিহাস কমান্ড অনুসন্ধান করে, এটি খুঁজে পায় না, সুতরাং এটি অনুমান করে যে এটি শেলের মাধ্যমে এটি চালানো উচিত। 3) স্ক্রিপ্ট history শেল মাধ্যমে কমান্ড চালায় 4) একটি নতুন শেল শুরু হয় এবং ইতিহাসের অভ্যন্তরীণ কমান্ড কার্যকর করে। যেহেতু এটি একটি নতুন অ ইন্টারেক্টিভ শেল, তাই ইতিহাসের কিছু বলার নেই।
exore

1
scriptইন্টারেক্টিভভাবে চালানো যেতে পারে। scriptকমান্ড প্রম্পটে টাইপ করুন । আপনি একটি নতুন শেল পাবেন এবং আপনার যে কোনও কমান্ড টাইপ করলে তাদের আউটপুট সংরক্ষণ করা হবে। exitশেলটি শেষ করতে টাইপ করুন এবং ফাইলটি সংরক্ষণ করুন। ডিফল্টরূপে আউটপুট বলা হয় typescriptএবং এতে আপনার স্ক্রিনে প্রদর্শিত সমস্ত কিছুই থাকবে, আপনি এটি টাইপ করেছেন কিনা, বা এটি কোনও আদেশের আউটপুট ছিল। historyকমান্ড এখনো পাশাপাশি নতুন শেল পাওয়া হওয়া উচিত।
ব্রায়ান মিন্টন

52

এটি teeসম্পাদন করতে আপনি কমান্ডটি ব্যবহার করতে পারেন ।

sudo apt-get install someapp 2>&1 | tee ~/someappInstall.txt

আরও তথ্যের জন্য এখানে দেখুন , বা সম্পাদন করুনman tee

দ্রষ্টব্য: অন্যরা 2>&1যেমন উল্লেখ করেছেন যে কোনও ত্রুটি ধরার জন্য STDERR কে STDOUT এ পুনঃনির্দেশ করা প্রয়োজন। আসলে কী করে তার একটি ভাল ব্যাখ্যার জন্য এই স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন 2>&1


আমি "|" এর আগে "2> & 1" যুক্ত করতাম
অলিভিয়ার ডুলাক

2
scriptকমান্ডটি উদ্ধৃত করার দরকার নেই তার চেয়ে এটি আরও ব্যবহারিক । সুতরাং ব্যাশ সমাপ্তির মতো সুবিধাগুলি সম্পাদন করা সহজ।
ড্যান

2
@ ড্যান: স্ক্রিপ্টটির দরকার নেই -c "something ...": যদি তা আপনাকে শেলের কাছে ফেলে দেয় এবং আপনি যখন শেলটি থেকে বের হন তখন শেষ হয়। একাধিক কমান্ড ইত্যাদির অনুমতি দেয় প্লাস এটি আরও কিছু "ফর্ম্যাট করে" রাখে, আরও কিছু জিনিস পুনরায় খেলতে দেয় (যেমন: পরিষ্কার পর্দা ইত্যাদি) (তবে এটি আউটপুটটিও গোলমাল করতে পারে ... ymmv)
অলিভিয়ার ডুলাক

2
@ ড্যান + ফাংশন, এলিয়াস, বিল্টিনস এমনকি কমান্ড গ্রুপ এবং সাবহেলগুলির সাথে কাজ করে। এটি গ্রহণযোগ্য উত্তর আইএমও হওয়া উচিত।
দারখোগ

1
আপনি ব্যবহার করতে পারে |&পরিবর্তে 2>&1 |ব্যাশ মধ্যে
JFS

15

tee প্রয়োজনীয় হিসাবে কাজ করবে।

কোনও ফাইলে আউটপুট ক্যাপচার করতে, ব্যবহার করুন:

sudo apt-get install your_software | tee log_file.txt

এটি কেবল আউটপুট ক্যাপচার করবে তবে কোনও ত্রুটি বার্তা নয়। আপনি যদি ত্রুটি বার্তা রেকর্ড করতে চান তবে কমান্ডটি সংশোধন করুন:

sudo apt-get install your_software 2>&1  | tee log_file.txt

অথবা, যেহেতু bash সমর্থন |&অপারেটর , sudo apt-get install your_software |& tee log_file.txtইচ্ছা পাইপ উভয় stdout- এ এবং দ্বারা stderr করতে tee। ( জেএফ সেবাস্তিয়ানের কাছে কুডোস যিনি অন্য কোথাও
এটির

9

অ্যাপটি-গেটের একটি সৌন্দর্য (এবং সাধারণভাবে এপিটি) হ'ল তারা লগ ফাইলগুলি প্রায় সবকিছুর জন্য সংরক্ষণ করে, এমনকি কোনও কমান্ডের টার্মিনাল আউটপুট যা আপনি ট্রাই চালায়, তে /var/log/apt। উদাহরণস্বরূপ, এটি আমার শেষ প্রবেশ /var/log/apt/term.log:

Log started: 2014-06-20  16:46:08
(Reading database ... 252472 files and directories currently installed.)
Removing xdotool (1:3.20130111.1-3.1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Log ended: 2014-06-20  16:46:33

এখন, আসল আউটপুট সঙ্গে তুলনা:

➜  ~  sudo apt-get remove xdotool 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libxdo3
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  xdotool
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
After this operation, 135 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 252472 files and directories currently installed.)
Removing xdotool (1:3.20130111.1-3.1) ...
Processing triggers for man-db (2.6.7.1-1) ...

এটি আমাকে বেশ কয়েকটি লাইন সংরক্ষণ করেছিল যা বেশিরভাগ ক্ষেত্রে প্রাসঙ্গিক নয় এবং এটি স্বয়ংক্রিয়ভাবে ঘটে। সুতরাং, আপনি যা করতে চান তা করতে আপনার কোনও অতিরিক্ত কমান্ডের দরকার নেই, অ্যাপটি-গেট এটি আপনার জন্য করে।


1

টি কমান্ড চেষ্টা করুন । আপনি এখানে কিছু উদাহরণ খুঁজে পেতে পারেন ।

সাধারণ ব্যবহার:

  <command> | tee file

উদাহরণ:

  sudo apt-get install whatYouWant | tee outputFile
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.