سؤال هل بيانات مخزن المحطة الطرفية؟


هذا أمر أردت معرفته لفترة طويلة بالفعل ، ولكن لم أتطرق إلى طرح سؤال.

أعلم أنه في الوحدة الطرفية التي يتم توفيرها في توزيعة لينكس ، يمكن رؤية تاريخ الأوامر بأكمله باستخدام مفاتيح الأسهم (إذا كان هناك أي طريقة أخرى ، لست على علم بها) ، فكيف يحدث هذا؟

هل هناك مكان يسجل فيه الجهاز جميع ضغطات المفاتيح؟ هل هو نوع من العازلة؟ ولكن ، مرة أخرى ، إذا كان مخزنًا مؤقتًا ، فسيتم إزالته بعد فترة ، أليس كذلك؟

كيف يعمل هذا النظام؟


9
2017-11-19 06:19


الأصل


اكتب التاريخ للحصول على جميع الأوامر المستخدمة سابقا .. - Sukupa91
البروتوكول الاختياري لا يسأل عن history الأمر ولكن كيف يعمل هذا النظام بأكمله من تذكر الأوامر القديمة. - Tarun
اسف لقد اخطأت .. - Sukupa91
ضع في اعتبارك هذا الاستثناء: إذا بدأ الأمر بفضاء ، فلن ينتهي الأمر في التاريخ. - Rinzwind
@ Rinzwind ، تتم إضافته إلى السجل ، إذا بدأ بمسافة. - GC 13


الأجوبة:


هذا هو تاريخ القيادة وهو سمة من سمات shell بدلاً من المطراف.

على Ubuntu (والكثير إن لم يكن معظم توزيعات Linux الأخرى) فإن shell الافتراضي للاستخدام التفاعلي هو Bash (/bin/bash). يحتفظ Bash بسجلك ، وهي قائمة بالأوامر الأخيرة في ~/.bash_history. عند فتح shell (عادةً بفتح فتحة طرفية) ، تتم قراءة هذا الملف وتحميله في المحفوظات الداخلية لهذا الغلاف. بمجرد إغلاق shell ، تتم كتابة التغييرات مرة أخرى إلى الملف. بشكل افتراضي ، يقتصر هذا على آخر 500 أمر.

هناك عدد قليل من المتغيرات وخيارات shell التي يمكنها تغيير سلوك كيفية عمل ذلك بالضبط. إلقاء نظرة على صفحة باش (man bash) إذا كنت تريد أن تعرف أكثر. فقط ابحث عن التاريخ (اكتب /^HISTORY وتأكيد مع أدخل، اذهب إلى التالي مع ن)

أيضا هناك الكثير من الطرق لتذهب حول التاريخ من مجرد فوق و أسفل:

  • على سبيل المثال ، اضغط السيطرة+R وجزء من أمر سابق ، سيعرض bash البحث في التاريخ لأمر مطابق ، مع تكرار الضغط السيطرة+R إذا لم تكن المباراة الأولى هي التي تبحث عنها. (راجع "أوامر للتلاعب في المحفوظات" في صفحة "باش")

  • نسخ /etc/inputrc إلى ~/.inputrc و uncomment الخطوط مع history-search-forward و history-search-backward فيهم. إذا كتبت الأحرف الأولى من أمر واضغط على صفحة الى الأعلى، سيعرض bash الأوامر فقط من السجل الذي يبدأ بالحروف نفسها. (العمل فقط في قذائف فتحت بعد إجراء هذا التغيير)

  • اكتب !! بدلاً من أمر على shell ، سيكرر هذا الأمر الأخير (انظر "توسيع التاريخ" في صفحة man bash للحصول على مزيد من المعلومات حول ذلك).


10
2017-11-19 07:09



وإذا كنت لا ترغب في الاحتفاظ بتاريخ ، ضعه unset HISTFILE في ~ / .bashrc الخاص بك. ثم سيحفظ التاريخ فقط في الذاكرة ، ويزيلها لكل استدعاء جديد للقذيفة. - Michael Kjörling


يتم تخزين سجل الأوامر بشكل عام على أساس كل مستخدم في .bash_history ملف في دليل منزلك. يعني ، كل مستخدم لديه مجموعة خاصة به من الأوامر التي نفذها.

عند فتح عدة جلسات طرفية ، قد تظهر لك أوامر مختلفة عند الضغط على مفتاح السهم ، ولكن عندما تغلق جميع نوافذ المطراف ، سيتم دمج السجل من جلسة محطة طرفية مختلفة. ~/.bash_history ملف.


10
2017-11-19 06:28