Advertisement
Guest User

Untitled

a guest
Aug 29th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.42 KB | None | 0 0
  1. # Archlinux Ultimate Install - .bashrc
  2. # by helmuthdu
  3. ## OVERALL CONDITIONALS {{{
  4. _islinux=false
  5. [[ "$(uname -s)" =~ Linux|GNU|GNU/* ]] && _islinux=true
  6.  
  7. _isarch=false
  8. [[ -f /etc/arch-release ]] && _isarch=true
  9.  
  10. _isxrunning=false
  11. [[ -n "$DISPLAY" ]] && _isxrunning=true
  12.  
  13. _isroot=false
  14. [[ $UID -eq 0 ]] && _isroot=true
  15. # }}}
  16. ## PS1 CONFIG {{{
  17. [[ -f $HOME/.dircolors ]] && eval $(dircolors -b $HOME/.dircolors)
  18. if $_isxrunning; then
  19.  
  20. [[ -f $HOME/.dircolors_256 ]] && eval $(dircolors -b $HOME/.dircolors_256)
  21.  
  22. export TERM='xterm-256color'
  23.  
  24. B='\[\e[1;38;5;33m\]'
  25. LB='\[\e[1;38;5;81m\]'
  26. GY='\[\e[1;38;5;242m\]'
  27. G='\[\e[1;38;5;82m\]'
  28. P='\[\e[1;38;5;161m\]'
  29. PP='\[\e[1;38;5;93m\]'
  30. R='\[\e[1;38;5;196m\]'
  31. Y='\[\e[1;38;5;214m\]'
  32. W='\[\e[0m\]'
  33.  
  34. get_prompt_symbol() {
  35. [[ $UID == 0 ]] && echo "#" || echo "\$"
  36. }
  37.  
  38. if [[ $PS1 && -f /usr/share/git/git-prompt.sh ]]; then
  39. source /usr/share/git/completion/git-completion.bash
  40. source /usr/share/git/git-prompt.sh
  41.  
  42. export GIT_PS1_SHOWDIRTYSTATE=1
  43. export GIT_PS1_SHOWSTASHSTATE=1
  44. export GIT_PS1_SHOWUNTRACKEDFILES=0
  45.  
  46. export PS1="$GY[$Y\u$GY@$P\h$GY:$B\W\$(__git_ps1 \"$GY|$LB%s\")$GY]$W\$(get_prompt_symbol) "
  47. else
  48. export PS1="$GY[$Y\u$GY@$P\h$GY:$B\W$GY]$W\$(get_prompt_symbol) "
  49. fi
  50. else
  51. export TERM='xterm-color'
  52. fi
  53. #}}}
  54. ## BASH OPTIONS {{{
  55. shopt -s cdspell # Correct cd typos
  56. shopt -s checkwinsize # Update windows size on command
  57. shopt -s histappend # Append History instead of overwriting file
  58. shopt -s cmdhist # Bash attempts to save all lines of a multiple-line command in the same history entry
  59. shopt -s extglob # Extended pattern
  60. shopt -s no_empty_cmd_completion # No empty completion
  61. ## COMPLETION #{{{
  62. complete -cf sudo
  63. if [[ -f /etc/bash_completion ]]; then
  64. . /etc/bash_completion
  65. fi
  66. #}}}
  67. #}}}
  68. ## EXPORTS {{{
  69. export PATH=/usr/local/bin:$PATH
  70. #Ruby support
  71. if which ruby &>/dev/null; then
  72. GEM_DIR=$(ruby -rubygems -e 'puts Gem.user_dir')/bin
  73. if [[ -d "$GEM_DIR" ]]; then
  74. export PATH=$GEM_DIR:$PATH
  75. fi
  76. fi
  77. if [[ -d "$HOME/bin" ]] ; then
  78. PATH="$HOME/bin:$PATH"
  79. fi
  80. if which chromium &>/dev/null; then
  81. export CHROME_BIN=/usr/bin/chromium
  82. fi
  83. ## EDITOR #{{{
  84. if which vim &>/dev/null; then
  85. export EDITOR="vim"
  86. elif which emacs &>/dev/null; then
  87. export EDITOR="emacs -nw"
  88. else
  89. export EDITOR="nano"
  90. fi
  91. #}}}
  92. ## BASH HISTORY #{{{
  93. # make multiple shells share the same history file
  94. export HISTSIZE=1000 # bash history will save N commands
  95. export HISTFILESIZE=${HISTSIZE} # bash will remember N commands
  96. export HISTCONTROL=ignoreboth # ingore duplicates and spaces
  97. export HISTIGNORE='&:ls:ll:la:cd:exit:clear:history'
  98. #}}}
  99. ## COLORED MANUAL PAGES #{{{
  100. # @see http://www.tuxarena.com/?p=508
  101. # For colourful man pages (CLUG-Wiki style)
  102. if $_isxrunning; then
  103. export PAGER=less
  104. export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
  105. export LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold
  106. export LESS_TERMCAP_me=$'\E[0m' # end mode
  107. export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
  108. export LESS_TERMCAP_so=$'\E[38;5;246m' # begin standout-mode - info box
  109. export LESS_TERMCAP_ue=$'\E[0m' # end underline
  110. export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
  111. fi
  112. #}}}
  113. #}}}
  114. ## ALIAS {{{
  115. alias freemem='sudo /sbin/sysctl -w vm.drop_caches=3'
  116. alias enter_matrix='echo -e "\e[32m"; while :; do for i in {1..16}; do r="$(($RANDOM % 2))"; if [[ $(($RANDOM % 5)) == 1 ]]; then if [[ $(($RANDOM % 4)) == 1 ]]; then v+="\e[1m $r "; else v+="\e[2m $r "; fi; else v+=" "; fi; done; echo -e "$v"; v=""; done'
  117. # GIT_OR_HUB {{{
  118. if which hub &>/dev/null; then
  119. alias git=hub
  120. fi
  121. #}}}
  122. # AUTOCOLOR {{{
  123. alias ls='ls --color=auto'
  124. alias dir='dir --color=auto'
  125. alias vdir='vdir --color=auto'
  126. alias grep='grep --color=auto'
  127. alias fgrep='fgrep --color=auto'
  128. alias egrep='egrep --color=auto'
  129. #}}}
  130. # MODIFIED COMMANDS {{{
  131. alias ..='cd ..'
  132. alias df='df -h'
  133. alias diff='colordiff' # requires colordiff package
  134. alias du='du -c -h'
  135. alias free='free -m' # show sizes in MB
  136. alias grep='grep --color=auto'
  137. alias grep='grep --color=tty -d skip'
  138. alias mkdir='mkdir -p -v'
  139. alias more='less'
  140. alias nano='sudo nano -w'
  141. alias ping='ping -c 5'
  142. #}}}
  143. # PRIVILEGED ACCESS {{{
  144. if ! $_isroot; then
  145. alias sudo='sudo '
  146. alias scat='sudo cat'
  147. alias svim='sudo vim'
  148. alias root='sudo su'
  149. alias reboot='sudo reboot'
  150. alias halt='sudo halt'
  151. fi
  152. #}}}
  153. # PACMAN ALIASES {{{
  154. # we're on ARCH
  155. if $_isarch; then
  156. # we're not root
  157. if ! $_isroot; then
  158. alias pacman='sudo pacman'
  159. fi
  160. alias pacorp='pacman -Rs $(pacman -Qtdq --color never)' # Remove orphans easily
  161. alias clean-house='pacman -Scc && pacman -Qnq | pacman -S -' #Clean all package cache and reinstall all packages
  162. fi
  163. #}}}
  164. # MULTIMEDIA {{{
  165. if which get_flash_videos &>/dev/null; then
  166. alias gfv='get_flash_videos -r 720p --subtitles'
  167. fi
  168. #}}}
  169. # LS {{{
  170. alias ls='ls -hF --color=auto'
  171. alias lr='ls -R' # recursive ls
  172. alias ll='ls -alh'
  173. alias la='ll -A'
  174. alias lm='la | less'
  175. #}}}
  176. #}}}
  177. #}}}
  178. # UP {{{
  179. # Goes up many dirs as the number passed as argument, if none goes up by 1 by default
  180. up() {
  181. local d=""
  182. limit=$1
  183. for ((i=1 ; i <= limit ; i++)); do
  184. d=$d/..
  185. done
  186. d=$(echo $d | sed 's/^\///')
  187. if [[ -z "$d" ]]; then
  188. d=..
  189. fi
  190. cd $d
  191. }
  192. #}}}
  193. # ARCHIVE EXTRACTOR {{{
  194. extract() {
  195. clrstart="\033[1;34m" #color codes
  196. clrend="\033[0m"
  197.  
  198. if [[ "$#" -lt 1 ]]; then
  199. echo -e "${clrstart}Pass a filename. Optionally a destination folder. You can also append a v for verbose output.${clrend}"
  200. exit 1 #not enough args
  201. fi
  202.  
  203. if [[ ! -e "$1" ]]; then
  204. echo -e "${clrstart}File does not exist!${clrend}"
  205. exit 2 #file not found
  206. fi
  207.  
  208. if [[ -z "$2" ]]; then
  209. DESTDIR="." #set destdir to current dir
  210. elif [[ ! -d "$2" ]]; then
  211. echo -e -n "${clrstart}Destination folder doesn't exist or isnt a directory. Create? (y/n): ${clrend}"
  212. read response
  213. #echo -e "\n"
  214. if [[ $response == y || $response == Y ]]; then
  215. mkdir -p "$2"
  216. if [ $? -eq 0 ]; then
  217. DESTDIR="$2"
  218. else
  219. exit 6 #Write perms error
  220. fi
  221. else
  222. echo -e "${clrstart}Closing.${clrend}"; exit 3 # n/wrong response
  223. fi
  224. else
  225. DESTDIR="$2"
  226. fi
  227.  
  228. if [[ ! -z "$3" ]]; then
  229. if [[ "$3" != "v" ]]; then
  230. echo -e "${clrstart}Wrong argument $3 !${clrend}"
  231. exit 4 #wrong arg 3
  232. fi
  233. fi
  234.  
  235. filename=`basename "$1"`
  236.  
  237. #echo "${filename##*.}" debug
  238.  
  239. case "${filename##*.}" in
  240. tar)
  241. echo -e "${clrstart}Extracting $1 to $DESTDIR: (uncompressed tar)${clrend}"
  242. tar x${3}f "$1" -C "$DESTDIR"
  243. ;;
  244. gz)
  245. echo -e "${clrstart}Extracting $1 to $DESTDIR: (gip compressed tar)${clrend}"
  246. tar x${3}fz "$1" -C "$DESTDIR"
  247. ;;
  248. tgz)
  249. echo -e "${clrstart}Extracting $1 to $DESTDIR: (gip compressed tar)${clrend}"
  250. tar x${3}fz "$1" -C "$DESTDIR"
  251. ;;
  252. xz)
  253. echo -e "${clrstart}Extracting $1 to $DESTDIR: (gip compressed tar)${clrend}"
  254. tar x${3}f -J "$1" -C "$DESTDIR"
  255. ;;
  256. bz2)
  257. echo -e "${clrstart}Extracting $1 to $DESTDIR: (bzip compressed tar)${clrend}"
  258. tar x${3}fj "$1" -C "$DESTDIR"
  259. ;;
  260. zip)
  261. echo -e "${clrstart}Extracting $1 to $DESTDIR: (zipp compressed file)${clrend}"
  262. unzip "$1" -d "$DESTDIR"
  263. ;;
  264. rar)
  265. echo -e "${clrstart}Extracting $1 to $DESTDIR: (rar compressed file)${clrend}"
  266. unrar x "$1" "$DESTDIR"
  267. ;;
  268. 7z)
  269. echo -e "${clrstart}Extracting $1 to $DESTDIR: (7zip compressed file)${clrend}"
  270. 7za e "$1" -o"$DESTDIR"
  271. ;;
  272. *)
  273. echo -e "${clrstart}Unknown archieve format!"
  274. exit 5
  275. ;;
  276. esac
  277. }
  278. #}}}
  279. # ARCHIVE COMPRESS {{{
  280. compress() {
  281. if [[ -n "$1" ]]; then
  282. FILE=$1
  283. case $FILE in
  284. *.tar ) shift && tar cf $FILE $* ;;
  285. *.tar.bz2 ) shift && tar cjf $FILE $* ;;
  286. *.tar.gz ) shift && tar czf $FILE $* ;;
  287. *.tgz ) shift && tar czf $FILE $* ;;
  288. *.zip ) shift && zip $FILE $* ;;
  289. *.rar ) shift && rar $FILE $* ;;
  290. esac
  291. else
  292. echo "usage: compress <foo.tar.gz> ./foo ./bar"
  293. fi
  294. }
  295. #}}}
  296. #}}}
  297. # REMIND ME, ITS IMPORTANT! {{{
  298. # usage: remindme <time> <text>
  299. # e.g.: remindme 10m "omg, the pizza"
  300. remindme() { sleep $1 && zenity --info --text "$2" & }
  301. #}}}
  302. # SIMPLE CALCULATOR #{{{
  303. # usage: calc <equation>
  304. calc() {
  305. if which bc &>/dev/null; then
  306. echo "scale=3; $*" | bc -l
  307. else
  308. awk "BEGIN { print $* }"
  309. fi
  310. }
  311. #}}}
  312. # FILE & STRINGS RELATED FUNCTIONS {{{
  313. ## FIND A FILE WITH A PATTERN IN NAME {{{
  314. ff() { find . -type f -iname '*'$*'*' -ls ; }
  315. #}}}
  316. ## FIND A FILE WITH PATTERN $1 IN NAME AND EXECUTE $2 ON IT {{{
  317. fe() { find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \; ; }
  318. #}}}
  319. ## MOVE FILENAMES TO LOWERCASE {{{
  320. lowercase() {
  321. for file ; do
  322. filename=${file##*/}
  323. case "$filename" in
  324. */* ) dirname==${file%/*} ;;
  325. * ) dirname=.;;
  326. esac
  327. nf=$(echo $filename | tr A-Z a-z)
  328. newname="${dirname}/${nf}"
  329. if [[ "$nf" != "$filename" ]]; then
  330. mv "$file" "$newname"
  331. echo "lowercase: $file --> $newname"
  332. else
  333. echo "lowercase: $file not changed."
  334. fi
  335. done
  336. }
  337. #}}}
  338. ## SWAP 2 FILENAMES AROUND, IF THEY EXIST {{{
  339. #(from Uzi's bashrc).
  340. swap() {
  341. local TMPFILE=tmp.$$
  342.  
  343. [[ $# -ne 2 ]] && echo "swap: 2 arguments needed" && return 1
  344. [[ ! -e $1 ]] && echo "swap: $1 does not exist" && return 1
  345. [[ ! -e $2 ]] && echo "swap: $2 does not exist" && return 1
  346.  
  347. mv "$1" $TMPFILE
  348. mv "$2" "$1"
  349. mv $TMPFILE "$2"
  350. }
  351. #}}}
  352. ## FINDS DIRECTORY SIZES AND LISTS THEM FOR THE CURRENT DIRECTORY {{{
  353. dirsize () {
  354. du -shx * .[a-zA-Z0-9_]* 2> /dev/null | egrep '^ *[0-9.]*[MG]' | sort -n > /tmp/list
  355. egrep '^ *[0-9.]*M' /tmp/list
  356. egrep '^ *[0-9.]*G' /tmp/list
  357. rm -rf /tmp/list
  358. }
  359. #}}}
  360. ## FIND AND REMOVED EMPTY DIRECTORIES {{{
  361. fared() {
  362. read -p "Delete all empty folders recursively [y/N]: " OPT
  363. [[ $OPT == y ]] && find . -type d -empty -exec rm -fr {} \; &> /dev/null
  364. }
  365. #}}}
  366.  
  367.  
  368. #}}}
  369. # ENTER AND LIST DIRECTORY{{{
  370. function cd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }
  371. #}}}
  372. # SYSTEMD SUPPORT {{{
  373. if which systemctl &>/dev/null; then
  374. start() {
  375. sudo systemctl start $1.service
  376. }
  377. restart() {
  378. sudo systemctl restart $1.service
  379. }
  380. stop() {
  381. sudo systemctl stop $1.service
  382. }
  383. enable() {
  384. sudo systemctl enable $1.service
  385. }
  386. status() {
  387. sudo systemctl status $1.service
  388. }
  389. disable() {
  390. sudo systemctl disable $1.service
  391. }
  392. fi
  393. #}}}
  394. #}}}
  395. fortune -o -s | cowsay
  396. #screenfetch
  397. # TLP Alises {{{
  398. # we're on ARCH
  399. if $_isarch; then
  400. # we're not root
  401. if ! $_isroot; then
  402. alias tlp='sudo tlp'
  403. fi
  404. alias='tlp true'
  405. alias='tlp bat'
  406. alias='tlp false'
  407. alias='tlp usb'
  408. alias='tlp bayoff'
  409. alias='tlp discharge'
  410. alias='tlp setcharge'
  411. alias='tlp fullcharge'
  412.  
  413. alias='tlp recalibrate'
  414. alias='tlp stat'
  415. alias='tlp diskid'
  416. fi
  417. #}}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement