私のshellscripts、bash拡張関数

2503 ワード

開発者として、最近会社で運営をしています.開発言語が多く使われているのか、bashを使っているのか、関数を作って使うのが好きなのか、共有して共有するのが好きなのか......
Linux関数セットのカスタマイズ
#function return value if success
export RAY_RET_SUCCESS=0
#function return value if failed
export RAY_RET_FAILED=1

# 
function IsEmpty() {
    if [ -z "$1" ]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# root 
function HasRootPremission() {
    if [ "$(id -u)" != "0" ]; then
        return $RAY_RET_FAILED
    fi

    return $RAY_RET_SUCCESS
}

# 
function IsCommandExists() {
    local CMDS
    for cmd in "$@"; do
        if ! type $cmd >/dev/null 2>&1; then
            CMDS="$CMDS $cmd"
        fi
    done

    if [ ! -z "$CMDS" ]; then
        return $RAY_RET_FAILED
    fi

    return $RAY_RET_SUCCESS
}

#  
function IsDir() {
    if [ -d "$1" ]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

#  
function IsFile() {
    if [ -f "$1" ]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# , 
function CreateFile() {
    if ! IsFile $1; then
        $RAY_SUDO mkdir -p $(dirname $1)
        $RAY_SUDO touch $1
        $RAY_SUDO chown `whoami`:`whoami` $1
    fi

    IsFile $1
    return $?
}

#  
function MakePassword() {
    if IsCommandExists openssl; then
        openssl rand -base64 18 2>/dev/null
    else
        head /dev/urandom | tr -dc 'a-zA-Z0-9/\-=[];,._+{}:<>@%^&*()' | fold -w ${1:-18} | head -n 1
    fi
}

#  shell zsh
function IsZsh() {
    if [[ `ps -p $$ -oargs=` =~ "zsh" ]]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

#  shell bash
function IsBash() {
    if [[ `ps -p $$ -oargs=` =~ "bash" ]]; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

#  ubuntu
function IsUbuntu() {
    if cat /etc/issue /etc/*-release | grep -Eqi "Ubuntu"; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

#  centos redhat
function IsRedHat() {
    if cat /etc/issue /etc/*-release | grep -Eqi "(CentOS|Red Hat Enterprise Linux Server)"; then
        return $RAY_RET_SUCCESS
    fi

    return $RAY_RET_FAILED
}

# windows pause 
function pause() {
    local key
    read -n1 -r -p "Press any key to continue..." key
    return $RAY_RET_SUCCESS
}