666840419ab639ad6a369aee4c5d9a45d36f4728
David Blume Fixed when /etc bashrc gets...

David Blume authored 8 years ago

1) if [[ $(uname -s) != Darwin* ]] && [ -f /etc/bashrc ]; then
2)     # Fedora but not Macintosh requires explicit sourcing of /etc/bashrc
3)     # On Debian, it's /etc/bash.bashrc, but it doesn't have to be sourced here.
4)     . /etc/bashrc
5) fi
6) 
dblume No need for __git_ps1 if no...

dblume authored 1 year ago

7) if [[ -v PS1 ]] && ! $(declare -F __git_ps1 >/dev/null); then
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

8)     # Try to source a file with __git_ps1
9)     if [[ -e /usr/lib/git-core/git-sh-prompt ]]; then
dblume Try to source a script for...

dblume authored 2 years ago

10)         . /usr/lib/git-core/git-sh-prompt
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

11)     elif [[ -e /usr/share/git-core/contrib/completion/git-prompt.sh ]]; then
dblume Try to source a script for...

dblume authored 2 years ago

12)         . /usr/share/git-core/contrib/completion/git-prompt.sh
13)     elif [[ $(uname -s) == Darwin* ]] && [[ -f $(brew --prefix git)/etc/bash_completion.d/git-prompt.sh ]]; then
14)         . $(brew --prefix git)/etc/bash_completion.d/git-prompt.sh
dblume Add option to manually down...

dblume authored 2 years ago

15)     elif [[ -f $HOME/.git-prompt.sh ]]; then
16)         # wget -O ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
17)         . $HOME/.git-prompt.sh
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

18)     fi
19) 
20)     # Still no __git_ps1? Fake it.
21)     if ! $(declare -F __git_ps1 >/dev/null); then
dblume Don't call git if not in a...

dblume authored 2 years ago

22)         # By icetan at https://stackoverflow.com/a/35513635/9181
23)         # Ex. to test if in a git repo: "rtrav .git $PWD"
24)         rtrav() { [ -e "$2"/"$1" ] || { [ "$2" != / ] && rtrav "$1" $(dirname "$2"); } }
25) 
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

26)         __git_ps1() {
dblume Don't call git if not in a...

dblume authored 2 years ago

27)             if rtrav .git "$PWD"; then
28)                 local fmt="${1:- (%s)}"
29)                 local branch=$(git branch 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
30)                 if [ -n "$branch" ]; then
31)                     printf -- "$fmt" "$branch"
32)                 fi
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

33)             fi
34)         }
35)     fi
dblume Use __git_ps1 when possible.

dblume authored 2 years ago

36) fi
dblume Experiment: Add git branch...

dblume authored 2 years ago

37) 
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

38) GIT_PS1_SHOWUPSTREAM="auto"
39) GIT_PS1_SHOWDIRTYSTATE="true"
dblume Don't call git if not in a...

dblume authored 2 years ago

40) GIT_PS1_STATESEPARATOR=""
dblume Try to source __git_ps1 fir...

dblume authored 2 years ago

41) 
dblume Add Docker container to PS1

dblume authored 2 years ago

42) # Trim everything before the dash, then trim everything after the colon.
dblume Stop exporting PS1 behind S...

dblume authored 2 years ago

43) PS1_DOCKER_VER=${DOCKER_VER#*-}
44) PS1_DOCKER_VER="🐳 \e[0;36m${PS1_DOCKER_VER%:*}"
dblume Add Docker container to PS1

dblume authored 2 years ago

45) 
dblume Stop exporting PS1 behind S...

dblume authored 2 years ago

46) # In PS1, "\h" is hostname
dblume Add Docker container to PS1

dblume authored 2 years ago

47) if [[ -n $SSH_CLIENT ]]; then
dblume Stop exporting PS1 behind S...

dblume authored 2 years ago

48)     PS1_HOSTNAME="$HOSTNAME:"
David Blume New PS1 with error detectio...

David Blume authored 6 years ago

49) else
dblume Stop exporting PS1 behind S...

dblume authored 2 years ago

50)     PS1_HOSTNAME=
David Blume New PS1 with error detectio...

David Blume authored 6 years ago

51) fi
52) 
dblume Stop exporting PS1 behind S...

dblume authored 2 years ago

53) export PROMPT_DIRTRIM=2
54) export PS1='$(if [ $? -eq 0 ]; then echo -e "\[\e[32m\]\xe2\x9c\x93";
55)               else echo -e "\[\e[31m\]\xe2\x9c\x97";
56)               fi)$(if [ -n "$DOCKER_VER" ]; then echo -e " $PS1_DOCKER_VER";
57)               fi) \[\e[38;5;242m\]$PS1_HOSTNAME\w$(__git_ps1 " \[\e[38;5;030m\]%s\[\e[38;5;242m\]")$\[\e[0m\] '
58) 
David Blume New PS1 with error detectio...

David Blume authored 6 years ago

59) set -o vi
David Blume first commit

David Blume authored 8 years ago

60) 
dblume Cleaner appending to PATH

dblume authored 1 year ago

61) append_to_path() {
David Blume first commit

David Blume authored 8 years ago

62)     if [ -d "$1" ] && [[ ! $PATH =~ (^|:)$1(:|$) ]]; then
63)         PATH+=:$1
64)     fi
65) }
66) 
dblume Cleaner appending to PATH

dblume authored 1 year ago

67) prepend_to_path() {
68)     if [ -d "$1" ] && [[ ! $PATH =~ (^|:)$1(:|$) ]]; then
69)         PATH=$1:$PATH
70)     fi
71) }
72) 
dblume Add remove_from_path to .ba...

dblume authored 1 year ago

73) remove_from_path() {
74)     # N.B. It'll remove all instances of $1, so ensure it's a unique pathname
75)     PATH=${PATH//"$1"/}
76) }
77) 
David Blume first commit

David Blume authored 8 years ago

78) # if this is a CygWin .bashrc, then set CygWin's commands first in PATH
79) # because link.exe and find.exe exist in Windows's path.
80) # Add /usr/lib/lapack at the end so python's numpy can find lapack_lite
81) # (Note: BSD bash, used by OS X doesn't have the "substr" test for expr.)
82) if [[ $(uname -s) == CYGWIN* ]]; then
dblume Add remove_from_path to .ba...

dblume authored 1 year ago

83)     prepend_to_path /usr/bin
84)     prepend_to_path /usr/local/bin
85)     remove_from_path ":/usr/local/bin:/usr/bin"
dblume Cleaner appending to PATH

dblume authored 1 year ago

86)     append_to_path /usr/lib/lapack
David Blume Add md() support for Cygwin...

David Blume authored 5 years ago

87)     export GIT_SSH=/cygdrive/c/cygwin64/bin/ssh
David Blume Use spaces instead of tabs.

David Blume authored 8 years ago

88)     ulimit -n 1024 # for "duplicity"
David Blume Add support for 'md' on WSL.

David Blume authored 3 years ago

89) elif [[ -n "${WSL_DISTRO_NAME}" ]]; then
90)     export BROWSER=/mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe
dblume Add pbcopy for WSL2

dblume authored 2 years ago

91)     alias pbcopy='tee <&0 | /mnt/c/Windows/System32/clip.exe'
dblume Disable inotify for WSL tai...

dblume authored 6 months ago

92)     alias tail='tail ---disable-inotify'
David Blume first commit

David Blume authored 8 years ago

93) fi
94) 
David Blume whitespace

David Blume authored 6 years ago

95) # change the color of directories in the ls command
David Blume Refactor .bashrc to keep di...

David Blume authored 8 years ago

96) if [[ $(uname -s) == Darwin* ]]; then
97)     export LSCOLORS=gxfxcxdxbxegedabagacad
98)     export CLICOLOR=1
99) else
100)     # After executing: dircolors -p > .dircolors
101)     # Lighten the color of directories from blue to light blue
102)     # sed -i '/# directory/c\DIR 00;36 # directory' .dircolors
103)     if [ -x /usr/bin/dircolors ]; then
104)         test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
105)         alias ls='ls --color=auto'
106)     fi
David Blume first commit

David Blume authored 8 years ago

107) fi
108) 
David Blume Add .vimrc tab values for ....

David Blume authored 7 years ago

109) export P4DIFF='vim -d'  # Override from the command line: "P4DIFF=; p4 diff main.py"
David Blume Set vim as editor for cscope

David Blume authored 6 years ago

110) export CSCOPE_EDITOR=vim
dblume Add .ripgreprc for ripgrep,...

dblume authored 2 years ago

111) export RIPGREP_CONFIG_PATH=$HOME/.ripgreprc
David Blume Add .vimrc tab values for ....

David Blume authored 7 years ago

112) 
David Blume Add alias for colors in ls...

David Blume authored 8 years ago

113) alias grep='grep --color=auto'
114) alias fgrep='fgrep --color=auto'
115) alias egrep='egrep --color=auto'
dblume vim: Use more common char f...

dblume authored 2 years ago

116) alias tmux='tmux -2u'
David Blume Add alias for colors in ls...

David Blume authored 8 years ago

117) 
118) # colored GCC warnings and errors
119) export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
120) 
dblume Move ~/.local/bin ahead of...

dblume authored 6 months ago

121) # .local/bin must come before /usr/bin and /bin for VisiData and clang-format
122) remove_from_path $HOME/.local/bin
123) prepend_to_path $HOME/.local/bin
dblume Add .local/bin to $PATH

dblume authored 1 year ago

124) # Add to PATH only if not already in PATH.
dblume Cleaner appending to PATH

dblume authored 1 year ago

125) append_to_path $HOME/bin
dblume Add .local/bin to $PATH

dblume authored 1 year ago

126) # .cargo/bin for rustc
dblume Add rust to $PATH

dblume authored 1 year ago

127) append_to_path $HOME/.cargo/bin
David Blume first commit

David Blume authored 8 years ago

128) 
dblume Check for nvim after settin...

dblume authored 1 month ago

129) if command -v nvim &> /dev/null; then
130)     alias vim='nvim'
131)     alias vim-='nvim +"setl buftype=nofile" -'
132)     alias vimdiff='nvim -d'
133) else
134)     alias vim-='vim +"setl buftype=nofile" -'
135) fi
136) 
David Blume disable ctrl+s as stty flow...

David Blume authored 2 years ago

137) # For interactive shells ('i' in $-), disable stty flow control (ctrl+s,ctrl+q)
138) case "$-" in
dblume Set CDPATH for interactive...

dblume authored 1 year ago

139)  *i*)
David Blume disable ctrl+s as stty flow...

David Blume authored 2 years ago

140)   stty start ''
141)   stty stop  ''
142)   stty -ixon # disable XON/XOFF flow control
143)   stty ixoff # enable sending (to app) of start/stop characters
144)   stty ixany # let any character restart output, not only start character
dblume Set CDPATH for interactive...

dblume authored 1 year ago

145) 
dblume Do need to prepend '.' to C...

dblume authored 1 year ago

146)   # Don't use export for CDPATH. This may get appended to in .localrc too.
dblume Add dunst config from Frame...

dblume authored 5 months ago

147)   # You may have to explicitly source /usr/share/bash-completion/bash_completion
dblume Do need to prepend '.' to C...

dblume authored 1 year ago

148)   CDPATH=.:$HOME
dblume Set CDPATH for interactive...

dblume authored 1 year ago

149) 
dblume Set $TERMINAL=alacritty for...

dblume authored 3 weeks ago

150)   # gnome-terminal can't distinguish C-i vs Tab, have i3wm use alacritty
151)   export TERMINAL=alacritty
152) 
dblume bash PROMPT_COMMAND to set...

dblume authored 2 weeks ago

153)   # This sets the terminal title
154)   PROMPT_COMMAND="echo -ne \"\033]0;$HOSTNAME\007\""
155) 
dblume Set CDPATH for interactive...

dblume authored 1 year ago

156)  ;;
David Blume disable ctrl+s as stty flow...

David Blume authored 2 years ago

157) esac
158) 
dblume 'lh' to list only most rece...

dblume authored 4 months ago

159) # Keeping as an example, but haven't used since ripgrep
160) #alias findinchppfiles="find . -type f \( -name \*.[ch]pp -or -name \*.[ch] \) -print0 | xargs -0 grep -nI"
David Blume Add a few c++ aliases, and...

David Blume authored 8 years ago

161) 
162) alias clip="expand | cut -b1-\$COLUMNS"
David Blume Optionally source a .localr...

David Blume authored 7 years ago

163) 
dblume 'lh' now function to accept...

dblume authored 4 months ago

164) # I'm often interested in just the most recently changed file
dblume Add conditional ellipses to lh

dblume authored 3 months ago

165) # N.B. If changing -l to -1, remove tail, because "total" line is only for -l
dblume 'lh' now function to accept...

dblume authored 4 months ago

166) lh() {
dblume lh and lt compatible with m...

dblume authored 3 months ago

167)     if [[ $(uname -s) != Darwin* ]]; then
dblume Change readonly to 'local -r'

dblume authored 3 months ago

168)         local -r color_always="--color=always"
dblume lh and lt compatible with m...

dblume authored 3 months ago

169)     fi
170)     ls $color_always -ltqh "$@" | head -$(($LINES/4)) | tail -n +2
171)     if [ $(ls -1 "$@" | wc -l) -gt $(($LINES/4)) ]; then
dblume Add conditional ellipses to lh

dblume authored 3 months ago

172)         echo ...
173)     fi
dblume 'lh' now function to accept...

dblume authored 4 months ago

174) }
dblume 'lh' to list only most rece...

dblume authored 4 months ago

175) 
dblume Decide if I want 'lt' (ls |...

dblume authored 3 months ago

176) # lh = "ls | head" (newest at top), lt = "ls | tail" (newest at the bottom)
177) lt() {
dblume lh and lt compatible with m...

dblume authored 3 months ago

178)     if [ $(ls -1 "$@" | wc -l) -gt $(($LINES/4)) ]; then
dblume Decide if I want 'lt' (ls |...

dblume authored 3 months ago

179)         echo ...
180)     fi
dblume lh and lt compatible with m...

dblume authored 3 months ago

181)     if [[ $(uname -s) != Darwin* ]]; then
dblume Change readonly to 'local -r'

dblume authored 3 months ago

182)         local -r color_always="--color=always"
dblume lh and lt compatible with m...

dblume authored 3 months ago

183)     fi
184)     ls $color_always -rltqh "$@" | tail -n $(($LINES/4))
dblume Decide if I want 'lt' (ls |...

dblume authored 3 months ago

185) }
dblume Add nvim-

dblume authored 2 months ago

186) # Just so I don't have to use two hands
187) alias ly=lt
dblume Decide if I want 'lt' (ls |...

dblume authored 3 months ago

188) 
David Blume Add alias for httpie https

David Blume authored 6 years ago

189) # For httpie: https://github.com/jakubroztocil/httpie#installation
190) alias https='http --default-scheme=https'
191) 
David Blume Add a command for viewing M...

David Blume authored 5 years ago

192) md() {
David Blume Make the local variables co...

David Blume authored 5 years ago

193)     declare -r sys_name=$(uname -s)
David Blume Add md() support for Cygwin...

David Blume authored 5 years ago

194)     if [[ $sys_name == Darwin* ]]; then
David Blume Make the local variables co...

David Blume authored 5 years ago

195)         declare -r T=$(mktemp $TMPDIR$(uuidgen).html)
David Blume Add md() support for Cygwin...

David Blume authored 5 years ago

196)         curl -s -X POST --data-binary @"$1" https://md.dlma.com/ > $T
David Blume No need to specify Safari t...

David Blume authored 5 years ago

197)         open $T
David Blume Add md() support for Cygwin...

David Blume authored 5 years ago

198)     elif [[ $sys_name == CYGWIN* ]]; then
David Blume Make the local variables co...

David Blume authored 5 years ago

199)         declare -r T=$(mktemp --suffix=.html)
David Blume Add md() support for Cygwin...

David Blume authored 5 years ago

200)         curl -s -X POST --data-binary @"$1" https://md.dlma.com/ > $T
201)         cygstart $T
David Blume Add a command for viewing M...

David Blume authored 5 years ago

202)     else
David Blume Make the local variables co...

David Blume authored 5 years ago

203)         declare -r T=$(mktemp --suffix=.html)
David Blume Add md() support for Cygwin...

David Blume authored 5 years ago

204)         curl -s -X POST --data-binary @"$1" https://md.dlma.com/ > $T
David Blume Add support for 'md' on WSL.

David Blume authored 3 years ago

205)         if [[ -z "${WSL_DISTRO_NAME}" ]]; then
dblume Use gio open instead of xdg...

dblume authored 2 years ago

206)             gio open $T
David Blume Add support for 'md' on WSL.

David Blume authored 3 years ago

207)             echo "rm \"$T\" >/dev/null 2>&1" | at now + 2 minutes
208)         else
209)             # Set BROWSER to your web browser's path
dblume Don't call git if not in a...

dblume authored 2 years ago

210)             "$BROWSER" '\\wsl$/Ubuntu'$T
David Blume Add support for 'md' on WSL.

David Blume authored 3 years ago

211)         fi
David Blume Add a command for viewing M...

David Blume authored 5 years ago

212)     fi
213) }
214) 
David Blume I almost always want to do...

David Blume authored 4 years ago

215) concept() {
David Blume Add support for tmux; use p...

David Blume authored 3 years ago

216)     # apropos -s 7 . | awk '!/iso|latin/ {print $1}' | shuf -n 1 | xargs man 7
217)     apropos -s 7 . | awk '!/iso|latin/ {print $1}' | shuf -n 1 | pee "xargs echo man 7" "xargs man 7"
David Blume I almost always want to do...

David Blume authored 4 years ago

218) }
219) 
David Blume Added venv command

David Blume authored 3 years ago

220) venv() {
David Blume venv() supports filename co...

David Blume authored 3 years ago

221)     # Inspired by https://twitter.com/gvanrossum/status/1319328122618048514
222)     if hash deactivate 2>/dev/null; then
223)         deactivate
224)     fi
225)     if [[ $1 ]]; then
226)         if [ ! -f $1/bin/activate ]; then
227)             echo "Creating with: python3 -m venv $1"
228)             python3 -m venv $1
David Blume Added venv command

David Blume authored 3 years ago

229)         fi
David Blume venv() supports filename co...

David Blume authored 3 years ago

230)         source $1/bin/activate
David Blume Added venv command

David Blume authored 3 years ago

231)     fi
232) }
233) 
David Blume Moving ignoredups:erasedups...

David Blume authored 4 years ago

234) # https://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
235) HISTCONTROL=ignoredups:erasedups
David Blume Add some commands to exclud...

David Blume authored 4 years ago

236) HISTIGNORE="&:ls:[bf]g:exit:pwd:clear"
David Blume I almost always want to do...

David Blume authored 4 years ago

237) #HISTFILESIZE=2000
238) #HISTSIZE=2000
239) # [ $(wc -l < $HOME/.bash_history) -gt 950 ] && echo "David, your .bash_history is over 950 lines. Consider updating your .bashrc."
David Blume Moving ignoredups:erasedups...

David Blume authored 4 years ago

240) shopt -s histappend
241) 
David Blume Forgot a corresponding chan...

David Blume authored 7 years ago

242) if [ -f $HOME/.localrc ]; then
David Blume Specify path for .localrc

David Blume authored 7 years ago

243)     source $HOME/.localrc