আপনার ইতিহাসে কোনও কমান্ড যুক্ত হওয়ার কোনও উপায় আছে কি?


65

আপনার ইতিহাসে কোনও কমান্ড যুক্ত হওয়ার কোনও উপায় আছে কি? আমার একটি কমান্ড রয়েছে যা আমি আমার ইতিহাসের ফাইলটি থেকে দূরে রাখতে চাই এবং আমি যখন স্মৃতিতে সঞ্চিত ইতিহাস অনুসন্ধান করি তখন সেখানে তা রাখার বিষয়ে সত্যই চিন্তা করি না, যদিও এটি কোনও উদ্বেগের কম নয়। এটি রোধ করার কোনও উপায় আছে, বা আমাকে কেবল ফিরে যেতে হবে এবং আমার ইতিহাস ফাইলটি সম্পাদনা করতে হবে?

আপডেট: আমি বুঝতে পারি নি যে এটি শেল-নির্দিষ্ট হতে পারে। আমার খোল zsh। অন্যান্য শাঁসের উত্তর দেওয়ার জন্য আপনাকে স্বাগত জানানো হচ্ছে যাতে লোকেরা তাদের শেলটিতে এটি কীভাবে করতে পারে তা জানতে পারে।


উত্তর:


52

জেডএসএইচ :

প্রথমে setopt HIST_IGNORE_SPACEআপনার sertোকান ~/.zshrc। এখন আপনি আবার লগ ইন করার পরে, আপনি কোনও কমান্ডের সাথে ইতিহাসের সঞ্চিত সংরক্ষণ করতে চান না সেটিকে উপস্থাপন করতে পারেন space

থেকে ব্যবহারকারী ম্যানুয়াল নিম্নলিখিত 3 অপশন বলতে নির্দিষ্ট লাইন ইতিহাস মধ্যে এ সব যেতে হবে ব্যবহার করা যেতে পারে:

  • HIST_IGNORE_SPACE কোনও স্থানের সাথে উপস্থাপিত কমান্ডগুলি সঞ্চয় করে না
  • HIST_NO_STORE ইতিহাস ( fc -l ) কমান্ড সংরক্ষণ করবেন না
  • HIST_NO_FUNCTIONS ফাংশন সংজ্ঞা সঞ্চয় করে না

কোনও সুযোগ @ মিমকিইনস্ট উত্তর zsh এ কাজ করে? নাকি এরকম কিছু? অথবা সম্ভবত যে কোনও আদেশ রয়েছে যার মধ্যে কমান্ডটি রয়েছে| somecommand
xenoterracide

আফাইক জ্যাশ-এ বাশের ইতিহাসের সমতুল্য নেই।
কুকুবেন

@xeno zsh একটি হুক ফাংশন সরবরাহ করে preexecযা এর জন্য ব্যবহার করা যেতে পারে। যদি এটি শূন্য -হীন ফিরে আসে তবে কমান্ডটি ইতিহাসে সংরক্ষণ করা হয় না।
কিথ

1
জেডএসকে প্রচলিত সাধারণ কমান্ডগুলির একগুচ্ছ উপেক্ষা করার জন্য, আমি তাদের সকলকে সামনে একটি জায়গা রাখতে পেরেছি ... সি এর জন্য (ls fg বিজি চাকরিগুলি ক্লিয়ার রিসেট থেকে বেরিয়ে আসা হবে); do عرف $ c = "$ সি"; সম্পন্ন
উইল নরিস

4
আমার মতো অলস ভবিষ্যতের পাঠকদের জন্য যারা এখনও এটি করবেন তা জানেন না: setopt HIST_IGNORE_SPACEইন~/.zshrc
আল.জি.

25

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

ইন bashআপনি সেট হবে

HISTIGNORE="*secret.server.com*"

যেখানে zshপ্যারামিটারে বলা হয়

HISTORY_IGNORE="*secret.server.com*"

আপনি কোলনকে আলাদা করে একাধিক নিদর্শন তালিকাভুক্ত করতে পারেন। নোট করুন যে প্রতিটি প্যাটার্ন সম্পূর্ণ ইনপুট লাইনের বিপরীতে মিলছে , সুতরাং আপনার একটি * অন্তর্ভুক্ত করার প্রয়োজন হতে পারে। উদাহরণস্বরূপ, নিম্নলিখিতটি fortuneইতিহাস থেকে বাদ দেবে তবে সংরক্ষণ করবে fortune -l:

HISTIGNORE="*secret.server.com*:ytalk*:fortune"
HISTORY_IGNORE="*secret.server.com*:ytalk*:fortune"

HISTIGNORE সেট দিয়ে, নিদর্শন আপনি তালিকার মিলে কিছুই সংরক্ষণ করা হবে .bash_history/ .zsh_historyএবং এমনকি আপ তীর কী, যা স্বাভাবিকভাবে আপনার পূর্ববর্তী কমান্ড স্মরণ করে বলেন, এটি আপনার ধরণের সাথে মেলা কাজ করবে না।


3
কোন সুযোগ এই zsh কাজ করে?
xenoterracide

ভাগ্য দিয়ে শুরু হওয়া কেবল রেখাগুলি উপেক্ষা করার বিকল্প নেই? কিছু HISTIGNORE="^fortune*"উপেক্ষা করতে চান fortune -lকিন্তু রাখুন myfortune?
বার্নহার্ড

@ xenoterracide এটি করে তবে প্যারামিটারটির নাম দেওয়া হয়েছে অন্যভাবে। আমি কেবল উত্তরে এটি সম্পাদনা করেছি।
n.st

23

ব্যাশে HISTCONTROLভেরিয়েবল ব্যবহার করুন ।

এটি HISTCONTROL=ignorespace(বা HISTCONTROL=ignoreboth) এ সেট করুন । এখন থেকে, আপনি যখন কোনও স্থান দিয়ে একটি লাইন শুরু করবেন, এটি ইতিহাসে সংরক্ষণ করা হবে না । এটি কিছু কনফিগারেশন ফাইলে নো-ডিকাস্টিকেশন-কমান্ড অন্তর্ভুক্ত করা এড়ায়।

এমন কি স্থানটি যুক্ত করতে ভুলে গিয়ে আবার ফিরে যেতে চাইবে। ইতিহাসে কোনও এন্ট্রি মুছতে, কমান্ডের (প্রথম কলাম) পাওয়া নম্বর history -d <index>সহ ব্যবহার করুন ।indexhistory


1
এটি কি কাজ করে zsh?
গার্ট

11

ওয়ান-অফের পক্ষে সহজতম উপায়

$ $SHELL
$$ unset HISTFILE
$$ secret-command
$$ exit
$

যেখানে $প্রাথমিক শেলটির $$প্রম্পট উপস্থাপন করে এবং সাব- শেলের প্রম্পট উপস্থাপন করে। এটি ব্যাশ এবং zsh এ কাজ করে; HISTFILE=/notwritableপরিবর্তে আপনার প্রয়োজন ksh এ । মনে রাখবেন যে HISTFILEইতিহাস ফাইলটি যখন লেখা হয় তখন কমান্ডটি চালানো হয় না তার জন্য কী গুরুত্বপূর্ণ। বাশ, ksh এবং zsh ইতিহাস ফাইলটিতে লিখুন যখন তারা প্রস্থান করবেন (কনফিগারেশনের উপর নির্ভর করে zsh এটি আরও প্রায়শই করতে পারে)।

বিকল্পভাবে, আপনি নির্দিষ্ট প্যাটার্নগুলির সাথে মিলিত লাইনগুলিকে উপেক্ষা করতে বাশ বা zsh পেতে পারেন (এটি ইতিমধ্যে অন্যান্য উত্তর দ্বারা আবৃত))

Zsh এ অন্য সম্ভাবনা হ'ল

% fc -p
% secret-command
% fc -P

fc -pবর্তমান ইতিহাস তালিকাকে স্ট্যাকের দিকে ঠেলে দেয় এবং একটি নতুন ফাইল শুরু করে যা কোনও সেভ ফাইলের সাথে সম্পর্কিত নয়। fc -Pপপগুলি যা সংরক্ষণ না করা ইতিহাসকে স্ট্যাকের বাইরে রাখে এবং এটি সম্পর্কে পুরোপুরি ভুলে যায়।

একটি প্রক্রিয়া চলমান অবস্থায়, কমান্ড এবং তার তর্কগুলি (এবং কিছু সিস্টেমে এর পরিবেশও) প্রসেস টেবিল ( psআউটপুট) এ প্রদর্শিত হবে। রুট সিস্টেম অ্যাকাউন্টিং ডাটাবেসে অতীত আদেশগুলি দেখতে পারে এবং আপনার নিয়ন্ত্রণ ছাড়াই আরও লগিং করতে পারে। এবং সেখানে সমস্ত ধরণের ফরেনসিক প্রমাণ থাকতে পারে যা আপনি কী কমান্ডটি চালিয়েছিলেন তা প্রদর্শন করতে পারে (যেমন ফাইল সংশোধনের সময়)। সুতরাং আপনি নির্ধারিত ছদ্মবেশীদের বিরুদ্ধে গোপনীয়তা পাবেন না।

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