سؤال "وضع التصفح المتخفي" في المحطة الطرفية؟


أستخدم Terminal كثيرًا ، وأحيانًا أقوم بتشغيل الأوامر ، وهي ليست أشياء لا أريد أن يراها الآخرون ، ولكن المزيد من الأوامر التي إذا قمت بالسهم دون قصد وتنفيذها عن طريق الخطأ سوف تسبب الكثير من المتاعب.

لذلك أنا أتساءل عما إذا كان هناك ، أو يمكنني تقديم ، نوع من "وضع التصفح المتخفي" في المحطة مما يسمح لي ، عند تنفيذ أمر معين ، بالتوقف عن تسجيل السجل الخاص بي ، ثم ابدأ التسجيل بعد أن أقوم بتنفيذ بدء تسجيل التاريخ مرة أخرى القيادة والخروج "وضع التصفح المتخفي" ، أو أنا ببساطة إعادة تشغيل المحطة؟

لأنني أجد نفسي في وقت لاحق ذهاب وإزالة الأشياء من وجهة نظري .bash_historyعندما يكون من الأسهل بكثير أن أتمكن من إيقاف التسجيل هناك في المقام الأول ، أو على الأقل أن أحاول أن أسجله في مكان لا يسمح فيه بذلك ، ولن ينتهي الأمر فقط بتسجيله.


225
2018-05-18 14:53


الأصل


Sparhawk: ماذا؟
حسنا ، من المفترض أنك أنت المذعور أن يقرأ تاريخك من قبل الآخرين؟ - Sparhawk
Sparhawk: حسنا ، هذا جزئيا ، والحزب لا أريد أن أقوم بتنفيذ أمر صيانة قاتلة ربما عندما أسقط في المستقبل! :د
فقط للإضافة ، ليس عليك أن تبرر نفسك: "وهي ليست أشياء لا أريد أن يراها الآخرون". من شأنه أن يكون سببا وجيها تماما بالنسبة لي أيضا. (خاصة في هذا الوقت والعمر حيث يحاول الجميع أن يجعلك تبدو مذنبا بسبب وجود "أشياء تخفيها") - ereOn
إذا فتحت علامتي تبويب ، فافعلوا شيئًا في أولهما ، وافعلوا الأشياء في الثانية ، ثم أغلقوا الجزء الثاني قبل الأول ، ويبدو أن تاريخ أول واحد فقط مكتوب على .bash_history. (أوبونتو 15.04 محطة دمرت ، محظوظا هذا هو USB حية.) - Hitechcomputergeek


الأجوبة:


قم بتشغيل الأمر دون وضعه في السجل:

ببساطة ضع مسافة قبل الأمر. سيؤدي Bash إلى تجاهل الأوامر بمسافة prepended:

مثال: الفراغecho "Some secret text"

ملاحظة: هذا يعمل فقط إذا كان HISTCONTROL تم تعيين المتغير ل ignorespace أو ignoreboth.


تعطيل السجل مؤقتًا:

  • يركض الفراغset +o history أو الفراغshopt -uo history لتعطيل السجل.
  • يركض set -o history أو shopt -so history لتمكينها مرة أخرى.

تعطيل سجل الجلسة الحالية (لن تتذكر أي أوامر من الجلسة):

unset HISTFILE

ملاحظة: ستتمكن من رؤية الأوامر الملحة فوق حتى تغلق المحطة.


إزالة أمر من السجل:

يركض الفراغhistory | 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

حدد رقم الادخال على يسار الأمر. يمكنك نسخه مع السيطرة+تحول+C

يركض الفراغhistory -d <number> أين <number> هو رقم الادخال لازالة الادخال.
يمكنك لصق هذا الرقم مع السيطرة+تحول+الخامس


إجابات أخرى مثيرة للاهتمام:


260
2018-05-19 15:01



إذا كنت تستخدم history -dلإزالة خط ، سيؤدي ذلك إلى إزالة محتوى الخط ، ولكن لا يمكنك مطلقًا إزالة حقيقة تشغيله history -d (إلا إذا كنت تستخدم لأول مرة set +o history قبل الركض history -d) - AJFaraday
لقد ذكرني فقط بالمنطق القضائي العظيم ، هذا كل شيء ؛) - AJFaraday
(OT) هي عبارة عن مستند قانوني يمنع الناس من نشر شيء ما. كما يمنعهم الأمر الفائق من نشر الحقيقة التي حرموا من القدرة على نشرها. بعض الحجج المنطقية تسأل عما إذا كان بإمكانهم نشر أنه تم رفضهم القدرة على نشر بعض المعلومات. ثم تصبح حجة دورية. - AJFaraday
Helio أعتقد أنه من الأفضل للمستخدمين أن يعرفوا الطريقة "الصحيحة" للنسخ - خاصة إذا ذهبوا عن طريق الخطأ وحددوا بعض النصوص. لست متأكدًا من كيفية القيام بالمساحة ، وربما توضيح أكثر أن المساحة موجودة؟ يبدو أن الفضاء يبدو أخرقًا بالنسبة لي ... - Tim
ال unset HISTFILE النهج يعمل أيضا بأثر رجعي لجميع الأوامر التي لم تكن مكتوبة .bash_history بعد. - kasperd


يمكنك ببساطة حذف محفوظات جلسة طرفية معينة عن طريق إضافة أمر history -cw بعد العمل. لا تغلق المحطة قبل إعطاء الأمر.


39
2018-05-18 15:04



هذا لن يزيل كل التاريخ؟ - Helio
سيؤدي ذلك فقط إلى إزالة محفوظات جلسة المحطة الطرفية هذه. - Moithil Biswas


shopt -uo history يجب أن نفعلها بشكل أفضل

نوكينج HISTFILE (وآخرون) المتغيرات لن تتوقف عنك فوق يتم تسجيل التاريخ ، فقط لن يدفعها إلى القرص. قد يكون هذا أو لا يكون شيئًا إيجابيًا بالنسبة لك ، ولكن إذا ذكرنا ذلك ، فأعتقد أنك تريد شيئًا أفضل. تغيير shopt إعداد المحفوظات يوقف آلية السجل بالكامل من التشغيل.

يمكنك تشغيل تسجيل الدخول مرة أخرى shopt -so history (ال -s و -u يتم تعيين و unset على التوالي).

لاحظ أنه من المحتمل أن يتم تسجيل الأمر نفسه ، لذا عليك إرفاقه بمسافة لإيقاف إضافته إلى السجل قبل مسح المتغير.


28
2018-05-19 22:00





هناك طريقة أخرى لقتل الصدفة الحالية دون تسجيل الدخول إلى ملف السجل وهي:

kill -9 $$

هذا يسبب bash (وربما قذائف أخرى أيضا) لإرسال إشارة SIGKILL إلى نفسه ، مما أسفر عن مقتل على الفور ومنعها من كتابة أي شيء إلى القرص.


17
2018-05-18 15:02



a.k.a. "أطلق النار على نفسك في الرأس" :). هذا له ميزة أنك لا تحتاج إلى تذكر أن تفعل أي شيء قبل كتابة الأوامر. - Guido
أستخدم zsh مع كتابة التاريخ التزايدية ، لذلك أشك في أن هذا سيعمل في حالتي - Wayne Werner


لتعطيل سجل الأوامر للجلسة الحالية مؤقتًا ، يمكنك إلغاء تعيين متغير بيئة HISTFILE مؤقتًا.

unset HISTFILE

أثناء تنشيط الجلسة ، يمكنك الوصول إلى السجل كالمعتاد ، ولكن لن يتم حفظه على القرص.

للرجوع في نفس الجلسة (سيتم تسجيل جميع التغييرات)

HISTFILE=$HOME/.bash_history

13
2018-05-21 00:12



وهل هناك طريقة سهلة في الجلسة الحالية لعكس هذا ، وجعلها مستمرة؟
ParanoidPanda أضفت أمرًا للعودة في الجلسة الحالية. - Bruni
ParanoidPanda: لماذا تحتاج إلى أمر لتعيين HISTFILE مرة أخرى في الجلسة الحالية؟ إذا تراجعت عن التغيير (حتى بعد تشغيل الأوامر السرية) ، فسيتم تخزينها في التاريخ عند الخروج. - Helio
Helio: أوه ، لا ، كنت أقصد أمرًا يبدأ عندئذٍ تسجيله مرة أخرى ، ولكن لا نحفظ الأوامر التي لم أكن أرغب في حفظها.
ParanoidPanda ، يبدو أن هيليو على حق في هذا واحد كما يتم حفظ التاريخ عند الخروج. أنا لم أعتبر هذا واحد. - Bruni


يمكنك تعديل خطوط التاريخ في جلسة shell الحالية. إذا رجعت من خلال التاريخ (على سبيل المثال فوق أو السيطرة+P) وتغيير خط دون تنفيذه، سيتم حفظ النسخة المعدلة فقط من الخط. يمكنك تعديله بأي طريقة تريدها. خيارات جيدة تشمل استخدام السيطرة+U إلى الفراغ تماما الخط أو استخدام زر Esc فى الكيبورد# لوضع # شخصية تعليق في البداية.

لتترك وراء خط دون تنفيذه ، تذكر عدم ضرب إرجاع (أدخل). ما أفعله هو العودة إلى أحدث سطر في التاريخ عبر زر Esc فى الكيبورد>.

(بدلا من زر Esc فى الكيبورد تليها >، في معظم المحطات يمكنك عقد البديل و اضغط >. وينطبق نفس الشيء على زر Esc فى الكيبورد# اقتراح أعلاه.)

ملحوظة: لا يمكنك تعديل الإدخالات من الجلسات السابقة بهذه الطريقة نهائيًا. هذه التغييرات لن تطبق على HISTFILE في نهاية الجلسة.


10
2018-05-20 03:24





يمكنك أيضًا جعل .bash_history للقراءة فقط. أفرغ الملف أولاً ثم أفعل:

 chattr +i .bash_history

6
2018-05-21 20:46





يمكنك تنفيذ الأوامر الحساسة في جلسة عمل الشاشة ، ثم تدمير الجلسة عند الانتهاء.

بالتناوب ، يمكنك الاحتفاظ بجلسة الشاشة هذه على قيد الحياة ولكن منفصلة ، والوصول إليها فقط عندما تريد بالفعل أن تكون قادراً على رفع السهم للأوامر الخطرة.


5
2017-11-12 19:31





شخصيا أنا استخدم mksh، وهذه قذيفة افتراضيا لا يوجد لديه ملف التاريخ. وهذا يعني أنه يمكن إطلاق قذيفة بديلة مثل mksh أو dash (والتي تأتي افتراضيًا بالطريقة) لتشغيل الأمر الذي لا تريد أن يراه المستخدمون ، ثم الخروج بمجرد الانتهاء من العملية. bash سوف يسجل التاريخ فقط أنك أطلقت قذيفة بديلة وهذا كل شيء.


1
2018-04-06 10:50





يمكنك أيضًا استخدام معدد إرسال المحطة الطرفية مثل tmux، screen. تحت ذلك tmux أو screen لن يتم حفظ التاريخ.


1