Сценарий можно найти здесь: https://stackoverflow.com/questions/14750650/how-to-delete-history-of-last-10-commands-in-shell
Для удобства вот он:
for x in `seq $1 $2`
do
history -d $1
done
Я поместил это в мой каталог include (тот, который я добавил в PATH), где я запускаю много других скриптов, которые я написал и отлично работаю. [!d3 ]
Это не дает желаемого результата удаления строк из моей истории, на самом деле ничего не делает.
Любая идея, почему команда истории не работает? Мне интересно, имеет ли это какое-то отношение к каталогам.
Дополнительная информация:
Я играл с кодом и пробовал разные варианты. Если я положил echo перед командой history и запустил его, я получаю следующий вывод:
cgravel@scspc578:~$ idelhistory 300 305
history -d 300
history -d 301
history -d 302
history -d 303
history -d 304
history -d 305
cgravel@scspc578:~$
Итак, для меня, похоже, он должен работать отлично. Я не могу понять, почему. Этот скрипт запускается из / $ HOME / Scripts /, и он был включен в PATH. Я также пытался запустить его с помощью sudo, и ничего не изменилось.
Изменить: Кажется, что на некоторых компьютерах, запускающих этот скрипт, все еще есть некоторые проблемы. Другой (и, возможно, лучший) способ сделать это не будет пытаться использовать встроенную оболочку, а скорее непосредственно модифицирует $ HISTFILE
#!/bin/bash
HISTFILE=~/.bash_history # Or just let the shell decide
for x in `seq $1 $2`
do
sed "\'$1d\'" $HISTFILE
done
Оригинальный ответ:
Проблема похоже, работает без сценария bash ...
Этот поток в Unix и Linux, похоже, охватывает метод обходного пути для работы вашего скрипта:
#!/bin/bash
HISTFILE=~/.bash_history # Or wherever you bash history file lives
set -o history # enable history
for x in `seq $1 $2`
do
history -d $1
done