Чи зберігає термінал дані?


9

Це те, що я хотів знати дуже довго, але ніколи не приходив, щоб насправді ставити питання.

Я знаю, що в терміналі, який надається в дистрибутиві Linux, всю історію команд можна побачити за допомогою клавіш зі стрілками (якщо є якийсь інший метод, я про це не знаю), так як це відбувається?

Чи є десь, де термінал записує всі натискання клавіш? Це якийсь буфер? Але, знову ж таки, якби це буфер, через деякий час воно буде очищене, чи не так?

Як ця система працює?


написати історію, щоб отримати всі раніше використані команди ..
Sukupa91

ОП запитує не про historyкоманду, а про те, як працює вся ця система запам'ятовування старих команд.
Тарун

вибачте, що я зрозумів це неправильно ..
Sukupa91

2
Майте на увазі цей виняток: якщо команда починається з пробілу, команда не опиниться в історії.
Rinzwind

@Rinzwind, це додається до історії, якщо почати з пробілу.
GC 13

Відповіді:


10

Це історія команд, і це особливість оболонки, а не терміналу.

У Ubuntu (і багато, якщо не в більшості інших дистрибутивів Linux) оболонкою для інтерактивного використання є Bash ( /bin/bash). Bash зберігає вашу історію, тобто список останніх команд на ~/.bash_history. Коли ви відкриваєте оболонку (зазвичай, відкриваючи термінал), цей файл читається і завантажується у внутрішню історію цієї оболонки. Після закриття оболонки зміни записуються назад у файл. За замовчуванням це обмежено останніми 500 командами.

Є кілька змінних і параметрів оболонок, які можуть змінити поведінку того, як саме це працює. Подивіться на баш-сторінку ( man bash), якщо хочете дізнатися більше. Просто знайдіть ІСТОРІЮ (введіть /^HISTORYта підтвердьте Enter, перейдіть до наступного пошуку за допомогою n)

Також є досить багато більше способів обійти історію , ніж просто Upі Down:

  • Наприклад, натисніть Ctrl+ Rі частина попередньої команди, bash буде шукати назад в історії для команди, що відповідає, повторити натискання Ctrl+, Rякщо перший збіг не той, який ви шукаєте. (Див. "Команди для маніпуляції історією" на сторінці bash)

  • Копіювати /etc/inputrcв ~/.inputrcі розкоментуйте рядки з history-search-forwardі history-search-backwardв них. Якщо ви введете перші літери команди та натисніть PgUp, bash покаже лише команди з історії, які починаються з тих самих літер. (Робота лише в снарядах, відкритих після внесення цієї зміни)

  • Введіть !!замість команди на оболонці, це повторить останню команду (див. "ІСТОРІЙНЕ РОЗШИРЕННЯ" на сторінці bash для отримання додаткової інформації про це).


1
І якщо ви не хочете, щоб це зберігало історію, unset HISTFILEвведіть у свій ~ / .bashrc. Тоді він зберігатиме історію лише в пам'яті, очищаючи її для кожного нового виклику оболонки.
CVn

10

Історія команд зазвичай зберігається на основі кожного користувача у .bash_historyфайлі у вашому домашньому каталозі. Значить, у кожного користувача є свій набір команд, які він виконав.

Коли відкрито кілька сеансів терміналів, вони можуть показувати різні команди при натисканні клавіші зі стрілкою, але коли ви закриєте всі вікна терміналу, історія з різних сеансів терміналу буде об'єднана в загальний ~/.bash_historyфайл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.