내가 하나를 원하는믿을 수 있는해결책은 남아있다모든명령 입력모든내 터미널 탭세게 때리다 역사?
그리고타임스탬프,이미 주문함, 마지막 명령이 마지막이고고유한.
열면 각 탭에는 해당 탭이 있습니다.내 자신의내가 사용할 수 있도록 목록을 작성하세요.역사적 확장그리고PS1.
새로운 라벨을 기반으로모두현재 및 과거 명령.
답변1
내 모든 것을 하나로하나의문서,.bash_alias, 출처는 다음과 같습니다..bashrc:
HISTMY="$HOME/.bash_history"
touch $HISTMY
HISTSIZE=-1
HISTFILESIZE=-1
HISTCONTROL='ignoredups:ignorespace'
HISTTIMEFORMAT="|%d.%m._%a_%T| "
HISTMYTERM=${HISTMY}_`tty|sed 's|^/dev/||;s|/|_|g'`
PROMPT_COMMAND='history -a $HISTMYTERM'
export MYHISTLOCK="/tmp/.my.hist.lock"
각 탭에는 다음과 같은 파일이 있습니다..bash_history_pts_{0..}
플러스 전류.bash_history오래된 물건으로
FBashHist ()
{
local perl_history=$(cat <<'EOF'
########################################
#line 1526
use v5.10;
$file = $ARGV[0];
@ARGV = glob "$file*";
$time = "#" . (time - 1_000_000);
while (<>) {
s/^\s*//;
s/\s*$//;
next if length() < 4;
if (/^#\d{9,}$/) {
$time = $_;
}
else {
$cmd = $_;
if (exists $hash{$cmd}) {
next if $hash{$cmd} ge $time;
}
$hash{$cmd} = $time;
}
}
@keys = sort { $hash{$a} cmp $hash{$b} } keys %hash;
@keys = reverse @keys;
@keys = splice(@keys, 0, 8000); # cmds to save
@keys = reverse @keys;
foreach $key ( @keys ) {
push @hist, "$hash{$key}\n$key\n";
}
open BA, ">$file" or die "cant open '$file' for write: $!";
print BA @hist;
close BA;
EOF
)
###############################
perl -E "$perl_history" $HISTMY
}
ㅏ진주 해시시그 자체고유한, 그래서 저는 그것을 다음 용도로 사용합니다주문하다. 이 값은타임스탬프.
이 초기화는 모든 탭이 다시 시작될 때만 실행되도록 해야 합니다.한 번.
나는 사용한다그룹~에서유틸리티Linux. 탭을 잠그는 빈 파일을 생성합니다. 추가(>>)를 사용하면 후속 실행 시 재설정되지 않습니다.
10초(초기화에 충분함) 후에 다시 실행할 수 있습니다.
### call with init lock
(
flock -x 9
if [ ! -s $MYHISTLOCK ]; then
echo $$ >$MYHISTLOCK
FBashHist
else
l=`stat -c %Y $MYHISTLOCK`
(( $l )) && d=`date +%s` && ((d -= 10))
if (( $l < $d )); then
touch $MYHISTLOCK
FBashHist
fi
fi
) 9>>$MYHISTLOCK
sleep 1