Skip to content

Instantly share code, notes, and snippets.

@jaggzh
Last active May 24, 2024 03:28
Show Gist options
  • Save jaggzh/01b36da847386fcc92a3ffd43a6c7b36 to your computer and use it in GitHub Desktop.
Save jaggzh/01b36da847386fcc92a3ffd43a6c7b36 to your computer and use it in GitHub Desktop.
bgbla=''; bgred=''; bggre=''; bgbro='';
bgblu=''; bgmag=''; bgcya=''; bggra='';
bla=''; red=''; gre=''; bro='';
blu=''; mag=''; cya=''; gra='';
bbla=''; bred=''; bgre=''; yel='';
bblu=''; bmag=''; bcya=''; whi='';
rst=''; inv=''; cll=''; cllr='';
cls=''; clsb='';
bgblae='\033[40m'; bgrede='\033[41m'; bggree='\033[42m'; bgbroe='\033[43m';
bgblue='\033[44m'; bgmage='\033[45m'; bgcyae='\033[46m'; bggrae='\033[47m';
blae='\033[30m'; rede='\033[31m'; gree='\033[32m'; broe='\033[33m';
blue='\033[34m'; mage='\033[35m'; cyae='\033[36m'; grae='\033[37m';
bblae='\033[30;1m'; brede='\033[31;1m'; bgree='\033[32;1m'; yele='\033[33;1m';
bblue='\033[34;1m'; bmage='\033[35;1m'; bcyae='\033[36;1m'; whie='\033[37;1m';
rste='\033[0m'; inve='\033[7m'; clle='\033[2K'; cllre='\033[K';
clse='\033[2J'; clsbe='\033[J';
a24fg () { # [0-255] Usage: a24fg r g b
printf '%s' "[38;2;$1;$2;${3}m"
}
a24bg () { # [0-255] Usage: a24fg r g b
printf '%s' "[48;2;$1;$2;${3}m"
}
#!/bin/bash
# List repo status of latest files in current directory
# (With colors and chars and easy to see)
#
# Example runs:
# git-ls-last-status
# (Displays up to 10 files)
# or
# git-ls-last-status 30
ourdir="$(dirname "$(readlink -f "$0")")"
. "$ourdir/ansi.sh"
# Default to the last 10 files if no argument is given
n=${1:-10}
# Get the last $n files sorted by modification time
files=$(ls -lrt | tail -n $n | awk '{print $9}')
cin=$gre
cmod=$bro
cnin=$red
# Loop through each file and check its git status
{
for file in $files; do
# Check if the file is tracked by git
git ls-files --error-unmatch $file &> /dev/null
if [ $? -eq 0 ]; then
# The file is tracked by Git, check for modifications
modified=$(git status --short $file)
if [ -z "$modified" ]; then
echo "$cin[*]$rst $file"
else
# Display the modification status
echo "$cmod[m]$rst $file"
fi
else
echo "$cnin[X]$rst $file"
fi
done
cat <<-EOT
$cin[*]$rst In repo. $cmod[m]$rst Modified. $cnin[X]$rst NOT in repo.
EOT
} | less -F -R -X
@jaggzh
Copy link
Author

jaggzh commented May 24, 2024

Fixed. less needed -R. (My system has export LESS='-R' already.)

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