/bash.functions

http://github.com/brinkman83/bashrc · Bash · 272 lines · 246 code · 26 blank · 0 comment · 0 complexity · 617e02876614ecb686483dae53efe960 MD5 · raw file

  1. #!/bin/bash
  2. ##############################################
  3. echo -e "sh /etc/bash.functions ::\n\n"
  4. ##############################################
  5. psnice()
  6. {
  7. if [[ -z $1 || -z $2 ]] ; then
  8. echo "Usage: psnice procname [-/+ nice]"
  9. return 1
  10. fi
  11. ps ax | grep $1 | grep -v grep | awk '{ print $1 }' | xargs sudo renice $2 -p
  12. }
  13. function chmog()
  14. {
  15. if [ $# -ne 4 ] ; then
  16. echo "usage: chmog mode owner group file"
  17. return 1
  18. else
  19. chmod $1 $4
  20. chown $2 $4
  21. chgrp $3 $4
  22. fi
  23. }
  24. psgrep()
  25. {
  26. ps aux | grep $1 | grep -v grep
  27. }
  28. pskill()
  29. {
  30. local pid
  31. pid=$(ps ax | grep $1 | grep -v grep | awk '{ print $1 }')
  32. echo -n "killing $1 (process $pid)..."
  33. kill -9 $pid
  34. echo "slaughtered."
  35. }
  36. ## Display a printout of the largest installed packages, useful for when diskspace is low.
  37. function show-largest-packages {
  38. if [ -z $1 ]; then
  39. echo 'Usage: show-largest-packages [# pkgs to show]'
  40. return
  41. fi
  42. dpkg-query --show --showformat='${Package}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}' | tail -n $1
  43. }
  44. ## Attempt to auto add as many unknown keys to apt using default keyserver ##
  45. function fix-apt-keys {
  46. if [ ! -x /usr/sbin/add-apt-key ]; then
  47. echo -e Needed add-apt-key util not installed, attempting to fix this...
  48. sudo apt-get install add-apt-key
  49. fi
  50. echo Running apt-get update -q to log unknown keys...
  51. sudo apt-get update -q 2>&1 | grep -Po -e '\w{16}$' | xargs -d '\n' -n1 sudo add-apt-key
  52. echo Removing temp file created to run fix-apt-keys...
  53. rm /tmp/apterr -fv
  54. }
  55. ## ack-grep files ##
  56. function agrep {
  57. if [ ! -x /usr/bin/ack-grep ]; then
  58. echo Need to get ack-grep before we can use it...
  59. sudo apt-get install ack-grep
  60. fi
  61. if [ -z "$1" ]; then
  62. if [ -z "$2" ]; then
  63. echo usage: agrep [pattern] [path / file]
  64. return
  65. fi
  66. fi
  67. ack-grep --color -awHQ $1 $2
  68. }
  69. ## Reliably copies the id_rsa.pub to remote machines, reguardless of if ssh-agent is running or working! ##
  70. function sshadd {
  71. if [ -z "$1" ]; then
  72. echo usage: sshadd [user@]hostname
  73. return
  74. fi
  75. ssh-copy-id -i ~/.ssh/id_rsa.pub $1
  76. }
  77. ## Alias apt-get with wajig, but make sure its installed ##
  78. function wajig {
  79. if [ -x /usr/bin/wajig ]; then
  80. sudo wajig $@
  81. else
  82. sudo apt-get -y install wajig wget fping debconf-english apt-move dpkg-repack alien fakeroot gkdebconf lynx elinks python-gtk2 python-glade2 python-gnome2 deborphan equivs debdelta vrms apt-show-versions apt-show-source
  83. sudo wajig $@
  84. fi
  85. }
  86. ## Dynamic icecc loader ##
  87. function icecc {
  88. if [ -x /usr/bin/icecc ]; then
  89. sudo icecc $@
  90. else
  91. sudo apt-get -y install icecc
  92. sudo icecc $@
  93. fi
  94. }
  95. ## Dynamic distcc loader ##
  96. function distcc {
  97. if [ -x /usr/bin/distcc ]; then
  98. sudo distcc $@
  99. else
  100. sudo apt-get -y install distcc
  101. sudo distcc $@
  102. fi
  103. }
  104. ## Dynamic vfu loader ##
  105. function vfu {
  106. if [ -x /usr/bin/vfu ]; then
  107. sudo vfu $@
  108. else
  109. sudo apt-get -y install vfu
  110. sudo vfu $@
  111. fi
  112. }
  113. ## Dynamic rdist loader ##
  114. function rdist {
  115. if [ -x /usr/bin/rdist ]; then
  116. sudo rdist $@
  117. else
  118. sudo apt-get -y install rdist
  119. sudo rdist $@
  120. fi
  121. }
  122. ## Dynamic galternatives loader ##
  123. function galternatives {
  124. if [ -x /usr/sbin/galternatives ]; then
  125. gksudo /usr/sbin/galternatives
  126. else
  127. sudo apt-get -y install galternatives
  128. gksudo /usr/sbin/galternatives
  129. fi
  130. }
  131. ## Dynamic htop loader ##
  132. function htop {
  133. if [ -x /usr/bin/htop ]; then
  134. sudo htop $@
  135. else
  136. sudo apt-get -y install htop
  137. sudo htop $@
  138. fi
  139. }
  140. ## Dynamic renameutils (icp) loader ##
  141. function icp {
  142. if [ -x /usr/bin/icp ]; then
  143. sudo icp $@
  144. else
  145. sudo apt-get -y install renameutils
  146. sudo icp $@
  147. fi
  148. }
  149. ## Dynamic renameutils (imv) loader ##
  150. function imv {
  151. if [ -x /usr/bin/imv ]; then
  152. sudo imv $@
  153. else
  154. sudo apt-get -y install renameutils
  155. sudo imv $@
  156. fi
  157. }
  158. ## Dynamic dlocate loader ##
  159. function dlocate {
  160. if [ -x /usr/bin/dlocate ]; then
  161. sudo dlocate $@
  162. else
  163. sudo apt-get -y install dlocate
  164. sudo dlocate $@
  165. fi
  166. }
  167. ## Dynamic apparix loader ##
  168. function apparix {
  169. if [ -x /usr/bin/apparix ]; then
  170. sudo apparix $@
  171. else
  172. sudo apt-get -y install apparix
  173. sudo apparix $@
  174. fi
  175. }
  176. ### Apparix (cdargs fork) functions ###
  177. function to () {
  178. if test "$2"; then
  179. cd "$(apparix "$1" "$2" || echo .)";
  180. else
  181. cd "$(apparix "$1" || echo .)";
  182. fi
  183. pwd
  184. }
  185. function bm () {
  186. if test "$2"; then
  187. apparix --add-mark "$1" "$2";
  188. elif test "$1"; then
  189. apparix --add-mark "$1";
  190. else
  191. apparix --add-mark;
  192. fi
  193. }
  194. function portal () {
  195. if test "$1"; then
  196. apparix --add-portal "$1";
  197. else
  198. apparix --add-portal;
  199. fi
  200. }
  201. # function to generate list of completions from .apparixrc
  202. function _apparix_aliases ()
  203. { cur=$2
  204. dir=$3
  205. COMPREPLY=()
  206. if [ "$1" == "$3" ]
  207. then
  208. COMPREPLY=( $( cat $HOME/.apparix{rc,expand} | \
  209. grep "j,.*$cur.*," | cut -f2 -d, ) )
  210. else
  211. dir=`apparix -favour rOl $dir 2>/dev/null` || return 0
  212. eval_compreply="COMPREPLY=( $(
  213. cd "$dir"
  214. \ls -d *$cur* | while read r
  215. do
  216. [[ -d "$r" ]] &&
  217. [[ $r == *$cur* ]] &&
  218. echo \"${r// /\\ }\"
  219. done
  220. ) )"
  221. eval $eval_compreply
  222. fi
  223. return 0
  224. }
  225. ### (END) Apparix (cdargs fork) functions (END) ###
  226. ### Apt-history replacement: invoke as apt-history ( install | upgrade | remove | rollback ) w/o parens ###
  227. function apt-history(){
  228. case "$1" in
  229. install)
  230. cat /var/log/dpkg.log | grep 'install '
  231. ;;
  232. upgrade|remove)
  233. cat /var/log/dpkg.log | grep $1
  234. ;;
  235. rollback)
  236. cat /var/log/dpkg.log | grep upgrade | \
  237. grep "$2" -A10000000 | \
  238. grep "$3" -B10000000 | \
  239. awk '{print $4"="$5}'
  240. ;;
  241. *)
  242. cat /var/log/dpkg.log
  243. ;;
  244. esac
  245. }
  246. ### (END) Apt-history fn (END) ###