Skip to content

Instantly share code, notes, and snippets.

@rkmax
Forked from exdeniz/migrate_from_exist_hitory.sh
Created January 27, 2024 21:03
Show Gist options
  • Save rkmax/84f4be5d2075a4d183c1677efcaaa8f5 to your computer and use it in GitHub Desktop.
Save rkmax/84f4be5d2075a4d183c1677efcaaa8f5 to your computer and use it in GitHub Desktop.
Remove Duplicate zsh History
cat -n .zsh_history | sort -t ';' -uk2 | sort -nk1 | cut -f2- > .zhistory
#
# Sets history options.
#
# Authors:
# Robby Russell <[email protected]>
# Sorin Ionescu <[email protected]>
#
HISTFILE="$HOME/.zhistory"
HISTSIZE=10000000
SAVEHIST=10000000
setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
setopt SHARE_HISTORY # Share history between all sessions.
setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.
setopt HIST_FIND_NO_DUPS # Do not display a line previously found.
setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space.
setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file.
setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry.
setopt HIST_VERIFY # Don't execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing nonexistent history.
@errandir
Copy link

errandir commented Jul 30, 2024

migrate_from_exist_hitory.sh version worked for me:

awk '{\
  if (NR == 1) {\
    print ": " NR ":0;" $0\
  } else if (prev_line_ends_with_backslash) {\
    print $0\
  } else {\
    print ": " NR ":0;" $0\
  }\
  prev_line_ends_with_backslash = (substr($0, length($0), 1) == "\\")\
}' ~/.zsh_history > .zhistory

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment