Files
servalias/main
T

45 lines
1.5 KiB
Plaintext
Raw Normal View History

2026-03-04 11:25:39 +02:00
# Servalias: shell-independent alias collection by Luxferre
# This is the core file to be included from the outside world
# (source as . $HOME/.aliases/main)
. $HOME/.profile
# set modules (order matters)
ALIAS_MODULES='core sys net dev media custom'
# detect the current alias file path, hardcode it for non-bash
ALIASES_MAIN="$BASH_SOURCE"
[ -z "$ALIASES_MAIN" ] && ALIASES_MAIN="$HOME/.aliases/main"
# set some editor
[ -z "$EDITOR" ] && EDITOR=vim
# get the alias directory
ALIASDIR="$(dirname "$ALIASES_MAIN")"
# these are the bedrock commands for alias manipulation
# live-reload all aliases from this collection
alias reload-aliases=". $ALIASES_MAIN"
# edit this file and then live-reload all aliases
alias aliases-main="$EDITOR $ALIASES_MAIN && reload-aliases"
# get the most recent command run on this shell
alias lastcmd='history | tail -q -n 2 | head -q -n 1 | sed "s/^[[:space:]]*[0-9]*[[:space:]]*//"'
# define complex, function-like command aliases that can handle positional parameters anywhere
alias defalias='___(){ __="$1";shift;alias $__="_$__(){ $*; };_$__"; };___'
# convert the last run command into an alias
defalias toalias 'defalias "$1" "$(lastcmd)";alias "$1"'
# save any live alias into the custom alias file
defalias savealias "[ -n \"\$1\" ] && echo \"alias \$(alias \$1 | sed 's/^alias //')\" >> ${ALIASDIR}/custom"
# load the alias modules
for mod in $ALIAS_MODULES; do
alias aliases-${mod}="$EDITOR ${ALIASDIR}/$mod && reload-aliases"
. ${ALIASDIR}/$mod
done