#!/bin/bash ########################################################################################### ########################################################################################### ### --- APACHE --- ### # View Apache logs apachelog() { if [ -f /etc/httpd/conf/httpd.conf ]; then cd /var/log/httpd && ls -xAh && multitail --no-repeat -c -s 2 /var/log/httpd/*_log else cd /var/log/apache2 && ls -xAh && multitail --no-repeat -c -s 2 /var/log/apache2/*.log fi } # Edit the Apache configuration apacheconfig() { if [ -f /etc/httpd/conf/httpd.conf ]; then sedit /etc/httpd/conf/httpd.conf elif [ -f /etc/apache2/apache2.conf ]; then sedit /etc/apache2/apache2.conf else echo "Error: Apache config file could not be found." echo "Searching for possible locations:" sudo updatedb && locate httpd.conf && locate apache2.conf fi } ########################################################################################### ########################################################################################### ### --- BASH --- ### # Automatically install the needed support files for this .bashrc file install_bashrc_support() { local dtype dtype=$(distribution) if [ $dtype == "redhat" ]; then sudo yum install multitail tree joe elif [ $dtype == "suse" ]; then sudo zypper install multitail sudo zypper install tree sudo zypper install joe elif [ $dtype == "debian" ]; then sudo apt-get install multitail tree joe elif [ $dtype == "gentoo" ]; then sudo emerge multitail sudo emerge tree sudo emerge joe elif [ $dtype == "mandriva" ]; then sudo urpmi multitail sudo urpmi tree sudo urpmi joe elif [ $dtype == "slackware" ]; then echo "No install support for Slackware" else echo "Unknown distribution" fi } ########################################################################################### ########################################################################################### ### --- CD --- ### # Move and go to the directory mvg() { if [ -d "$2" ]; then mv $1 $2 && cd $2 else mv $1 $2 fi } # Create and go to the directory mc() { mkdir -p $1 && cd $1 } # Go up a specified number of directories (i.e. up 4) up() { local d="" limit=$1 for ((i = 1; i <= limit; i++)); do d=$d/.. done d=$(echo $d | sed 's/^\///') if [ -z "$d" ]; then d=.. fi cd $d } #Automatically do an ls after each cd # cd () { # if [ -n "$1" ]; then # builtin cd "$@" && ls # else # builtin cd ~ && ls # fi # } # Returns the last 2 fields of the working directory pwdtail() { pwd | awk -F/ '{nlast = NF -1;print $nlast"/"$NF}' } ########################################################################################### ########################################################################################### ### --- COMMAND OUTPUT --- ### alias ilco=insert_last_command_output insert_last_command_output() { local last_cmd last_cmd=$(history | tail -n 2 | head -n 1 | sed 's/^[ ]*[0-9]\+[ ]*//') eval "$last_cmd" } ########################################################################################### ########################################################################################### ### --- COPY --- ### # Copy file with a progress bar cpf() { set -e strace -q -ewrite cp -- "${1}" "${2}" 2>&1 | awk '{ count += $NF if (count % 10 == 0) { percent = count / total_size * 100 printf "%3d%% [", percent for (i=0;i<=percent;i++) printf "=" printf ">" for (i=percent;i<100;i++) printf " " printf "]\r" } } END { print "" }' total_size=$(stat -c '%s' "${1}") count=0 } # Copy and go to the directory cpg() { if [ -d "$2" ]; then cp $1 $2 && cd $2 else cp $1 $2 fi } ########################################################################################### ########################################################################################### ### --- CREATE --- ### alias mc=mkcd mkcd() { mkdir -p "$1" && cd "$1" || return; } mkdt() { mkdir -p "${1:+$1/}$(date +%F)" } ########################################################################################### ########################################################################################### ### --- CURSOR --- ### # vi-mode cursor change function update_cursor { if [[ $READLINE_LINE == * ]]; then if [[ $READLINE_POINT -eq 0 ]]; then echo -ne '\e[6 q' # insert mode else echo -ne '\e[2 q' # command mode fi fi } # vi-command, vi-insert 모드 hook 등록 bind -m vi-insert '":": "\C-o update_cursor"' bind -m vi-command '":": "\C-o update_cursor"' ########################################################################################### ########################################################################################### ### --- DISTRIBUTION --- ### # Show the current distribution distribution() { local dtype # Assume unknown dtype="unknown" # First test against Fedora / RHEL / CentOS / generic Redhat derivative if [ -r /etc/rc.d/init.d/functions ]; then source /etc/rc.d/init.d/functions [ zz$(type -t passed 2>/dev/null) == "zzfunction" ] && dtype="redhat" # Then test against SUSE (must be after Redhat, # I've seen rc.status on Ubuntu I think? TODO: Recheck that) elif [ -r /etc/rc.status ]; then source /etc/rc.status [ zz$(type -t rc_reset 2>/dev/null) == "zzfunction" ] && dtype="suse" # Then test against Debian, Ubuntu and friends elif [ -r /lib/lsb/init-functions ]; then source /lib/lsb/init-functions [ zz$(type -t log_begin_msg 2>/dev/null) == "zzfunction" ] && dtype="debian" # Then test against Gentoo elif [ -r /etc/init.d/functions.sh ]; then source /etc/init.d/functions.sh [ zz$(type -t ebegin 2>/dev/null) == "zzfunction" ] && dtype="gentoo" # For Mandriva we currently just test if /etc/mandriva-release exists # and isn't empty (TODO: Find a better way :) elif [ -s /etc/mandriva-release ]; then dtype="mandriva" # For Slackware we currently just test if /etc/slackware-version exists elif [ -s /etc/slackware-version ]; then dtype="slackware" fi echo $dtype } # Show the current version of the operating system ver() { local dtype dtype=$(distribution) if [ $dtype == "redhat" ]; then if [ -s /etc/redhat-release ]; then cat /etc/redhat-release && uname -a else cat /etc/issue && uname -a fi elif [ $dtype == "suse" ]; then cat /etc/SuSE-release elif [ $dtype == "debian" ]; then lsb_release -a # sudo cat /etc/issue && sudo cat /etc/issue.net && sudo cat /etc/lsb_release && sudo cat /etc/os-release # Linux Mint option 2 elif [ $dtype == "gentoo" ]; then cat /etc/gentoo-release elif [ $dtype == "mandriva" ]; then cat /etc/mandriva-release elif [ $dtype == "slackware" ]; then cat /etc/slackware-version else if [ -s /etc/issue ]; then cat /etc/issue else echo "Error: Unknown distribution" exit 1 fi fi } ########################################################################################### ########################################################################################### ### --- EDIT --- ### edit() { if [ "$(type -t jpico)" = "file" ]; then # Use JOE text editor http://joe-editor.sourceforge.net/ jpico -nonotice -linums -nobackups "$@" elif [ "$(type -t nano)" = "file" ]; then nano -c "$@" elif [ "$(type -t pico)" = "file" ]; then pico "$@" else vim "$@" fi } sedit() { if [ "$(type -t jpico)" = "file" ]; then # Use JOE text editor http://joe-editor.sourceforge.net/ sudo jpico -nonotice -linums -nobackups "$@" elif [ "$(type -t nano)" = "file" ]; then sudo nano -c "$@" elif [ "$(type -t pico)" = "file" ]; then sudo pico "$@" else sudo vim "$@" fi } ########################################################################################### ########################################################################################### ### --- EXTRACT --- ### extract() { for archive in $*; do if [ -f $archive ]; then case $archive in *.tar.bz2) tar xvjf $archive ;; *.tar.gz) tar xvzf $archive ;; *.bz2) bunzip2 $archive ;; *.rar) rar x $archive ;; *.gz) gunzip $archive ;; *.tar) tar xvf $archive ;; *.tbz2) tar xvjf $archive ;; *.tgz) tar xvzf $archive ;; *.zip) unzip $archive ;; *.Z) uncompress $archive ;; *.7z) 7z x $archive ;; *) echo "don't know how to extract '$archive'..." ;; esac else echo "'$archive' is not a valid file!" fi done } ########################################################################################### ########################################################################################### ### --- NETWORK --- ### # Show current network information netinfo() { echo "--------------- Network Information ---------------" /sbin/ifconfig | awk /'inet addr/ {print $2}' echo "" /sbin/ifconfig | awk /'Bcast/ {print $3}' echo "" /sbin/ifconfig | awk /'inet addr/ {print $4}' /sbin/ifconfig | awk /'HWaddr/ {print $4,$5}' echo "---------------------------------------------------" } # IP address lookup alias whatismyip="whatsmyip" function whatsmyip() { # Dumps a list of all IP addresses for every device # /sbin/ifconfig |grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'; # Internal IP Lookup echo -n "Internal IP: " /sbin/ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}' # External IP Lookup echo -n "External IP: " wget http://smart-ip.net/myip -O - -q } ########################################################################################### ########################################################################################### ### --- PASS --- ### pass_otp() { pass otp uri -q "$1"; } pass_otp_insert() { pass otp insert "$1"; } alias cpqr=pass_qr pass_qr() { qrencode -o "$1.png" -t png -Sv 40 <"$1.pgp"; } ########################################################################################### ########################################################################################### ### --- PHP --- ### # Edit the PHP configuration file phpconfig() { if [ -f /etc/php.ini ]; then sedit /etc/php.ini elif [ -f /etc/php/php.ini ]; then sedit /etc/php/php.ini elif [ -f /etc/php5/php.ini ]; then sedit /etc/php5/php.ini elif [ -f /usr/bin/php5/bin/php.ini ]; then sedit /usr/bin/php5/bin/php.ini elif [ -f /etc/php5/apache2/php.ini ]; then sedit /etc/php5/apache2/php.ini else echo "Error: php.ini file could not be found." echo "Searching for possible locations:" sudo updatedb && locate php.ini fi } ########################################################################################### ########################################################################################### ### --- SEARCH --- ### ftext() { # -i case-insensitive # -I ignore binary files # -H causes filename to be printed # -r recursive search # -n causes line number to be printed # optional: -F treat search term as a literal, not a regular expression # optional: -l only print filenames and not the matching lines ex. grep -irl "$1" * grep -iIHrn --color=always "$1" . | less -r } ########################################################################################### ########################################################################################### ### --- SQL --- ### # Edit the MySQL configuration file mysqlconfig() { if [ -f /etc/my.cnf ]; then sedit /etc/my.cnf elif [ -f /etc/mysql/my.cnf ]; then sedit /etc/mysql/my.cnf elif [ -f /usr/local/etc/my.cnf ]; then sedit /usr/local/etc/my.cnf elif [ -f /usr/bin/mysql/my.cnf ]; then sedit /usr/bin/mysql/my.cnf elif [ -f ~/my.cnf ]; then sedit ~/my.cnf elif [ -f ~/.my.cnf ]; then sedit ~/.my.cnf else echo "Error: my.cnf file could not be found." echo "Searching for possible locations:" sudo updatedb && locate my.cnf fi } ########################################################################################### ########################################################################################### ### --- STOW --- ### alias dstw=dotfiles_stw dotfiles_stw() { "${XDG_DOTFILES_DIR:-${HOME}/.dotfiles}/$(whereami)/.local/bin/stw" } ########################################################################################### ########################################################################################### ### --- SUDO --- ### pre_cmd() { local prepend_command="$1" local buffer="${READLINE_LINE:-}" if [ -z "$buffer" ]; then buffer=$(history | tail -n 2 | head -n 1 | sed 's/^[ ]*[0-9]\+[ ]*//') fi READLINE_LINE="$prepend_command $buffer" READLINE_POINT=${#READLINE_LINE} } bind -x '"\es":pre_cmd sudo' ########################################################################################### ########################################################################################### ### --- TRIM --- ### trim() { local var=$@ var='${var#"${var%%[![:space:]]*}"}' # remove leading whitespace characters var='${var%"${var##*[![:space:]]}"}' # remove trailing whitespace characters echo -n "$var" }