dotfiles/zsh/aliases/general.zsh
2022-09-23 19:55:02 +01:00

183 lines
5.7 KiB
Bash

command_exists () {
hash "$1" 2> /dev/null
}
alias_not_used () {
! alias "$1" >/dev/null && ! hash "$1" 2> /dev/null
}
# Single-letter aliases, for frequently used basics, only if not already set
if alias_not_used a; then; alias a='alias'; fi
if alias_not_used c; then; alias c='clear'; fi
if alias_not_used d; then; alias c='date'; fi
if alias_not_used e; then; alias e='exit'; fi
if alias_not_used f; then; alias f='find'; fi
if alias_not_used g; then; alias g='grep'; fi
if alias_not_used h; then; alias h='history'; fi
if alias_not_used i; then; alias i='id'; fi
if alias_not_used j; then; alias j='jobs'; fi
if alias_not_used l; then; alias l='ls'; fi
if alias_not_used m; then; alias m='man'; fi
if alias_not_used p; then; alias p='pwd'; fi
if alias_not_used s; then; alias s='sudo'; fi
if alias_not_used t; then; alias t='touch'; fi
if alias_not_used v; then; alias v='vim'; fi
# File listing options
alias la='ls -A' # List all files/ includes hidden
alias ll='ls -lAFh' # List all files, with full details
alias lm='ls -tA -1' # List files sorted by last modified
alias lb='ls -lhSA' # List all files sorted by biggest
alias lr='ls -R' # List files in sub-directories, recursivley
alias lf='ls -A | grep' # Use grep to find files
alias ln='find . -type f | wc -l' # Shows number of files
alias ld='ls -l | grep "^d"' # List directories only
# If exa installed, then use exa for some ls commands
if command_exists exa ; then
alias l='exa -aF --icons' # Quick ls
alias la='exa -aF --icons' # List all
alias ll='exa -laF --icons' # Show details
alias lm='exa -lahr --color-scale --icons -s=modified' # Recent
alias lb='exa -lahr --color-scale --icons -s=size' # Largest / size
alias tree='f() { exa -aF --tree -L=${1:-2} --icons };f'
fi
# List contents of packed file, depending on type
ls-archive () {
if [ -z "$1" ]; then
echo "No archive specified"
return;
fi
if [[ ! -f $1 ]]; then
echo "File not found"
return;
fi
ext="${1##*.}"
if [ $ext = 'zip' ]; then
unzip -l $1
elif [ $ext = 'rar' ]; then
unrar l $1
elif [ $ext = 'tar' ]; then
tar tf $1
elif [ $ext = 'tar.gz' ]; then
echo $1
elif [ $ext = 'ace' ]; then
unace l $1
else
echo "Unknown Archive Format"
fi
}
alias lz='ls-archive'
# Make directory, and cd into it
mkcd() {
local dir="$*";
local mkdir -p "$dir" && cd "$dir";
}
# Make dir and copy
mkcp() {
local dir="$2"
local tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -d "$dir" ] ||
mkdir -p "$dir" &&
cp -r "$@"
}
# Move dir and move into it
mkmv() {
local dir="$2"
local tmp="$2"; tmp="${tmp: -1}"
[ "$tmp" != "/" ] && dir="$(dirname "$2")"
[ -d "$dir" ] ||
mkdir -p "$dir" &&
mv "$@"
}
# Getting outa directories
alias c~='cd ~'
alias c.='cd ..'
alias c..='cd ../../'
alias c...='cd ../../../'
alias c....='cd ../../../../'
alias c.....='cd ../../../../'
alias cg='cd `git rev-parse --show-toplevel`' # Base of git project
# Finding files and directories
alias dud='du -d 1 -h' # List sizes of files within directory
alias duf='du -sh *' # List total size of current directory
alias ff='find . -type f -name' # Find a file by name within current directory
(( $+commands[fd] )) || alias fd='find . -type d -name' # Find direcroy by name
# Command line history
alias h='history' # Shows full history
alias h-search='fc -El 0 | grep' # Searchses for a word in terminal history
alias top-history='history 0 | awk '{print $2}' | sort | uniq -c | sort -n -r | head'
# Clearing terminal
if command_exists hr ; then
alias c='clear && hr_color='\033[0;37m' && hr'
else
alias c='clear'
fi
# Command line head / tail shortcuts
alias -g H='| head' # Pipes output to head (the first part of a file)
alias -g T='| tail' # Pipes output to tail (the last part of a file)
alias -g G='| grep' # Pipes output to grep to search for some word
alias -g L="| less" # Pipes output to less, useful for paging
alias -g M="| most" # Pipes output to more, useful for paging
alias -g LL="2>&1 | less" # Writes stderr to stdout and passes it to less
alias -g CA="2>&1 | cat -A" # Writes stderr to stdout and passes it to cat
alias -g NE="2> /dev/null" # Silences stderr
alias -g NUL="> /dev/null 2>&1" # Silences both stdout and stderr
alias -g P="2>&1| pygmentize -l pytb" # Writes stderr to stdout, and passes to pygmentize
# Use color diff, if availible
if command_exists colordiff ; then
alias diff='colordiff'
fi
# Find + manage aliases
alias al='alias | less' # List all aliases
alias as='alias | grep' # Search aliases
alias ar='unalias' # Remove given alias
# System Monitoring
alias meminfo='free -m -l -t' # Show free and used memory
alias memhog='ps -eo pid,ppid,cmd,%mem --sort=-%mem | head' # Processes consuming most mem
alias cpuhog='ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head' # Processes consuming most cpu
alias cpuinfo='lscpu' # Show CPU Info
alias distro='cat /etc/*-release' # Show OS info
# App Specific
if command_exists code ; then
alias vsc='code .' # Open VS Code in current dir
fi
# Utilities
alias myip='curl icanhazip.com'
alias weather='curl wttr.in'
alias weather-short='curl "wttr.in?format=3"'
alias cheat='curl cheat.sh/'
alias tinyurl='curl -s "http://tinyurl.com/api-create.php?url='
alias ports='netstat -tulanp'
if command_exists cointop ; then; alias crypto='cointop'; fi
if command_exists gotop ; then; alias gto='gotop'; fi
# Random lolz
alias cls='clear;ls' # Clear and ls
alias plz="fc -l -1 | cut -d' ' -f2- | xargs sudo" # Re-run last cmd as root
alias yolo='git add .; git commit -m "YOLO"; git push origin master'
alias when='date' # Show date
alias whereami='pwd'
alias dog='cat'
alias gtfo='exit'
# Alias for install script
alias dotfiles="${DOTFILES_DIR:-$HOME/Documents/config/dotfiles}/install.sh"