From fe3f42bd79a5c0f3a35e2cb740c0284d7a90c05a Mon Sep 17 00:00:00 2001 From: steveokard Date: Tue, 27 Jul 2021 04:57:59 -0400 Subject: [PATCH] moved scripted functions to init.sh --- bash.sh | 10 ----- bash/.sensible.bash | 106 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+), 10 deletions(-) delete mode 100755 bash.sh create mode 100644 bash/.sensible.bash diff --git a/bash.sh b/bash.sh deleted file mode 100755 index d5385d0..0000000 --- a/bash.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -#download sensible bash if it doesnt exist -if [ ! -f ~/.sensible.bash ]; then - wget -O "$HOME/.sensible.bash" https://raw.githubusercontent.com/mrzool/bash-sensible/master/sensible.bash -fi - -#inject source line into bashrc -if ! grep -q ".sensible.bash" "$HOME/.bashrc"; then - echo "source \"\$HOME/.sensible.bash\"" >> "$HOME/.bashrc" -fi diff --git a/bash/.sensible.bash b/bash/.sensible.bash new file mode 100644 index 0000000..a306610 --- /dev/null +++ b/bash/.sensible.bash @@ -0,0 +1,106 @@ +# Sensible Bash - An attempt at saner Bash defaults +# Maintainer: mrzool +# Repository: https://github.com/mrzool/bash-sensible +# Version: 0.2.2 + +# Unique Bash version check +if ((BASH_VERSINFO[0] < 4)) +then + echo "sensible.bash: Looks like you're running an older version of Bash." + echo "sensible.bash: You need at least bash-4.0 or some options will not work correctly." + echo "sensible.bash: Keep your software up-to-date!" +fi + +## GENERAL OPTIONS ## + +# Prevent file overwrite on stdout redirection +# Use `>|` to force redirection to an existing file +set -o noclobber + +# Update window size after every command +shopt -s checkwinsize + +# Automatically trim long paths in the prompt (requires Bash 4.x) +PROMPT_DIRTRIM=2 + +# Enable history expansion with space +# E.g. typing !! will replace the !! with your last command +bind Space:magic-space + +# Turn on recursive globbing (enables ** to recurse all directories) +shopt -s globstar 2> /dev/null + +# Case-insensitive globbing (used in pathname expansion) +shopt -s nocaseglob; + +## SMARTER TAB-COMPLETION (Readline bindings) ## + +# Perform file completion in a case insensitive fashion +bind "set completion-ignore-case on" + +# Treat hyphens and underscores as equivalent +bind "set completion-map-case on" + +# Display matches for ambiguous patterns at first tab press +bind "set show-all-if-ambiguous on" + +# Immediately add a trailing slash when autocompleting symlinks to directories +bind "set mark-symlinked-directories on" + +## SANE HISTORY DEFAULTS ## + +# Append to the history file, don't overwrite it +shopt -s histappend + +# Save multi-line commands as one command +shopt -s cmdhist + +# Record each line as it gets issued +PROMPT_COMMAND='history -a' + +# Huge history. Doesn't appear to slow things down, so why not? +HISTSIZE=500000 +HISTFILESIZE=100000 + +# Avoid duplicate entries +HISTCONTROL="erasedups:ignoreboth" + +# Don't record some commands +export HISTIGNORE="&:[ ]*:exit:ls:bg:fg:history:clear" + +# Use standard ISO 8601 timestamp +# %F equivalent to %Y-%m-%d +# %T equivalent to %H:%M:%S (24-hours format) +HISTTIMEFORMAT='%F %T ' + +# Enable incremental history search with up/down arrows (also Readline goodness) +# Learn more about this here: http://codeinthehole.com/writing/the-most-important-command-line-tip-incremental-history-searching-with-inputrc/ +bind '"\e[A": history-search-backward' +bind '"\e[B": history-search-forward' +bind '"\e[C": forward-char' +bind '"\e[D": backward-char' + +## BETTER DIRECTORY NAVIGATION ## + +# Prepend cd to directory names automatically +shopt -s autocd 2> /dev/null +# Correct spelling errors during tab-completion +shopt -s dirspell 2> /dev/null +# Correct spelling errors in arguments supplied to cd +shopt -s cdspell 2> /dev/null + +# This defines where cd looks for targets +# Add the directories you want to have fast access to, separated by colon +# Ex: CDPATH=".:~:~/projects" will look for targets in the current working directory, in home and in the ~/projects folder +CDPATH="." + +# This allows you to bookmark your favorite places across the file system +# Define a variable containing a path and you will be able to cd into it regardless of the directory you're in +shopt -s cdable_vars + +# Examples: +# export dotfiles="$HOME/dotfiles" +# export projects="$HOME/projects" +# export documents="$HOME/Documents" +# export dropbox="$HOME/Dropbox" +