ইতিহাসের পরিবর্তন থেকে বাশকে কীভাবে প্রতিরোধ করা যায়?


26

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

কীভাবে আমি এটি হতে রোধ করতে পারি?


3
আমি এই প্রশ্নের শিরোনাম পছন্দ করি। আপনি আসলে ইতিহাস পরিবর্তন করতে পারেন এবং আপনি অভিযোগ করছেন? আপনার কি কোন সমস্যা হচ্ছে?!
ড্যানিয়েল বেক

@ ড্যানিয়েল: লোল, হ্যাঁ ... মানে, আমি যেন আমার অতীতকে পরিবর্তন করছি। স্পষ্টতই অযৌক্তিক এবং এটি কিছুক্ষণ পরে হাস্যকরভাবে বিরক্তিকর হয়ে ওঠে । : \
মেহরদাদ

বিটিডব্লিউ, আপনি যদি এর পরিবর্তে ইতিহাস-অনুসন্ধান-এক্সএক্সএক্সএক্স ব্যবহার করেন তবে আচরণটি আলাদা। এটা কি তোমার জন্য কিছু?
ড্যানিয়েল বেক

@ ড্যানিয়েল: সত্যই এটি দরকারী - অনেক ধন্যবাদ তবে তবুও, আমি এই প্রশ্নের উত্তর জানতে চাই, কারণ কখনও কখনও আদেশগুলি একে অপরের মতো দেখতে লাগে না এবং এটি কার্যকর হয় না।
মেহরদাদ

খালি প্রম্পট সহ ইতিহাস-অনুসন্ধান ঠিক পূর্ববর্তী / পূর্ববর্তী ইতিহাসের মতো কাজ করে, অর্থাৎ সমস্ত এন্ট্রি প্রদর্শন করে।
ড্যানিয়েল বেক

উত্তর:


17

আপনি রিডলাইন সেটিংসটি চান:

set revert-all-at-newline on

আপনি এটি এটিকে রাখতে পারেন ~/.inputrc(নীচের নোটটি দেখুন), বা bind 'revert-all-at-newline on'আপনার মধ্যে রাখতে পারেন ~/.bashrc

ডেমো:

$ man bash
$ bind 'set revert-all-at-newline on'
$ man bsh # up arrow and edit
No manual entry for bsh
$ man bash # three up arrows

আরও বিশদটি বাশ ম্যানপেজে রয়েছে :

revert-all-at-newline

যদি ' on' এ সেট করা থাকে , রিডলাইনটি স্বীকৃতি-লাইন কার্যকর হওয়ার পরে ফেরার আগে ইতিহাসের লাইনে সমস্ত পরিবর্তনকে পূর্বাবস্থায় ফিরিয়ে আনবে। ডিফল্টরূপে, ইতিহাসের লাইনগুলি সংশোধন করা যেতে পারে এবং রিডলাইনে কল করার জন্য পৃথক পূর্ববর্তী তালিকাগুলি ধরে রাখতে পারে। ডিফল্ট হ'ল ' off'।


বিঃদ্রঃ:

যদি ~/.inputrcসেটিংসের উদ্দেশ্যে কোনও নতুন ফাইল তৈরি করা হয় revert-all-at-newline, তবে সচেতন হন যে বাশ এই ফাইলটিতে রিডলাইন সেটিংসটি ফাইলের মধ্যে থাকা কোনও সেটিংসের পরিবর্তে ব্যবহার করবে /etc/inputrc। অর্থাৎ, নির্দিষ্ট করা কোনও সেটিংস /etc/inputrcআর কার্যকর হবে না। সুতরাং, যদি /etc/inputrcফাইলটি বিদ্যমান থাকে ~/.inputrcতবে লাইনটি দিয়ে শুরু করা ভাল ধারণা :

$include /etc/inputrc


আপনি দুর্দান্ত, আমার ঠিক এটি দরকার। আমি আর আমার মনিটরের খোঁচা দিতে চাই না। : ডি +1000000 (আমার ইচ্ছা)
মেহরদাদ

5

আমি প্রবেশ করি:

ls /tmp

- দুর্দান্ত এখন আমি প্রবেশ করতে চাই না

ls /temp 

এবং এটি ইতিহাসে প্রবেশ করতে বাধা দিতে পারে, সুতরাং আমি যদি ফাঁকা দিয়ে আদেশ শুরু করি:

 ls /temp

এটি দেখতে শক্ত, তবে যদি আপনি এটি জানেন ...

এটি দ্বারা নিয়ন্ত্রিত হয়

export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth

উপেক্ষা করা কেবল অনুলিপি করা কমান্ডগুলি উপেক্ষা করে, লাইনের শুরুতে স্থানগুলিকে উপেক্ষা করে, অন্যথায় না লুকানো পাসওয়ার্ডগুলি আড়াল করতে দরকারী useful

তবে সম্ভবত আপনি কোনও সমাধানের জন্য বাইরে এসেছেন, যেখানে আপনি উভয় কমান্ড, অবিস্মরণিত পুরানো এবং নতুনটি দিয়ে শেষ করবেন। আমার সংস্করণ বা সেটিংসের সংস্করণটি এ জাতীয় আচরণ করে তবে আমি জানি না, আপনার চেয়ে আলাদা কি।


হা; আমি সবসময় ধরে নিয়েছিলাম একটি শীর্ষস্থানীয় স্থান সহ কমান্ডগুলি সংরক্ষণ না করা একটি বাগ was ধন্যবাদ। :)
25:55
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.