একই কমান্ডটি আমার ইতিহাসে বারবার তালিকাভুক্ত করা হয়েছে। আমি কীভাবে এড়াতে পারি? আমি জানি এটি এর মাধ্যমে সম্ভব HISTCONTROL
কিন্তু সঠিক উপায় আমি খুঁজে পাইনি।
একই কমান্ডটি আমার ইতিহাসে বারবার তালিকাভুক্ত করা হয়েছে। আমি কীভাবে এড়াতে পারি? আমি জানি এটি এর মাধ্যমে সম্ভব HISTCONTROL
কিন্তু সঠিক উপায় আমি খুঁজে পাইনি।
উত্তর:
থেকে bash
মানুষ পৃষ্ঠা:
HISTCONTROL
ইতিহাস তালিকায় কমান্ডগুলি কীভাবে সংরক্ষণ করা হয় তা নিয়ন্ত্রণ করে মানগুলির একটি কোলন-বিভক্ত তালিকা। মানগুলির তালিকায় যদি অন্তর্ভুক্ত থাকে তবে
ignorespace
স্পেস অক্ষর দিয়ে শুরু হওয়া রেখাগুলি ইতিহাসের তালিকায় সংরক্ষণ করা হয় না।ignoredups
পূর্ববর্তী ইতিহাসের এন্ট্রিটির সাথে মিলিত কারণগুলির একটি মান সংরক্ষণ করা যায় না। এর মানignoreboth
শর্টহ্যান্ডignorespace
এবং এর জন্যignoredups
। একটি মানerasedups
পূর্ববর্তী সমস্ত রেখাগুলি বর্তমান লাইনের সাথে মিলিত হওয়ার পরে সেই লাইনটি সংরক্ষণের আগে ইতিহাসের তালিকা থেকে সরানো হবে। উপরের তালিকায় নেই এমন কোনও মান উপেক্ষা করা হবে। যদি এইচআইএসটি কনট্রোলটি সেট না করা থাকে, বা কোনও বৈধ মান অন্তর্ভুক্ত না করে, শেল পার্সার দ্বারা পড়া সমস্ত লাইন হিস্টিগনোরের মান সাপেক্ষে ইতিহাসের তালিকায় সংরক্ষণ করা হয়। মাল্টি-লাইন যৌগিক কমান্ডের দ্বিতীয় এবং পরবর্তী লাইনগুলি পরীক্ষা করা হয় না এবং এইচআইএসটি কনট্রোলের মান নির্বিশেষে ইতিহাসে যুক্ত করা হয়।
আপনার নীচের লাইনটি রাখুন ~/.bashrc
:
export HISTCONTROL=ignoreboth:erasedups
~/.bash_login
বেশির ভাগ সময় যদি .bashrc রুপান্তরিত করা হয়েছে এটা কাজ করবে কিন্তু যে ক্ষেত্রে নয় সব সময়।
source ~/.bashrc && source ~/.bash_profile
এটি আপনার আটকে দিন ~/.bashrc
:
export HISTCONTROL=ignoredups
আপনি পরিবর্তে ব্যবহার করতে পারে ignoreboth
। এটি উভয়ই শর্টহ্যান্ড ignorespaces
(স্পেস দিয়ে শুরু কমান্ড) এবং ignoredups
(সদৃশ)।
আমি ignoredups
নিজে থেকেই পছন্দ করি কারণ আমি যখন কোনও ওয়েবসাইটের বাইরে কমান্ডটি অনুলিপি করি তখন সামনে বিরক্তিকর জায়গাগুলির সাথে কমান্ডগুলি উপেক্ষা করার ডিফল্ট আচরণটি আমি খুব বিরক্তিকর পাই এবং এটি সংরক্ষণ হয় না কারণ আমিও ঘটনাক্রমে একটি স্পেসে অনুলিপি করেছি .... তবে প্রতিটি তাদের নিজস্ব।
ignoredups
সংরক্ষণ করা যায় না । এটি কেবল পরপর অভিন্ন লাইনগুলি সরিয়ে দেয়।
এটি স্থাপন ~/.bashrc
করাটি পুরো সেশন জুড়ে @ অ্যালভিনের সমাধানটি পুরো হিসাবে ব্যবহার করবে
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
উত্স: লিনাক্স: বাশ ইতিহাস: "উপেক্ষা" এবং "মুছে ফেলা" সেশনের সাধারণ ইতিহাসের সাথে বিরোধ স্থাপন করে setting
export HISTCONTROL
এবং আপনার ব্যবহার করে না? পার্থক্য কি? এটা আমার জন্য রপ্তানি ছাড়া কাজ করছে, আমি শুধু কৌতুহলী
export
উপ-প্রক্রিয়াগুলিতে পরিবর্তনশীল উপলব্ধ করে available stackoverflow.com/q/1158091/552621 ক্ষেত্রে HISTCONTROL
, PROMPT_COMMAND
ইত্যাদি, এই ভেরিয়েবল তাই হয়তো তাদের রপ্তানি (শিশুদের প্রক্রিয়া) প্রয়োজন হয় না শেল নিজে ব্যবহার করা হয়।
export HISTCONTROL=erasedups
প্রতিটি নতুন কমান্ড অবিচ্ছিন্নভাবে রেকর্ড করা জটিল is প্রথমে আপনাকে যুক্ত করতে হবে
~/.profile
বা অনুরূপ:
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
তারপরে আপনাকে যুক্ত করতে হবে ~/.bash_logout
:
history -a
history -w