কিভাবে ইতিহাস থেকে একটি এক লাইন অপসারণ?


202

আমি ম্যাক ওএসএক্স-এ কাজ করছি, তাই অনুমান করি আমি ব্যাশ ব্যবহার করছি ...?

কখনও কখনও আমি এমন কিছু প্রবেশ করি যা আমি ইতিহাসে মনে রাখতে চাই না। আমি কীভাবে এটি সরিয়ে ফেলব?


উত্তর:


338

প্রতিরোধক ব্যবস্থা

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

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

এই কাজ করার জন্য আপনি হয় প্রয়োজন ignorespaceবা ignorebothমধ্যে HISTCONTROL। উদাহরণস্বরূপ, চালান

HISTCONTROL=ignorespace

এই সেটিংটি অবিরাম করতে, এটি আপনার মধ্যে রাখুন .bashrc

ময়না তদন্ত সাফ

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

history

আপনার ইতিহাসে আদেশের তালিকা প্রদর্শন করতে to আপনি মুছতে চান (যেমন 1234) এবং চালাতে চান তার পাশের নম্বরটি সন্ধান করুন

history -d 1234

অতিরিক্তভাবে, আপনি যে রেখাটি মুছতে চান তা যদি ইতিমধ্যে আপনার IST HISFILE- তে লিখিত থাকে (যা সাধারণত আপনি যখন ডিফল্টরূপে একটি অধিবেশন শেষ করেন তখন), আপনাকে আবার IST HISTFILE এ লিখতে হবে, বা নতুন খুললে লাইনটি আবার উপস্থিত হবে সেশন:

history -w

এটা কাজ করেছে. আমি মনে করি এটি সংশোধন করার পরে আমাদের ~ / .bashrc উত্স করা দরকার ...
বি সেভেন

3
@ jw013 আমি PROMPT_COMMAND এ সেট করেছি history -a, সেক্ষেত্রে এটি ইতিমধ্যে সাধারণ কনফিগারেশনের অধীনে প্রস্থান না করে ইতিহাস ফাইলে লেখা রয়েছে। বিশেষত: mywiki.wooledge.org/BashFAQ/088
জর্দান 2

5
একটি একক লাইন মুছে ফেলার পরে, আপনি আপনার $ HISTFILE ব্যবহার করে বর্তমান ইতিহাস লিখতে প্রয়োজন history -w। অন্যথায় আপনি প্রস্থান করার পরে, মুছে ফেলা লাইন এখনও আছে!
ফিলিপ আলভারেজ

1
উপরের মন্তব্যে +1; এর history -wপরে ব্যবহার করা history -d {num}আমার ঠিক যেমনটি প্রয়োজন ছিল - সেই সমালোচনামূলক উত্তোলনের উত্তরে যুক্ত করা উচিত, অন্যথায় একজন ব্যবহারকারী বর্তমান শেল থেকে একটি অস্থায়ী মোছা ভাবা আসলে স্থায়ী হতে পারে।
মাইকেল 25

1
ফাইলটিতে history -wইতিমধ্যে লেখা রয়েছে এমন এন্ট্রিগুলির জন্য @BSStein প্রয়োজনীয় .bash_history। কীভাবে পুনরুত্পাদন করা যায় (যেমন স্টক কনফিগারেশনের সাথে CentOS 7 এ): 1. লগইন 2. কমান্ড প্রবেশ করুন echo foo3. লগআউট 4. আবার লগইন করুন echo foo6. 6. লগআউট 7. এর জন্য এন্ট্রি মুছুন আবার লগইন করুন: এন্ট্রি এখনও আছে। আপনি কীভাবে আপনার বাশার ইতিহাসটি কনফিগার করেছেন তার উপর নির্ভর করে আপনি এই সমস্যাটি অন্য উপায়ে পুনরুত্পাদন করতে পারেন - যেমন আপনি যদি লগআউট করার আগে ইতিহাসের লেখাকে উস্কে দেন।
maxschlepzig

53
  1. আপনার সমস্ত ইতিহাস সাফ করতে, ব্যবহার করুন

    history -c
  2. একটি একক লাইন মুছতে, ব্যবহার করুন

    history -d linenumber

6

আমার মধ্যে ~/.bashrcএটি রয়েছে যা কমান্ডটিকে $ forgetপূর্ববর্তী কমান্ডটিকে ইতিহাস থেকে মুছে ফেলবে

function forget() {                                                              
   history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);              
}

এটি কিছুটা জটিল বলে মনে হচ্ছে। history -d $( history | tail -n 1 | cut -f 1 -d " " )সহজ হবে না ?
seumasmac

1
history | tail -n1হ'ল historyকমান্ডটি নিজেই, সুতরাং সেই নম্বরটি মুছে ফেলা হলে ভুল এন্ট্রি হয়। তবে history -d $( history | awk 'END{print $1-1}' )লাইন নির্বাচন, ক্ষেত্র নির্বাচন এবং বিয়োগফলকে একত্রিত করে।
dave_thompson_085

পোর্টিনের সাহায্যে কেউ কি zेशেলকে সাহায্য করতে পারে?
অ্যালেক্স এস

6

আপনি ~/.bash_historyযখনই একটি প্রবেশ বা একাধিক এন্ট্রি মুছে ফেলতে চান তখন আপনি সর্বদা এন্ট্রিগুলি সম্পাদনা করতে এবং মুছতে পারেন useful


2
সম্ভবত আপনি শেলটি থেকে বেরিয়ে আসার পরে এই এন্ট্রিগুলি আবার চালু করা হবে।
l0b0

5

আপনি যদি পুরো ব্যাশ সেশনটি ভুলে যেতে চান তবে আপনি killবর্তমান বাশ প্রক্রিয়াটি করতে পারেন । যেহেতু ভেরিয়েবল বর্তমান শেলটি $$ধরে রাখে pid, আপনি এটি করতে পারেন:

kill -9 $$

1

ইতিহাস সাফ করার পরে আপনাকে পরিবর্তনগুলি লিখতে হবে। এবং যদি আপনি নিজের ইতিহাসে ইতিহাস মুছা কমান্ডটি পছন্দ করতে না চান তবে আপনার কমান্ডটি এটির মতো চালানো দরকার:

history -c && history -w && logout

শুভকামনা।


-1
Adding another point suppose if you want to delete a range of history lines

You can use below script. 

Below example will delete history output from line 1 to line 150.

for i in `history | awk 'NR > 1 && NR <=150{print   $1}'`; do history -d $i; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.