Remove more unused scripts
This commit is contained in:
35
bash/sources/09_ssh-agent
Executable file
35
bash/sources/09_ssh-agent
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ssh-agent key lifetime
|
||||
alias ssh-add="ssh-add -t 43200"
|
||||
|
||||
SSH_ENV="$HOME/.ssh/environment"
|
||||
|
||||
function start_agent {
|
||||
echo "Initialising new SSH agent..."
|
||||
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
|
||||
echo succeeded
|
||||
chmod 600 "${SSH_ENV}"
|
||||
. "${SSH_ENV}" > /dev/null
|
||||
|
||||
# Test the ssh-add if status return 0/1, agent is initialized
|
||||
/usr/bin/ssh-add;
|
||||
ST=$?
|
||||
if [ $ST -ne 0 ] && [ $ST -ne 1 ]; then
|
||||
return $ST
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Source SSH settings, if applicable
|
||||
|
||||
if [ -f "${SSH_ENV}" ]; then
|
||||
. "${SSH_ENV}" > /dev/null
|
||||
#ps ${SSH_AGENT_PID} doesn't work under cywgin
|
||||
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
|
||||
start_agent;
|
||||
}
|
||||
else
|
||||
start_agent;
|
||||
fi
|
38
bash/sources/10_aliases
Executable file
38
bash/sources/10_aliases
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
# enable color support of ls and also add handy aliases
|
||||
if [ -x /usr/bin/dircolors ]; then
|
||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||
alias ls='ls --color=auto'
|
||||
alias dir='dir --color=auto'
|
||||
alias vdir='vdir --color=auto'
|
||||
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
fi
|
||||
|
||||
# some more ls aliases
|
||||
alias ll='ls -l'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
|
||||
# directory navigations
|
||||
alias p=pushd
|
||||
alias pp='pushd +2'
|
||||
alias p3='pushd +3'
|
||||
alias p4='pushd +4'
|
||||
alias o=popd
|
||||
alias d='dirs -v'
|
||||
|
||||
# default grep opts
|
||||
alias grep='grep --color=auto --exclude-dir .git'
|
||||
|
||||
# Wget prefix
|
||||
alias wget='wget --directory-prefix="$HOME/Downloads"'
|
||||
|
||||
# Pretty print sqlite3
|
||||
alias sqlite3="sqlite3 -header -column"
|
||||
|
||||
# Kubernetes
|
||||
alias kconf='kubectl config'
|
19
bash/sources/12_shortcuts
Executable file
19
bash/sources/12_shortcuts
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
function sanitize-perms {
|
||||
chown $USER.$USER . -R
|
||||
find . -type d -exec chmod 755 {}\;
|
||||
find . -type f -exec chmod 644 {}\;
|
||||
}
|
||||
|
||||
# Kubernetes
|
||||
function kres {
|
||||
local _O _D
|
||||
_O="-ocustom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name"
|
||||
_D="[0-9A-Za-z\-]"
|
||||
if [ -z "$3" ]; then
|
||||
kubectl get $1 -A $_O | grep "$2"
|
||||
else
|
||||
kubectl get $1 -A $_O | grep "$_D*$2$_D*\s\+$_D*$3$_D*"
|
||||
fi
|
||||
}
|
21
bash/sources/15_gpg-agent
Normal file
21
bash/sources/15_gpg-agent
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
which gpg-agent 2>&1 > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
GPG_ENV="$HOME/.gnupg/environment"
|
||||
|
||||
function __start_agent {
|
||||
gpg-agent --daemon > "${GPG_ENV}"
|
||||
chmod 600 "${GPG_ENV}"
|
||||
. "${GPG_ENV}" > /dev/null
|
||||
}
|
||||
|
||||
if [ -f "${GPG_ENV}" ]; then
|
||||
. "${GPG_ENV}" > /dev/null
|
||||
|
||||
gpg-agent > /dev/null 2>&1
|
||||
[ "$?" -ne 0 ] && { __start_agent; }
|
||||
else
|
||||
__start_agent;
|
||||
fi
|
||||
fi
|
305
bash/sources/16_keystore
Normal file
305
bash/sources/16_keystore
Normal file
@@ -0,0 +1,305 @@
|
||||
#!/bin/bash
|
||||
|
||||
_SQLITE=$( which sqlite3 2>&1 )
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "sqlite3 is missing" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "test" | openssl enc -e -aes-256-cbc -pbkdf2 -k test 2>/dev/null > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "openssl does not exists nor support pbkdf2" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
_AUTH_DB=$RBASH_HOME/keystore.db
|
||||
_AUTH_SECRET=
|
||||
_KSTORE_DEF_PROP=${_KSTORE_DEF_PROP:-val}
|
||||
|
||||
if [ -f "$RBASH_HOME/keystore.secret" ]; then
|
||||
_AUTH_SECRET=$( cat "$RBASH_HOME/keystore.secret" )
|
||||
fi
|
||||
|
||||
function kstore {
|
||||
case $1 in
|
||||
add) shift; kstore-add "$@" ;;
|
||||
del) shift; kstore-del "$@" ;;
|
||||
get) shift; kstore-get "$@" ;;
|
||||
list) shift; kstore-list "$@" ;;
|
||||
query) shift; kstore-query "$@" ;;
|
||||
update) shift; kstore-update "$@" ;;
|
||||
search) shift; kstore-search $@ ;;
|
||||
secret) shift; kstore-secret $@ ;;
|
||||
*)
|
||||
__func_head "add [key] [value|file|-] [prop, default: $_KSTORE_DEF_PROP]"
|
||||
__func_help "update [key] [value|file|-] [prop, default: $_KSTORE_DEF_PROP]"
|
||||
__func_help "get [key] [prop, default: $_KSTORE_DEF_PROP]"
|
||||
__func_help "del [key]"
|
||||
__func_help "list"
|
||||
__func_help "search [key] [prop]"
|
||||
__func_help "secret ..."
|
||||
__func_help "query SQL"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
return $?
|
||||
}
|
||||
|
||||
function kstore-secret {
|
||||
case "$1" in
|
||||
clear) shift; kstore-secret-clear "$@" ;;
|
||||
config) shift; kstore-secret-config "$@" ;;
|
||||
change) shift; kstore-secret-change "$@" ;;
|
||||
*)
|
||||
__func_head "clear"
|
||||
__func_help "config"
|
||||
__func_help "change"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function kstore-init {
|
||||
cat <<___SQL___ | $_SQLITE "$_AUTH_DB"
|
||||
CREATE TABLE IF NOT EXISTS store (
|
||||
key TEXT NOT NULL
|
||||
, prop TEXT NOT NULL
|
||||
, data TEXT
|
||||
, PRIMARY KEY( key ASC, prop ASC )
|
||||
);
|
||||
___SQL___
|
||||
kstore secret config
|
||||
}
|
||||
|
||||
function kstore-quote {
|
||||
echo -n "$1" | sed -e "s/'/''/g"
|
||||
}
|
||||
|
||||
function kstore-enc {
|
||||
if [ -z "$_AUTH_SECRET" ]; then
|
||||
echo "Secret key is not set yet" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "$1" == "-" ]; then
|
||||
openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A
|
||||
elif [ -f "$1" ]; then
|
||||
openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A -in "$1"
|
||||
else
|
||||
echo -n "$1" | openssl enc -e -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A
|
||||
fi
|
||||
}
|
||||
|
||||
function kstore-dec {
|
||||
if [ -z "$_AUTH_SECRET" ]; then
|
||||
echo "Secret key is not set yet" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
openssl enc -d -aes-256-cbc -pbkdf2 -k "$_AUTH_SECRET" -a -A
|
||||
}
|
||||
|
||||
function kstore-secret-auto {
|
||||
case $OSTYPE in
|
||||
darwin*) kstore-secret-macos "$@" ;;
|
||||
*)
|
||||
echo "$OSTYPE is Not supported yet" >&2
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function kstore-secret-macos {
|
||||
local _A
|
||||
case $1 in
|
||||
get)
|
||||
_A=`security find-generic-password -a default -gs rbash-kstore 2>&1 | grep ^password | cut -c 11-`
|
||||
if [ $? -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
_AUTH_SECRET="${_A:1:-1}"
|
||||
;;
|
||||
set)
|
||||
security add-generic-password -a default -s rbash-kstore -w "$_AUTH_SECRET"
|
||||
;;
|
||||
del)
|
||||
security delete-generic-password -a default -s rbash-kstore
|
||||
;;
|
||||
*)
|
||||
echo "Unknown action: $1" >&2
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function kstore-secret-windows {
|
||||
# Not impelemented yet
|
||||
if [ "$1" == "get" ]; then
|
||||
return 1
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
function kstore-secret-config {
|
||||
local _CONFIRM
|
||||
if [ -z "$_AUTH_SECRET" ]; then
|
||||
|
||||
kstore-secret-auto get
|
||||
if [ -n "$_AUTH_SECRET" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
read -sp "Enter passphrase: " _AUTH_SECRET
|
||||
echo
|
||||
if [ -z "$_AUTH_SECRET" ]; then
|
||||
echo "Passphrase cannot be empty" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
read -p "Save this password to OS's keystore? (y/n): " _CONFIRM
|
||||
if [ "$_CONFIRM" != "y" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
kstore-secret-auto set
|
||||
fi
|
||||
}
|
||||
|
||||
function kstore-secret-change {
|
||||
kstore-secret-config
|
||||
|
||||
local _NEW_SECRET i _key _prop _O_SECRET _BAK
|
||||
read -sp "Enter the new passphrase: " _NEW_SECRET
|
||||
echo
|
||||
read -sp "Enter the passphrase again: " i
|
||||
echo
|
||||
if [ "$i" != "$_NEW_SECRET" ]; then
|
||||
echo "Passphrase mismatched" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
_BAK=$( mktemp )
|
||||
cp "$_AUTH_DB" "$_BAK"
|
||||
|
||||
echo "Backed up at $_BAK"
|
||||
|
||||
_O_SECRET="$_AUTH_SECRET"
|
||||
for i in `$_SQLITE -list "$_AUTH_DB" "SELECT _ROWID_ FROM store;"`; do
|
||||
_AUTH_SECRET=$_O_SECRET
|
||||
_key=`$_SQLITE -list "$_AUTH_DB" "SELECT key FROM store WHERE _ROWID_ = $i;"`
|
||||
_key=`kstore-quote "$_key"`
|
||||
_prop=`$_SQLITE -list "$_AUTH_DB" "SELECT prop FROM store WHERE _ROWID_ = $i;"`
|
||||
_prop=`kstore-quote "$_prop"`
|
||||
_val=`kstore get "$_key" "$_prop"`
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Current passphrase is incorrect?" >&2
|
||||
return 1
|
||||
fi
|
||||
_AUTH_SECRET=$_NEW_SECRET
|
||||
|
||||
echo Updating: [$_key] [$_prop]
|
||||
kstore update "$_key" "$_val" "$_prop"
|
||||
done
|
||||
|
||||
kstore-secret-auto get
|
||||
if [ -n "$_AUTH_SECRET" ]; then
|
||||
kstore-secret-auto del 2>&1 > /dev/null
|
||||
|
||||
_AUTH_SECRET=$_NEW_SECRET
|
||||
kstore-secret-auto set
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "New passphrase saved in OS's keystore."
|
||||
fi
|
||||
fi
|
||||
|
||||
_AUTH_SECRET=$_NEW_SECRET
|
||||
}
|
||||
|
||||
function kstore-secret-clear {
|
||||
_AUTH_SECRET=
|
||||
case $OSTYPE in
|
||||
darwin*)
|
||||
security delete-generic-password -a default -s rbash-kstore 2>&1 > /dev/null
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function kstore-update {
|
||||
kstore-init || return 1
|
||||
local _key _val _prop
|
||||
_key=`kstore-quote "$1"`
|
||||
_val=`kstore-enc "$2"`
|
||||
_val=`kstore-quote "$_val"`
|
||||
_prop=`kstore-quote "${3:-$_KSTORE_DEF_PROP}"`
|
||||
_cond="key = '$_key' AND prop = '$_prop'"
|
||||
$_SQLITE "$_AUTH_DB" "UPDATE store SET data = '$_val' WHERE $_cond;"
|
||||
}
|
||||
|
||||
function kstore-add {
|
||||
kstore-init || return 1
|
||||
local _key _val _prop
|
||||
_key=`kstore-quote "$1"`
|
||||
_val=`kstore-enc "$2"`
|
||||
_val=`kstore-quote "$_val"`
|
||||
_prop=`kstore-quote "${3:-$_KSTORE_DEF_PROP}"`
|
||||
sqlite3 "$_AUTH_DB" \
|
||||
"INSERT INTO store ( key, prop, data )
|
||||
VALUES( '$_key', '$_prop', '$_val' );"
|
||||
}
|
||||
|
||||
function kstore-get {
|
||||
kstore-init || return 1
|
||||
local _key _prop _cond
|
||||
_key=`kstore-quote "$1"`
|
||||
_prop=`kstore-quote "${2:-$_KSTORE_DEF_PROP}"`
|
||||
_cond="key = '$_key' AND prop = '$_prop'"
|
||||
|
||||
sqlite3 "$_AUTH_DB" "SELECT 1111 FROM store WHERE $_cond;" | grep -q 1111
|
||||
if [ $? -eq 0 ]; then
|
||||
$_SQLITE -list "$_AUTH_DB" "SELECT ( data ) FROM store WHERE $_cond;" | kstore-dec
|
||||
else
|
||||
echo "\"$1\" not found" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
function kstore-del {
|
||||
kstore-init || return 1
|
||||
|
||||
local _CONFIRM _key _prop _cond
|
||||
_key=`kstore-quote "$1"`
|
||||
_prop=`kstore-quote "${2:-$_KSTORE_DEF_PROP}"`
|
||||
_cond="key = '$_key' AND prop = '$_prop'"
|
||||
|
||||
sqlite3 "$_AUTH_DB" "SELECT 1111 FROM store WHERE $_cond;" | grep -q 1111
|
||||
if [ $? -eq 0 ]; then
|
||||
sqlite3 "$_AUTH_DB" "SELECT * FROM store WHERE $_cond;"
|
||||
echo
|
||||
read -p "Delete this entry (yes/no)? " _CONFIRM
|
||||
if [ "$_CONFIRM" == "yes" ]; then
|
||||
sqlite3 "$_AUTH_DB" "DELETE FROM store WHERE $_cond;"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "deleted"
|
||||
fi
|
||||
else
|
||||
echo "action canceled"
|
||||
fi
|
||||
else
|
||||
echo "\"$1\" not found" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
function kstore-search {
|
||||
local _termk _termp _cond
|
||||
_termk=`kstore-quote "$1"`
|
||||
_termp=`kstore-quote "$2"`
|
||||
_cond="key LIKE '%$_termk%' AND prop LIKE '%$_termp%'"
|
||||
|
||||
$_SQLITE -header -column "$_AUTH_DB" "SELECT key, prop, length( data ) FROM store WHERE $_cond;"
|
||||
}
|
||||
|
||||
function kstore-list {
|
||||
$_SQLITE -header -column "$_AUTH_DB" "SELECT key, prop, length( data ) FROM store;"
|
||||
}
|
||||
|
||||
function kstore-query {
|
||||
sqlite3 "$_AUTH_DB" "$@"
|
||||
}
|
15
bash/sources/20_fast-greps
Executable file
15
bash/sources/20_fast-greps
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
alias grepphp='grep -n --include=*.php'
|
||||
alias grepjs='grep -n --include=*.js'
|
||||
|
||||
function grept {
|
||||
if [[ -z "$1" ]]; then
|
||||
__func_head "TYPE GREP_ARGS"
|
||||
echo
|
||||
else
|
||||
CMD="grep --color=auto -n --include=*.$1"
|
||||
shift
|
||||
$CMD $@
|
||||
fi
|
||||
}
|
12
bash/sources/21_win-greps
Executable file
12
bash/sources/21_win-greps
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
function grepo {
|
||||
grep --color=always "$1" . -r | awk '{ count++; print " ["count"] "$0 } '
|
||||
echo -n "Select number to open: "
|
||||
read num
|
||||
|
||||
IFS="
|
||||
"
|
||||
CHOICES=( `grep -n "$1" . -r | awk 'BEGIN{ FS=":" }{ print "notepad /g "$2" "$1 }'` )
|
||||
bash -c ${CHOICES[$(( num - 1 ))]}
|
||||
}
|
16
bash/sources/22_win-setups
Executable file
16
bash/sources/22_win-setups
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
function mkuserdirs {
|
||||
|
||||
local PROFILE PKG_DIR i
|
||||
PROFILE=$( cygpath $USERPROFILE )
|
||||
for i in $( ls $PROFILE | grep -o "^[A-Z][a-z]\+$" ); do
|
||||
ln -vs "$PROFILE/$i" $HOME/
|
||||
done
|
||||
|
||||
# Package Directory
|
||||
PKG_DIR="$APPDATA/../Local/Packages"
|
||||
if [ -d "$PKG_DIR" ]; then
|
||||
ln -vs "$PKG_DIR" $HOME/
|
||||
fi
|
||||
}
|
33
bash/sources/23_win-vsenv
Executable file
33
bash/sources/23_win-vsenv
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -n "$FrameworkVersion" ]; then
|
||||
alias vsshell='echo "FrameworkVersion $FrameworkVersion"'
|
||||
return
|
||||
fi
|
||||
|
||||
BAT_DIR=~/.local/lib/bat
|
||||
mkdir -p $BAT_DIR
|
||||
|
||||
VS_SHELL_BAT=$BAT_DIR/vs-env.bat
|
||||
|
||||
function vsshell {
|
||||
_SHELL=$( cygpath -w -a $VS_SHELL_BAT )
|
||||
cmd /c "$_SHELL"
|
||||
exit
|
||||
}
|
||||
|
||||
if [ -f "$VS_SHELL_BAT" ]; then
|
||||
_PATH=$( cygpath "$( grep -o "^@REM FILE_PATH: .\+" "$VS_SHELL_BAT" | cut -c 17- )" )
|
||||
if [ -f "$_PATH" ]; then
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
START_MENU="$( cygpath $ProgramData )/Microsoft/Windows/Start Menu/"
|
||||
|
||||
_PATH=$( find "$START_MENU" -name "*Command Prompt*" | grep "Visual Studio" | grep x64 | grep Native | xargs -I % readshortcut % -r | grep -o "\"\([^\"]\+\)\"" )
|
||||
|
||||
echo "@echo off" > "$VS_SHELL_BAT"
|
||||
echo "@REM FILE_PATH: ${_PATH:1:-1}" >> "$VS_SHELL_BAT"
|
||||
echo "CALL $_PATH" >> "$VS_SHELL_BAT"
|
||||
echo "START $( where mintty ) -i /Cygwin-Terminal.ico -" >> "$VS_SHELL_BAT"
|
82
bash/sources/30_mysql
Executable file
82
bash/sources/30_mysql
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
|
||||
function grepmysql {
|
||||
if [[ -z "$1" ]]; then
|
||||
__func_head "MySQL_SERVER_NAME [WITH_OPTIONS]"
|
||||
echo
|
||||
else
|
||||
if [[ -z "$2" ]]; then
|
||||
grep -i $1 ~/.mysql_pass | awk 'BEGIN{FS=":"}{ print $2 }'
|
||||
else
|
||||
grep -i $1 ~/.mysql_pass | awk 'BEGIN{FS=":"}{ print $2" "$3 }'
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function mysqlo () {
|
||||
if [ -z "$1" ]; then
|
||||
__func_head "SERVER_NAME"
|
||||
echo
|
||||
else
|
||||
PASS=$(grepmysql $1 true)
|
||||
if [ -z "$PASS" ]; then
|
||||
echo "Server not found in config: $1"
|
||||
return 1
|
||||
fi
|
||||
|
||||
PS_SQL=$(grep -i $1 ~/.mysql_pass | awk 'BEGIN{FS=":"}{ print $4 }')
|
||||
USER=$(grep -i $1 ~/.mysql_pass | awk 'BEGIN{FS=":"}{ print $5 }')
|
||||
|
||||
export MYSQL_PS1="$PS_SQL> "
|
||||
|
||||
shift
|
||||
|
||||
echo $__mysql
|
||||
mysql -u $USER --password=$PASS $@
|
||||
unset PS_SQL
|
||||
fi
|
||||
}
|
||||
|
||||
function mysqls () {
|
||||
if [ -z "$1" ]; then
|
||||
__func_head "[z] SERVER_NAME DATABASE_NAME SQL_FILE"
|
||||
echo
|
||||
else
|
||||
GZIP=false
|
||||
PV=false
|
||||
_ANY=false
|
||||
if [[ "$1" == *z* ]]; then
|
||||
GZIP=true
|
||||
_ANY=true
|
||||
fi
|
||||
if [[ "$1" == *p* ]]; then
|
||||
PV=true
|
||||
_ANY=true
|
||||
fi
|
||||
if $_ANY; then
|
||||
shift
|
||||
fi
|
||||
|
||||
USER=$(grep -i $1 ~/.mysql_pass | awk 'BEGIN{FS=":"}{ print $5 }')
|
||||
PASS=$(grepmysql $1 true)
|
||||
|
||||
if [ -z "$PASS" ]; then
|
||||
echo "Server not found in config: $1"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if $GZIP; then
|
||||
if $PV; then
|
||||
pv $3 | gunzip | mysql -u $USER --password=$PASS -D $2
|
||||
else
|
||||
gunzip -c $3 | mysql -u $USER --password=$PASS -D $2
|
||||
fi
|
||||
else
|
||||
if $PV; then
|
||||
pv $3 | mysql -u $USER --password=$PASS -D $2
|
||||
else
|
||||
mysql -u $USER --password=$PASS -D $2 < $3
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
39
bash/sources/31_git-utils
Normal file
39
bash/sources/31_git-utils
Normal file
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
function git-config-as {
|
||||
local SHA NAME EMAIL
|
||||
SHA=$1
|
||||
if [ -z "$1" ]; then
|
||||
SHA=HEAD
|
||||
fi
|
||||
NAME=$( git log $SHA -1 --pretty=format:%aN )
|
||||
EMAIL=$( git log $SHA -1 --pretty=format:%ae )
|
||||
|
||||
git config user.name "$NAME"
|
||||
git config user.email "$EMAIL"
|
||||
echo "Configured as \"$NAME <$EMAIL>\""
|
||||
}
|
||||
|
||||
function git-amend-author {
|
||||
NAME=$( git config user.name )
|
||||
EMAIL=$( git config user.email )
|
||||
|
||||
git commit --amend --no-edit --author "$NAME <$EMAIL>"
|
||||
}
|
||||
|
||||
|
||||
if [ ! -f "$HOME/.gitconfig" ]; then
|
||||
cat << ___CONF___ > "$HOME/.gitconfig"
|
||||
[alias]
|
||||
la = log --graph --full-history --date-order --all --pretty=format:'%Cred%h%Creset %ad %C(bold blue)[%an]%Creset | %C(white)%s%Creset %C(yellow)%d%Creset' --date=relative
|
||||
|
||||
[color]
|
||||
ui = auto
|
||||
[core]
|
||||
excludesfile = ~/gitignore
|
||||
[push]
|
||||
default = tracking
|
||||
[credential]
|
||||
helper = store
|
||||
___CONF___
|
||||
fi
|
248
bash/sources/40_go-command
Executable file
248
bash/sources/40_go-command
Executable file
@@ -0,0 +1,248 @@
|
||||
#!/bin/bash
|
||||
# go command
|
||||
|
||||
function _begin_sel() {
|
||||
local i
|
||||
_selected=
|
||||
_sel_len=${#_sel_args[@]}
|
||||
if [ $_sel_len -gt 1 ]; then
|
||||
echo "There are $_sel_len possible paths under $1@[$2]"
|
||||
j=1
|
||||
for i in ${_sel_args[@]}; do
|
||||
echo " $j. $i"
|
||||
j=$(( j + 1 ))
|
||||
done
|
||||
|
||||
echo -n "Your choice [1-$(( j - 1 ))]: "
|
||||
read num
|
||||
re="^[1-$(( j - 1 ))]+\$"
|
||||
if [[ ! $num =~ $re ]]; then
|
||||
echo "Value does not fall into expected range"
|
||||
return 1
|
||||
fi
|
||||
_selected=${_sel_args[$(( num - 1 ))]}
|
||||
return 0
|
||||
fi
|
||||
|
||||
_selected=${_sel_args[0]}
|
||||
return 0
|
||||
}
|
||||
|
||||
function go() {
|
||||
local i
|
||||
ARG1=$1; ARG2=$2; ARG3=$3;
|
||||
|
||||
if [[ -z "$ARG1" ]]; then
|
||||
__func_head "[MODE] SITE TARGET_DIR [..SLICE]"
|
||||
__func_help "up [MODE] TARGET_DIR"
|
||||
__func_help "down [MODE] TARGET_DIR [..SLICE]"
|
||||
echo
|
||||
return 1
|
||||
fi
|
||||
|
||||
NAV=false
|
||||
case "$ARG1" in
|
||||
p)
|
||||
shift
|
||||
CC='pushd' ;;
|
||||
c)
|
||||
shift
|
||||
CC='cd' ;;
|
||||
e)
|
||||
shift
|
||||
CC='echo' ;;
|
||||
up|down)
|
||||
shift
|
||||
NAV=true ;;
|
||||
*)
|
||||
CC='cd'
|
||||
ARG3=$ARG2
|
||||
ARG2=$ARG1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ $NAV = true ]; then
|
||||
__go_nav $ARG1 $@
|
||||
return $?
|
||||
fi
|
||||
|
||||
if [[ -f ~/.go_conf ]]; then
|
||||
source ~/.go_conf
|
||||
else
|
||||
echo "Cannot source config file"
|
||||
return 1
|
||||
fi
|
||||
|
||||
_sel_args=( $( ls "$UDEV" | grep "$ARG2" ) )
|
||||
_begin_sel $UDEV $ARG2
|
||||
|
||||
SITE=$_selected
|
||||
if [[ -z "$SITE" ]]; then
|
||||
echo "No such site: $ARG2"
|
||||
find "$UDEV/" -maxdepth 1 -type d | sed "s/^.\+\/\([^\/]\+\)\/\?$/ \1/g"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ -z "$ARG3" ]]; then
|
||||
$CC "$UDEV/$SITE"
|
||||
return $?
|
||||
fi
|
||||
|
||||
__SFT23=0
|
||||
for ((i = 0; i < ${#LOCS[@]}; i++))
|
||||
do
|
||||
LOC=${LOCS[i]}
|
||||
LOCATION=$(ls -d "$UDEV/$SITE/$LOC/"*"$ARG3"*/ 2> /dev/null )
|
||||
if [[ -n "$LOCATION" ]]; then
|
||||
NPATHS=$( echo -n "$LOCATION" | grep -c '^' )
|
||||
if [[ $NPATHS -gt 1 ]]; then
|
||||
|
||||
# shift ARG2 ARG3
|
||||
shift; shift
|
||||
__SFT23=1
|
||||
|
||||
j=1
|
||||
CHOICES=()
|
||||
__CC=$CC
|
||||
for i in ${LOCATION[@]}; do
|
||||
__dive "test -d" "$i" $@ > /dev/null
|
||||
if [[ $? -eq 0 ]]; then
|
||||
__LOC="$i"
|
||||
CHOICES+=($i)
|
||||
j=$(( j + 1 ))
|
||||
fi
|
||||
done
|
||||
CC=$__CC
|
||||
|
||||
# No possible solution for this path
|
||||
if [[ $j -eq 1 ]]; then
|
||||
echo "Unable to trace \"$@\" under $UDEV/$SITE/*$ARG3*/"
|
||||
return 1
|
||||
elif [[ $j -eq 2 ]]; then
|
||||
LOCATION=$__LOC
|
||||
else
|
||||
_sel_args=$CHOICES
|
||||
_begin_sel "$LOCATION" $@
|
||||
if [ -z $_selected ]; then
|
||||
return 1
|
||||
fi
|
||||
LOCATION=$_selected
|
||||
fi
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $__SFT23 -eq 0 ]]; then
|
||||
# shift ARG2 ARG3
|
||||
shift; shift
|
||||
fi
|
||||
|
||||
if [[ -n "$LOCATION" ]]; then
|
||||
__dive $CC "$LOCATION" $@
|
||||
return $?
|
||||
else
|
||||
__dive $CC "$UDEV/$SITE" "$ARG3" $@
|
||||
return $?
|
||||
fi
|
||||
}
|
||||
|
||||
__dive() {
|
||||
local i
|
||||
CC=$1
|
||||
WDIR=$2
|
||||
shift; shift
|
||||
|
||||
if [ -z "$*" ]; then
|
||||
$CC "$WDIR"
|
||||
return $?
|
||||
fi
|
||||
|
||||
_EXCLUDE_ARGS=
|
||||
if [ -n $EXCLUDE_DIRS ]; then
|
||||
for i in ${EXCLUDE_DIRS[@]}; do
|
||||
_EXCLUDE_ARGS="$_EXCLUDE_ARGS -path '*/$i' -prune -o -name $i -prune -o"
|
||||
done
|
||||
fi
|
||||
|
||||
OIFS=$IFS
|
||||
IFS="*"
|
||||
PATT="*$**"
|
||||
IFS=$OIFS
|
||||
|
||||
pushd "$WDIR" > /dev/null
|
||||
DIR=$(find . $_EXCLUDE_ARGS -path "$PATT" -type d -print -quit | cut -c 3- )
|
||||
popd > /dev/null
|
||||
|
||||
if [[ -z $DIR ]]; then
|
||||
echo "Path: $WDIR"
|
||||
echo " - Pattern not found: $PATT"
|
||||
return 1
|
||||
fi
|
||||
|
||||
$CC "$WDIR/$DIR"
|
||||
}
|
||||
|
||||
__go_nav() {
|
||||
local i
|
||||
ARG1=$1; ARG2=$2; ARG3=$3;
|
||||
case "$ARG2" in
|
||||
p)
|
||||
shift
|
||||
CC='pushd' ;;
|
||||
c|"")
|
||||
shift
|
||||
CC='cd' ;;
|
||||
e)
|
||||
shift
|
||||
CC='echo' ;;
|
||||
*)
|
||||
CC='cd'
|
||||
ARG3=$ARG2
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$ARG1" == "up" ]]; then
|
||||
OIFS=$IFS
|
||||
IFS="/" read -a PWDA <<< "$(pwd)"
|
||||
IFS=$OIFS
|
||||
|
||||
MARK=0
|
||||
S_LEN=$(( ${#PWDA[@]} - 2 ))
|
||||
for (( i=1; i<=$S_LEN; i++ ))
|
||||
do
|
||||
STACK=${PWDA[$i]}
|
||||
if [ -z "$STACK" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -n "$ARG3" ] && [[ "$STACK" =~ "$ARG3" ]]; then
|
||||
MARK=$i
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$ARG3" ]; then
|
||||
# Go up 1 level
|
||||
MARK=$(( ${#PWDA[@]} - 2 ))
|
||||
fi
|
||||
|
||||
if [ $MARK -eq 0 ]; then
|
||||
echo "No such token in up stack: $ARG3"
|
||||
for (( i=1; i<=$S_LEN; i++ )); do echo " ${PWDA[$i]}"; done
|
||||
return 1
|
||||
fi
|
||||
|
||||
DIR='/'
|
||||
|
||||
for (( i=1; i<=$MARK; i++ ))
|
||||
do
|
||||
DIR="$DIR${PWDA[$i]}/"
|
||||
done
|
||||
|
||||
$CC "$DIR"
|
||||
else
|
||||
shift
|
||||
__dive $CC . $@
|
||||
return $?
|
||||
fi
|
||||
}
|
106
bash/sources/41_pivot-command
Normal file
106
bash/sources/41_pivot-command
Normal file
@@ -0,0 +1,106 @@
|
||||
#!/bin/bash
|
||||
# Pivot: The handy diretory switch
|
||||
# Examples:
|
||||
# /root/a/b/c/d $ swing a k
|
||||
# /root/k/b/c/d $ swing k g
|
||||
# /root/g/b/c/d $ swing b f
|
||||
# /root/g/f/c/d $
|
||||
|
||||
function pvt() {
|
||||
ARG1=$1; ARG2=$2; ARG3=$3;
|
||||
|
||||
if [[ -z "$ARG1" ]]; then
|
||||
__func_head "[MODE] PIVOT_DIR LAND_DIR"
|
||||
echo
|
||||
return 1
|
||||
fi
|
||||
|
||||
case "$ARG1" in
|
||||
p)
|
||||
CC='pushd' ;;
|
||||
c)
|
||||
CC='cd' ;;
|
||||
e)
|
||||
CC='echo' ;;
|
||||
*)
|
||||
CC='cd'
|
||||
ARG3=$ARG2
|
||||
ARG2=$ARG1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -z "$ARG3" ]]; then
|
||||
>&2 echo "Error: LAND_DIR is not defined"
|
||||
pvt
|
||||
return 1
|
||||
fi
|
||||
|
||||
IFS="/" read -a PWDA <<< "$(pwd)"
|
||||
|
||||
# Begin finding dirs in up-stack
|
||||
MARK=0
|
||||
LISTOF=''
|
||||
UP_STACK=''
|
||||
for i in "${!PWDA[@]}"
|
||||
do
|
||||
DIR=${PWDA[$i]}
|
||||
|
||||
if [[ -n "$DIR" ]]; then
|
||||
LISTOF="$LISTOF\n $DIR";
|
||||
fi
|
||||
|
||||
if [[ "$DIR" =~ $ARG2 ]]; then
|
||||
MARK=$i
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ $MARK -ne 0 ]]; then
|
||||
UP_STACK="$UP_STACK/$DIR"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $MARK -eq 0 ]]; then
|
||||
echo "No such token in up stack: $ARG3"
|
||||
echo -e $LISTOF;
|
||||
echo
|
||||
return 1
|
||||
fi
|
||||
|
||||
PARENT_DIR='/'
|
||||
|
||||
for (( i=1; i<$MARK; i++ ))
|
||||
do
|
||||
PARENT_DIR="$PARENT_DIR${PWDA[$i]}/"
|
||||
done
|
||||
|
||||
CAND=()
|
||||
for i in $( find $PARENT_DIR -maxdepth 1 -type d -name "*$ARG3*" )
|
||||
do
|
||||
CAND+=("$i")
|
||||
done
|
||||
|
||||
for i in "${!CAND[@]}"
|
||||
do
|
||||
DIR="${CAND[$i]}"
|
||||
LAND_DIR="$DIR$UP_STACK"
|
||||
|
||||
if [[ -d "$LAND_DIR" ]]; then
|
||||
$CC "$LAND_DIR"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Error: Cannot land to \"$UP_STACK\" under pivoting parent: \"$PARENT_DIR\""
|
||||
echo "List of possible landings:"
|
||||
for i in $( find $PARENT_DIR -maxdepth 1 -type d )
|
||||
do
|
||||
LAND_DIR="$i$UP_STACK"
|
||||
if [[ -d "$LAND_DIR" ]]; then
|
||||
echo " "$( basename $i )
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
|
||||
return 1
|
||||
}
|
21
bash/sources/60_diagnostics
Executable file
21
bash/sources/60_diagnostics
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
function dumpcolors {
|
||||
# Reference: https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
|
||||
T='gYw' # The test text
|
||||
|
||||
echo -e "\n 40m 41m 42m 43m\
|
||||
44m 45m 46m 47m";
|
||||
|
||||
for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
|
||||
'1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
|
||||
' 36m' '1;36m' ' 37m' '1;37m';
|
||||
do FG=${FGs// /}
|
||||
echo -en " $FGs \033[$FG $T "
|
||||
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
|
||||
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
|
||||
done
|
||||
echo;
|
||||
done
|
||||
echo
|
||||
}
|
Reference in New Issue
Block a user