.বাশ_ইস্তুরিতে সদৃশ প্রবেশগুলি কীভাবে এড়ানো যায় to


108

একই কমান্ডটি আমার ইতিহাসে বারবার তালিকাভুক্ত করা হয়েছে। আমি কীভাবে এড়াতে পারি? আমি জানি এটি এর মাধ্যমে সম্ভব HISTCONTROLকিন্তু সঠিক উপায় আমি খুঁজে পাইনি।


আমি একটি সম্পর্কিত প্রশ্ন তৈরি করেছি: Askubuntu.com/questions/205520/… । ইতিহাসের ডুপস একটি আদেশের প্রসঙ্গটি দেখতে দরকারী useful আপনি যখন ইতিহাস মুদ্রণ করেন তখন কখনও কখনও আপনি কীগুলি বাদ দিতে চান।
justingordon

উত্তর:


123

থেকে bashমানুষ পৃষ্ঠা:

HISTCONTROL

ইতিহাস তালিকায় কমান্ডগুলি কীভাবে সংরক্ষণ করা হয় তা নিয়ন্ত্রণ করে মানগুলির একটি কোলন-বিভক্ত তালিকা। মানগুলির তালিকায় যদি অন্তর্ভুক্ত থাকে তবে ignorespaceস্পেস অক্ষর দিয়ে শুরু হওয়া রেখাগুলি ইতিহাসের তালিকায় সংরক্ষণ করা হয় না। ignoredupsপূর্ববর্তী ইতিহাসের এন্ট্রিটির সাথে মিলিত কারণগুলির একটি মান সংরক্ষণ করা যায় না। এর মান ignorebothশর্টহ্যান্ড ignorespace এবং এর জন্য ignoredups। একটি মানerasedupsপূর্ববর্তী সমস্ত রেখাগুলি বর্তমান লাইনের সাথে মিলিত হওয়ার পরে সেই লাইনটি সংরক্ষণের আগে ইতিহাসের তালিকা থেকে সরানো হবে। উপরের তালিকায় নেই এমন কোনও মান উপেক্ষা করা হবে। যদি এইচআইএসটি কনট্রোলটি সেট না করা থাকে, বা কোনও বৈধ মান অন্তর্ভুক্ত না করে, শেল পার্সার দ্বারা পড়া সমস্ত লাইন হিস্টিগনোরের মান সাপেক্ষে ইতিহাসের তালিকায় সংরক্ষণ করা হয়। মাল্টি-লাইন যৌগিক কমান্ডের দ্বিতীয় এবং পরবর্তী লাইনগুলি পরীক্ষা করা হয় না এবং এইচআইএসটি কনট্রোলের মান নির্বিশেষে ইতিহাসে যুক্ত করা হয়।

আপনার নীচের লাইনটি রাখুন ~/.bashrc:

export HISTCONTROL=ignoreboth:erasedups


আপনি কি চান যে আমি IST / .bashrc এর নীচে HISTCONTROL = উপেক্ষা করুন?
karthick87

1
@ কার্থিক আপনি এটি কোথায় রেখেছেন তা বিবেচ্য নয়, যদিও নীচের অংশটি ভাল।
যিশাইয়

উবুন্টু 12.04 আমার ইনস্টলেশনের উপর আমি এই অদলবদল করা ছিল ~/.bash_loginবেশির ভাগ সময় যদি .bashrc রুপান্তরিত করা হয়েছে এটা কাজ করবে কিন্তু যে ক্ষেত্রে নয় সব সময়।
সিকে-

3
আপনার বাশ প্রোফাইল / আরসি ফাইলগুলি আপডেট করার পরে এগুলি চালাতে ভুলবেন না -source ~/.bashrc && source ~/.bash_profile
এরিক কিগাথি

23

এটি আপনার আটকে দিন ~/.bashrc:

export HISTCONTROL=ignoredups

আপনি পরিবর্তে ব্যবহার করতে পারে ignoreboth। এটি উভয়ই শর্টহ্যান্ড ignorespaces(স্পেস দিয়ে শুরু কমান্ড) এবং ignoredups(সদৃশ)।

আমি ignoredupsনিজে থেকেই পছন্দ করি কারণ আমি যখন কোনও ওয়েবসাইটের বাইরে কমান্ডটি অনুলিপি করি তখন সামনে বিরক্তিকর জায়গাগুলির সাথে কমান্ডগুলি উপেক্ষা করার ডিফল্ট আচরণটি আমি খুব বিরক্তিকর পাই এবং এটি সংরক্ষণ হয় না কারণ আমিও ঘটনাক্রমে একটি স্পেসে অনুলিপি করেছি .... তবে প্রতিটি তাদের নিজস্ব।


3
এখনও সদৃশ রয়েছে ... সমস্যা কি হতে পারে ?? imgur.com/fXeLQ.png
karthick87

5
@ কর্থিক 87 another অন্য উত্তর থেকে উদ্ধৃত: পূর্ববর্তী ইতিহাসের প্রবেশের সাথে মিলিত কারণগুলির একটি মান ignoredupsসংরক্ষণ করা যায় না । এটি কেবল পরপর অভিন্ন লাইনগুলি সরিয়ে দেয়।
AL

10

এটি স্থাপন ~/.bashrcকরাটি পুরো সেশন জুড়ে @ অ্যালভিনের সমাধানটি পুরো হিসাবে ব্যবহার করবে

HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"

উত্স: লিনাক্স: বাশ ইতিহাস: "উপেক্ষা" এবং "মুছে ফেলা" সেশনের সাধারণ ইতিহাসের সাথে বিরোধ স্থাপন করে setting


কেন তার ব্যবহার export HISTCONTROLএবং আপনার ব্যবহার করে না? পার্থক্য কি? এটা আমার জন্য রপ্তানি ছাড়া কাজ করছে, আমি শুধু কৌতুহলী
felwithe

1
ভাল প্রশ্ন! আমি উত্তর জানতে চাই। সাধারণভাবে exportউপ-প্রক্রিয়াগুলিতে পরিবর্তনশীল উপলব্ধ করে available stackoverflow.com/q/1158091/552621 ক্ষেত্রে HISTCONTROL, PROMPT_COMMANDইত্যাদি, এই ভেরিয়েবল তাই হয়তো তাদের রপ্তানি (শিশুদের প্রক্রিয়া) প্রয়োজন হয় না শেল নিজে ব্যবহার করা হয়।
নুর ওল্ফ


3

আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন ~/.bashrc:

export HISTCONTROL=ignoredups

এটি করার জন্য, আপনি এই আদেশটি ব্যবহার করতে পারেন:

nano ~/.bashrc

0

প্রতিটি নতুন কমান্ড অবিচ্ছিন্নভাবে রেকর্ড করা জটিল is প্রথমে আপনাকে যুক্ত করতে হবে ~/.profileবা অনুরূপ:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'

তারপরে আপনাকে যুক্ত করতে হবে ~/.bash_logout:

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