বাশ ইতিহাসে "ইতিহাস -d" লুকান


14

যদি আমি দুর্ঘটনাক্রমে আমার পাসওয়ার্ড বা ব্যাশে সংবেদনশীল অন্য কিছু টাইপ করি তবে আমি সহজেই সেই লাইনটি সরিয়ে ফেলতে history -d ROW#পারি, তবে history -d ROW#ইতিহাসের কমান্ডটি দিয়ে আমি সর্বদা প্রত্যেককে দেখিয়েছি যে কেউ ভুল সংশোধন করেছে।

বাশ ইতিহাসে উপস্থিত হওয়া থেকে রোধ করার জন্য আমি কোনও আদেশে কিছু যুক্ত করতে পারি?

উত্তর:


27

আপনার ইতিহাসে একটি কমান্ড সংরক্ষণ না করে কেবল এটির আগে একটি স্থান ( এখানে চিহ্নিত ):

$ echo test
test
$ history | tail -n2
 3431  echo test
 3432  history | tail -n2
$ echo test2
test2
$ history | tail -n2
 3431  echo test
 3432  history | tail -n2

এই আচরণটি আপনার ~/.bashrcফাইলে সেট করা হয়েছে , এই পংক্তিতে:

HISTCONTROL=ignoreboth

man bash বলেছেন:

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

ignoredupshistory | tail -n2যাইহোক, উপরের পরীক্ষায় ইতিহাসে একবারে উপস্থিত হওয়ার কারণ ।


একটি টার্মিনালের ইতিহাস র‍্যামে সংরক্ষিত হয় এবং ~/.bash_historyআপনি টার্মিনালটি বন্ধ করার সাথে সাথেই আপনার কাছে পৌঁছে যায় । আপনি যদি কোনও নির্দিষ্ট এন্ট্রি মুছতে চান তবে আপনি এটি দিয়ে ~/.bash_historyকরতে পারেন sed:

                                   # print every line…
sed '/^exit$/!d' .bash_history     # … which is just “exit”
sed '/^history/!d' .bash_history   # … beginning with “history”
sed '/>>log$/!d' .bash_history     # … ending with “>>log”
sed '\_/path/_!d' .bash_history    # … containing “/path/” anywhere

গত এক আমি ডিফল্ট বিভেদক পরিবর্তিত /করতে _যেমন অনুসন্ধান শব্দ ভিতরে ব্যবহৃত হচ্ছে, আসলে এই সমান sed -i '/\/path\//d' .bash_history। যদি কমান্ডটি কেবলমাত্র সেই লাইনগুলিকে আউটপুট করে দেয় যা আপনি মুছে ফেলতে চান -iবিকল্পটি যোগ করতে এবং মুছে ফেলাতে পরিবর্তন !dকরতে d:

                                   # delete every line…
sed -i '/^exit$/d' .bash_history   # … which is just “exit”
sed -i '/^history/d' .bash_history # … beginning with “history”
sed -i '/>>log$/d' .bash_history   # … ending with “>>log”
sed -i '\_/path/_d' .bash_history  # … containing “/path/” anywhere

12

একটি উপায় HISTIGNOREহ'ল পরিবেশ পরিবর্তনশীল সেট করা । থেকেman bash

HISTIGNORE
      A colon-separated list of patterns used to decide which  command
      lines  should  be  saved  on  the history list.  Each pattern is
      anchored at the beginning of the line and must  match  the  com‐
      plete  line  (no  implicit  `*'  is  appended).  Each pattern is
      tested against the line after the checks specified  by  HISTCON‐
      TROL  are  applied. 

[এফডাব্লুআইডাব্লু, এটি পূর্বনির্ধারিত HISTCONTROLযা টাইপ-এ-স্পেস-ইন-ফ্রন্ট ওয়ার্কারআউন্ড সরবরাহ করে]।

সুতরাং, উদাহরণস্বরূপ

HISTIGNORE='history -d*'

যদি আপনি এটি অবিরাম থাকতে চান তবে এটি আপনার থেকে রফতানি করুন ~/.bashrc

export HISTIGNORE='history -d*'

6

আপনি পারেন

  • টার্মিনাল উইন্ডোর (গুলি) বন্ধ । এটি টার্মিনাল উইন্ডোটির সর্বাধিক বর্তমান ইতিহাসটি ফ্লাশ করবে যা আপনি সর্বশেষে বন্ধ করবেন (অন্যান্য উইন্ডোজ বন্ধ হওয়ার পরে) ফাইলটিতে/home/$USER/.bash_history

  • /home/$USER/.bash_historyজড়িত না করে ফাইল সম্পাদনা করুনbash , উদাহরণস্বরূপ আপনার প্রিয় সম্পাদকটি Alt+ এর মাধ্যমে শুরু করেF2

    এইভাবে আপনি পুরো ইতিহাসটি পরীক্ষা করতে পারেন এবং যে কোনও আদেশই সরিয়ে ফেলতে পারেন, যাতে আপনি আর থাকতে চান না।

    এখানে চিত্র বর্ণনা লিখুন

    এখানে চিত্র বর্ণনা লিখুন


1

আমি সাধারণত:

history -w; history -c; $EDITOR $HISTFILE; history -r

ইতিহাস ফাইলটি ডিস্কে লিখিত হয়, মেমরিতে পরিষ্কার হয়, আপনি যা চান তা করতে এটি সম্পাদনা করুন এবং তারপরে আপনি সম্পাদনা করা ইতিহাস ফাইলটি আবার পড়তে হবে।

নোট করুন যে আপনি যদি সম্পাদক ব্যাকআপ ফাইলগুলি সংরক্ষণ করেন তবে দুষ্টু শব্দটি এখনও ডিস্কে উপস্থিত হতে পারে।

ব্যবহারের আরেকটি বিকল্প -dহ'ল ভবিষ্যদ্বাণীপূর্ণ ইতিহাস নম্বরগুলি ব্যবহার করা:

startide sr> # good thing
startide sr> # bad thing
startide sr> history | tail -n 2
17239  # bad thing
17240  history | tail -n 2
startide sr> history -w; history -d 17239; history -d 17239; history -d 17239
startide sr> # other thing
startide sr> history | tail -n 3
17239  # good thing
17240  # other thing
17241  history | tail  -n 3

এই উদাহরণে, আমি খারাপ জিনিসটি মুছি, আমি ইতিহাস নম্বর পাওয়ার জন্য কমান্ডটি মুছে ফেলি এবং তারপরে আমি ইতিহাসটি মুছে ফেলার জন্য যে আদেশটি ব্যবহার করি তা মুছে ফেলি। তখন সবকিছু স্যানিটাইজ করা হয়।


0

আপনি যদি ইতিহাসে এটি সংরক্ষণ না করে একটি কমান্ড চালাতে চান তবে এটি একটি অতিরিক্ত স্থান সহ প্রিপেন্ড করুন

prompt$ echo saved
prompt$  echo not saved \
> #     ^ extra space

এটি কাজ করার জন্য আপনার HIDCONTROL এ উপেক্ষা করা স্থান বা উপেক্ষা করা দরকার। উদাহরণস্বরূপ, চালান

এইআইএসটি কনট্রোল = উপেক্ষা স্পেস এই সেটিংটি অবিরাম করতে আপনার .bashrc এ রাখুন।

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