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

📄 shtool

📁 This program is a RADIUS RFC-compliant daemon, which is derived from original Livingston Enterprise
💻
📖 第 1 页 / 共 5 页
字号:
        groupname="`(id -gn ${username}) 2>/dev/null`"        if [ ".$groupname" = . ]; then            str="`(id) 2>/dev/null`"            if [ ".`echo $str | grep 'gid[ 	]*=[ 	]*[0-9]*('`" != . ]; then                groupname=`echo $str | sed -e 's/^.*gid[ 	]*=[ 	]*[0-9]*(//' -e 's/).*$//'`            fi            if [ ".$groupname" = . ]; then                groupname=`(getent group) 2>/dev/null | \                           grep "^[^:]*:[^:]*:${groupid}:" | \                           sed -e 's/:.*$//'`                if [ ".$groupname" = . ]; then                    groupname=`grep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \                               sed -e 's/:.*$//'`                    if [ ".$groupname" = . ]; then                        groupname=`(ypcat group) 2>/dev/null | \                                   grep "^[^:]*:[^:]*:${groupid}:" | \                                   sed -e 's/:.*$//'`                        if [ ".$groupname" = . ]; then                            groupname='?'                        fi                    fi                fi            fi        fi    fi    #   determine host and domain name    hostname=''    domainname=''    if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%h'`" != . ]; then        hostname="`(uname -n) 2>/dev/null |\                   awk '{ printf("%s", $1); }'`"        if [ ".$hostname" = . ]; then            hostname="`(hostname) 2>/dev/null |\                       awk '{ printf("%s", $1); }'`"            if [ ".$hostname" = . ]; then                hostname='unknown'            fi        fi        case $hostname in            *.* )                domainname=".`echo $hostname | cut -d. -f2-`"                hostname="`echo $hostname | cut -d. -f1`"                ;;        esac    fi    if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%d'`" != . ]; then        if [ ".$domainname" = . ]; then            if [ -f /etc/resolv.conf ]; then                domainname="`grep '^[ 	]*domain' /etc/resolv.conf | sed -e 'q' |\                             sed -e 's/.*domain//' \                                 -e 's/^[ 	]*//' -e 's/^ *//' -e 's/^	*//' \                                 -e 's/^\.//' -e 's/^/./' |\                             awk '{ printf("%s", $1); }'`"                if [ ".$domainname" = . ]; then                    domainname="`grep '^[ 	]*search' /etc/resolv.conf | sed -e 'q' |\                                 sed -e 's/.*search//' \                                     -e 's/^[ 	]*//' -e 's/^ *//' -e 's/^	*//' \                                     -e 's/ .*//' -e 's/	.*//' \                                     -e 's/^\.//' -e 's/^/./' |\                                 awk '{ printf("%s", $1); }'`"                fi            fi        fi    fi    #   determine current time    time_day=''    time_month=''    time_year=''    time_monthname=''    if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[DMYm]'`" != . ]; then        time_day=`date '+%d'`        time_month=`date '+%m'`        time_year=`date '+%Y' 2>/dev/null`        if [ ".$time_year" = . ]; then            time_year=`date '+%y'`            case $time_year in                [5-9][0-9]) time_year="19$time_year" ;;                [0-4][0-9]) time_year="20$time_year" ;;            esac        fi        case $time_month in            1|01) time_monthname='Jan' ;;            2|02) time_monthname='Feb' ;;            3|03) time_monthname='Mar' ;;            4|04) time_monthname='Apr' ;;            5|05) time_monthname='May' ;;            6|06) time_monthname='Jun' ;;            7|07) time_monthname='Jul' ;;            8|08) time_monthname='Aug' ;;            9|09) time_monthname='Sep' ;;              10) time_monthname='Oct' ;;              11) time_monthname='Nov' ;;              12) time_monthname='Dec' ;;        esac    fi    #   expand special ``%x'' constructs    if [ ".$opt_e" = .yes ]; then        text=`echo $seo "$text" |\              sed -e "s/%B/${term_bold}/g" \                  -e "s/%b/${term_norm}/g" \                  -e "s/%u/${username}/g" \                  -e "s/%U/${userid}/g" \                  -e "s/%g/${groupname}/g" \                  -e "s/%G/${groupid}/g" \                  -e "s/%h/${hostname}/g" \                  -e "s/%d/${domainname}/g" \                  -e "s/%D/${time_day}/g" \                  -e "s/%M/${time_month}/g" \                  -e "s/%Y/${time_year}/g" \                  -e "s/%m/${time_monthname}/g" 2>/dev/null`    fi    #   create output    if [ .$opt_n = .no ]; then        echo $seo "$text"    else        #   the harder part: echo -n is best, because        #   awk may complain about some \xx sequences.        if [ ".$minusn" != . ]; then            echo $seo $minusn "$text"        else            echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text"        fi    fi    shtool_exit 0    ;;mdate )    ##    ##  mdate -- Pretty-print modification time of a file or dir    ##  Copyright (c) 1995-1997 Free Software Foundation, Inc.    ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    fod="$1"    case "$opt_o" in        [dmy][dmy][dmy] )            ;;        * ) echo "$msgprefix:Error: invalid argument to option \`-o': $opt_o" 1>&2            shtool_exit 1            ;;    esac    if [ ! -r "$fod" ]; then        echo "$msgprefix:Error: file or directory not found: $fod" 1>&2        shtool_exit 1    fi    #   prevent "date" giving response in another language    LANG=C;    export LANG    LC_ALL=C;  export LC_ALL    LC_TIME=C; export LC_TIME    #   get the extended ls output of the file or directory.    if /bin/ls -L /dev/null >/dev/null 2>&1; then        set - x`/bin/ls -L -l -d $fod`    else        set - x`/bin/ls -l -d $fod`    fi    #   The month is at least the fourth argument    #   (3 shifts here, the next inside the loop).    shift; shift; shift    #   Find the month. Next argument is day, followed by the year or time.    month=""    while [ ".$month" = . ]; do        shift        case $1 in            Jan) month=January;   nummonth=1  ;;            Feb) month=February;  nummonth=2  ;;            Mar) month=March;     nummonth=3  ;;            Apr) month=April;     nummonth=4  ;;            May) month=May;       nummonth=5  ;;            Jun) month=June;      nummonth=6  ;;            Jul) month=July;      nummonth=7  ;;            Aug) month=August;    nummonth=8  ;;            Sep) month=September; nummonth=9  ;;            Oct) month=October;   nummonth=10 ;;            Nov) month=November;  nummonth=11 ;;            Dec) month=December;  nummonth=12 ;;        esac    done    day="$2"    year="$3"    #   We finally have to deal with the problem that the "ls" output    #   gives either the time of the day or the year.    case $year in        *:*)            this_year=`date '+%Y' 2>/dev/null`            if [ ".$this_year" = . ]; then                this_year=`date '+%y'`                case $this_year in                    [5-9][0-9]) this_year="19$this_year" ;;                    [0-4][0-9]) this_year="20$this_year" ;;                esac            fi            #   for the following months of the last year the time notation            #   is usually also used for files modified in the last year.            this_month=`date '+%m'`            if (expr $nummonth \> $this_month) >/dev/null; then                this_year=`expr $this_year - 1`            fi            year="$this_year"            ;;    esac    #   Optionally fill day and month with leeding zeros    if [ ".$opt_z" = .yes ]; then        case $day in            [0-9][0-9] ) ;;                 [0-9] ) day="0$day" ;;        esac        case $nummonth in            [0-9][0-9] ) ;;                 [0-9] ) nummonth="0$nummonth" ;;        esac    fi    #   Optionally use digits for month    if [ ".$opt_d" = .yes ]; then        month="$nummonth"    fi    #   Optionally shorten the month name to three characters    if [ ".$opt_s" = .yes ]; then        month=`echo $month | cut -c1-3`    fi    #   Output the resulting date string    echo dummy | awk '{        for (i = 0; i < 3; i++) {            now = substr(order, 1, 1);            order = substr(order, 2);            if (now == "d")                out = day;            else if (now == "m")                out = month;            else if (now == "y")                out = year;            if (i < 2)                printf("%s%s", out, field);            else                printf("%s", out);        }        if (newline != "yes")            printf("\n");    }' "day=$day" "month=$month" "year=$year" \       "field=$opt_f" "order=$opt_o" "newline=$opt_n"    shtool_exit 0    ;;table )    ##    ##  table -- Pretty-print a field-separated list as a table    ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    if [ $opt_c -gt 4 ]; then        echo "$msgprefix:Error: Invalid number of colums (1..4 allowed only)" 1>&2        shtool_exit 1    fi    case "x$opt_F" in        x? ) ;;        *  ) echo "$msgprefix:Error: Invalid separator (one char allowed only)" 1>&2; shtool_exit 1 ;;    esac    #   split the list into a table    list=`        IFS="$opt_F"        for entry in $*; do            if [ ".$entry" != . ]; then                echo "$entry"            fi        done |\        awk "            BEGIN { list = \"\"; n = 0; }            {                list = list \\$1;                n = n + 1;                if (n < $opt_c) {                    list = list \":\";                }                if (n == $opt_c) {                    list = list \"\\n\";                    n = 0;                }            }            END { print list; }         "    `    #   format table cells and make sure table    #   doesn't exceed maximum width    OIFS="$IFS"    IFS=''    for entry in $list; do        case $opt_c in            1 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s\\n\", \$1); }'" ;;            2 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s\\n\", \$1, \$2); }'" ;;            3 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3); }'" ;;            4 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3, \$4); }'" ;;        esac    done |\    awk "{        if (length(\$0) > $opt_s) {            printf(\"%s\\n\", substr(\$0, 0, $opt_s-1));        } else {            print \$0;        }    }"    IFS="$OIFS"    shtool_exit 0    ;;prop )    ##    ##  prop -- Display progress with a running propeller    ##  Copyright (c) 1998-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    perl=''    for dir in `echo $PATH | sed -e 's/:/ /g'` .; do        if [ -f "$dir/perl" ]; then            perl="$dir/perl"            break        fi    done    if [ ".$perl" != . ]; then        #   Perl is preferred because writing to STDERR in        #   Perl really writes immediately as one would expect        $perl -e '            @p = ("|","/","-","\\");            $i = 0;            while (<STDIN>) {                printf(STDERR "\r%s...%s\b", $ARGV[0], $p[$i++]);                $i = 0 if ($i > 3);            }            printf(STDERR "\r%s    \n", $ARGV[0]);        ' "$opt_p"    else        #   But if Perl doesn't exists we use Awk even        #   some Awk's buffer even the /dev/stderr writing :-(        awk '            BEGIN {                split("|#/#-#\\", p, "#");                i = 1;            }            {                printf("\r%s%c\b", prefix, p[i++]) > "/dev/stderr";                if (i > 4) { i = 1; }            }            END {                printf("\r%s    \n", prefix) > "/dev/stderr";            }        ' "prefix=$opt_p"    fi    shtool_exit 0    ;;move )    ##    ##  move -- Move files with simultaneous substitution    ##  Copyright (c) 1999-2004 Ralf S. Engelschall <rse@engelschall.com>    ##    src="$1"    dst="$2"    #   consistency checks    if [ ".$src" = . ] || [ ".$dst" = . ]; then        echo "$msgprefix:Error: Invalid arguments" 1>&2        shtool_exit 1    fi    if [ ".$src" = ".$dst" ]; then        echo "$msgprefix:Error: Source and destination files are the same" 1>&2        shtool_exit 1    fi    expsrc="$src"    if [ ".$opt_e" = .yes ]; then        expsrc="`echo $expsrc`"

⌨️ 快捷键说明

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