blob: 98f1d330ed00c372a7a90693a0ccbb4a0fd3dadb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#!/bin/sh -eu
directory="$XDG_DATA_HOME/bash"
persist="$directory/history"
default="$HOME/.bash_history"
current="$HISTFILE"
lockfile='/tmp/bashhistory_Ri5ki9ei.lock'
_prune() {
sed --in-place '/^#/d;/^ /d;/^\t/d;/.........../!d' "$1" && # Remove all timestamps, lines beginning with tabs/spaces, and commands less than 11 characters
sort --unique "$1" > "$1.tmp" && # Remove all duplicate entries.
mv --force "$1.tmp" "$1" > /dev/null 2>&1
}
_migrate() {
[ -f "$default" ] &&
cat "$default" >>"$persist" &&
_prune "$persist" &&
rm "$default"
}
_store() {
cat "$current" >> "$persist" &&
cat "$current" >> "$persist.bak" &&
_prune "$persist" &&
true > "$current"
}
[ -f "$lockfile" ] && exit;
mkdir --parents "$directory"
touch "$current" "$lockfile"
trap 'rm "$lockfile" > /dev/null 2>&1; trap - EXIT; exit' EXIT INT HUP
_migrate || true
_store
|