Возможно, ты когда-нибудь замечал, что при вводе команды history иногда рядом с командой отображается какая-то звёздочка. Выглядит это примерно так:

1990 htop
1991* ls -la
1992 uptime

Смущает? Неа! Но доебаться стоит: откуда она вообще взялась и что она означает? Не просто же так она там появилась.

Вводим в терминале:

gavno
free
bashdays
history

Видим такое:

1997  gavno
1998  free
1999  bashdays
2000  history

Делаем финт ушами:

  1. Жмём в консоли Ctrl+R.
  2. Вводим команду bashdays.
  3. Нажимаем стрелку вверх.
  4. Отображается предыдущая команда free.
  5. Удаляем через Backspace команду free.
  6. Нажимаем стрелку вниз.
  7. Видим: появилась строка bashdays.
  8. Выполняем history.
1997  gavno
1998*
1999  bashdays
2000  history

Видим, что команда free пропала и вместо неё появилась какая-то всратая звёздочка. Это всё потому, что мы отредактировали команду free через Backspace.

Если Backspace заменить и не стирать free, а добавить несколько букв — freezer, то выхлоп будет таким:

1997  gavno
1998* freezer
1999  bashdays
2000  history

Тут нагляднее получилось, видно, что реально было редактирование команды free.

Хуй знает, как это можно применить, тут больше интерес к этой звёздочке: что это такое и при каком кейсе она появляется в history.

А ещё есть хак. Если нажать Ctrl+R, ввести команду, которая помечена звёздочкой, а затем нажать Ctrl+Shift+-, то редактирование откатится и звёздочка пропадёт.

Ещё есть легенда, что звёздочка может появляться при запуске команд из другого сеанса. То есть если открыть 2 терминала и в одном вводить команды, то в другом терминале в history эти команды будут со звёздочками.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Я проверил, воспроизвести не получилось. История команд обновляется только после того, как сессия закрыта.

В официальной документации по Bash по этому поводу есть лишь такое упоминание: Lines prefixed with a * have been modified. Скудненько.

Такие дела.