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


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.