Вы можете использовать эту команду, чтобы правильно удалить все строки со строкой в истории:
sed -i '/string/d' .bash_history
Моя история «загрязнена» некоторыми конкретными чертами, которые имеют опечатки и тому подобное. Например: мне часто приходится подключаться к определенному серверу следующим образом:
ssh foo-bar@domain.tld > Connects succesfully
Но я также иногда делаю опечатку:
ssh bar-foo@domain.tld > Permission denied
Поскольку я полагаюсь на историю, эта опечатка дублируется несколько раз:
cat .zsh_history | grep bar-foo@domain.tld > : 1510301683:0;ssh bar-foo@domain.tld > : 1511166682:0;ssh bar-foo@domain.tld > : 1511193552:0;ssh bar-foo@domain.tld > : 1512730972:0;ssh bar-foo@domain.tld > : 1516368993:0;ssh bar-foo@domain.tld > : 1516802690:0;ssh bar-foo@domain.tld > : 1519633368:0;ssh bar-foo@domain.tld
Есть ли простой способ очистить мою историю по результатам команды grep
? (или, может быть, есть другое, более умное решение?)
Обновить:
Обратите внимание: я не ищу способ удалить строку x
из истории; Я знаю, что есть много статей, которые освещают это. Я просто ищу (простой?) Способ удалить все строки, которые содержат строки y
.
Вы можете использовать эту команду, чтобы правильно удалить все строки со строкой в истории:
sed -i '/string/d' .bash_history