Почему этот скрипт не удаляет часть моей истории команд, работающих на моем компьютере?

Сценарий можно найти здесь: 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, и ничего не изменилось.

1
задан 23 May 2017 в 15:39

1 ответ

Изменить: Кажется, что на некоторых компьютерах, запускающих этот скрипт, все еще есть некоторые проблемы. Другой (и, возможно, лучший) способ сделать это не будет пытаться использовать встроенную оболочку, а скорее непосредственно модифицирует $ 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
2
ответ дан 24 May 2018 в 00:13
  • 1
    Вы также можете запустить " ваш скрипт в текущей (интерактивной) оболочке, используя source или bash builtin ., например: source script.sh line1 line2 или . script.sh line1 line2. – Seth♦ 13 January 2015 в 01:02
  • 2
    Я скопировал и вставил. Я пробовал менять кавычки. Я попытался переключить число, которое было больше. Я утроил проверенные разрешения. Я не получаю положительного результата. – Klik 13 January 2015 в 01:11
  • 3
    @Klik Хм, да, это тоже не работает для меня, хотя мой комментарий выше работает. – Seth♦ 13 January 2015 в 01:24
  • 4
    Да, Сет, ваше решение работает для меня source idelhistory3 350 400 . Возможно, это должно быть решением этой темы. – Klik 13 January 2015 в 01:50
  • 5
    @Klik Проверьте изменение. Это работает? – Seth♦ 13 January 2015 в 02:45

Другие вопросы по тегам:

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