Last active
August 15, 2024 06:07
-
-
Save sebastiancarlos/2f822a1d1f8e7aad816baded6eb437a4 to your computer and use it in GitHub Desktop.
Custom variations of diff: diffh (diff history) and diffc (diff commands)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# All my gist code is licensed under the terms of the MIT license. | |
# Video demo: https://www.youtube.com/watch?v=nf3ddQniw-o | |
# diffc - diff commands | |
# - allows to call as: diffc 'command one' 'command two' | |
# instead of: diff <(command one) <(command two) | |
# (Just to save typing a few characters. Lol I'm a lazy programmer) | |
function diffc () { | |
if [[ "$#" != "2" ]]; then | |
echo "diffc requires two arguments" | |
return 1 | |
fi | |
local command=$(printf 'diff <( %s ) <( %s )' "$1" "$2") | |
echo $command | |
eval $command | |
} | |
# diffh - diff history | |
# - make a diff of the output of the last two commands in the shell history | |
function diffh () { | |
# first one is 2nd to last. second is last | |
# remove preceeding spaces | |
local first=$(fc -ln -2 -2) | |
local second=$(fc -ln -1 -1) | |
# print and run diff | |
local command=$(printf 'diff <( %s ) <( %s )' "${first}" "${second}") | |
echo $command | |
eval $command | |
local error_code=$? | |
# replace this 'diffh' entry in history with the command | |
history -s "$(echo $command)" | |
return $error_code | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment