ইতিহাসে কমান্ড রাখতে এড়িয়ে চলুন


33

আমি বাশ ব্যবহার করি এবং আমি ইতিহাসে কিছু কমান্ড এড়াতে চাই।

  • কেবল পরবর্তী কমান্ডের জন্যই কি এটি করা সম্ভব?
  • পুরো সেশনের জন্য কি এটি করা সম্ভব?

মনে রাখবেন যে লক্ষ্যটি যদি কমান্ড লাইনের যুক্তিতে পাসওয়ার্ডগুলি আড়াল করা হয় তবে তারা পিএস
বেনিটক

উত্তর:


36

এবং আমি কেবল একটি উত্তর উত্তর মনে করেছি, এটি আপনার প্রশ্নের আসল উত্তর।

যদি আপনার HISTCONTROL এ "উপেক্ষা স্পেস" থাকে, তবে বাশ কোনও স্থানের অক্ষর দিয়ে শুরু হওয়া কোনও লাইন মনে রাখবে না। এটি বর্তমান শেলের ইতিহাসে উপস্থিত হবে না, alone HistFILE এ সংরক্ষণ করা যাক।

উদাহরণস্বরূপ আমার আমার ~ / .bashrc এ HISTCONTROL = 'অগ্রাহ্যকারী: মুছে ফেলা' রফতানি হয়েছে

বাশ ম্যান পৃষ্ঠা থেকে বিশদটি এখানে:

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

1
মহাকাশটির জন্য +1: ডি
পেট্রাস

19

গুগলিং থেকে আমি শিখেছি ইতিহাসের কয়েকটি পাঠ এখানে:

নির্দিষ্ট স্ট্রিং উপেক্ষা করার জন্য আপনি ইতিহাস সেট করতে পারেন। এই উদাহরণে, আমি ls, passwd এবং অক্ষরের স্থান দ্বারা পূর্ববর্তী কোনও কমান্ড উপেক্ষা করেছি ignored

হিস্টিগনোর = "এলএস: পাসডাব্লুড:" রফতানি করুন

আপনার সেশনের ইতিহাস অক্ষম করতে আপনি ইস্যু করতে পারেন:

HISTSIZE = 0 রফতানি করুন

উল্লেখ


7

আপনি শুধু, ইতিহাস থেকে শেষ কমান্ড মুছে ফেলার জন্য তারপর আপনি মারতে পারেন চান Up-arrow, দ্বারা অনুসরণ Ctrl - Uতারপর (লাইন শুরুতে মুছে ফেলুন), Up-arrowআবার।

আপনি ইতিহাসের মতো কোনও ব্যক্তিগত লাইন মুছতে পারেন। কেবলমাত্র আপ-তীর বা অনুসন্ধান বা এটিকে বর্তমান কমান্ড লাইনটি সম্পাদিত হওয়ার জন্য তৈরি করতে ব্যবহার করুন, তারপরে টিপুন Ctrl - Uএবং তারপরে Up-arrowবা Down-arrowঅন্য কোনও ইতিহাসের লাইনে যেতে।

এক বছর আগে আমি দুর্ঘটনাক্রমে এটি আবিষ্কার করেছি। এটি নথিভুক্ত কিনা তা আমার কোনও ধারণা নেই।

সাধারণত, যদিও এটির সাথে বর্তমান শেলের ইতিহাস কেবল সংরক্ষণ না করে ঝামেলা কম:

HISTFILE=/dev/null

3

আপনি HISTFILEপরিবর্তনশীল আনসেট করতে পারে । থেকে man bash:

  HISTFILE
         কমান্ডের ইতিহাস সংরক্ষণ করা হয় সেই ফাইলটির নাম (তার এইচটি- দেখুন
         নীচে TORY)। ডিফল্ট মান হ'ল b / .bash_history। যদি সেট না করা হয়,
         একটি ইন্টারেক্টিভ শেল যখন কমান্ড ইতিহাস সংরক্ষণ করা হয় না
         প্রস্থান করে।

আমি মনে করি না যে শেলটি প্রস্থান করার আগে এই কমান্ডটি স্থানীয় শেল ইতিহাসে উপস্থিত হতে বাধা দেয়।



1

আমি দেখতে পাচ্ছি যে এই পদ্ধতিটি কেউ লেখেনি, তাই আমি করব।

history -d $((HISTCMD-1)) && history -d <command or number of command>

history -d ইতিহাস থেকে উল্লিখিত এন্ট্রি মুছে দেয়।

HISTCMDপরবর্তী কমান্ডের কমান্ডের কমান্ডের সংখ্যা সংরক্ষণ করে। সুতরাং, (এইচআইএসটিসিএমডি -১) সর্বশেষ সম্পাদিত আদেশটি বোঝায়।

আমি একটি ছোট বাশ মুভি করেছি যা দেখায় যে এটি কীভাবে কাজ করে: https://asciinema.org/a/dtxpuovhty0obhln50soqypt2

কমান্ডটি চালানোর পরে এবং এটি কমান্ডটি নিজেই মুছে ফেললে তীরটি নিয়ে গেলে কমান্ডটি প্রদর্শিত হবে না, সুতরাং আপনি যদি প্রায়শই এটি ব্যবহার করার পরিকল্পনা করেন তবে একটি উপাত্ত তৈরি করা ভাল:

alias hc='history -d $((HISTCMD-1)) && history -d $1'

তারপরে আপনি এটি করতে পারেন:

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