# vim: ft=sh: # This is file with aliases and variables shared between bash and zsh # Continue only if this is interactive shell [[ $- != *i* ]] && return ################################################################################# # Aliases alias ls='ls --color=auto' eval $(dircolors -b) alias ll='ls -lh' alias df='df -h' alias du='du -h' alias grep='grep --color=auto' alias git='LANG=en_GB git' alias gdb='gdb -q' alias cgdb='cgdb -q' alias octave='octave-cli -q' alias ssh='TERM="xterm-256color" ssh' alias feh='feh --magick-timeout 10 -.' alias mutt='neomutt' export LESS=-R export LESS_TERMCAP_mb=$'\E[1;31m' export LESS_TERMCAP_md=$'\E[1;36m' export LESS_TERMCAP_me=$'\E[0m' export LESS_TERMCAP_se=$'\E[0m' export LESS_TERMCAP_so=$'\E[01;44;33m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[1;32m' [ -x /usr/bin/src-hilite-lesspipe.sh ] && export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s" alias gst='git status' alias v='vim' alias i='i3-msg' # Systemd aliases if we are running systemd if pidof systemd >/dev/null 2>/dev/null; then alias sctl='sudo systemctl' alias usctl='systemctl --user' alias jrn='journalctl' alias ujrn='jrn --user' fi ################################################################################# # Utility functions # Generate random password (optionally takes length of password as first argument) genpasswd() { local l=$1 [ -n "$l" ] || l=16 tr -dc A-Za-z0-9_ < /dev/urandom | head -c "$l" | xargs } # Clip stdin to clipboard clip() { # Note: printf as magic to remove trailing new lines printf %s "$(cat)" | xclip -selection clipboard } # Clip current HEAD hash to clipboard # Optionally you can pass commit as argument gitclip() { [ -n "$1" ] && local CMT="$1" || local CMT=HEAD git rev-parse "$CMT"| clip } # Clip current head message to clipboard # Optionally you can pass commit as argument gitmclip() { [ -n "$1" ] && local CMT="$1" || local CMT=HEAD git log --format=%B -n 1 "$CMT" | clip } # Automatic branch merger (merge branch, push it to server and remove branch) # Expects name of the branch as argument gitbmerge() { ( set -e local WT="$(git worktree list | sed -nE "/\[$1\]/{s/([^ ]+) .*/\1/p}")" if [ -n "$WT" ]; then rm -r "$WT" git worktree prune fi git merge --ff-only "$1" && git push && git branch -d "$1" && git push origin :"$1" ) } # Create new branch from master gitbnew() { git branch "$1" master local NW="$(git rev-parse --show-toplevel)-$1" git worktree add "$NW" $1 cd "$NW" git submodule update --init --recursive } # Make screenshot xshot() { import -window "$(xdotool selectwindow)" ~/xshot_$(date +%F_%H%M%S_%N).png } # Run given command every second dorepeat() { while true; do "$@" sleep 1 echo done } # Clear all ssh control masters ssh-clear() { rm -rf ~/.cache/ssh mkdir -p ~/.cache/ssh } # Run process in background tobg() { "$@" >/dev/null 2>&1 & }