# This file contains core aliases & functions which we want to be available in # the non-interactive shells launched by M-! and M-& in Emacs shopt -s expand_aliases # --- aliases alias g="git" alias ga="git annex" # useful to check whether a rebase introduced any changes to files alias rld="git diff @{1}..@{0}" alias athvpn="sshuttle -r athena 0/0 --dns" alias soffice-pdf="soffice --headless --convert-to pdf" alias whitenoise="echo -en \"\033]0;whitenoise\a\";\ cvlc --quiet --loop ~/annex/media/sounds/R*.ogg" alias host-suite-build-deps='mk-build-deps -ir -s sudo -t \ "apt-get --no-install-recommends"' alias sid-build-deps='mk-build-deps -ir -s sudo -t \ "apt-get -o Debug::pkgProblemResolver=yes -t sid --no-install-recommends"' alias bts-policy="bts user debian-policy@packages.debian.org \ , package debian-policy , " alias dak-rdeps="ssh mirror.ftp-master.debian.org dak rm -Rn" alias afsid="apt-file --filter-suites unstable" alias dinstall="curl https://ftp-master.debian.org/dinstall.status;echo -n 'Right now: ';date -u '+%a %b %d %T %Z %Y (%s)'" # use with care, in order for this to actually provide a security advantage alias update-debian-known-hosts="scp master.debian.org:/etc/ssh/ssh_known_hosts ~/src/dotfiles/.ssh/known_hosts_debian" alias grepcopy="grep --color=always -Eir '(copyright|©)' * | less -R" # from dgit-user(7), this pushes a non-native package through sbuild # without an orig.tar for the version in the first changelog entry. # Useful for sbuilding an unreleased version of a package I maintain # upstream alias sbuild-prerelease="sbuild --dpkg-source-opts='-Zgzip -z1 --format=1.0 -sn'" # alias does not call `git develacc` because we want manual # verification of what is to be pushed (i.e. `git diff # master..develacc/develacc-iris` to check patch queue is sane) alias push-develacc-dotfiles-branch="git push \ -f origin develacc/develacc-$(hostname -s):develacc-$(hostname -s)" alias spin-this-host-now='(cd /usr/local/propellor && sudo ./propellor)' # --- more powerful aliases built with shell functions package-plan-unpack () { package="$1" patches="$HOME/src/package-plan/patches/${package%-*}/${package##*-}" cd /tmp cabal unpack --pristine "$package" cd "$package" mkdir -p "$patches" ln -s "$patches" patches ls "$(readlink $patches)" } # tidy up if I deleted files from stowed repos without properly # restowing kill-broken-stowed-symlinks () { find "$HOME" -xtype l | while read -r link; do if readlink "$link" | grep --quiet "^[../]*/.STOW/"; then rm "$link" fi done } # install package(s) and immediately mark as auto installed, so it # will get cleaned up by the next autoclean. # --no-install-recommends is needed as otherwise packages are manually # installed beyond those specified on the command line install-as-auto () { if [[ $EUID -ne 0 ]]; then sudo apt-get --no-install-recommends install "$@" sudo apt-mark auto "$@" else apt-get --no-install-recommends install "$@" apt-mark auto "$@" fi } # PDF word count pdfwords () { pdftotext "$1" - | wc -w } # also see soffice-pdf alias above soffice-pdf-all () { for f in *.doc *.docx; do soffice --headless --convert-to pdf "$f" done } # Debian archive processing logs alias tail-dak="ssh ftp-master.debian.org tail -F \ /srv/ftp-master.debian.org/log/current" alias tail-queued="ssh ssh.upload.debian.org tail -F \ /srv/upload.debian.org/queued/run/log" grep-dak () { ssh ftp-master.debian.org grep "$@" /srv/ftp-master.debian.org/log/current } grep-queued () { ssh ssh.upload.debian.org grep "$@" /srv/upload.debian.org/queued/run/log } # sometimes a remote SSH session cannot get at my forwarded SSH agent # because an unwanted instance of gpg-agent running on the remote host # gets in the way. this is a way to kill off that unwanted agent. we # also need to restart the multiplexed SSH connection to get agent # forwarding working again. I think this problem is mostly caused by # the fact that I use gnupg as my SSH agent kill-remote-gpg () { ssh "$1" 'rm -f $XDG_RUNTIME_DIR/gnupg/*' ssh -O exit "$1" } # build debs from a Linux kernel source tree *without* calling `make clean`. # # The -dbg deb takes some time to build. To get rid of it when it's # not needed: scripts/config --disable DEBUG_INFO bindeb-pkg () { ver="$(make kernelversion)" date="$(date +%Y%m%d+%H%M)" arch="$(dpkg --print-architecture)" make -j$((2 * $(nproc))) bindeb-pkg \ LOCALVERSION=-spw \ KDEB_PKGVERSION=$ver-$date \ "$@" echo "sudo apt-get install \ ../linux-{image,headers}-$ver-spw_$ver-${date}_$arch.deb" } # --- host-specific aliases/functions # not ftp-master.debian.org # this is useful for processing removal requests # (credits to Mark Wooding) # # alternative, by me, but involves spawning another process or two: # # command -v dak >/dev/null \ # || alias dak="perl -MString::ShellQuote \ # -we'system qw(ssh -t ftp-master.debian.org dak), shell_quote @ARGV'" if ! command -v dak >/dev/null; then dak () { local i local c= for i; do # implicit "in $@" c="$c '${i/\'/\'\\\'\'}'" done ssh -t ftp-master.debian.org dak "$c" } fi