diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2021-02-04 21:51:21 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2021-02-04 22:28:42 -0700 |
commit | f30024a8740f612db60133085016ef89403f5c8e (patch) | |
tree | f65d01ce9e804756801d45103df2596abbb2c9d3 /.bash_defns | |
parent | f88ddaa5234970ec54c1f208d520ba4b6e740e37 (diff) | |
download | dotfiles-f30024a8740f612db60133085016ef89403f5c8e.tar.gz |
enable shell aliases in M-! and M-&
Diffstat (limited to '.bash_defns')
-rw-r--r-- | .bash_defns | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/.bash_defns b/.bash_defns new file mode 100644 index 00000000..599bc6fc --- /dev/null +++ b/.bash_defns @@ -0,0 +1,153 @@ +# 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" +alias mrs="src-register-all && mr -m status" +# 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 |