Используйте файл истории удара от старой машины при установке новой машины?

touch может использовать метку времени файла с помощью -r опция. Вы могли бы хотеть произвести в другой файл (я принимаю ниже этого -if входной файл и -of выходной файл),

for f in ...; do
    sudo /opt/ABBYYOCR9/abbyyocr9 ... -if $f ... -of $f.new
    touch -r $f $f.new
    mv $f.new $f
done
6
10.07.2013, 00:05
3 ответа

Да. Можно скопировать старый файл истории в новую установку. Можно также объединить его со старым / новый.

  • Если Вы не имеете HISTTIMEFORMAT установите файл истории, только содержит команды.
  • Если это установлено существует метка времени, которой предшествует хеш для каждой команды:

    #1122334455
    command1
    #1122334459
    command2
    

Обратите внимание однако на это, если Вы выходите, например:

$ echo 'foo
> bar
> baz' >> some_file

Это будет сохраненным как:

#1122334459
echo 'foo
bar
baz' >> some_file

Но history движение должно показать:

4 CMD_TIME echo 'foo
5 CUR_TIME bar
6 CUR_TIME baz' >> some_file

Команды как:

$ foo | \
bar | \
baz

сохраняются как тот, если Вы устанавливаете shopt -s cmdhist.


Я использую различный, но часто что-то как:

HISTSIZE=500000
HISTFILESIZE=500000
# Ignore dupes and space commands
HISTCONTROL=ignoreboth
# Save and show timestamps
HISTTIMEFORMAT='%F %T '
# append to the history file, don't overwrite it
shopt -s histappend
# Save and reload the history after each command finishes
# This one I have a function to turn on/off. Effect is that commands are
# accessible in all terminals after execution.
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
  • Больше на shopt. (Используйте $ shopt показать текущие настройки.)
  • Больше на history.

Я также регулярно создаю резервную копию файлов истории и имею некоторые сценарии и псевдонимы к истории поиска – даже много лет назад вовремя. Иногда я вспоминаю, что сделал что-то подобное тому, что я в настоящее время делаю 1.5 года назад и могу быстро искать в истории.

Что касается меток времени я использую два варианта. history шоу с метками времени и другое шоу без путем временной установки HISTTIMEFORMAT к "".


Если метка времени отсутствует, текущее время (приблизительно) используется. Если метки времени являются настоящей историей, отсортирован по временам.

Таким образом:

.bash_history (Упрощенные метки времени)

#timestamp 000012
some command
#timestamp 000002
some other command

$ history
1 13 aug 2013 10:44 some other command
2 13 aug 2013 12:13 some command

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


Что касается поиска Ctrl-R часто полезен. Поскольку другие вещи смотрят на, например, Команды Для Управления Историей, Указателями События, Некоторыми Разными Командами и т.д.

6
27.01.2020, 20:23

Я думаю, что можно переместить файл без проблемы, или добавлять также.

для добавьте:

cd ~
mv .bash_history .bash_history_new
cp /mnt/oldfs/home/olduser/.bash_history ~/
cat .bash_history_new >> .bash_history

если Вы получили какую-либо проблему, можно отменить это:

mv .bash_history_new .bash_history
3
27.01.2020, 20:23

Мой .bash_history обычно просто символьная ссылка на /dev/null (т.е., моя история никогда не сохраняется на диске). Следовательно, когда я запускаю оболочку, нет никакой истории к доступу. Однако история действительно накапливается, означая, что удар делает это в памяти, не в файле истории.Действительно? man bash говорит (в соответствии с ИСТОРИЕЙ):

На запуске история инициализируется из файла, названного переменным HISTFILE (значение по умолчанию ~/.bash_history). [...], Когда файл истории читается, строки, начинающиеся с символа комментария истории, сопровождаемого сразу цифрой, интерпретируются как метки времени для предыдущей строки истории. Эти метки времени являются дополнительно скидкой ‐ играемый в зависимости от значения переменной HISTTIMEFORMAT. Когда интерактивная оболочка выходит, последние строки $HISTSIZE копируются от списка предыстории до $HISTFILE.

Я оставил бит о метках времени в том, потому что это помогает объяснить формат файла истории при рассмотрении его (это - список простого текста). Основной момент здесь - то, что файл истории только используется, когда оболочка сначала запускается, и с другой стороны когда это выходит (для добавления новейшей истории).

Так как формат является просто списком команд, вкрапленных метками времени, и удар будет хорошо работать, даже если файл ничего не будет содержать (такой как со ссылкой/dev/null), то я не могу предположить там быть любыми негативными последствиями импорта того. Вы могли, вероятно, даже вручную добавить материал в него, опустив метки времени - по крайней мере, Вы могли попробовать его. Если оболочка завинчивает, просто выйдите и восстановите старую историю.

Необходимо также смочь использовать несколько историй в нескольких целях, если Вы хотите путем свопинга файлов или экспорта $HISTFILE перед запуском оболочки. Если Вы устанавливаете их только для чтения (или возможно сброс $HISTFILE впоследствии? Это зависит от того, проверяет ли оболочка, что переменная в конце, или использует начальное значение), затем они не будут добавлены к тому, когда оболочка выйдет также.

3
27.01.2020, 20:23

Теги

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