Как периодически копировать историю tcsh в один файл в хронологическом порядке? - PullRequest
1 голос
/ 23 декабря 2009

Я использую tcsh на работе - одна из функций, которые я широко использую, - завершение истории командной строки в командной строке. В настоящее время я ограничил размер файла истории до 2000 (поскольку я не хочу слишком сильно замедлять работу оболочки). Однако иногда мне нужна команда, которую я знаю, я использовал месяц или два назад, но к настоящему времени стерта. Поэтому я хочу систему, в которой:

  1. В моем буфере истории хранится только 2000 строк

  2. Вместо того, чтобы стирать более старые команды, они должны быть сохранены в «главном» файле истории, упорядоченном в хронологическом порядке, т.е. если были открыты две оболочки, то команды, введенные в историю, должны быть отсортированы согласно метке даты (не порядок, в котором снаряды были закрыты)!

  3. Было бы идеально, если бы этот основной файл истории можно было автоматически резервировать, скажем, еженедельно.

Я уверен, что многие из заядлых пользователей оболочки сталкивались с подобной ситуацией - я надеюсь получить ответ от одного из таких пользователей !!

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

2000 довольно низок. Вы могли бы собрать это изрядное количество без особых страданий.

Затем вы, вероятно, захотите сохранить историю при выходе из системы, так как это когда новые команды добавляются в файл .history.

Создайте файл с именем .logout в вашем $ HOME (для пользователей bash это файл .bash_logout). При этом скопируйте содержимое истории в постоянное хранилище. Например:

cat $HOME/.history >> $HOME/.ancient_history

Это добавит историю в файл ".ancient_history". Для пользователей bash файл для копирования называется .bash_history.

Затем создайте задание cron, которое время от времени создает резервную копию этого. Для начала приведем файл, который перемещает файл в имя файла с отметкой даты в 5 минут после полуночи каждый день.

 5 0 * * *       mv $HOME/.ancient_history $HOME/.ancient_history_`date +%s`

Возможно, с этим можно сделать еще кое-что, но этого достаточно, чтобы начать. Это очень хорошая идея, о которой я и раньше не думал: -)

1 голос
/ 23 декабря 2009

никогда не задумывался об этом, но самым простым способом было бы написать задание cron, которое добавляло файл истории в другой файл. Проблема в том, что вы получите дубликаты, если вы не напишете cron для очистки файла истории после того, как он сделал дамп.

история хранится (насколько я знаю) только по номеру строки, поэтому номера будут повторяться для каждого дампа. но вы можете добавить строку маркера с датой сброса.

...