summaryrefslogtreecommitdiff
path: root/.bash_defns
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-02-04 21:51:21 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-02-04 22:28:42 -0700
commitf30024a8740f612db60133085016ef89403f5c8e (patch)
treef65d01ce9e804756801d45103df2596abbb2c9d3 /.bash_defns
parentf88ddaa5234970ec54c1f208d520ba4b6e740e37 (diff)
downloaddotfiles-f30024a8740f612db60133085016ef89403f5c8e.tar.gz
enable shell aliases in M-! and M-&
Diffstat (limited to '.bash_defns')
-rw-r--r--.bash_defns153
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