উত্তর:
scriptকমান্ড ব্যবহার করুন । এটি কোনও ফাইলে স্ক্রিনে যাওয়া সমস্ত কিছু অনুলিপি করবে
script -c "sudo apt-get install things" script-file.script
scriptএকটি ফাইলকে কমান্ড আউটপুট প্রেরণ করে, তবে এটি স্ক্রিনে প্রদর্শন করে না।
script -c "history" ~/hist.txtএবং করাত আউটপুট ইঙ্গিত Script startedএবং Script done, কিন্তু আমি পর্দায় প্রকৃত কমান্ডের ফলাফল দেখতে পাইনি।
historyএকটি শেল বিল্টিন্ট, কোনও বাহ্যিক আদেশ নয় command যা ঘটে তা হ'ল: 1) স্ক্রিপ্ট শুরু হয়, 2) স্ক্রিপ্ট ইতিহাস কমান্ড অনুসন্ধান করে, এটি খুঁজে পায় না, সুতরাং এটি অনুমান করে যে এটি শেলের মাধ্যমে এটি চালানো উচিত। 3) স্ক্রিপ্ট history শেল মাধ্যমে কমান্ড চালায় 4) একটি নতুন শেল শুরু হয় এবং ইতিহাসের অভ্যন্তরীণ কমান্ড কার্যকর করে। যেহেতু এটি একটি নতুন অ ইন্টারেক্টিভ শেল, তাই ইতিহাসের কিছু বলার নেই।
scriptইন্টারেক্টিভভাবে চালানো যেতে পারে। scriptকমান্ড প্রম্পটে টাইপ করুন । আপনি একটি নতুন শেল পাবেন এবং আপনার যে কোনও কমান্ড টাইপ করলে তাদের আউটপুট সংরক্ষণ করা হবে। exitশেলটি শেষ করতে টাইপ করুন এবং ফাইলটি সংরক্ষণ করুন। ডিফল্টরূপে আউটপুট বলা হয় typescriptএবং এতে আপনার স্ক্রিনে প্রদর্শিত সমস্ত কিছুই থাকবে, আপনি এটি টাইপ করেছেন কিনা, বা এটি কোনও আদেশের আউটপুট ছিল। historyকমান্ড এখনো পাশাপাশি নতুন শেল পাওয়া হওয়া উচিত।
এটি teeসম্পাদন করতে আপনি কমান্ডটি ব্যবহার করতে পারেন ।
sudo apt-get install someapp 2>&1 | tee ~/someappInstall.txt
আরও তথ্যের জন্য এখানে দেখুন , বা সম্পাদন করুনman tee
দ্রষ্টব্য: অন্যরা 2>&1যেমন উল্লেখ করেছেন যে কোনও ত্রুটি ধরার জন্য STDERR কে STDOUT এ পুনঃনির্দেশ করা প্রয়োজন। আসলে কী করে তার একটি ভাল ব্যাখ্যার জন্য এই স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন 2>&1।
scriptকমান্ডটি উদ্ধৃত করার দরকার নেই তার চেয়ে এটি আরও ব্যবহারিক । সুতরাং ব্যাশ সমাপ্তির মতো সুবিধাগুলি সম্পাদন করা সহজ।
-c "something ...": যদি তা আপনাকে শেলের কাছে ফেলে দেয় এবং আপনি যখন শেলটি থেকে বের হন তখন শেষ হয়। একাধিক কমান্ড ইত্যাদির অনুমতি দেয় প্লাস এটি আরও কিছু "ফর্ম্যাট করে" রাখে, আরও কিছু জিনিস পুনরায় খেলতে দেয় (যেমন: পরিষ্কার পর্দা ইত্যাদি) (তবে এটি আউটপুটটিও গোলমাল করতে পারে ... ymmv)
|&পরিবর্তে 2>&1 |ব্যাশ মধ্যে
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। ( জেএফ সেবাস্তিয়ানের কাছে কুডোস যিনি অন্য কোথাও
অ্যাপটি-গেটের একটি সৌন্দর্য (এবং সাধারণভাবে এপিটি) হ'ল তারা লগ ফাইলগুলি প্রায় সবকিছুর জন্য সংরক্ষণ করে, এমনকি কোনও কমান্ডের টার্মিনাল আউটপুট যা আপনি ট্রাই চালায়, তে /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) ...
এটি আমাকে বেশ কয়েকটি লাইন সংরক্ষণ করেছিল যা বেশিরভাগ ক্ষেত্রে প্রাসঙ্গিক নয় এবং এটি স্বয়ংক্রিয়ভাবে ঘটে। সুতরাং, আপনি যা করতে চান তা করতে আপনার কোনও অতিরিক্ত কমান্ডের দরকার নেই, অ্যাপটি-গেট এটি আপনার জন্য করে।
apt-getঠিক?