মেশিন তৈরি হওয়ার পর থেকে শেল কমান্ডের ইতিহাস কীভাবে পাওয়া যাবে?


23

আমি কয়েক সপ্তাহ আগে একটি উবুন্টু ভার্চুয়ালবক্স মেশিন তৈরি করেছি এবং তখন থেকেই এটির প্রকল্পগুলিতে এবং কাজ করে চলেছি।

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

historyআমি মেশিনটি তৈরি করার পরে টাইপ করা প্রথম কমান্ডটিতে ফিরে যাওয়ার কমান্ডটি কীভাবে পেতে পারি ?
বা অন্য কোনও জায়গা আছে যে সমস্ত কমান্ড উবুন্টুতে সংরক্ষিত আছে?


2
আমি যতদূর জানি আপনি পারবেন না। আপনি কেবলমাত্র ইতিহাসের বাফার সেট করা পর্যন্ত ফিরে যেতে পারেন। আপনি যদি ভবিষ্যতে অনির্দিষ্টকালের জন্য কমান্ডের ইতিহাস সংরক্ষণ করার জন্য কোন প্যাকেজটি ইনস্টল করতে পারেন সে সম্পর্কে জিজ্ঞাসা করছেন, সম্ভবত আপনার প্রশ্নটি পুনর্বিবেচনা করা উচিত।
রোবটহুমানস

উত্তর:


26

সমস্ত কমান্ড পাওয়া সম্ভব এবং নাও হতে পারে। এটি নির্ভর করে যে আপনি কতগুলি আদেশ কার্যকর করেছিলেন এবং কীভাবে ইতিহাসের সীমা সেট করা হয়েছিল।

তবে আপনি দেখতে পাচ্ছেন ইতিহাসের তালিকাটি এখানে সঞ্চিত আছে

/home/<YOUR_USERNAME>/.bash_history

সম্পর্কিত প্রশ্ন (একাধিক শেল ইতিহাস পরিচালনা করার জন্য):

তাত্ক্ষণিকভাবে .বাশ_তিহাসিকগুলিতে লেখা সম্ভব?


3
এটি সত্য নয় যে ইতিহাস কেবল একটি টার্মিনাল / শেল থেকে সংরক্ষণ করা হয়। আপনি যখন চালান history, এটি বর্তমান শেলের ইতিহাসকে সাম্প্রতিক হিসাবে দেখায় এবং তার আগে অন্যান্য সমস্ত শেল (পাওয়ার সাইকেল সহ পূর্ববর্তী সেশনে শেল সহ) এর ইতিহাস প্রদর্শন করে। সমস্ত শেল দৃষ্টান্তগুলি প্রস্থান করার সময় তাদের ইতিহাস সংরক্ষণ করে.bash_history । কোনও বিন্দু আগে এটি স্বয়ংক্রিয়ভাবে এটি সংরক্ষণ করে না।
এলিয়াহ কাগন

6

ডিফল্টরূপে, এমন কোনও জায়গা নেই যেখানে সমস্ত কমান্ড রেকর্ড করা হয় এবং অনির্দিষ্টকালের জন্য রাখা হয়, যদিও ~/.bash_historyএর আগে কয়েকটি কমান্ড রয়েছে (যদি আপনি ব্যবহার করেন bashতবে এটি উবুন্টুতে ডিফল্ট শেল)।

আপনি যদি চান প্রতিটি কমান্ড চিরকালের জন্যbash রেকর্ড করা থাকে তবে আপনাকে এটি নিজে সেট আপ করতে হবে। উদাহরণস্বরূপ, আপনি শেলটিতে ~/.bashrcটাইপ করা সমস্ত কমান্ড ফাইলটিতে লগ করতে আপনার ফাইলটিতে নিম্নলিখিতটি রাখতে পারেন :bash~/.command_log

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

উপরেরটি একটি ফাঁদ সেট করে DEBUG, যা একটি সাধারণ কমান্ড কার্যকর হওয়ার ঠিক আগে কার্যকর করা হয়। callerবিল্ট-ইন পরীক্ষা কিনা কমান্ড একটি ইন্টারেক্টিভ শেল এ টাইপ করা হচ্ছে বা ভালো কিছু মাধ্যমে চালানোর জন্য ব্যবহার করা হয় ~/.bashrc। মান ${BASH_COMMAND}কমান্ড বর্তমানে মৃত্যুদন্ড কার্যকর করা হচ্ছে ধারণ করে।


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

5

আপনার আগের কমান্ডের ইতিহাসটি কীভাবে সন্ধান করা যায় তা হ'ল আপনার পক্ষে আগ্রহী কিছু। আপনি কমান্ড লাইনে আপনার ইতিহাসটি বিপরীতভাবে চাপতে Ctrl+rএবং তারপরে আপনি যে অক্ষরটি মিলে যেতে চান তা টাইপ করে can আপনার যদি একাধিক ম্যাচিং কমান্ড থাকে তবে Ctrl+rআবার টিপুন । বিপরীত অনুসন্ধান ছেড়ে দিতে, টিপুন Ctrl+g

http://www.ice2o.com/bash_quick_ref.html


4

আপনার ইতিহাসের সীমা নির্ধারিত হিসাবে আপনি কেবল এতদূর যেতে পারেন; এটি একবারে পৌঁছে গেলে ইতিহাস ওভাররাইট করা শুরু হবে। তবে ভবিষ্যতের জন্য আরও বড় আকারের ইতিহাস থাকা সম্ভব। এটি আপনার .bashrc এ রাখুন এবং একটি মান নির্দিষ্ট করুন (আমার 1000 সেট করা হয়েছে):

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