Skip to content

Instantly share code, notes, and snippets.

@sebastiancarlos
Last active September 17, 2023 08:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sebastiancarlos/2f822a1d1f8e7aad816baded6eb437a4 to your computer and use it in GitHub Desktop.
Save sebastiancarlos/2f822a1d1f8e7aad816baded6eb437a4 to your computer and use it in GitHub Desktop.
Custom variations of diff: diffh (diff history) and diffc (diff commands)
#!/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