diff --git a/shells/shared/aliases b/shells/shared/aliases index 7783bae7..c60bff64 100644 --- a/shells/shared/aliases +++ b/shells/shared/aliases @@ -1,61 +1,37 @@ -# These alow me to easily set the file and folder permissions for a wordpress instilation. -alias folder-perms='find . -type d -not -path "./.git/*" -not -path "./.git" -not -path "./node_modules/*" -not -path "./node_modules" -not -perm 775 -exec chmod 775 {} \;' -alias file-perms='find . -type f -not -path "./.git/*" -not -path "./.git" -not -path "./node_modules/*" -not -path "./node_modules" -not -perm 664 -exec chmod 664 {} \;' -alias wp-perms='folder-perms; file-perms' -alias magentoPerms='cd ${PWD%/public_html*}/public_html;sudo chown -R jonathan:http .; folder-perms; file-perms; chmod +x bin/*; cd -' -alias upgr='magento setup:upgrade && magento setup:di:compile && magentoPerms' - # -# Make ls add Indicator#s to file names and colour the output -alias ls='ls -F --color=auto' +########################## +# Add flags by default # +########################## -# Make tree add indicators and color -alias tree='tree -F -C' +#Always make all directories necesary +alias mkdir='mkdir -p' # Make qmv open on 1 column mode alias qmv='qmv -f do' -alias msfconsole="( systemctl status --no-pager postgresql.service > /dev/null || (echo \"Statring postgres\"; sudo systemctl start postgresql.service) ); ( pass show system/metasploit/database.yaml > database.yaml; sudo msfconsole -y database.yaml; rm database.yaml )" - -#Start cups -alias cups='sudo systemctl start org.cups.cupsd.service' - -#Start network manager -alias net='sudo systemctl start NetworkManager.service' - -# Alias lampp because I don't want to clog my PATH -#alias lampp='/opt/lampp/lampp' -#alias glampp='gksudo /opt/lampp/manager-linux-x64.run' -#alias php='/opt/lampp/bin/php' -#alias php-cgi='/opt/lampp/bin/php-cgi' -#alias php-config='/opt/lampp/bin/php-config' +#An alias for my standard less configuration I don't set it to lessc because +#sometimes I don't use this config and I always forget how to ignore an alias +#alias myless='lessc --clean-css +#--source-map-basepath=/home/jonathan/Sites/charts/public_html --source-map +#--autoprefix="last 3 versions, ie >= 9" styles.less styles.min.css' +alias myless='lessc --clean-css --source-map --autoprefix="last 3 versions, ie >= 11" styles.less styles.min.css' -#Always make all directories necesary -alias mkdir='mkdir -p' +# Always make grep ouput color +alias grep="grep --color=auto" -# Shortcut for rewriting wp permalinks -alias perms='wp rewrite flush' +#Make the cal command default to start on Sunday +alias cal='cal -s' -#Clear terminal and try to get moon phase. If it takes longer than .5 seconds then it will show neofetch -alias cls='clear; timeout 0.5s weather moon || neofetch' +# Makes jq use colour +alias jq="jq -C" -#An alias for my standard less configuration -#I don't set it to lessc because sometimes I don't use this config and I always forget how to ignore an alias -#alias myless='lessc --clean-css --source-map-basepath=/home/jonathan/Sites/charts/public_html --source-map --autoprefix="last 3 versions, ie >= 9" styles.less styles.min.css' -alias myless='lessc --clean-css --source-map --autoprefix="last 3 versions, ie >= 11" styles.less styles.min.css' +# Use the config files I want +alias mbsync="mbsync -c \"$XDG_CONFIG_HOME/isync/mbsyncrc.secret\"" +alias imapfilter="imapfilter -c \"$XDG_CONFIG_HOME/imapfilter/config.lua\"" -# Git shortcuts -alias status='git status ' -alias st='git status' -alias checkout='git checkout' -alias ch='git checkout' -alias push='git push ' -alias pull='git pull ' -alias bb='git open' -alias merge='git merge' -alias mg='git merge' -# Always make grep ouput color -alias grep="grep --color=auto" +#################### +# Path Shortcuts # +#################### # Shortcuts to sites folder alias sites="cd ~/Sites" @@ -75,45 +51,20 @@ alias db="cd ~/Dropbox/" alias home="cd ~/" alias ~="cd ~/" -#Goes up to the public_html folder -alias ph='cd ${${PWD%/public_html*}%/wiki*}/public_html' -alias wiki='cd ${${PWD%/public_html*}%/wiki*}/wiki' - -#Edit wp-config.php using $EDITOR -alias conf='$EDITOR ${PWD%/public_html*}/public_html/wp-config.php' - -# Quit the terminal using :q (The same as Vi/Vim) -alias :q='exit;' -alias q='exit;' - -# Not sure why and how but this makes sudo work with my aliases -alias sudo='sudo ' - -#Make the cal command default to start on Sunday -alias cal='cal -s' - -# update the third party wordpress plugins we are mirroring -alias u3p='update3rdPartyPlugins' - -# Edit my bashrc -alias brc='$EDITOR ~/.bashrc' - -# Edit my vimrc -alias vrc='$EDITOR ~/.vimrc' - # Go to my .vim folder alias .v='cd ~/.vim/' -alias df='cd ~/.dotfiles' +# Got to my dotfiles folder +alias .f='cd ~/.dotfiles' -#Make vim start in server mode -#alias vim='vim --servername jab2870' +# Edit my vimrc +alias vrc='$EDITOR ~/.dotfiles/vim/.vim/vimrc' -# moon phase -alias moonphase='weather moon' -#Get arch news -alias archNews='w3m https://www.archlinux.org/ | sed -n "/Latest News/,/Older News/ p" | head -n -1 | less' + +#################### +# Radio Stations # +#################### #Radio Stations AUDIO="mpv --input-ipc-server=/tmp/mpvsocket" @@ -123,63 +74,101 @@ alias classic="$AUDIO http://icy-e-bab-04-cr.sharp-stream.com/absoluteradio.mp3" alias absolute="$AUDIO 'http://network.absoluteradio.co.uk/core/audio/mp3/live.pls?service=vrbb'" alias magic="$AUDIO 'http://www.radiofeeds.co.uk/bauer.pls?station=magicnational.mp3.m3u'" -alias bs="curl -s http://cbsg.sourceforge.net/cgi-bin/live | grep -Eo '^
  • .*
  • ' | sed -r -e 's/<\/?li>//g' | shuf -n 1 | cowsay" +########## +# sudo # +########## +# +# Not sure why and how but this makes sudo work with my aliases +alias sudo='sudo ' -alias jq="jq -C" +# Being in the docker group is essentually being root so use sudo instead +# https://github.com/moby/moby/issues/9976 +alias docker="sudo docker" +alias docker-compose="sudo docker-compose" -alias debugBuild='node --inspect-brk /usr/bin/grunt build' +################### +# Upgrade tools # +################### +# This section is for tools that replace common tools +# I only do this if the flag syntax is the same of very similar -#alias lc="colorls -r" +# If exa is available, alias ls to exa, otherwise alias to ls with colour and +# indicators +type -p exa > /dev/null && alias ls="exa -F" || alias ls='ls -F --color=auto' +type -p exa > /dev/null && alias l="exa -lahg --git --grid" || alias l="ls -lah" -#alias open="$TERMINAL & disown" +# Make tree add indicators and color +# If exa is available, use it instead +type -p exa > /dev/null && alias tree="exa -FT" || alias tree='tree -F -C' -#audiable to mp3 -alias aa2mp3='ffmpeg -f concat -safe 0 -i <(for f in *.aa; do echo "file '"'"'$(pwd)/$f'"'"'";done) output.mp3' +# Alias cat to bat if it's available +type -p bat > /dev/null && alias cat="bat" -# Fix Typos -alias cim="vim" -alias vom="vim" -alias vin="vim" -alias vi="vim" -alias v="vim" +# If nvim is available, alias vim to neovim +type -p nvim > /dev/null && alias vim="nvim" -# Updates time using ntp -alias updateTime="sudo ntpd -qg" +# Trash instead of rm +type -p rmtrash > /dev/null && alias rm="rmtrash" +type -p rmdirtrash > /dev/null && alias rmdir="rmdirtrash" -# Keyboard - reset -# Sometimes, if I turn the screens off, the keyboard resets itself to defaults. Not sure why but this will put my keyboard back to how I like it -#alias kb="xmodmap ~/.Xmodmap; xset r rate 200 70; xcape" -alias kb="setxkbmap -layout gb,gb -variant \"colemak,\" -option grp:shifts_toggle; xset r rate 200 70; xinput --list | grep -E 'ErgoDox EZ ErgoDox EZ\s+id' | grep -oE 'id=[0-9]+' | cut -d'=' -f2 | xargs setxkbmap -layout gb -device" -alias colemak="setxkbmap -layout gb,gb -variant \"colemak,\" -option grp:shifts_toggle" -alias qwerty="setxkbmap -layout gb" +# These don't have the same syntax but I want to be reminded of the better +# versions +type mycli > /dev/null && alias mysql="echo \"You might want to use mycli instead\"; /usr/bin/mysql" +type pgcli > /dev/null && alias postgres="echo \"You might want to use pgcli instead\"; /usr/bin/postgres" -alias ol="open-local" +################### +# Git Shortcuts # +################### -alias globalip="drill myip.opendns.com @resolver1.opendns.com | sed -n '/ANSWER SECTION/,/AUTHORITY SECTION/ p' | sed -n '2 p' | awk '{print \$5}'" +alias status='git status ' +alias st='git status' +alias checkout='git checkout' +alias ch='git checkout' +alias push='git push ' +alias pull='git pull ' +alias bb='git open' +alias merge='git merge' +alias mg='git merge' +alias switch='git switch' +alias sw='git switch' -alias ss="tail -n +2 /usr/share/exploitdb/files_exploits.csv | awk -F ',' '{print \$2 \"\t\" \$3 \"\t(\" \$1 \")\"}' | fzf --preview-window=up --preview='echo {} | cut -d\" \" -f1 | xargs echo \"/usr/share/exploitdb/\" | tr -d \" \" | xargs bat --color=always' | cut -d' ' -f3 | tr -d \"()\" | xargs searchsploit -m" +####################### +# typos / shortcuts # +####################### -alias ddg="ddgr" +alias vim="nvim" +alias cim="nvim" +alias vom="nvim" +alias vin="nvim" +alias vi="nvim" +alias v="nvim" -alias docker="sudo docker" -alias docker-compose="sudo docker-compose" +alias cls="clear" +#Clear terminal and try to get moon phase. If it takes longer than .5 seconds then it will show neofetch +#alias cls='clear; timeout 0.5s weather moon || neofetch' + +# Quit the terminal using :q (The same as Vi/Vim) +alias :q='exit;' +alias q='exit;' -type rmtrash > /dev/null && alias rm="rmtrash" -type rmdirtrash > /dev/null && alias rmdir="rmdirtrash" +alias rnc="resize-netcat-listener -r $HOME/go/src/resize-nc-listener/examples/stty-resize-copy" -alias rs="rofi-reverse-shells" +################ +# Pentesting # +################ -# Armory Aliases +# Start postgres for msfconsole +# In time, use docker instead +alias msfconsole="( systemctl status --no-pager postgresql.service > /dev/null || (echo \"Statring postgres\"; sudo systemctl start postgresql.service) ); ( pass show system/metasploit/database.yaml > database.yaml; sudo msfconsole -y database.yaml; rm database.yaml )" + +alias ss="tail -n +2 /usr/share/exploitdb/files_exploits.csv | awk -F ',' '{print \$2 \"\t\" \$3 \"\t(\" \$1 \")\"}' | fzf --preview-window=up --preview='echo {} | cut -d\" \" -f1 | xargs echo \"/usr/share/exploitdb/\" | tr -d \" \" | xargs bat --color=always' | cut -d' ' -f3 | tr -d \"()\" | xargs searchsploit -m" ARMORY="$HOME/GitRepos/armoury" alias surecheckImport="$JAVA_HOME/bin/java -jar $ARMORY/host_build_reviews/windows/SurecheckImport/SurecheckImport_v0.2.jar " alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" -type mycli > /dev/null && alias mysql="echo \"You might want to use mycli instead\"; /usr/bin/mysql" -type pgcli > /dev/null && alias postgres="echo \"You might want to use pgcli instead\"; /usr/bin/postgres" - # These aliases are related to projects # Make sqlmap put output in the current project folder alias sqlmap="[ -L ~/Projects/current ] && sqlmap --output-dir=\"~/Projects/current/sqlmap\"" @@ -192,13 +181,112 @@ alias pc="project switch --fzf" # Create a new project alias pn="project new" -alias tl="tldr -a | tr ',' '\n' | tr -d ' ' | fzf --preview='tldr {} -m | bat -l markdown --color always' | xargs tldr -m | bat -l markdown --color always" - alias snmp-check="/usr/bin/snmpcheck-nothink" -alias chrome-curl="node $HOME/GitRepos/chrome-curl/index.js" - #alias irmgpg="gpg --no-default-keyring --keyring=irm.gpg" alias irmgpg="gpg --options ~/.gnupg/irmgpg.conf --keyring=irm.gpg" alias weakopenssl="$HOME/GitRepos/openssl-weak/openssl-1.0.2-chacha/apps/openssl" + + +############## +# Keyboard # +############## + +# Keyboard - reset +# Sometimes, if I turn the screens off, the keyboard resets itself to defaults. Not sure why but this will put my keyboard back to how I like it +#alias kb="xmodmap ~/.Xmodmap; xset r rate 200 70; xcape" +alias kb="setxkbmap -layout gb,gb -variant \"colemak,\" -option grp:shifts_toggle; xset r rate 200 70; xinput --list | grep -Ei 'ErgoDox EZ\s+id' | grep -oE 'id=[0-9]+' | cut -d'=' -f2 | xargs setxkbmap -layout gb -device" + +alias colemak="setxkbmap -layout gb,gb -variant \"colemak,\" -option grp:shifts_toggle" +alias qwerty="setxkbmap -layout gb" + +################# +# Web Searches # +################# + +alias ws="websearch" +alias aw="websearch aw" +alias wiki="websearch wiki" +alias aur="websearch aur" +alias ddg="BROWSER=\"w3m\" ddgr" +# +############# +# Web Dev # +############# + +# These alow me to easily set the file and folder permissions for a wordpress instilation. +alias folder-perms='find . -type d -not -path "./.git/*" -not -path "./.git" -not -path "./node_modules/*" -not -path "./node_modules" -not -perm 775 -exec chmod 775 {} \;' +alias file-perms='find . -type f -not -path "./.git/*" -not -path "./.git" -not -path "./node_modules/*" -not -path "./node_modules" -not -perm 664 -exec chmod 664 {} \;' +alias wp-perms='folder-perms; file-perms' + +# Same for Magento +alias magentoPerms='cd ${PWD%/public_html*}/public_html;sudo chown -R jonathan:http .; folder-perms; file-perms; chmod +x bin/*; cd -' +alias magentoUpgr='magento setup:upgrade && magento setup:di:compile && magentoPerms' + +# Shortcut for rewriting wp permalinks +alias perms='wp rewrite flush' + +#Goes up to the public_html folder +alias ph='cd ${${PWD%/public_html*}%/wiki*}/public_html' +alias wiki='cd ${${PWD%/public_html*}%/wiki*}/wiki' + +#Edit wp-config.php using $EDITOR +alias wpconf='$EDITOR ${PWD%/public_html*}/public_html/wp-config.php' + +########## +# Misc # +########## + +#Start cups +alias cups='sudo systemctl start org.cups.cupsd.service' + +# moon phase +alias moonphase='weather moon' + +#audiable to mp3 +alias aa2mp3='ffmpeg -f concat -safe 0 -i <(for f in *.aa; do echo "file '"'"'$(pwd)/$f'"'"'";done) output.mp3' + +# Updates time using ntp +alias updateTime="sudo ntpd -qg" + +alias globalip="drill myip.opendns.com @resolver1.opendns.com | sed -n '/ANSWER SECTION/,/AUTHORITY SECTION/ p' | sed -n '2 p' | awk '{print \$5}'" + +alias chrome-curl="node $HOME/GitRepos/chrome-curl/index.js" + +if type grc > /dev/null 2>&1; then + for cmd in "nmap" "ping" "traceroute" "mount" "netstat" "ps" "dig" "du" "df" "ip" "iptables" "lsblk" "id" "free" "tcpdump" "uptime" "showmount" "whois" ; do + alias "$cmd"="grc $(whence $cmd)" + alias "${cmd}c"="grc --colour=on $(whence $cmd)" + done +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/shells/shared/environmentVariables b/shells/shared/environmentVariables index 118e325b..e160a6da 100644 --- a/shells/shared/environmentVariables +++ b/shells/shared/environmentVariables @@ -1,9 +1,12 @@ export LANG="en_GB.UTF-8" export TERMINAL=/usr/local/bin/st export TERM=xterm-256color -export EDITOR='vim' +type -p nvim > /dev/null && export EDITOR="nvim" || export EDITOR="vim" export READER='zathura' +export BROWSER="firefox-developer-edition" export CDPATH=.:~:~/Projects:~/.dotfiles +export GOPATH="$HOME/go" +export NODE_PATH='/usr/lib/node_modules/' #Adds a list of all the sub directories in my .bin folder to a variable called mypath mypath="$HOME/.bin" @@ -12,7 +15,7 @@ for d in "$HOME"/.bin/*/; do mypath+=":$d" done -export PATH=~/Projects/current/bin:$mypath:$PATH:. +export PATH=~/Projects/current/bin:$mypath:$GOPATH/bin:$PATH:. #Ruby things GEM_HOME=$(ls -t -U | ruby -e 'puts Gem.user_dir') @@ -20,6 +23,13 @@ GEM_PATH=$GEM_HOME export PATH=$PATH:$GEM_HOME/bin export GEM_HOME=$(ruby -e 'print Gem.user_dir') +export PATH=$PATH:$HOME/node_modules/.bin + +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_DATA_HOME="$HOME/.local/share" + +export NOTMUCH_CONFIG="${XDG_CONFIG_HOME}/notmuch/config" export LESS_TERMCAP_mb=$'\e[1;36m' export LESS_TERMCAP_md=$'\e[1;36m' diff --git a/shells/shared/functions b/shells/shared/functions index 89132e01..0f599ac9 100644 --- a/shells/shared/functions +++ b/shells/shared/functions @@ -1,14 +1,6 @@ -function big-chromium () { - chromium --force-device-scale-factor=$1 -} - -function big-new-chromium () { - chromium-snapshot-bin --force-device-scale-factor=$1 -} - # make xclip work as I would expect. Copy to clipboard if piped data. Paste from otherwise function clip(){ -if command -v /usr/bin/xclip 1>/dev/null; then +if type -p /usr/bin/xclip >/dev/null; then if [[ -p /dev/stdin ]] ; then # stdin is a pipe # stdin -> clipboard @@ -25,66 +17,162 @@ fi #Swap two files function swap() { - mv $1 $1._tmp; - mv $2 $1; - mv $1._tmp $2; + [ -e "$1._tmp" ] && return + mv "$1" "$1._tmp" + mv "$2" "$1" + mv "$1._tmp" "$2" } +# Add old extention function old() { - mv "$1" "$1.old" + for file in "$@"; do + mv "$file" "$file.old" + done } -function mycd() { - cd "$@" 2> /dev/null +# Cd that does what I normally want +function cd() { + # Try a normal cd + builtin cd "$@" 2> /dev/null if [ $? = 0 ]; then - # If we get here cd was successful + # If we get here cd was successful so do a ls ls else # If we get here, cd was not successful if [ -f "$1" ]; then + # If there is a file there, try and open it in vim + # ToDo: smarter open so it will open in zathura if it's a pdf for + # example $EDITOR "$1" else + # Otherwise fail clearly echo "Can't cd" fi fi #updatePath } -alias cd="mycd" +# Make a folder then cd into it function mkcd() { mkdir -p "$1" cd "$1" } -function createLetter(){ - if [ "$1" ]; then - if [ "$2" ]; then - newFile="$2" - else - newFile="$1" - newFile="${newFile%.*}.pdf" +# Adds sub folders in by .bin directory to the PATH if they are not already in it +# Also adds .bin to the path adjacent to any public_html folder +function updatePath(){ + # Reset the path + PATH=$(echo $PATH | sed -E "s/:\/home\/jonathan\/\.bin\/.*//g") + for d in ~/.bin/*/; do + if [[ :$PATH: != *:"$d":* ]] ; then + PATH+=":$d" fi - pandoc --template template-letter.tex $1 -o $newFile - else - echo "Oops. You need to suply a file" - return 1 + done + public_html=${PWD%/public_html*}/public_html + if [ -d $public_html ]; then + PATH+=":${PWD%/public_html*}/.bin" fi + } -function createFPLreport(){ - if [ "$1" ]; then - if [ "$2" ]; then - newFile="$2" - else - newFile="$1" - newFile="${newFile%.*}.pdf" +function reset_colourscheme(){ + if [ -L $HOME/.dotfiles/shells/zsh/current-color-scheme ]; then + source $HOME/.dotfiles/shells/zsh/current-color-scheme + fi + exit 2 +} + +# If running ssh interactively (not tab completion) change the colour scheme +function ssh(){ + if [[ -t 0 ]]; then + if [ -L $HOME/.dotfiles/shells/zsh/ssh-color-scheme ]; then + source $HOME/.dotfiles/shells/zsh/ssh-color-scheme + trap "reset_colourscheme" 2 + fi + fi + command /usr/bin/ssh "$@" + if [[ -t 0 ]]; then + if [ -L $HOME/.dotfiles/shells/zsh/current-color-scheme ]; then + source $HOME/.dotfiles/shells/zsh/current-color-scheme + fi + fi +} + +# Turn on a proxy +# Note that this is not fool proof. It is up to applications to check the +# environment variables +function proxy_on() { + export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" + + if (( $# > 0 )); then + valid=$(echo $@ | sed -n 's/\([0-9]\{1,3\}.\?\)\{4\}:\([0-9]\+\)/&/p') + if [[ $valid != $@ ]]; then + >&2 echo "Invalid address" + return 1 fi - pandoc --template fellowship.latex --listings --highlight-style=pygments --pdf-engine=xelatex $1 -o $newFile + local proxy=$1 + export http_proxy="$proxy" \ + https_proxy=$proxy \ + ftp_proxy=$proxy \ + rsync_proxy=$proxy + echo "Proxy environment variable set." + return 0 + fi + + echo -n "username: "; read username + if [[ $username != "" ]]; then + echo -n "password: " + read -es password + local pre="$username:$password@" + fi + + echo -n "server: "; read server + echo -n "port: "; read port + local proxy=$pre$server:$port + export http_proxy="$proxy" \ + https_proxy=$proxy \ + ftp_proxy=$proxy \ + rsync_proxy=$proxy \ + HTTP_PROXY=$proxy \ + HTTPS_PROXY=$proxy \ + FTP_PROXY=$proxy \ + RSYNC_PROXY=$proxy + } + +function proxy_off(){ + unset http_proxy https_proxy ftp_proxy rsync_proxy \ + HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY + echo -e "Proxy environment variable removed." + } + +# Sanity check for dd +function dd(){ + local drive="$(echo "$@" | grep -oE 'of=[^ ]+' | cut -d '=' -f 2-)" + if [ -n "$drive" ]; then + if mount | grep -q "$drive"; then + echo "It looks like that's mounted, probably not the drive you're after" + echo "If you are sure, run /usr/bin/dd ..." + return 1 + fi + fi + /usr/bin/dd "$@" +} + +# Man without options will use fzf to select a page +function man(){ + MAN="/usr/bin/man" + if [ -n "$1" ]; then + $MAN "$@" + return $? else - echo "Oops. You need to suply a file" - return 1 + $MAN -k . | fzf --reverse --preview="echo {1,2} | sed 's/ (/./' | sed -E 's/\)\s*$//' | xargs $MAN" | awk '{print $1 "." $2}' | tr -d '()' | xargs -r $MAN + return $? fi } +# +####################### +# Wordpress Helpers # +####################### #Takes you to the parent theme function ptheme() { @@ -218,93 +306,3 @@ function debugToggle(){ fi } -# Adds sub folders in by .bin directory to the PATH if they are not already in it -# Also adds .bin to the path adjacent to any public_html folder -function updatePath(){ - # Reset the path - PATH=$(echo $PATH | sed -E "s/:\/home\/jonathan\/\.bin\/.*//g") - for d in ~/.bin/*/; do - if [[ :$PATH: != *:"$d":* ]] ; then - PATH+=":$d" - fi - done - public_html=${PWD%/public_html*}/public_html - if [ -d $public_html ]; then - PATH+=":${PWD%/public_html*}/.bin" - fi - -} - -function reset_colourscheme(){ - if [ -L $HOME/.dotfiles/shells/zsh/current-color-scheme ]; then - source $HOME/.dotfiles/shells/zsh/current-color-scheme - fi - exit 2 -} - -function ssh(){ - if [ -L $HOME/.dotfiles/shells/zsh/ssh-color-scheme ]; then - source $HOME/.dotfiles/shells/zsh/ssh-color-scheme - fi - trap "reset_colourscheme" 2 - command /usr/bin/ssh "$@" - if [ -L $HOME/.dotfiles/shells/zsh/current-color-scheme ]; then - source $HOME/.dotfiles/shells/zsh/current-color-scheme - fi -} - -function proxy_on() { - export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" - - if (( $# > 0 )); then - valid=$(echo $@ | sed -n 's/\([0-9]\{1,3\}.\?\)\{4\}:\([0-9]\+\)/&/p') - if [[ $valid != $@ ]]; then - >&2 echo "Invalid address" - return 1 - fi - local proxy=$1 - export http_proxy="$proxy" \ - https_proxy=$proxy \ - ftp_proxy=$proxy \ - rsync_proxy=$proxy - echo "Proxy environment variable set." - return 0 - fi - - echo -n "username: "; read username - if [[ $username != "" ]]; then - echo -n "password: " - read -es password - local pre="$username:$password@" - fi - - echo -n "server: "; read server - echo -n "port: "; read port - local proxy=$pre$server:$port - export http_proxy="$proxy" \ - https_proxy=$proxy \ - ftp_proxy=$proxy \ - rsync_proxy=$proxy \ - HTTP_PROXY=$proxy \ - HTTPS_PROXY=$proxy \ - FTP_PROXY=$proxy \ - RSYNC_PROXY=$proxy -} - -function proxy_off(){ - unset http_proxy https_proxy ftp_proxy rsync_proxy \ - HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY - echo -e "Proxy environment variable removed." -} - -function man(){ - MAN="/usr/bin/man" - if [ -n "$1" ]; then - $MAN "$@" - return $? - else - $MAN -k . | fzf --reverse --preview="echo {1,2} | sed 's/ (/./' | sed -E 's/\)\s*$//' | xargs $MAN" | awk '{print $1 "." $2}' | tr -d '()' | xargs -r $MAN - return $? - fi -} -#alias man="myman"