# shell_aliases — portable aliases for bash and zsh, Linux and macOS. # Sourced (not executed); everything optional is guarded so missing tools are skipped. alias cp='cp -vi' alias mv='mv -vi' alias sless='less -S -R' # --- docker run wrappers --- # naming: trailing/extra "n" = network enabled, otherwise --network=none alias dockerstatus='docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock moncho/dry' alias dockerip="docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'" alias dritn='docker run -i -t --rm ' alias drit='docker run -i -t --rm --network=none' alias dritpwn='docker run -i -t --rm -v "$(mktemp -d):/output" -v "$(pwd)":/data:ro' alias dritpwnrw='docker run -i -t --rm -v "$(mktemp -d):/output" -v "$(pwd)":/data:rw' alias dritpw='docker run -i -t --rm --network=none -v "$(mktemp -d):/output" -v "$(pwd)":/data:ro' alias dritpwrw='docker run -i -t --rm --network=none -v "$(mktemp -d):/output" -v "$(pwd)":/data:rw' alias kali='docker run --rm -it -v "${workdir:-$(pwd)}":/root/workdir kalilinux/kali-rolling' alias lazydocker='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /opt/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker' alias powershell='docker run --rm -it -v "${workdir:-$(pwd)}":/data mcr.microsoft.com/powershell pwsh' alias pwsh=powershell alias dockerips="docker ps -q | xargs docker inspect --format '{{.Name}}{{range \$n, \$c := .NetworkSettings.Networks}} {{\$n}}: {{\$c.IPAddress}}{{end}}'" alias dissect='dritpw tabledevil/dissect' # --- remnux containers --- alias remnux_crits_start='sudo docker run --rm --name critsy -it -v "${workdir:-$(pwd)}":/home/nonroot/workdir -p 8443:8443 remnux/crits' alias remnux_crits_stop='sudo docker stop critsy' alias remnux_jsdetox_start='sudo docker run --rm --name jsdetoxy -p 3000:3000 remnux/jsdetox' alias remnux_jsdetox_stop='sudo docker stop jsdetoxy' alias remnux_mastiff='sudo docker run --rm -it -v "${workdir:-$(pwd)}":/home/nonroot/workdir remnux/mastiff' alias remnux_msf='docker run --rm -it -p 443:443 -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasploit' alias remnux_pescanner='docker run --rm -it --dns=192.168.130.1 -v "${workdir:-$(pwd)}":/home/nonroot/workdir remnux/pescanner bash' alias remnux_rekall='docker run --rm -it -p 8000:8000 --dns=192.168.130.1 -v "${workdir:-$(pwd)}":/home/nonroot/files remnux/rekall bash' alias remnux_thug='sudo docker run --rm -it --dns=192.168.130.1 -v /var/log/docker/thug_logs:/home/thug/logs remnux/thug ./thug.py -F ' alias remnux_viper='docker run --rm -it --dns=192.168.130.1 -v "${workdir:-$(pwd)}":/home/nonroot/workdir remnux/viper bash' alias remnux_vol='docker run --rm -it -v "${workdir:-$(pwd)}":/home/nonroot/memdumps remnux/volatility bash' # --- text / data helpers --- alias ppxml='xmlstarlet format --indent-tab' alias evtvd='vd -f csv --skip 5' alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" alias uniq2='awk '"'"'{a[$0]++; if (a[$0]==1) print $0 }'"'" # --- linux-only tools --- if [[ "$OSTYPE" == linux* ]]; then alias locate='locate -i -A' alias ntfsmount='sudo mount -o ro,show_sys_files,streams_interface=windows' fi [ -f /usr/lib/mc/mc-wrapper.sh ] && alias mc='. /usr/lib/mc/mc-wrapper.sh' if command -v usbguard >/dev/null 2>&1; then alias usbb='usbguard list-devices -b' alias usba='usbguard allow-device' fi if command -v apt-cache >/dev/null 2>&1 && command -v fzf >/dev/null 2>&1; then alias searchpackage="apt-cache search '' | sort | cut --delimiter ' ' --fields 1 | fzf --multi --cycle --reverse --preview 'apt-cache show {1}' | xargs -r sudo apt install -y" fi # --- python / rust tool shims --- command -v python3 >/dev/null 2>&1 && alias python='python3' command -v pip3 >/dev/null 2>&1 && alias pip='pip3' command -v fdfind >/dev/null 2>&1 && alias fd='fdfind' # --- modern ls: eza > lsd > plain ls --- if command -v eza >/dev/null 2>&1; then alias ll='eza -l --icons --group-directories-first' alias lt='eza -lT --level 2 --git-ignore --group-directories-first' elif command -v lsd >/dev/null 2>&1; then alias ll='lsd -lAF' alias lt='lsd -lA --tree --depth 2' else alias ll='ls -lAF' fi # --- bat as manpager (bat on most distros, batcat on ubuntu/debian) --- if command -v bat >/dev/null 2>&1; then export MANPAGER="sh -c 'col -bx | bat -l man -p'" elif command -v batcat >/dev/null 2>&1; then alias bat='batcat' export MANPAGER="sh -c 'col -bx | batcat -l man -p'" fi # --- functions --- function bindiff() { cmp -l "${1}" "${2}" | gawk '{printf "%s,%02X,%02X\n",$1,strtonum(0$2),strtonum(0$3) }' ; } function avscan(){ av="${1:-kaspersky}" ; if [ "${av}" == "update" ] ; then ( docker pull tabledevil/kaspersky ; docker pull tabledevil/sep ; docker pull tabledevil/clamav) ; elif [[ $# -eq 2 ]] ; then dritpw "tabledevil/${av}" "${2}" ; else dritpw "tabledevil/${av}" scan ; fi ; } function dockerfa() { [[ $# -eq 0 ]] && wpd=$(readlink -f . ) || wpd=$(readlink -f "${1}"); docker run -it --rm -v "${wpd}":/data tabledevil/file-analysis;} function docker_killall() { docker rm $(docker stop $(docker ps -a -q --filter ancestor="${1}" --format="{{.ID}}")) ; } # list tags of a docker hub repo, optionally filtered (hub API caps at 100 per page) function dockertags() { local repo="${1:?usage: dockertags [filter]}" [[ "$repo" != */* ]] && repo="library/${repo}" local tags tags=$(curl -fsSL "https://hub.docker.com/v2/repositories/${repo}/tags/?page_size=100" \ | python3 -c 'import json,sys; [print(r["name"]) for r in json.load(sys.stdin).get("results",[])]') [ -n "$2" ] && tags=$(echo "${tags}" | grep "$2") echo "${tags}" } function unsetproxy() { unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY ftp_proxy FTP_PROXY ; } function nsrt() { local col=$1; shift; awk -v c="$col" '{print $c, $0}' "$@" | sort -k1,1 -n | cut -d' ' -f2-; }