Shell: removed bash support.

master
Pierre Neidhardt 2013-03-08 13:53:42 +01:00
parent 3ffd37a2a4
commit 0230ce4767
6 changed files with 0 additions and 544 deletions

View File

@ -1 +0,0 @@
[ -f "$HOME/.bashrc" ] && . .bashrc

27
.bashrc
View File

@ -1,27 +0,0 @@
################################################################################
## Shell Config -- Master File
## Date 2012-08-11
################################################################################
##==============================================================================
## If not running interactively, don't do anything
##==============================================================================
[ -z "$PS1" ] && return
##==============================================================================
## Sourcing
##==============================================================================
SHELL_CURRENT="$(ps -o command="" $$)"
SHELL_DIR="$HOME/.shell.d"
## Should be sourced first.
source "${SHELL_DIR}/main_rc"
source "${SHELL_DIR}/colors_bash"
source "${SHELL_DIR}/options_bash"
## Source order should not matter.
source "${SHELL_DIR}/alias_rc"
source "${SHELL_DIR}/funs_rc"
source "${SHELL_DIR}/funs_bash"
source "${SHELL_DIR}/personal_rc"

View File

@ -1,77 +0,0 @@
## -*- mode:sh -*- #
##==============================================================================
## Colors for universal support
##==============================================================================
## Reset
Color_Off='\[\e[0m\]' # Text Reset
## Regular Colors
Black='\[\e[0;30m\]' # Black
Red='\[\e[0;31m\]' # Red
Green='\[\e[0;32m\]' # Green
Yellow='\[\e[0;33m\]' # Yellow
Blue='\[\e[0;34m\]' # Blue
Purple='\[\e[0;35m\]' # Purple
Cyan='\[\e[0;36m\]' # Cyan
White='\[\e[0;37m\]' # White
## Bold
BBlack='\[\e[1;30m\]' # Black
BRed='\[\e[1;31m\]' # Red
BGreen='\[\e[1;32m\]' # Green
BYellow='\[\e[1;33m\]' # Yellow
BBlue='\[\e[1;34m\]' # Blue
BPurple='\[\e[1;35m\]' # Purple
BCyan='\[\e[1;36m\]' # Cyan
BWhite='\[\e[1;37m\]' # White
## Underline
UBlack='\[\e[4;30m\]' # Black
URed='\[\e[4;31m\]' # Red
UGreen='\[\e[4;32m\]' # Green
UYellow='\[\e[4;33m\]' # Yellow
UBlue='\[\e[4;34m\]' # Blue
UPurple='\[\e[4;35m\]' # Purple
UCyan='\[\e[4;36m\]' # Cyan
UWhite='\[\e[4;37m\]' # White
## Background
On_Black='\[\e[40m\]' # Black
On_Red='\[\e[41m\]' # Red
On_Green='\[\e[42m\]' # Green
On_Yellow='\[\e[43m\]' # Yellow
On_Blue='\[\e[44m\]' # Blue
On_Purple='\[\e[45m\]' # Purple
On_Cyan='\[\e[46m\]' # Cyan
On_White='\[\e[47m\]' # White
## High Intensty
IBlack='\[\e[0;90m\]' # Black
IRed='\[\e[0;91m\]' # Red
IGreen='\[\e[0;92m\]' # Green
IYellow='\[\e[0;93m\]' # Yellow
IBlue='\[\e[0;94m\]' # Blue
IPurple='\[\e[0;95m\]' # Purple
ICyan='\[\e[0;96m\]' # Cyan
IWhite='\[\e[0;97m\]' # White
## Bold High Intensty
BIBlack='\[\e[1;90m\]' # Black
BIRed='\[\e[1;91m\]' # Red
BIGreen='\[\e[1;92m\]' # Green
BIYellow='\[\e[1;93m\]' # Yellow
BIBlue='\[\e[1;94m\]' # Blue
BIPurple='\[\e[1;95m\]' # Purple
BICyan='\[\e[1;96m\]' # Cyan
BIWhite='\[\e[1;97m\]' # White
## High Intensty backgrounds
On_IBlack='\[\e[0;100m\]' # Black
On_IRed='\[\e[0;101m\]' # Red
On_IGreen='\[\e[0;102m\]' # Green
On_IYellow='\[\e[0;103m\]' # Yellow
On_IBlue='\[\e[0;104m\]' # Blue
On_IPurple='\[\e[10;95m\]' # Purple
On_ICyan='\[\e[0;106m\]' # Cyan
On_IWhite='\[\e[0;107m\]' # White

View File

@ -15,6 +15,4 @@ if [ "zsh" = "$SHELL_CURRENT" ]; then
compdef _pcc pql
compdef _tex ltx
compdef _zathura zat
elif [ "bash" = "$SHELL_CURRENT" ]; then
complete -o default -o nospace -F _pacman pacman-color
fi

View File

@ -1,232 +0,0 @@
## -*- mode:sh -*- #
################################################################################
## Bash specific functions
## WARNING: this file needs a serious update and rewrite!
################################################################################
##==============================================================================
## Browse History
##==============================================================================
## Parameters usage -- should be set before sourcing the function.
if [ -d "$SHELLDIR" ]; then
BHISTORY="${SHELLDIR}/bhistory"
else
BHISTORY="$HOME/.bhistory"
fi
BHISTFILESIZE=20
BHISTREVERT=true
BHISTLOADLAST=true
## Where to store the history file.
if [ "$BHISTORY" == "" ]; then
if [ -d "$SHELLDIR" ]; then
BHISTORY="${SHELLDIR}/bhistory"
else
BHISTORY="$HOME/.bhistory"
fi
fi
## History prompted to the user.
## BHISTFILESIZE +1 entry are stored, the additional one
## is for the current directory to be remembered for new session.
[ "$BHISTFILESIZE" == "" ] && BHISTFILESIZE=20
## If true, first listed is last browsed.
[ "$BHISTREVERT" == "" ] && BHISTREVERT=true
## Go back to previous folder when starting a new session.
[ "$BHISTLOADLAST" == "" ] && BHISTLOADLAST=true
## Prevent infinite recursiveness when sourcing multiple times.
unalias cd>/dev/null 2>&1
## SEED is used to generate uniq filenames.
SEED=$(date "+%y-%m-%d-%H%M%S")
## Makes sure destination folder exists.
mkdir -p $(dirname "$BHISTORY")
## Use 'head' or 'tail' depending on BHISTREVERT
if $BHISTREVERT; then
BFUNC=head
BFUNCREV=tail
touch "${BHISTORY}-true"
if [ -e "$BHISTORY" -a -e "${BHISTORY}-false" ]; then
rm -rf "${BHISTORY}-false"
touch "${BHISTORY}-${SEED}_REV"
tac "$BHISTORY" > "${BHISTORY}_${SEED}_REV"
cat "${BHISTORY}_${SEED}_REV" > "$BHISTORY"
rm -rf "${BHISTORY}_${SEED}_REV"
fi
else
BFUNC=tail
BFUNCREV=head
touch "${BHISTORY}-false"
if [ -e "$BHISTORY" -a -e "${BHISTORY}-true" ]; then
rm -rf "${BHISTORY}-true"
touch "${BHISTORY}-${SEED}_REV"
tac "$BHISTORY" > "${BHISTORY}_${SEED}_REV"
cat "${BHISTORY}_${SEED}_REV" > "$BHISTORY"
rm -rf "${BHISTORY}_${SEED}_REV"
fi
fi
## Go back to previous folder when starting a new session.
## Need to put this part before the new 'cd' is set to prevent $HOME from being added as last entry in the history.
if [ $BHISTLOADLAST -a -e $BHISTORY ]; then
LASTPATH="$($BFUNC -n1 $BHISTORY)"
if [[ -e "$LASTPATH" ]]; then
cd "$LASTPATH"
fi
unset LASTPATH
fi
function bcd(){
## First character is an hyphen.
if [ "${1:0:1}" == "-" ]; then
if [ ${#1} -eq 1 ]; then # cd -
cd -
else
DEST=${1:1} # After the hyphen
# Check if the content after the hyphen is a number.
if [[ $DEST == ${DEST//[^0-9]/} ]]; then
let DEST=$DEST # Set DEST as an integer only here to avoid errors.
if $BHISTREVERT; then
let DEST=${DEST}+1
fi
NEWPATH=$(head -n$DEST "$BHISTORY"|tail -n1)
echo ${NEWPATH}
cd "${NEWPATH}"
else
cd "$1"
fi
fi
else
if [ -z "$1" ]; then
cd
else
cd "$1"
fi
fi
## Let's update the history.
touch $BHISTORY
## A buffer is used to avoid flow errors.
if $BHISTREVERT; then
echo ${PWD} >> "${BHISTORY}_$SEED"
cat "$BHISTORY" >> "${BHISTORY}_$SEED"
else
cat "$BHISTORY" >> "${BHISTORY}_$SEED"
echo "${PWD}" >> "${BHISTORY}_$SEED"
fi
## The 'awk' command makes sure there is duplicates.
## If the history size is beyond the limit set by $BHISTFILESIZE+1, it is cut.
## The '+1' is for storing the current folder which is not displayed to the used.
let BHISTSIZEREAL=${BHISTFILESIZE}+1
awk ' !x[$0]++' "${BHISTORY}_$SEED" | $BFUNC -n $BHISTSIZEREAL > "$BHISTORY"
rm "${BHISTORY}_$SEED"
}
function bhistory(){
if [ ! -e "$BHISTORY" ]; then
echo "Browse history empty"
else
let BHISTDISPLAY=$(cat "$BHISTORY"| wc -l)-1
$BFUNCREV -n$BHISTDISPLAY "$BHISTORY"| cat -n
fi
}
## Clean -- buggy?
#unset BFUNC BFUNCREV SEED BHISTSIZEREAL
## Replace 'cd' command
alias cd='bcd'
shopt -s extglob ## To allow bash to understand generic expression
shopt -s progcomp ## To enable the programmable completion
set +o nounset ## Otherwise some completions will fail
complete -A directory cd
##==============================================================================
## Alias auto completion
##==============================================================================
## wrap_alias takes three arguments:
## $1: The name of the alias
## $2: The command used in the alias
## $3: The arguments in the alias all in one string
## Generate a wrapper completion function (completer) for an alias
## based on the command and the given arguments, if there is a
## completer for the command, and set the wrapper as the completer for
## the alias.
#function wrap_alias() {
# [[ "$#" == 3 ]] || return 1
#
# local alias_name="$1"
# local aliased_command="$2"
# local alias_arguments="$3"
# local num_alias_arguments=$(echo "$alias_arguments" | wc -w)
#
# ## The completion currently being used for the aliased command.
# local completion=$(complete -p $aliased_command 2> /dev/null)
#
# ## Only a completer based on a function can be wrapped so look for -F
# ## in the current completion. This check will also catch commands
# ## with no completer for which $completion will be empty.
# echo $completion | grep -q -- -F || return 0
#
# local namespace=alias_completion::
#
# ## Extract the name of the completion function from a string that
# ## looks like: something -F function_name something
# ## First strip the beginning of the string up to the function name by
# ## removing "* -F " from the front.
# local completion_function=${completion##* -F }
# ## Then strip " *" from the end, leaving only the function name.
# completion_function=${completion_function%% *}
#
# ## Try to prevent an infinite loop by not wrapping a function
# ## generated by this function. This can happen when the user runs
# ## this twice for an alias like ls='ls --color=auto' or alias l='ls'
# ## and alias ls='l foo'
# [[ "${completion_function#$namespace}" != $completion_function ]] && return 0
#
# local wrapper_name="${namespace}${alias_name}"
#
# eval "
#function ${wrapper_name}() {
# let COMP_CWORD+=$num_alias_arguments
# args=( \"${alias_arguments}\" )
# COMP_WORDS=( $aliased_command \${args[@]} \${COMP_WORDS[@]:1} )
# $completion_function
# }
#"
#
# ## To create the new completion we use the old one with two
# ## replacements:
# ## 1) Replace the function with the wrapper.
# local new_completion=${completion/-F * /-F $wrapper_name }
# ## 2) Replace the command being completed with the alias.
# new_completion="${new_completion% *} $alias_name"
#
# eval "$new_completion"
#}
## For each defined alias, extract the necessary elements and use them
## to call wrap_alias.
#eval "$(alias -p | sed -e 's/alias \([^=][^=]*\)='\''\([^ ][^ ]*\) *\(.*\)'\''/wrap_alias \1 \2 '\''\3'\'' /')"
#unset wrap_alias

View File

@ -1,205 +0,0 @@
## -*- mode:sh -*- #
################################################################################
## Bash specific options
################################################################################
## Enable programmable completion features (you don't need to enable
## this, if it's already enabled in /etc/bash.bashrc and /etc/profile
## sources /etc/bash.bashrc).
[ -f /etc/bash_completion ] && . /etc/bash_completion
## Sudo completion
complete -cf sudo
set +o nounset # Otherwise some completions will fail
set completion-ignore-case on
set show-all-if-ambiguous on
## Use TAB to switch between completions instead of waiting for the next character.
#bind '"\t":menu-complete'
## A list of suffixes to ignore when performing filename completion
export FIGNORE=".o:~"
## To search and fill the complete name of a file (with <Esc>)
set filec
##==============================================================================
## History management
##==============================================================================
# Don't put duplicate lines in the history. See bash(1) for more options.
export HISTCONTROL=ignoredups
# Define number of previous commands stored.
export HISTFILESIZE=1000
export HISTIGNORE="&:bg:fg:ll:h:ls:la:la:lk:clear:exit:history"
export HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S_%a "
##==============================================================================
## Various options
##==============================================================================
set -o notify # Jobs notify shell about their states immediately.
#set ignoreeof # To avoid accidentally quitting the shell with <Ctrl-D>.
#shopt -u mailwarn # Disable the shell ability to warn about incoming mail.
shopt -s cdable_vars # If cd arg is not valid, assumes its a var defining a dir.
shopt -s cdspell # To correct minor error in the directory spelling (during cd).
shopt -s checkhash
shopt -s checkwinsize # Update the value of LINES and COLUMNS after each command if altered.
shopt -s cmdhist # Save multi-line commands in history as single line.
shopt -s dirspell
shopt -s dotglob # Include dotfiles in pathname expansion.
shopt -s expand_aliases # Expand aliases.
shopt -s extglob # Enable extended pattern-matching features.
shopt -s histappend # Append to (not overwrite) the history file.
shopt -s hostcomplete # Attempt hostname expansion when @ is at the beginning of a word.
shopt -s no_empty_cmd_completion # No completion on an empty line.
shopt -s nocaseglob # Pathname expansion will be treated as case-insensitive.
shopt -s progcomp # To enable the programmable completion.
##==============================================================================
## Various options
##==============================================================================
complete -A setopt set
complete -A hostname ssh rsh rcp telnet rlogin r ftp ping disk
complete -A export export printenv
complete -A variable export local readonly unset
complete -A enabled builtin
complete -A alias alias unalias
complete -A function function
complete -A user su mail finger my_ps my_detail_ps
complete -A helptopic help # currently same as builtins
complete -A shopt shopt
complete -A stopped -P '%' bg
complete -A job -P '%' fg jobs disown
complete -A directory rmdir
#complete -A directory -o default cd
complete -A command which
complete -A signal kill killall
# File name completion according to program functionnality
complete -A file -X '!*.@(zip|ZIP|jar|JAR)' unzip zipinfo
complete -A file -X '!*.@(z|Z)' uncompress
complete -A file -X '!*.@(gz|GZ)' gunzip
complete -A file -X '!*.@(bz2|BZ2)' bunzip2 untar
complete -A file -X '!*.@(tar|TAR)' untar
##==============================================================================
## PS1 -- Full width bar with informations.
##==============================================================================
## An external function is needed to update $COLUMNS value, as well as path, time, and other variables.
_psbar ()
{
## Initialization.
BARCOLOR=$BBlue
OUTPUT="$BARCOLOR["
SYMBOLVAR='='
CENTERVAR=" $(date +%H:%M:%S) "
## Truncated path.
## '3' stands for '[ $SYMBOLVAR'.
local PWDMAXLEN=$(($COLUMNS/2-${#CENTERVAR}/2-3))
local TRUNC_SYMBOL="..."
if [[ $PWD == $HOME* ]]; then
newPWD="~${PWD#$HOME}"
else
newPWD=${PWD}
fi
if [ ${#newPWD} -gt $PWDMAXLEN ]; then
local PWDOFFSET=$(( ${#newPWD} - $PWDMAXLEN + ${#TRUNC_SYMBOL} ))
newPWD="${TRUNC_SYMBOL}${newPWD:$PWDOFFSET:$PWDMAXLEN}"
fi
## Truncated login information.
local LOGINFO="$(whoami)@$HOSTNAME"
if [ ${#LOGINFO} -gt $(($COLUMNS/2-${#CENTERVAR}/2-3)) ]
then
LOGINFO=$USER
if [ ${#LOGINFO} -gt $(($COLUMNS/2-${#CENTERVAR}/2-3)) ]
then
unset LOGINFO
fi
fi
## Left and right side. Empty if terminal width is too small.
if [ $COLUMNS -gt 50 ]
then
LEFTSIDEVAR="$newPWD "
RIGHTSIDEVAR=" $LOGINFO"
fi
## Left side.
OUTPUT="$OUTPUT$BPurple$LEFTSIDEVAR"
## Reset bar color
OUTPUT="$OUTPUT$BARCOLOR"
## In case of odd values.
if [ $(($COLUMNS%2)) -eq 1 ]
then
OUTPUT="$OUTPUT$SYMBOLVAR"
fi
## Fill 'OUTPUT' variable with the desired chars.
## '1' stands for '['
for i in $( seq $(($COLUMNS/2-${#LEFTSIDEVAR}-${#CENTERVAR}/2-1)) )
do
OUTPUT="$OUTPUT$SYMBOLVAR"
done
## Center.
OUTPUT="$OUTPUT$Color_Off$CENTERVAR"
## Reset bar color
OUTPUT="$OUTPUT$BARCOLOR"
## Fill 'OUTPUT' variable with the desired chars.
for i in $( seq $(($COLUMNS/2-${#CENTERVAR}/2-${#RIGHTSIDEVAR}-1)) )
do
OUTPUT="$OUTPUT$SYMBOLVAR"
done
## Right side.
OUTPUT="$OUTPUT$BGreen$RIGHTSIDEVAR"
## Reset bar color
OUTPUT="$OUTPUT$BARCOLOR"
## Close bar
OUTPUT="$OUTPUT]\n"
## Prompt.
if [ $(id -u) -eq 0 ]
then
## Root access
OUTPUT="$OUTPUT$BRed# $Color_Off"
else
## Normal user
OUTPUT="$OUTPUT$BYellow$ $Color_Off"
fi
## Set result to PS1.
PS1="$OUTPUT"
}
##==============================================================================
## Add informations to history.
##==============================================================================
#PROMPT_COMMAND='hpwd=$(history 1); hpwd="${hpwd# *[0-9]* }"; if [[ ${hpwd%% *} == "cd" ]]; then cwd=$OLDPWD; else cwd=$PWD; fi; hpwd="${hpwd% ### *} ### $cwd"; history -s "$hpwd;"'
##==============================================================================
## PS1
##==============================================================================
## PS1 using _psbar function.
#PROMPT_COMMAND='_psbar'
## Simple PS1
PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] '