Отримайте історію баш-пам'яті, щоб запам’ятати лише команди, виконані з префіксом пробілу!


10

Команди, виконані в терміналі з префіксом із порожнім пробілом, не записуються у файл історії команд. Але чи є спосіб отримати зворотне, тобто історія повинна записувати лише ті, які мають префікс пробілом?

Відповіді:


12

Ви можете змінити параметри Ubuntu за замовчуванням, встановивши дві змінні (HISTIGNORE a HISTCONTROL), використовуючи команди, як показано нижче:

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredupsзмінює поведінку історії лише ігнорувати повторювані рядки, а не ігнорувати рядки, починаючи з пробілу. (Ви також можете встановити HISTCONTROL на порожній рядок (з HISTCONTROL=), якщо ви хочете зберігати дублікати, але це зазвичай не потрібно.)

HISTIGNORE='!( *)'змушує історію ігнорувати кожен рядок, який не починається з пробілу: ( *)відповідатиме кожному рядку, починаючи з пробілу, але ведучий !заперечує матч, тому він відповідає всім, що не починається з пробілу. І все, що відповідає малюнку HISTIGNORE, буде ігноруватися історією. (Цей останній варіант вимагає, щоб bash запускався з extglobувімкнутим, з shopt -s extglob, але це налаштування за замовчуванням для Ubuntu.)

Якщо ви хочете зробити це постійним, не забудьте вставити вищевказані дві команди у свої ~/.bashrc.


спасибі, саме це я хотів .. врятував зміни .bashrc.. Мені потрібно було, щоб запобігти запису bash усіх cds, lss та інших щоденних команд, які я використовую; і для тих кількох команд, які мені потрібні в історії, я тепер можу використовувати префікс ..
точний

1
@rusty Якщо ви хочете виключити лише деякі тривіальні команди, вам може бути краще, якщо ви використовуєте щось на зразок HISTIGNORE='ls*:cd*', що змусить історію ігнорувати кожен рядок, починаючи з lsабо cd, ви можете розширити цей список іншими командами, просто поставте :між командами . Але не забувайте, що функція відкликання команд, до якої ви можете отримати доступ за допомогою клавіші зі стрілкою вгору, також використовує цю історію, тому якщо ви встановите щось ігноруване, ви не зможете згадати ці ігноровані команди за допомогою " стрілка вгору".
сокольниця

Я хотів ігнорувати будь-яку команду SSH, але не такі команди, як ssh-copy-idабо ssh-keygen. Увімкнено HISTIGNORE, я включив " ssh\ *" з іншими своїми ігнорованими командами. Уникнення пробілу, очевидно, є обов'язковим.
користувач38537

2

" Команди, виконані в терміналі з префіксом із порожнім пробілом, не записуються у файл історії команд "

Так вони є.

термінальна історія


1
це налаштування в bash ;-)
Rinzwind

команда з префіксом з порожніми пробілами. Подібно `sudo apt-get update`
Avinash Raj

Яке значення вашої змінної HISTCONTROL?
glenn jackman

@AvinashRaj: так, дивіться мені команду "цей запис не записується", я помістив пробіл (видно і в командному рядку, і в історії). Так що це не працює. Можливо, ви можете це налаштувати (за допомогою HISTCONTROL); але це не за замовчуванням.
MrVaykadji
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.