summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/bash/rc.d/10_aliases.sh79
1 files changed, 46 insertions, 33 deletions
diff --git a/.config/bash/rc.d/10_aliases.sh b/.config/bash/rc.d/10_aliases.sh
index 1b25f93..de30c91 100644
--- a/.config/bash/rc.d/10_aliases.sh
+++ b/.config/bash/rc.d/10_aliases.sh
@@ -62,6 +62,14 @@ if [ -x "`which dircolors`" ]; then
command diff "$@"
fi
}
+
+ diffstat() {
+ if [[ -t 1 ]]; then
+ command diffstat -C "$@"
+ else
+ command diffstat "$@"
+ fi
+ }
else
alias ls='ls -1v'
alias dir='dir -v'
@@ -79,7 +87,6 @@ alias l='ls -CF'
# Some preferences for miscellaneous stuff #
######################################################################
#alias rm='gvfs-trash'
-#alias sed='sed --follow-symlinks' # breaks operating on stdio in GNU sed 4.2.2
alias tree='tree --charset utf8'
alias cd=pushd
alias gitk='gitk --all --date-order'
@@ -98,42 +105,48 @@ term-title() {
printf "$fmt" "$*"
}
mvln() {
- local target link
- if [[ ! -L "$1" ]]; then
- libremessages error 'Not a soft link: %s' "$1"
- return 1
- fi
- if [[ -d "$2" ]]; then
- link="$2/${1##*/}"
- else
- link="$2"
- fi
- target=$(readlink -f -- "$1") || return 1
- ln -srT -- "$target" "$link"
- if cmp -- "$1" "$link"; then
- rm -f -- "$1"
- else
- libremessages error 'Failed moving link: %s -> %s' "$1" "$link"
- return 1
- fi
+ local name=mvln
+ local verbing=moving
+ _cpln "$@"
}
cpln() {
- local target link
- if [[ ! -L "$1" ]]; then
- libremessages error 'Not a soft link: %s' "$1"
- return 1
- fi
- if [[ -d "$2" ]]; then
- link="$2/${1##*/}"
- else
- link="$2"
- fi
- target=$(readlink -f -- "$1") || return 1
- ln -srT -- "$target" "$link"
- if ! cmp -- "$1" "$link"; then
- libremessages error 'Failed copying link: %s -> %s' "$1" "$link"
+ local name=cpln
+ local verbing=copying
+ _cpln "$@"
+}
+_cpln() {
+ if [[ $# -lt 2 ]]; then
+ libremessages error 'Usage: %s FILES... DEST' "$name"
return 1
fi
+ declare -i i=1
+ while [[ $i -lt $# ]]; do
+ local src dst target link
+ src="${!i}"
+ dst="${!#}"
+ if [[ ! -L "$src" ]]; then
+ libremessages error 'Not a soft link: %s' "$src"
+ return 1
+ fi
+ if [[ -d "$dst" ]]; then
+ link="$dst/${1##*/}"
+ else
+ link="$dst"
+ fi
+ target=$(readlink -f -- "$src") || return 1
+ ln -srT -- "$target" "$link"
+ # using `cmp` instead of `[ "$src" -ef "$link" ]` has
+ # the use-case where "$link" was a pre-existing link
+ # to a duplicate of "$src".
+ if ! cmp -- "$src" "$link"; then
+ libremessages error 'Failed %s link: %s -> %s' "$verbing" "$src" "$link"
+ return 1
+ fi
+ if [[ "$name" = mvln ]]; then
+ rm -f -- "$src"
+ fi
+ i+=1
+ done
}
jarls() {
jar tf "$1" |