Вы можете контролировать это поведение, отредактировав файл .tcshrc
, найденный в вашем домашнем каталоге.
Если вы используете псевдоним precmd
, он будет запускаться перед отображением каждого запроса.Командой, которую вы хотите, является history -S
, которая принудительно сохранит вашу текущую историю.Предполагая, что вы используете несколько терминалов одновременно, вы также захотите установить savehist
, чтобы он объединял все истории, а не просто переписывал.Без опции слияния файл истории будет перезаписан историей вашего текущего терминала, но как только вы перейдете в другое окно, история будет перезаписана этой историей терминала.
ИтакПредполагая, что вы хотите сохранить 500 строк истории (объединены), вот две строки, которые нужно добавить в файл ~/.tcshrc
.Обратите внимание, что если вы не изменили histfile
, ваша история будет найдена в ~/.history
:
set savehist = (500 "merge")
alias precmd "history -S"
В заключение я настоятельно рекомендую (в соответствии с @Mimisbrunnr) взглянуть на использованиелибо bash
, либо zsh
, так как они включили лучшие части tcsh
вместе с мощью оболочки Борна (sh
), исключая все слабые стороны csh
.
Ох ... и если вы хотите, чтобы Perl-скрипт получал историю, используйте что-то вроде:
#!/usr/bin/perl
use strict;
use warnings;
open my $hist_fh, '<', "$ENV{HOME}/.history" or die "Cannot open history file: $!\n";
my @history;
while (<$hist_fh>) {
chomp;
next if /^#/; # Skip timestamps
push @history, $_;
}
close $hist_fh;
print "Now I have my history in an array, the latest thing I did was: $history[-1]\n"
if @history > 0; # show latest command if we were able to read the history file