উত্তর:
এটি আপনার .bashrc
(লিনাক্স) বা .bash_profile
(ম্যাকোএস) যোগ করুন:
export HISTFILESIZE=
export HISTSIZE=
আপনি সেখানে যান, সীমাহীন ইতিহাস। বর্তমানে আমার 27000 এন্ট্রি রয়েছে :)
থেকে man bash
:
যদি
HISTFILESIZE
সেট না করা থাকে তবে কোনও ছাঁটাই করা হয় না।
তার মানে .bash_history
কখনই কেটে যায় না
একইটি প্রযোজ্য বলে মনে হয় HISTSIZE
, যদিও আমি এটি নথিভুক্ত পাইনি।
আরেকটি ঝরঝরে বৈশিষ্ট্য যা আমি চেষ্টা করতে চলেছি তা হ'ল:
যদি
HISTTIMEFORMAT
ভেরিয়েবলটি সেট করা থাকে, ইতিহাস স্ট্যাটাসে টাইম স্ট্যাম্পগুলি লিখিত থাকে, ইতিহাসের মন্তব্য চরিত্রের সাহায্যে চিহ্নিত করা হয়, সুতরাং সেগুলি নীচের মত শেল সেশনে সংরক্ষণ করা যেতে পারে:
export HISTTIMEFORMAT="%F %T "
আপনি যদি ইতিমধ্যে এটি চেষ্টা করে থাকেন তবে আমাকে জানান ...
gdb
; আপনি যদি কোনও HISTSIZE
ভেরিয়েবল সেট করে থাকেন তবে এটি 0 হিসাবে নেবে, এভাবে ইতিহাসের আকার পুরোপুরি অক্ষম করে।
export
, HISTFILESIZE
লাইনের সংখ্যায় রয়েছে (বাইট নয়) এবং যখন আপনি ভেরিয়েবল সেট করেন HISTFILESIZE
(এবং যখন শেল প্রস্থান হয়) ইতিহাসের ফাইল কাটা ঘটে । তাই বিভিন্ন মান দিয়ে আপনার কনফিগ ফাইলে দুইবার এটি সেট না ...
(আমার উত্তরটি https://stackoverflow.com/a/19533853/128597 থেকে পুনরায় পোস্ট করা )
বছরের পর বছর ধরে অনেকগুলি বড়, কুরুচিপূর্ণ পুনরাবৃত্তি এবং অদ্ভুত প্রান্তের কেস পরে, আমার এখন এটি নিবেদিত আমার .brcrc এর একটি সংক্ষিপ্ত বিভাগ রয়েছে ।
প্রথমত, আপনাকে অবশ্যই আপনার .bashrc এর এই বিভাগটি (উবুন্টুর জন্য ডিফল্ট) মন্তব্য করতে হবে বা মুছে ফেলতে হবে । যদি আপনি এটি না করেন, তবে নির্দিষ্ট পরিবেশ (যেমন চলমান screen
সেশনগুলি) এখনও আপনার ইতিহাস কেটে দেবে:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000
দ্বিতীয়ত, এই অ্যাড আপনার .bashrc নীচে:
# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
দ্রষ্টব্য: প্রতিটি কমান্ড চালানোর সাথে সাথেই লিখিত হয়, সুতরাং যদি আপনি দুর্ঘটনাক্রমে কোনও পাসওয়ার্ড পেস্ট করেন তবে ইতিহাস রচনাটি এড়ানোর জন্য আপনি কেবল "কিল -9%%" করতে পারবেন না, আপনাকে এটি ম্যানুয়ালি অপসারণ করতে হবে।
এছাড়াও নোট করুন যে প্রতিটি বাশ সেশন পুরো ইতিহাসের ফাইলটিকে মেমরিতে লোড করবে, তবে আপনার ইতিহাস ফাইলটি 10 এমবিতে বেড়ে গেলেও (এটি একটি দীর্ঘ, দীর্ঘ সময় নিতে পারে ) আপনি আপনার বাশ শুরু হওয়ার সময় খুব বেশি প্রভাব ফেলবেন না।
HISTFILESIZE
, এ কারণেই আপনার পছন্দের ইভেন্টটি বাদ দিয়ে আপনার যেমন কোনও ঘটনার সরিয়ে নেওয়া উচিত। এটি শেল প্রস্থান করার সময়ও কেটে যাবে (তবে এটি প্রত্যাশিত)। এবং আপনার প্রয়োজন হবে না export
।
bash --norc
ইতিহাসকে আবার ছিন্ন করবে।
export HISTFILE="/home/$USER/hist/`uname -n``tty | tr '/' '-'`"
শেল ইতিহাস প্রতি সেশনে পৃথক রাখতে ব্যবহার করি (হোস্টনাম এবং টিটিএম নামের উপর ভিত্তি করে) অবশ্যই আমাকে প্রথমে ~ / হিস্ট ডিরেক্টরি তৈরি করতে হবে।
PROMPT_COMMAND="${PROMPT_COMMAND:+${PROMPT_COMMAND} ;}history -a";
~ / .Bashrc এ অন্তর্ভুক্ত করুন :
# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=
এই উত্তরটি নিম্নলিখিত মানদণ্ডগুলিকে সন্তুষ্ট করে:
একটি পৃথক মাস্টার ইতিহাস (কোনও সেশন আপনার ইতিহাসকে বাধা দিতে পারে না)
স্বয়ংক্রিয় ইতিহাস রচনা (হটকি নেই)
বিরল লেখা (প্রতিটি আদেশের পরে কোনও সংযোজন নেই)
ইন্টারেক্টিভ স্টার্টআপে, যদি $HISTFILESIZE
কোনও সংখ্যায় সেট করা থাকে, বাশ $HISTFILE
সেই সংখ্যাটিতে সংক্ষিপ্ত হয়ে যায়। ইন্টারেক্টিভ ক্লোজালে, যদি শেল বিকল্পটি histappend
সেট করা থাকে তবে ব্যাশ $HISTSIZE
লাইনগুলিকে এতে যুক্ত করে $HISTFILE
, অন্যথায় এটি ওভাররাইট করে $HISTFILE
।
প্রতিবার টার্মিনালে একটি ট্যাব তৈরি করা হয়, ~/.bash_profile
এটি পঠিত হয়, যার অর্থ বাশ আপনার পড়তে যায় না ~/.bashrc
। আপনার সাথে নিম্নলিখিত লাইনটি যুক্ত করুন ~/etc/bash_profile
:
# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc
আপনি যদি স্ক্রিন ব্যবহার করেন তবে আপনার কনফিগারেশন ফাইলটি ~ / .স্ক্রিনসিআরসি। আপনি যদি স্ক্রিনটি ইতিহাস রেকর্ড করতে চান তবে আপনাকে কেবল একটি লগইন শেল ব্যবহারের জন্য এটি সেট করতে হবে যা আপনার বাশ স্টার্টআপ ফাইলগুলি উত্স করবে (এবং আপনার ইতিহাস রেকর্ড করবে)।
# use bash, make it a login shell
defshell -bash
একটি আলাদা ধারণা (প্রযোজ্য নাও হতে পারে) তবে শেল-সিঙ্কunlimited
ব্যবহার করার সময় আপনার ইতিহাস থাকতে পারে ।