1. 程式人生 > 其它 >一些Cygwin/WSL,BASH指令碼hook函式;

一些Cygwin/WSL,BASH指令碼hook函式;

ping

使ping命令引數支援網址形式,直接在命令列ping一個網址,顯示其伺服器資訊(當然了,也有可能是CDN節點)...

ping() {
	if [ $# -eq 1 ] && [[ "$1" =~ "/" ]];then
	#if [ $# -eq 1 ] && [[ "$1" =~ ^http ]];then
		host=$(/usr/bin/env python3 /v/bin/python-parseurl.py "$1")
		[ ! -z "$host" ] && _ping $host
	else
		_ping $@
	fi
}

附:依賴的python-parseurl.py

原始碼:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#解析一個URL,僅輸出host部分
import sys
from urllib.parse import urlparse

if len(sys.argv)==2:
        url=str(sys.argv[1]).strip()
else:
        url=""

if not (url.startswith("http") or url.startswith("ftp://")):
        url="{}{}".format("http://",url)

parsed = urlparse(url)
print(parsed.netloc)

nc

預設nc命令的使用格式為nc -v www.baidu.com 443,此函式使nc命令支援地址和埠連在一起的情況,比如nc -v www.baidu.com:443;

##覆蓋預設nc命令,使之可以直接使用ip和埠粘在一起的引數形式:eg:nc -v 127.0.0.1:80
nc() {
	if [[ "${@:$#}" =~ ^.+:[0-9]{1,5}$ ]];then
		echo "引數粘連,分開解析地址和埠..."
		local addr=$(echo "${@:$#}"|cut -d ':' -f 1)
		local port=$(echo "${@:$#}"|cut -d ':' -f 2)
		declare -a options
		while [ $# -gt 1 ]; #最後一個引數不使用,去除之,並保留前面的所有引數
		do
			options=(${options[@]} $1)
			shift
		done
		/usr/bin/nc ${options[@]} $addr $port
	else
		/usr/bin/nc $@
	fi
}

MySQL

mysql不帶命令列引數時,直接使用預設使用者名稱和密碼root登入MySQL命令列終端;方便快捷地進行本地開發;

mysql() {
	#hookmysql命令,使用預設使用者名稱和密碼連線本地MySQL主機
	if [ $# -eq 0 ];then
		/usr/bin/mysql -h127.0.0.1 -uroot -proot
	else
		/usr/bin/mysql $@
	fi
}

本文來自部落格園,作者:晴雲孤魂,轉載請註明原文連結:https://www.cnblogs.com/cnhack/p/15975216.html