কোনও প্রদত্ত শেলের উপর অস্থায়ীভাবে bash_history স্থগিত করবেন?


115

বাশ-এ ইতিহাস ট্র্যাকিং সাময়িকভাবে স্থগিত করার কোনও উপায় আছে, যাতে "ধরণের" ছদ্মবেশী মোডে প্রবেশ করতে পারে? আমি আমার টার্মিনালে এমন স্টাফ প্রবেশ করিয়ে দিচ্ছি যা আমি সংবেদনশীল আর্থিক তথ্য চাই না।

উত্তর:


153

আপনি যা খুঁজছেন এটি হ'ল:

unset HISTFILE

থেকে man bash

এইচআইএসএফআইএল যদি সেট না করা থাকে বা ইতিহাসের ফাইলটি লিখনযোগ্য হয় তবে ইতিহাস সংরক্ষণ করা হয় না।

বিকল্পভাবে, আপনি যদি এটিকে টগল করতে চান এবং তারপরে আবার ফিরে যেতে চান তবে এটি ব্যবহার করা সহজ হতে পারে set:

বন্ধ কর

set +o history

চালু করা

set -o history

12
এর মান HISTFILEশুধুমাত্র পরীক্ষা করা হয় যখন ব্যাশ প্রস্থানের, তাই প্রথম পদ্ধতি হিসাবে (যদি আপনি মান ফিরিয়ে কমান্ড সংরক্ষণ করা হবে) কাজ করে না। set +o historyনির্দেশিত হিসাবে কাজ করে।
গিলস

5
ধন্যবাদ, দুর্দান্ত। আমি ব্যবহার করব set +o historyএবং set -o history); আগে পিছে টগল করার জন্য যখন আমি গোপন কাপড় করছি
Naftuli কে

1
unset HISTFILEকাজ করে না. set -/+o historyএকটি যাদুমন্ত্র মত কাজ করে! ধন্যবাদ
খোলোফেলো মালোমা

4
টিপ হিসাবে যদি আপনি কমান্ডের আগে একটি স্থান রাখেন (কমান্ডটি একটি স্পেস দিয়ে শুরু করুন) এটি আপনার ইতিহাসে রেকর্ড করা হবে না, এবং উপরে / ডাউন তীর কীগুলি এটিও প্রদর্শন করবে না।
মাহদী

1
এটি zsh বিটিডব্লিউতে কাজ করবে না
শুভম চৌধুরী চৌধুরী

33

HISTCONTROL="ignorespace"ইতিহাস ব্যবহার করে আপনি যে কোনও কমান্ড রেকর্ড করতে চান না সে জন্য ব্যাশ, সেট এবং স্পেসের পূর্বে ব্যবহার করুন । আপনি যদি কোনও পদক্ষেপ নিতে ভুলে গেছেন তবে history -d <number>নির্দিষ্ট প্রবেশিকা মোছার history -cজন্য বা পুরো কমান্ডের ইতিহাস সাফ করার জন্যও রয়েছে ।


27

HISTCONTROLএতে রয়েছে তা নিশ্চিত করুন ignorespace। আপনি সম্ভবত আপনার HISTCONTROL=ignorespace( HISTCONTROL=ignoredups:ignorespaceবা কিছু) যুক্ত করতে চাইবেন ~/.bashrc। তারপরে স্পেস দিয়ে শুরু হওয়া যে কোনও কমান্ড লাইনটি ইতিহাস থেকে বাদ দেওয়া হবে।

আরেকটি সম্ভাবনা হ'ল নতুন বাশ সেশন শুরু করা যা এর ইতিহাস সংরক্ষণ করে না।

$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell

5

যদি আপনার বেশ কয়েকটি কমান্ড সংরক্ষণ করা এড়াতে হয় এবং আপনি পূর্ববর্তী কমান্ডগুলি অ্যাক্সেস করতে তীর ব্যবহার করতে চান তবে:

$ bash                        # open a new session.
$ unset HISTFILE              # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$

কমান্ডগুলি কীভাবে সংরক্ষণ করা হয় তা নিয়ন্ত্রণ করার জন্য চারটি উপায় (স্তর) রয়েছে।

  1. প্রথম এবং সবচেয়ে সহজ ব্যবহার ignorespace(বা উপেক্ষা)

    $ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"

    এটি সেই কমান্ডগুলির আগে একটি স্থান ব্যবহারের অনুমতি দেয় যা আপনি মেমরির তালিকায় রেকর্ড করা এড়াতে চান history। এবং, ফলস্বরূপ, মেমরিতে রেকর্ডকৃত কোনও কমান্ড নেই যা ফাইলটিতে প্রেরণ করা যেতে পারে, তাই তালিকাভুক্ত ফাইলটিতে প্রেরণ করার জন্য একটি কমান্ড এড়ানো হবে $HISFILE

  2. ফাইলটিতে কমান্ড রেকর্ডিং এড়ান $HISTFILE:

    $ unset HISTFILE

    যদি সেট না করা থাকে, শেলটি প্রস্থান করা হলে কমান্ডের ইতিহাস সংরক্ষণ করা হয় না।

    নাল HISTFILE=''এবং / অথবা HISTFILE=/dev/nullএকই প্রভাব কাজ করে। বুঝুন যে কমান্ডগুলি এখনও মেমরি তালিকায় রেকর্ড করা হচ্ছে, historyকমান্ডটি চেষ্টা করুন বা উপরের তীরটি।

    সতর্কতা: শেলটি উপস্থিত হওয়ার আগে যদি HISTFILE পুনরায় সেট করা হয় তবে মেমরিতে যা রেকর্ড করা হয়েছে তা সবই ফাইলটিতে লেখা যেতে পারে।

  3. স্মৃতিতে ইতিহাসের তালিকায় নতুন কমান্ড রেকর্ড করা এড়িয়ে চলুন । এবং, মেমরি হিসাবে না থাকায়, ফাইল করতে রেকর্ড করা যায় না।

    $ shopt -ou history              # or set +o history

    shopt -os history(বা set -o history) দিয়ে পুনরায় সক্ষম করুন

  4. মেমরির ইতিহাস তালিকা থেকে সমস্ত কমান্ড সরিয়ে দিন:

    $ HISTSIZE=0

    সমস্ত কমান্ড মুছে যাবে (মেমরি থেকে) এবং তাই ভেরিয়েবলটি কিছু বৈধ সংখ্যাযুক্ত মান হিসাবে সেট না করা অবধি অবশ্যই ফাইলটিতে কোনও কিছু সংরক্ষণ করা যায় না।


//, এটি একটি সুবিধাজনক পৃষ্ঠায় @ অ্যামব্রোজ থেকে উত্তর ব্যতীত সমস্ত উত্তর কভার করে। যাওয়ার উপায়, @ ইসহাক। আপনি কি এর জন্য দস্তাবেজের সাথে দুটি বা দুটি লিঙ্ক যুক্ত করতে ইচ্ছুক হবেন? খুব নিশ্চিত man historyএটি আমাদের বেশিরভাগের জন্য কাটা যাচ্ছে না।
নাথান বাসানিজ

1
@ নাথানবাসানিজ সম্প্রসারিত উত্তম?
ইসহাক

// , হ্যাঁ! এগুলি কি বাশ ভেরিয়েবল এবং শপ্ট বিল্ট-ইন ডক্স থেকে এসেছে তা ধরে নিয়ে আমি কি সঠিক হতে পারি ?
নাথান বাসানিজ

//, এছাড়াও, যখন আমি ব্যাশ ভেরিয়েবলের ডকুমেন্টেশন পড়ছিলাম , তখন আমি এসে পৌঁছেছিলাম HISTIGNORE, যা subsumesএর কাজ HISTCONTROL
নাথান বাসানিজ

(ধরে নিই যে আপনি লিনাক্স ব্যবহার করছেন): আপনি যদি কমান্ডটি কার্যকর করেন LESS=+'/^ *HISTI' man bash(তবে এটি "ম্যানুয়াল পৃষ্ঠাগুলি" নয়?) @ নাথানবাশানিজ
আইজাক 21

3

ইতিহাস বন্ধ করার একটি সহজ উপায় রয়েছে, সুতরাং .bash_historyফাইলগুলিতে কমান্ডগুলি সংরক্ষণ করা হবে না ।

আপনাকে কোনও কমান্ডের সামনে সাদা স্থান বা ট্যাব স্পেস রাখতে হবে, যাতে সেই কমান্ডটি ইতিহাসে সংরক্ষণ করা যায় না। উদাহরণ স্বরূপ:

$ ls 
print the list of file 
$ history 
ls
history

$  pwd
print the current  working directory 
$ history 
ls
history

pwdকমান্ড ইতিহাসে দোকান পাবেন না কারণ এটি সামনে হোয়াইটস্পেস হয়েছে।


এটা কাজ করে না; বাশ অভিযোগ করেন যে '-' বা '-হিসটরি', বা অন্যান্য হাইফেনেটেড কমান্ডগুলি খুঁজে পাওয়া যায় না।
স্যামুয়েল এ। ফালভো II

2
এইআইএসটিএনটিআরএল = "উপস্থাপিত স্থান" ফোর্সফ্যাকের প্রতিক্রিয়া হিসাবে সেট না করা হলে এই কাজ করবে না
বিকাশকারী

1
export HISTFILE=/dev/null 

এটা আমার গোটা পথ। কেবলমাত্র যদি আনসেট করা ইতিহাস / ইতিহাস / হিস্টফ্রন্ট, ইত্যাদি ... কাজ না করে তবে / ডি / নাল এটিকে রপ্তানি আমার পক্ষে সর্বদা কাজ করে।


সাময়িকভাবে ইতিহাস স্থগিত করার জন্য? এটি আমার পক্ষে নিয়মিত কমান্ড হিসাবে কাজ করে না। পরবর্তী কমান্ডগুলি ইতিহাসে লগ করা হয়েছিল। আপনি কি এইটিকে .বাশ_প্রফাইলে বা কোনও স্ক্রিপ্টে কল করছেন? GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
মাদুর গেসেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.