Автоматическая очистка истории Bash

Нет никакой проблемы с помощью нескольких вызовов 'sudo' в сценариях.

Я нахожу его лучше, чем запущение целых скриптов как корень, поскольку риски ограничены путем ограничения расширения полномочий командами, для которых действительно нужны они.

4
02.01.2012, 22:01
3 ответа

я предпочел бы сохранять псевдоним ко всем частым ошибкам, которые происходят пример

alias ls-lh = ls -lh

Используйте псевдоним для фиксации недостающих опечаток пространства:

alias cd..='cd ..

Используйте HISTIGNORE для определения всех команд, которые Вы хотите проигнорировать из истории. использовать export HISTIGNORE="$LIST" для списка этого, Вы хотите проигнорировать внутреннюю историю

Существует несколько других опций интереса, которым управляет встроенная команда 'shopt'.

посмотрите здесь

1
27.01.2020, 21:00
  • 1
    +1 для использования псевдонимов удара. Также хороший совет для хранения инструмента для очистки истории использует export HISTCONTROL="ignoredups" предотвратить дубликаты команд. –   03.01.2012, 01:49

Я не знаю ни о каком способе настроить историю вне некоторых HIST… переменные. Можно хотеть переключиться на zsh, который немного более умен (но только немного). В zsh можно включить автоисправление команды (setopt correct), который предложит исправление для некоторых опечаток на основе доступных названий команды (например, в моей системе оно предлагает исправлять sl кому: ls, но ничего не делает о ls-lh). Дубликат Zsh более умен в этом, он обнаруживает непоследовательные дубликаты (под setopt hist_ignore_all_dups). Zsh не делает, любая пробельная нормализация в истории, но система завершения немного более умна, чем удар при хранении количества пробела, последовательного, вводите ли Вы полное имя или поражаете Вкладку, которая помогает.

1
27.01.2020, 21:00

Из этого блога, этот скрипт может удалить автоматически все команды, которые не найдены bash.

Если у вас ещё нет bash PROMPT_COMMAND, добавьте это в .bashrc:

PROMPT_COMMAND="mypromptcommand"
function mypromptcommand {
}

Эта функция теперь будет выполняться каждый раз, когда ваша подсказка появится. В ней мы поместили следующее:

local exit_status=$?
# If the exit status was 127, the command was not found. Let's remove it from history
local number=$(history | tail -n 1 | awk '{print $1}')
if [ -n "$number" ]; then
    if [ $exit_status -eq 127 ] && ([ -z $HISTLASTENTRY ] || [ $HISTLASTENTRY -lt $number ]); then
        history -d $number
    else
        HISTLASTENTRY=$number
    fi
fi

Ссылка предоставляет объяснение того, как она работает

.
0
27.01.2020, 21:00

Теги

Похожие вопросы