#!/usr/bin/env zsh echo 'Starting history size:' ls -lh ~/.cache/zsh-histfile | cut -d " " -f5 hist=() while IFS= read -r line; do if [[ $line == "./"* || $line == "/"* ]]; then hist+=($line) elif [[ $line != "histclean" ]]; then which $(echo $line | cut -d " " -f1) > /dev/null [[ $? == 0 ]] && hist+=($line) fi done < "$XDG_CACHE_HOME"/zsh-histfile echo -n "" > "$XDG_CACHE_HOME"/zsh-histfile for item in "${hist[@]}"; do echo "$item" >> "$XDG_CACHE_HOME"/zsh-histfile done echo 'Ending history size:' ls -lh ~/.cache/zsh-histfile | cut -d " " -f5