#!/usr/bin/env zsh hist=() while IFS= read -r line; do if [[ $line == "./"* || $line == "/"* ]]; then hist+=($line) else 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