私が欲しい信頼できる解決策は残りますすべてコマンド入力すべてマイ端末タブ強く打つ 歴史?
そしてタイムスタンプ、すでに注文しました、最後のコマンドが最後ユニーク。
開くと、各タブには対応するタブがあります。私自身私が使用できるようにリストを作成してください。歴史的拡張そして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