⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shtool

📁 This program is a RADIUS RFC-compliant daemon, which is derived from original Livingston Enterprise
💻
📖 第 1 页 / 共 5 页
字号:
    fi    if [ ".$opt_e" = .yes ]; then        if [ ".`echo "$src" | sed -e 's;^.*\\*.*$;;'`" = ".$src" ]; then            echo "$msgprefix:Error: Source doesn't contain wildcard ('*'): $dst" 1>&2            shtool_exit 1        fi        if [ ".`echo "$dst" | sed -e 's;^.*%[1-9].*$;;'`" = ".$dst" ]; then            echo "$msgprefix:Error: Destination doesn't contain substitution ('%N'): $dst" 1>&2            shtool_exit 1        fi        if [ ".$expsrc" = ".$src" ]; then            echo "$msgprefix:Error: Sources not found or no asterisk : $src" 1>&2            shtool_exit 1        fi    else        if [ ! -r "$src" ]; then            echo "$msgprefix:Error: Source not found: $src" 1>&2            shtool_exit 1        fi    fi    #   determine substitution patterns    if [ ".$opt_e" = .yes ]; then        srcpat=`echo "$src" | sed -e 's/\\./\\\\./g' -e 's/;/\\;/g' -e 's;\\*;\\\\(.*\\\\);g'`        dstpat=`echo "$dst" | sed -e 's;%\([1-9]\);\\\\\1;g'`    fi    #   iterate over source(s)    for onesrc in $expsrc; do        if [ .$opt_e = .yes ]; then            onedst=`echo $onesrc | sed -e "s;$srcpat;$dstpat;"`        else            onedst="$dst"        fi        errorstatus=0        if [ ".$opt_v" = .yes ]; then            echo "$onesrc -> $onedst"        fi        if [ ".$opt_p" = .yes ]; then            if [ -r $onedst ]; then                if cmp -s $onesrc $onedst; then                    if [ ".$opt_t" = .yes ]; then                        echo "rm -f $onesrc" 1>&2                    fi                    rm -f $onesrc || errorstatus=$?                else                    if [ ".$opt_t" = .yes ]; then                        echo "mv -f $onesrc $onedst" 1>&2                    fi                    mv -f $onesrc $onedst || errorstatus=$?                fi            else                if [ ".$opt_t" = .yes ]; then                    echo "mv -f $onesrc $onedst" 1>&2                fi                mv -f $onesrc $onedst || errorstatus=$?            fi        else            if [ ".$opt_t" = .yes ]; then                echo "mv -f $onesrc $onedst" 1>&2            fi            mv -f $onesrc $onedst || errorstatus=$?        fi        if [ $errorstatus -ne 0 ]; then            break;        fi    done    shtool_exit $errorstatus    ;;install )    ##    ##  install -- Install a program, script or datafile    ##  Copyright (c) 1997-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    #   special case: "shtool install -d <dir> [...]" internally    #   maps to "shtool mkdir -f -p -m 755 <dir> [...]"    if [ "$opt_d" = yes ]; then        cmd="$0 mkdir -f -p -m 755"        if [ ".$opt_o" != . ]; then            cmd="$cmd -o '$opt_o'"        fi        if [ ".$opt_g" != . ]; then            cmd="$cmd -g '$opt_g'"        fi        if [ ".$opt_v" = .yes ]; then            cmd="$cmd -v"        fi        if [ ".$opt_t" = .yes ]; then            cmd="$cmd -t"        fi        for dir in "$@"; do            eval "$cmd $dir" || shtool_exit $?        done        shtool_exit 0    fi    #   determine source(s) and destination    argc=$#    srcs=""    while [ $# -gt 1 ]; do        srcs="$srcs $1"        shift    done    dstpath="$1"    #   type check for destination    dstisdir=0    if [ -d $dstpath ]; then        dstpath=`echo "$dstpath" | sed -e 's:/$::'`        dstisdir=1    fi    #   consistency check for destination    if [ $argc -gt 2 ] && [ $dstisdir = 0 ]; then        echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2        shtool_exit 1    fi    #   iterate over all source(s)    for src in $srcs; do        dst=$dstpath        #   if destination is a directory, append the input filename        if [ $dstisdir = 1 ]; then            dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'`            dst="$dst/$dstfile"        fi        #   check for correct arguments        if [ ".$src" = ".$dst" ]; then            echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2            continue        fi        if [ -d "$src" ]; then            echo "$msgprefix:Warning: source \`$src' is a directory - skipped" 1>&2            continue        fi        #   make a temp file name in the destination directory        dsttmp=`echo $dst |\                sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \                    -e "s;\$;/#INST@$$#;"`        #   verbosity        if [ ".$opt_v" = .yes ]; then            echo "$src -> $dst" 1>&2        fi        #   copy or move the file name to the temp name        #   (because we might be not allowed to change the source)        if [ ".$opt_C" = .yes ]; then            opt_c=yes        fi        if [ ".$opt_c" = .yes ]; then            if [ ".$opt_t" = .yes ]; then                echo "cp $src $dsttmp" 1>&2            fi            cp $src $dsttmp || shtool_exit $?        else            if [ ".$opt_t" = .yes ]; then                echo "mv $src $dsttmp" 1>&2            fi            mv $src $dsttmp || shtool_exit $?        fi        #   adjust the target file        if [ ".$opt_e" != . ]; then            sed='sed'            OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS"            for e            do                sed="$sed -e '$e'"            done            cp $dsttmp $dsttmp.old            chmod u+w $dsttmp            eval "$sed <$dsttmp.old >$dsttmp" || shtool_exit $?            rm -f $dsttmp.old        fi        if [ ".$opt_s" = .yes ]; then            if [ ".$opt_t" = .yes ]; then                echo "strip $dsttmp" 1>&2            fi            strip $dsttmp || shtool_exit $?        fi        if [ ".$opt_o" != . ]; then            if [ ".$opt_t" = .yes ]; then                echo "chown $opt_o $dsttmp" 1>&2            fi            chown $opt_o $dsttmp || shtool_exit $?        fi        if [ ".$opt_g" != . ]; then            if [ ".$opt_t" = .yes ]; then                echo "chgrp $opt_g $dsttmp" 1>&2            fi            chgrp $opt_g $dsttmp || shtool_exit $?        fi        if [ ".$opt_m" != ".-" ]; then            if [ ".$opt_t" = .yes ]; then                echo "chmod $opt_m $dsttmp" 1>&2            fi            chmod $opt_m $dsttmp || shtool_exit $?        fi        #   determine whether to do a quick install        #   (has to be done _after_ the strip was already done)        quick=no        if [ ".$opt_C" = .yes ]; then            if [ -r $dst ]; then                if cmp -s $src $dst; then                    quick=yes                fi            fi        fi        #   finally, install the file to the real destination        if [ $quick = yes ]; then            if [ ".$opt_t" = .yes ]; then                echo "rm -f $dsttmp" 1>&2            fi            rm -f $dsttmp        else            if [ ".$opt_t" = .yes ]; then                echo "rm -f $dst && mv $dsttmp $dst" 1>&2            fi            rm -f $dst && mv $dsttmp $dst        fi    done    shtool_exit 0    ;;mkdir )    ##    ##  mkdir -- Make one or more directories    ##  Copyright (c) 1996-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    errstatus=0    for p in ${1+"$@"}; do        #   if the directory already exists...        if [ -d "$p" ]; then            if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then                echo "$msgprefix:Error: directory already exists: $p" 1>&2                errstatus=1                break            else                continue            fi        fi        #   if the directory has to be created...        if [ ".$opt_p" = .no ]; then            if [ ".$opt_t" = .yes ]; then                echo "mkdir $p" 1>&2            fi            mkdir $p || errstatus=$?            if [ ".$opt_o" != . ]; then                if [ ".$opt_t" = .yes ]; then                    echo "chown $opt_o $p" 1>&2                fi                chown $opt_o $p || errstatus=$?            fi            if [ ".$opt_g" != . ]; then                if [ ".$opt_t" = .yes ]; then                    echo "chgrp $opt_g $p" 1>&2                fi                chgrp $opt_g $p || errstatus=$?            fi            if [ ".$opt_m" != . ]; then                if [ ".$opt_t" = .yes ]; then                    echo "chmod $opt_m $p" 1>&2                fi                chmod $opt_m $p || errstatus=$?            fi        else            #   the smart situation            set fnord `echo ":$p" |\                       sed -e 's/^:\//%/' \                           -e 's/^://' \                           -e 's/\// /g' \                           -e 's/^%/\//'`            shift            pathcomp=''            for d in ${1+"$@"}; do                pathcomp="$pathcomp$d"                case "$pathcomp" in                    -* ) pathcomp="./$pathcomp" ;;                esac                if [ ! -d "$pathcomp" ]; then                    if [ ".$opt_t" = .yes ]; then                        echo "mkdir $pathcomp" 1>&2                    fi                    mkdir $pathcomp || errstatus=$?                    if [ ".$opt_o" != . ]; then                        if [ ".$opt_t" = .yes ]; then                            echo "chown $opt_o $pathcomp" 1>&2                        fi                        chown $opt_o $pathcomp || errstatus=$?                    fi                    if [ ".$opt_g" != . ]; then                        if [ ".$opt_t" = .yes ]; then                            echo "chgrp $opt_g $pathcomp" 1>&2                        fi                        chgrp $opt_g $pathcomp || errstatus=$?                    fi                    if [ ".$opt_m" != . ]; then                        if [ ".$opt_t" = .yes ]; then                            echo "chmod $opt_m $pathcomp" 1>&2                        fi                        chmod $opt_m $pathcomp || errstatus=$?                    fi                fi                pathcomp="$pathcomp/"            done        fi    done    shtool_exit $errstatus    ;;mkln )    ##    ##  mkln -- Make link with calculation of relative paths    ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    #   determine source(s) and destination    args=$?    srcs=""    while [ $# -gt 1 ]; do        srcs="$srcs $1"        shift    done    dst="$1"    if [ ! -d $dst ]; then        if [ $args -gt 2 ]; then            echo "$msgprefix:Error: multiple sources not allowed when target isn't a directory" 1>&2            shtool_exit 1        fi    fi    #   determine link options    lnopt=""    if [ ".$opt_f" = .yes ]; then        lnopt="$lnopt -f"    fi    if [ ".$opt_s" = .yes ]; then        lnopt="$lnopt -s"    fi    #   iterate over sources    for src in $srcs; do        #   determine if one of the paths is an absolute path,        #   because then we _have_ to use an absolute symlink        oneisabs=0        srcisabs=0        dstisabs=0        case $src in            /* ) oneisabs=1; srcisabs=1 ;;        esac        case $dst in            /* ) oneisabs=1; dstisabs=1 ;;        esac        #   split source and destination into dir and base name        if [ -d $src ]; then            srcdir=`echo $src | sed -e 's;/*$;;'`            srcbase=""        else            srcdir=`echo  $src | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'`            srcbase=`echo $src | sed -e 's;.*/\([^/]*\)$;\1;'`        fi        if [ -d $dst ]; then            dstdir=`echo $dst | sed -e 's;/*$;;'`            dstbase=""        else            dstdir=`echo  $dst | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'`            dstbase=`echo $dst | sed -e 's;.*/\([^/]*\)$;\1;'`        fi        #   consistency check        if [ ".$dstdir" != . ]; then            if [ ! -d $dstdir ]; then                echo "$msgprefix:Error: destination directory not found: $dstdir" 1>&2                shtool_exit 1            fi        fi

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -