From 0b47efd8a633ce89b988f5cd39410b8cfe3c37ae Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Mon, 8 Mar 2010 17:49:54 +0100 Subject: [PATCH] bash/rc, zsh/rc: Move aliases to shell/aliases. Also make them more compatible with less capable shells/ls. --- bash/rc | 5 +++ shell/aliases | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ zsh/rc | 57 +++------------------------------ 3 files changed, 97 insertions(+), 52 deletions(-) create mode 100644 shell/aliases diff --git a/bash/rc b/bash/rc index 7c1a6e7..a1ac587 100644 --- a/bash/rc +++ b/bash/rc @@ -38,6 +38,11 @@ PS1='\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$ ' # Use Vi(m) style in bash. set -o vi +# Load aliases and similar functions also used by other shells. +if [[ -f ~/.shell/aliases ]]; then + . ~/.shell/aliases +fi + # Load rc file for current hostname (first part before a dot) or rc.local. source_config ~/.bash host rc $host diff --git a/shell/aliases b/shell/aliases new file mode 100644 index 0000000..cb2af4b --- /dev/null +++ b/shell/aliases @@ -0,0 +1,87 @@ +# Aliases and similar functions which can be used by all shells (supporting +# them). + + +# Shortcuts for often used programs. +alias c='clear' +alias e='elinks' +alias g='git' +alias m='mutt' +alias v='vim' +alias vi='vim' + + +# Improved ls which displays the files in columns (-C), visualizes +# directories, links and other special files (-F) and pages everything through +# less. +# +# If available use GNU ls with colorized output. If it isn't available try +# normal ls which needs CLICOLOR_FORCE so it displays colors when used with a +# pager. If none work no colors are used. + +# Check if colors are available. +ls --color > /dev/null 2>&1 +if [ $? -eq 0 ]; then + ls_color=gnu +else + ls -G > /dev/null 2>&1 + if [ $? -eq 0 ]; then + ls_color=cli + else + ls_color= + fi +fi + +# Main ls function, separated to prevent code duplication. +ls_path=`which ls` +my_ls() { + "$ls_path" -C -F $* 2>&1 | less +} +# Make sure there is no alias named ls as it causes problems with the +# following ls function on (at least) bash 4.0.35. +unalias ls 2> /dev/null +# GNU ls with colors. +if [ x$ls_color = xgnu ]; then + ls() { + my_ls --color $* + } +# Normal ls with colors. +elif [ x$ls_color = xcli ]; then + ls() { + CLICOLOR_FORCE=1 my_ls $* + } +# Simple ls with no colors. +else + ls() { + my_ls $* + } +fi +unset ls_color +# Helper function to list all files. +la() { + ls -a $* +} +# Helper function to list all files in list format with access rights, etc. +ll() { + la -l $* +} + + +# I sometimes confuse editor and shell, print a warning to prevent I exit the +# shell. +alias :q='echo "This is not Vim!" >&2' + +# Automatically use unified diffs. +alias diff='diff -u' + +# Display all files and use human readable sizes. +alias du='du -sh' +# Use human readable sizes. +alias df='df -h' + +# Edit the mercurial patch queue series file for the current mercurial +# repository in Vim. Also change Vim's pwd to the patches directory so other +# patches can easily be opened. +alias vqs='vim -c "cd `hg root`/.hg/patches/" "`hg root`/.hg/patches/series"' + +# vim: ft=sh diff --git a/zsh/rc b/zsh/rc index f01c5ff..9a413fa 100644 --- a/zsh/rc +++ b/zsh/rc @@ -375,6 +375,11 @@ exec 2>>(while read -r line; do print -n $'\0'; done &) +# Load aliases and similar functions also used by other shells. +if [[ -f ~/.shell/aliases ]]; then + . ~/.shell/aliases +fi + # Make sure aliases are expanded when using sudo. alias sudo='sudo ' @@ -391,40 +396,6 @@ alias -g ...='../..' alias -g ....='../../..' alias -g .....='../../../..' -# Shortcuts for often used programs. -alias c='clear' -alias e='elinks' -alias g='git' -alias m='mutt' -alias v='vim' -alias vi='vim' - -# Improved ls which displays the files in columns (-C), visualizes -# directories, links and other special files (-F) and pages everything through -# less (L). -# -# If available use GNU ls with colorized output. If it isn't available use -# normal ls which needs CLICOLOR_FORCE so it displays colors when used with a -# pager. -ls --color &> /dev/null -if [[ $? -eq 0 ]]; then - alias ls='ls --color' -else - alias ls='CLICOLOR_FORCE=1 ls -G' -fi -# Main ls function. -function ls() { - command ls -C -F $* L -} -# Helper function to list all files. -function la() { - ls -a $* -} -# Helper function to list all files in list format with access rights, etc. -function ll() { - la -l $* -} - # If the window naming feature is used (see above) then use ".zsh" (leading # dot) as title name after running clear so it's clear to me that the window # is empty. I open so much windows that I don't know in which I have something @@ -434,24 +405,6 @@ if [[ -n $window_reset ]]; then alias clear='clear; window_reset=yes; window_precmd reset' fi -# I sometimes confuse editor and shell, print a warning to prevent I exit the -# shell. -alias :q='echo "This is not Vim!" >&2' - -# Automatically use unified diffs. -alias diff='diff -u' - -# Display all files and use human readable sizes. -alias du='du -sh' - -# Use human readable sizes. -alias df='df -h' - -# Edit the mercurial patch queue series file for the current mercurial -# repository in Vim. Also change Vim's pwd to the patches directory so other -# patches can easily be opened. -alias vqs='vim -c "cd $(hg root)/.hg/patches/" "$(hg root)/.hg/patches/series"' - # Display all branches (except stash) in gitk but only 200 commits as this is # much faster. Also put in the background and disown. Thanks to sitaram in # #git on Freenode (2009-04-20 15:51). -- 2.45.2