টার্মিনাল 'ছদ্মবেশী মোড'?


230

আমি টার্মিনালটি প্রচুর ব্যবহার করি এবং কখনও কখনও আমি কমান্ডগুলি চালাচ্ছি, যা আমি অন্যদের দেখতে চাই না, তবে আরও কমান্ডগুলি বলে যে যদি আমি ঘটনাক্রমে ত্রুটিযুক্ত হয়েছি এবং ঘটনাক্রমে মৃত্যুদণ্ড কার্যকর করা হয়েছে তবে অনেক সমস্যার কারণ হতে পারে।

সুতরাং আমি ভাবছি যে সেখানে আছে বা আমি তৈরি করতে পারি, কোনও ধরণের টার্মিনাল 'ছদ্মবেশী মোড' যা আমাকে একটি নির্দিষ্ট কমান্ড কার্যকর করার পরে আমার ইতিহাস রেকর্ডিং বন্ধ করতে দেয় এবং তারপরে কেবলমাত্র আমি সম্পাদন করার পরে রেকর্ডিং শুরু করি ইতিহাস রেকর্ডিং আবার শুরু করুন আদেশ দিন এবং 'ছদ্মবেশী মোড' থেকে প্রস্থান করুন, বা আমি কেবল টার্মিনালটি পুনরায় চালু করব?

কারণ আমি পরে আমার কাছ থেকে জিনিসগুলি সরিয়ে ফেলা এবং খুঁজে পাওয়া সন্ধান করি .bash_history, যখন আমি এটি প্রথম স্থানটিতে রেকর্ডিং বন্ধ করে দিতে পারতাম বা কমপক্ষে এটি কোথাও রেকর্ড করার চেষ্টা করতাম যেখানে এটি ঠিক না হত would অনুমতি দেওয়া হয়েছে, এবং এটি রেকর্ডিং না শেষ হবে।


6
ঠিক আছে, সম্ভবত আপনি অদ্ভুত যে আপনার ইতিহাস অন্যদের দ্বারা পড়া হবে?
স্পারহাক

6
@ স্পারহাক: আচ্ছা, এটি আংশিক যে, এবং ভবিষ্যতে যখন আমি সরে আসছি তখন আমি ঘটনাক্রমে সম্ভবত মারাত্মক রক্ষণাবেক্ষণ কমান্ড কার্যকর করতে চাই না! : ডি

19
কেবল যোগ করার জন্য, আপনাকে নিজেকে ন্যায়সঙ্গত করতে হবে না: "এগুলি এমন জিনিস নয় যা আমি অন্যরা দেখতে চাই না" । এটি আমার কাছেও পুরোপুরি বৈধ কারণ। (বিশেষত এই সময় এবং যুগে যেখানে সবাই আপনাকে "লুকিয়ে রাখার বিষয়" বলে দোষী করার চেষ্টা করে)
আগে

2
আপনি যদি দুটি ট্যাব খোলেন, প্রথমটিতে স্টাফ করুন, দ্বিতীয়টিতে স্টাফ করুন, তারপরে দ্বিতীয়টি প্রথমটি বন্ধ করার আগে, কেবল প্রথমটির ইতিহাস লিখিত বলে মনে হয় .bash_history। (উবুন্টু 15.04 ধ্বংস হওয়া টার্মিনাল, ভাগ্যবান এটি একটি লাইভ ইউএসবি))
হিটচেকম্পিউটারজেক

উত্তর:


265

ইতিহাসে না রেখে কোনও কমান্ড চালান:

কমান্ডের আগে কেবল একটি স্থান রাখুন। বাশ একটি পূর্ববর্তী স্থান সহ আদেশগুলি উপেক্ষা করবে:

উদাহরণ: Spaceecho "Some secret text"

দ্রষ্টব্য: HISTCONTROLভেরিয়েবলটি সেট করা থাকলে ignorespaceবা এটি কেবল এটি কাজ করে ignoreboth


অস্থায়ীভাবে ইতিহাস অক্ষম করুন:

  • চালান Spaceset +o historyবা Spaceshopt -uo historyইতিহাস অক্ষম করতে।
  • চালান set -o historyবা shopt -so historyআবার সক্ষম করতে।

বর্তমান সেশনের জন্য ইতিহাসটি অক্ষম করুন (অধিবেশন থেকে কোনও আদেশের কথা মনে থাকবে না):

unset HISTFILE

দ্রষ্টব্য: আপনি Upটার্মিনালটি বন্ধ না করা পর্যন্ত আপনি কমান্ডগুলি টিপতে দেখতে সক্ষম হবেন ।


ইতিহাস থেকে একটি কমান্ড সরান:

চালান Spacehistory | grep "part of your secret command"

এটি এই বিন্যাসে পূর্ববর্তী কমান্ডগুলির একটি তালিকা প্রদর্শন করবে:

casa@portátil:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

কমান্ডের বামে প্রবেশ নম্বর নির্বাচন করুন। আপনার সাথে অনুলিপি করতে পারেন Ctrl+ + Shift+ +C

এন্ট্রি সরানোর জন্য প্রবেশের নম্বরটি Spacehistory -d <number>কোথায় রয়েছে <number>তা চালান ।
আপনি এই সংখ্যাটি Ctrl+ Shift+ দিয়ে পেস্ট করতে পারেনV


অন্যান্য আকর্ষণীয় উত্তর:


7
আপনি যদি history -dকোনও লাইন অপসারণ করতে ব্যবহার করেন তবে এটি লাইনের সামগ্রীটি সরিয়ে ফেলবে, তবে আপনি যে দৌড়েছিলেন তা আপনি কখনই মুছে ফেলতে পারবেন না history -d(যদি আপনি set +o historyদৌড়ানোর আগে প্রথমে ব্যবহার না করেন history -d)
এজেফারাডে

1
এটি কেবলমাত্র সুপার-
ইনজেকশন

4
(ওটি) ইনজেকশনগুলি একটি আইনী দস্তাবেজ যা কোনও কিছু প্রকাশ থেকে মানুষকে বাঁচায়। একটি সুপার হুকুম তাদের প্রকাশের ক্ষমতা বঞ্চিত করা হয়েছে এমন সত্য প্রকাশ করতে বাধা দেয়। কিছু যুক্তিযুক্ত যুক্তি জিজ্ঞাসা করে যে তারা প্রকাশ করতে পারে যে তাদের কিছু তথ্য প্রকাশের ক্ষমতা বঞ্চিত করা হয়েছিল। তারপরে এটি একটি চক্রীয় যুক্তিতে পরিণত হয়।
এজেফারাডে

1
@ হেলিও আমি মনে করি ব্যবহারকারীদের পক্ষে অনুলিপি করার "যথাযথ" উপায়টি জানা ভাল - বিশেষত যদি তারা দুর্ঘটনাক্রমে যান এবং কিছু পাঠ্য নির্বাচন করেন। আমি স্থানটি কীভাবে করব তা নিশ্চিত নই, সম্ভবত স্পেসটি আরও স্পষ্ট করে বলবেন যে স্থানটি রয়েছে? [স্পেস] আমার কাছে একটু আনাড়ি মনে হচ্ছে ...
টিম

2
এই unset HISTFILEপন্থাটি সমস্ত কমান্ডের জন্যও পূর্ববর্তীভাবে কাজ করে যা .bash_historyএখনও লেখা হয়নি।
কাস্পার্ড

40

কাজ করার পরে কমান্ড যুক্ত করে আপনি কেবলমাত্র একটি নির্দিষ্ট টার্মিনাল সেশনের ইতিহাস মুছতে পারেন history -cw

এই কমান্ড দেওয়ার আগে টার্মিনালটি বন্ধ করবেন না।


এই সব ইতিহাস মুছে ফেলবে না?
হেলিও

6
এটি কেবলমাত্র সেই নির্দিষ্ট টার্মিনাল সেশনের ইতিহাস সরিয়ে ফেলবে।
মৈথিল বিশ্বাস

28

shopt -uo history এটি সবচেয়ে ভাল করা উচিত।

HISTFILE(এট আল) ভেরিয়েবলগুলি নুক করা আপনার Upইতিহাস লগ হওয়া বন্ধ করবে না , এটি কেবল ডিস্কে চাপ দেবে না। এটি আপনার পক্ষে ইতিবাচক জিনিস হতে পারে বা নাও হতে পারে তবে আপনি এটি উল্লেখ করার সাথে সাথে আমার ধারণা আপনি আরও ভাল কিছু চান। shoptইতিহাসের সেটিং পরিবর্তন করা পুরো ইতিহাস প্রক্রিয়াটিকে ট্রিগার করা থেকে বিরত করে।

আপনার সাথে পিঠে লগ-ইন চালু করতে পারেন shopt -so history( -sএবং -uযথাক্রমে সেট এবং সেট না করা হয়)।

নোট করুন যে কমান্ডটি নিজেই লগ হবে তাই আপনার ভেরিয়েবলটি সাফ করার আগে এটি ইতিহাসে যুক্ত হওয়া বন্ধ করার জন্য একটি স্পেস দিয়ে প্রিন্ড করুন।


17

ইতিহাসের ফাইলটিতে লগ না করে বর্তমান শেলটি মারার আর একটি উপায় হ'ল:

kill -9 $$

এটি বাশকে (এবং সম্ভবত অন্যান্য শাঁসগুলিও) সিগ্কিল সিগন্যালটি নিজের কাছে প্রেরণ করে, ঘটনাস্থলে মারা যায় এবং ডিস্কে কোনও কিছু লিখতে বাধা দেয়।


7
ওরফে 'নিজেকে মাথায় গুলি করুন' :)। এটির সুবিধাটি হ'ল কমান্ডগুলি লেখার আগে আপনাকে কিছু করার দরকার নেই।
গাইডো

3
আমি বর্ধিত ইতিহাস লেখার সাথে zsh ব্যবহার করি, তাই আমার সন্দেহ হয় এটি আমার ক্ষেত্রে কার্যকর হবে
ওয়েন ওয়ার্নার

13

বর্তমান সেশনের জন্য কমান্ডের ইতিহাস অস্থায়ীভাবে অক্ষম করতে আপনি অস্থায়ীভাবে HISTFILE পরিবেশ পরিবর্তনশীলটিকে আনসেট করতে পারেন।

unset HISTFILE

সেশনটি সক্রিয় থাকাকালীন আপনি যথারীতি ইতিহাস অ্যাক্সেস করতে পারবেন তবে এটি ডিস্কে সংরক্ষণ করা হবে না।

একই সেশনে বিপরীত করতে (সমস্ত পরিবর্তন রেকর্ড করা হবে)

HISTFILE=$HOME/.bash_history

1
এবং বর্তমান সেশনে এটিকে বিপরীত করার এবং এটি চালিয়ে যাওয়ার কোনও সহজ উপায় আছে কি?

@ পরানয়েডপান্ডা আমি বর্তমান অধিবেশনটিতে ফিরে যাওয়ার জন্য একটি কমান্ড যুক্ত করেছি।
ব্রুনি

1
@ পরানয়েডপাণ্ডা: HISTFILEবর্তমান অধিবেশনটিতে আবার সেট করার জন্য আপনার একটি কমান্ডের প্রয়োজন কেন ? যদি আপনি এই পরিবর্তনটি পূর্বাবস্থায় ফেলা করেন (গোপন কমান্ডগুলি চালিয়ে যাওয়ার পরেও) আপনি বেরোনোর ​​পরে সেগুলি ইতিহাসে সঞ্চিত হবে।
হেলিও

@ হেলিও: ওহ, না, আমি একটি কমান্ড বোঝাতে চাইছিলাম যা আবার রেকর্ডিং শুরু করবে, তবে যে কমান্ডগুলি এটি সংরক্ষণ করতে চাইছিল না তা সংরক্ষণ করব না।

1
প্রানডয়েড পান্ডা, হেলিও মনে হয় ঠিক এইভাবেই ঠিক আছে, কারণ ইতিহাসটি প্রস্থান করার সময় সংরক্ষণ করা হয়েছে। আমি এটি বিবেচনা করি নি।
ব্রুনি

10

আপনি বর্তমান শেল সেশনে ইতিহাসের রেখাগুলি পরিবর্তন করতে পারেন। আপনি যদি ইতিহাসের মাধ্যমে ফিরে যান (উদাহরণস্বরূপ Upবা Ctrl+ সহ P) এবং একটি লাইন কার্যকর না করে পরিবর্তন করেন তবে কেবলমাত্র লাইনের পরিবর্তিত সংস্করণ সংরক্ষণ করা হবে। আপনি এটি আপনার পছন্দমতো পরিবর্তন করতে পারেন; ভাল পছন্দগুলি অন্তর্ভুক্ত করবে Ctrl+ Uসম্পূর্ণরূপে লাইন ফাঁকা Esc#করা বা #শুরুতে একটি মন্তব্য অক্ষর রাখার জন্য ব্যবহার করা ।

কোনও রেখাকে কার্যকর না করে পেছনে ফেলে রাখার জন্য, Return( Enter) টি আঘাত করার কথা মনে রাখবেন না । আমার কি মাধ্যমে ইতিহাসে নতুন লাইন ফিরে আসতে হয় Esc>

( Escঅনুসরণ করার পরিবর্তে, >বেশিরভাগ টার্মিনালে আপনি ধরে রাখতে Altএবং টিপতে পারেন >; Esc#উপরের পরামর্শটি একই রকম হয় ))

দ্রষ্টব্য: আপনি আগের সেশনগুলি থেকে এ ভাবে এন্ট্রি স্থায়ীভাবে সংশোধন করতে পারবেন না। এই পরিবর্তনগুলি HISTFILEঅধিবেশন শেষে প্রয়োগ করা হবে না ।


6

আপনি .বাশ_ ইতিহাস কেবল পঠনযোগ্য করতে পারেন। আমি প্রথমে ফাইলটি খালি করব এবং পরে করব:

 chattr +i .bash_history

5

আপনি একটি স্ক্রিন সেশনে সংবেদনশীল কমান্ডগুলি কার্যকর করতে পারেন, তারপরে আপনার কাজ শেষ হয়ে গেলে সেশনটি ধ্বংস করুন।

পর্যায়ক্রমে, আপনি সেই স্ক্রিন সেশনটি বাঁচিয়ে রাখতে পারেন তবে বিচ্ছিন্ন করে রাখতে পারেন, এবং কেবল তখনই অ্যাক্সেস করতে পারেন যখন আপনি অন্যথায় বিপজ্জনক কমান্ডগুলিতে আসলে তীর আপ করতে সক্ষম হতে চান।


1

ব্যক্তিগতভাবে আমি ব্যবহার করি mkshএবং ডিফল্টরূপে এই শেলের কোনও ইতিহাস ফাইল নেই। এর অর্থ আপনি ব্যবহারকারীদের দেখতে না চান এমন কমান্ড চালানোর জন্য বিকল্প শেল যেমন mkshবা dash(যা পূর্বনির্ধারিতভাবে আসে) চালু করতে পারে এবং একবার হয়ে গেলে বেরিয়ে যেতে পারে। bashইতিহাস কেবল রেকর্ড করবে যে আপনি বিকল্প শেলটি চালু করেছিলেন এবং এটিই।


1

এছাড়াও আপনি যেমন টার্মিনাল মাল্টিপ্লেক্সার ব্যবহার করতে পারেন tmux, screen। সুতরাং অধীনে tmuxবা screenইতিহাস সংরক্ষণ করা হবে না।

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