বাশ শেল আউটপুট ইতিহাস ফাইল অবস্থান


13

বাশ শেল প্রকৃত টার্মিনাল সেশনটি কোথায় সঞ্চয় করে? আমি পূর্বে ব্যবহৃত কমান্ডগুলির আউটপুটটি পড়তে চাই। কমান্ডের আউটপুট কীভাবে সংরক্ষণ করা যায় তা হ'ল আমি গুগলিংয়ের সন্ধান করতে পারি।

আউটপুট যেহেতু স্ক্রিনে প্রদর্শিত হয়, তাই এটি যে কোনও জায়গায় সংরক্ষণ করতে হবে। সুতরাং আমার প্রশ্ন: কোথায়?

উত্তর:


11

বাশ কেবলমাত্র আপনার চালিত কমান্ডগুলির ইতিহাস সংরক্ষণ করে (যা আপনি টাইপ করে পুনরুদ্ধার করতে পারেন history)। আপনি যদি ইতিমধ্যে খুব উচ্চ সংখ্যায় স্ক্রোল-ব্যাক সেট না করে থাকেন তবে স্ক্রোল-ব্যাকের সেট মান থেকে পুরানো ফলাফলগুলি দেখার কোনও উপায় নেই। এছাড়াও এই মানটি খুব উচ্চ সংখ্যায় সেট করা আপনার স্ক্রোলিংটিকে মন্দ করে তুলবে যেহেতু স্মৃতিতে লাইনগুলি সঞ্চিত রয়েছে

আপনার ভবিষ্যতের কমান্ড এবং তাদের আউটপুট সংরক্ষণ করতে, কয়েকটি বিকল্প রয়েছে:

ব্যবহার screen

প্রবেশ করে একটি স্ক্রিন সেশন শুরু করুন screen। আপনি একবার স্ক্রিনের ভিতরে আসার পরে Ctrl- টিপুন a, তারপরে :, তারপর প্রবেশ করুন logscreenlogআপনি যে ডিরেক্টরিটি screenকমান্ডটি শুরু করেছিলেন সেখানে ফাইলগুলি সমস্ত আই / ওকে বন্দী করা হবে ।

ব্যবহার script

আপনি টাইপ করে শুরু করতে পারেন script। একটি স্ক্রিপ্ট সেশন শুরু হবে যা সমস্ত I / O নামের একটি ফাইলকে ক্যাপচার করবে typescript। আপনি scriptঅধিবেশন থেকে প্রস্থান করতে পারেন Ctrl- d এবং typescriptফাইলের লগগুলি দেখতে পারেন ।

ব্যবহার tee

টি হ'ল একটি সহজ সরঞ্জাম। আপনি এর মতো কিছু করতে পারেন:

$ bash | tee log.txt

এটি ইতিমধ্যে আপনি যে চালাচ্ছেন তার ভিতরে এটি একটি নতুন ব্যাশ শেলটি খুলবে। আপনি যখন এর exitবাইরে চলে যান, আপনি কল করা ফাইলের আউটপুটগুলি দেখতে পাবেনlog.txt

অন্যান্য উপায়

এই পোস্টে ডাস্টিন কর্কল্যান্ড যেমন পরামর্শ দিয়েছে , আপনি বাইবুও ব্যবহার করতে পারেন । যদিও আমি কখনও ব্যবহার করি নি, শেলারের মতো টার্মিনাল স্ক্রিনকাস্টিং সরঞ্জামগুলিও একটি বিকল্প বলে মনে হচ্ছে।


6

এটির সাথে সম্পর্কিত অনেকগুলি প্রশ্ন রয়েছে তবে তারা সকলেই (ডানদিকে) অনুমান দিয়ে শুরু করে যে আউটপুটটি লগইন হয়নি।

সুতরাং আমার প্রশ্ন: কোথায়?

কোথাও নেই: বাশের (এবং আমি জানি যে কোনও শেল) আউটপুট লগ নেই।

আউটপুট যেহেতু স্ক্রিনে প্রদর্শিত হয়, তাই এটি যে কোনও জায়গায় সংরক্ষণ করতে হবে।

এটি সম্ভবত, তবে সম্ভবত স্পষ্ট পাঠ্যে এবং এমনকি ডিস্কেও নেই (যদিও এটি সত্যই টার্মিনাল এমুলেটরের উপর নির্ভর করে): সম্ভবত এবং কমপক্ষে বেশিরভাগ ক্ষেত্রেই টার্মিনাল এমুলেটর দ্বারা বরাদ্দকৃত একটি মেমরি বিভাগে।

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

প্রকৃতপক্ষে এর অর্থ এই নয় যে টার্মিনাল আউটপুটটি লগ করা অসম্ভব: প্রথমে আমি এমন কিছু উল্লেখ করব যা আমি মনে করি না যা অনেকেই অবগত নয়, যেহেতু আমি উবুন্টুকে জিজ্ঞাসাবাদে কমপক্ষে এখানে কাউকে এটি উল্লেখ করার আগে কখনও দেখিনি: কনসোল সংরক্ষণ করতে দেয় কোনও ফাইলে স্ক্রোলব্যাক (সম্ভবত অন্যান্য টার্মিনাল এমুলেটর রয়েছে যা এই জাতীয় কার্যকারিতা সরবরাহ করে, কনসোল কেবলমাত্র আমার জানা)) যদিও এটি কনসোলের স্ক্রোলব্যাক আকার সীমা দ্বারা সীমাবদ্ধ।

এটি প্রায়শই সত্যই কার্যকর হয় না, এবং সম্ভবত আপনি একটি পুরো সেশনের আউটপুট কোনও ফাইলটিতে লগ করার জন্য "সঠিক" সমাধানগুলি সন্ধান করতে চাইবেন ( টার্মিনাল সেশনে সমস্ত ইনপুট এবং আউটপুট কীভাবে লগ করব? এবং রনের উত্তর )।


1

স্ক্রিপ্ট নামে একটি কমান্ড রয়েছে, যদি এটি ইনস্টল না থাকে তবে apt-get install scriptএটি করবে।

তারপরে টার্মিনালে শুধু স্ক্রিপ্ট টাইপ করুন।

আপনি যা চান তা করুন, আপনার প্রস্থান করার পরে কেবল প্রস্থান টাইপ করুন এবং তারপরে আপনার বর্তমান ডিরেক্টরিতে সমস্ত স্টাডআউট এবং স্টিডিন তথ্য সহ একটি ফাইল তৈরি হবে।

আশা করি এটি আপনাকে সাহায্য করবে


প্যাকেজটি উবুন্টুতে 18.04 এ এনএ
মার্ক্রক্সর

1

আপনার শেল ( bash) এর সাথে এর কোনও যোগসূত্র নেই, এটি আপনি ব্যবহার করছেন টার্মিনাল এমুলেটরটির একটি বৈশিষ্ট্য। এটি আপনার টার্মিনালের "স্ক্রোলব্যাক বাফার" এ সংরক্ষিত আছে। এটি ঠিক কোথায় সংরক্ষণ করা হয়েছে তার কোনও পরিষ্কার ব্যাখ্যা আমি পাইনি, তবে ব্যক্তিগত অভিজ্ঞতা আমাকে দেখিয়েছে যে এটি কোথাও সঞ্চিত রয়েছে /tmp

উপরের লিঙ্কিত প্রশ্নের উত্তরটি যেমন পরামর্শ দেয়, এটি সম্ভবত নামবিহীন ফাইলে সঞ্চিত থাকে। আমি কী বলতে চাইছি তা দেখতে একটি পাঠ্য সম্পাদক দিয়ে একটি নতুন ফাইল খুলুন:

gedit newfile

ফাইলটিতে পাঠ্যের একটি লাইন লিখুন এবং এটি সংরক্ষণ করুন। এখন, সেই ফাইলটি এখনও খোলা রয়েছে, একটি টার্মিনাল খুলুন এবং এটি মুছুন:

rm newfile

যেহেতু আপনার কাছে এখনও ফাইলটি খোলা আছে gedit, আপনি এটিতে লেখা চালিয়ে যেতে পারেন। এমনকি ফাইলটি মুছে ফেলা সত্ত্বেও আপনি এতে কয়েকটি গিগাবাইট ডেটা লিখতে পারেন। কারণ কোনও ফাইল মুছে ফেলা সহজভাবে তার ইনোডের দিকে নির্দেশ করে লিঙ্কটি সরিয়ে দেয় । যদি এর ফাইল বিবরণকারীটিকে অন্য কোনও প্রোগ্রামের দ্বারা খোলা রাখা হয় তবে ডেটা এটিতে লেখা যেতে পারে, এই বিষয়টি তুচ্ছ করে নিন যে ফাইল সিস্টেমে ফাইল বর্ণনাকারীর সাথে সম্পর্কিত কোনও প্রকৃত লিঙ্ক (ফাইল) আর নেই।

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

জিনোম-টার্মিনাল অপশন স্ক্রিন


আকর্ষণীয় অন্তর্দৃষ্টি। টার্মিনালে দীর্ঘ ইতিহাস পরিদর্শন করা যা আমি চাই তা নয়: আমি টার্মিনালে
Cout

@ ড্যানিয়েলব্যাকেনহফ তারপরে আপনি সম্ভবত গ্রহণিত scriptউত্তরে বর্ণিত বর্ণনাটি চান ।
টেরডন

অবশ্যই। আমি এটি গ্রহণ করেছি :)
ড্যানিয়েল বাকেনহফ

-2

টার্মিনাল সেশন .bash_historyফাইল সংরক্ষণ করা হয় । আপনার টার্মিনালে এটি প্রবেশ করান echo $HISTFILE, এটি আপনাকে .bash_historyফাইলের পথ দেয় ।


2
এটি কেবল পূর্ববর্তী কমান্ড দেয় , কমান্ডের আউটপুট দেয় না ।
রন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.