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

📄 shtool

📁 linux下的E_MAIL客户端源码
💻
📖 第 1 页 / 共 2 页
字号:
#!/bin/sh####  GNU shtool -- The GNU Portable Shell Tool##  Copyright (c) 1994-2000 Ralf S. Engelschall <rse@engelschall.com>####  See http://www.gnu.org/software/shtool/ for more information.##  See ftp://ftp.gnu.org/gnu/shtool/ for latest version.####  Version:  1.5.1 (29-Jul-2000)##  Contents: 3/17 available modules######  This program is free software; you can redistribute it and/or modify##  it under the terms of the GNU General Public License as published by##  the Free Software Foundation; either version 2 of the License, or##  (at your option) any later version.####  This program is distributed in the hope that it will be useful,##  but WITHOUT ANY WARRANTY; without even the implied warranty of##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU##  General Public License for more details.####  You should have received a copy of the GNU General Public License##  along with this program; if not, write to the Free Software##  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,##  USA, or contact Ralf S. Engelschall <rse@engelschall.com>.####  Notice: Given that you include this file verbatim into your own##  source tree, you are justified in saying that it remains separate##  from your package, and that this way you are simply just using GNU##  shtool. So, in this situation, there is no requirement that your##  package itself is licensed under the GNU General Public License in##  order to take advantage of GNU shtool.######  Usage: shtool [<options>] [<cmd-name> [<cmd-options>] [<cmd-args>]]####  Available commands:##    install    Install a program, script or datafile##    mkdir      Make one or more directories##    mkshadow   Make a shadow tree through symbolic links####  Not available commands (because module was not built-in):##    echo       Print string with optional construct expansion##    mdate      Pretty-print modification time of a file or dir##    table      Pretty-print a field-separated list as a table##    prop       Display progress with a running propeller##    move       Move files with simultaneous substitution##    mkln       Make link with calculation of relative paths##    fixperm    Fix file permissions inside a source tree##    tarball    Roll distribution tarballs##    guessos    Simple operating system guesser##    arx        Extended archive command##    slo        Separate linker options by library class##    scpp       Sharing C Pre-Processor##    version    Maintain a version information file##    path       Deal with program paths##if [ $# -eq 0 ]; then    echo "$0:Error: invalid command line" 1>&2    echo "$0:Hint:  run \`$0 -h' for usage" 1>&2    exit 1fiif [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then    echo "This is GNU shtool, version 1.5.1 (29-Jul-2000)"    echo "Copyright (c) 1994-2000 Ralf S. Engelschall <rse@engelschall.com>"    echo "Report bugs to <bug-shtool@gnu.org>"    echo ''    echo "Usage: shtool [<options>] [<cmd-name> [<cmd-options>] [<cmd-args>]]"     echo ''    echo 'Available global <options>:'    echo '  -v, --version   display shtool version information'    echo '  -h, --help      display shtool usage help page (this one)'    echo '  -d, --debug     display shell trace information'    echo '  -r, --recreate  recreate this shtool script via shtoolize'    echo ''    echo 'Available <cmd-name> [<cmd-options>] [<cmd-args>]:'    echo '  install  [-v] [-t] [-c] [-C] [-s] [-m<mode>] [-o<owner>] [-g<group>]'    echo '           [-e<ext>] <file> [<file> ...] <path>'    echo '  mkdir    [-t] [-f] [-p] [-m<mode>] <dir> [<dir> ...]'    echo '  mkshadow [-v] [-t] [-a] <src-dir> <dst-dir>'    echo ''    echo 'Not available <cmd-name> (because module was not built-in):'    echo '  echo     [-n] [-e] [<str> ...]'    echo '  mdate    [-n] [-z] [-s] [-d] [-f<str>] [-o<spec>] <path>'    echo '  table    [-F<sep>] [-w<width>] [-c<cols>] [-s<strip>] <str><sep><str>...'    echo '  prop     [-p<str>]'    echo '  move     [-v] [-t] [-e] [-p] <src-file> <dst-file>'    echo '  mkln     [-t] [-f] [-s] <src-path> [<src-path> ...] <dst-path>'    echo '  fixperm  [-v] [-t] <path> [<path> ...]'    echo '  tarball  [-t] [-v] [-o <tarball>] [-c <prog>] [-d <dir>] [-u'    echo '           <user>] [-g <group>] [-e <pattern>] <path> [<path> ...]'    echo '  guessos  '    echo '  arx      [-t] [-C<cmd>] <op> <archive> [<file> ...]'    echo '  slo      [-p<str>] -- -L<dir> -l<lib> [-L<dir> -l<lib> ...]'    echo '  scpp     [-v] [-p] [-f<filter>] [-o<ofile>] [-t<tfile>] [-M<mark>]'    echo '           [-D<dname>] [-C<cname>] <file> [<file> ...]'    echo '  version  [-l<lang>] [-n<name>] [-p<prefix>] [-s<version>] [-e]'    echo '           [-i<knob>] [-d<type>] <file>'    echo '  path     [-s] [-r] [-d] [-b] [-m] [-p<path>] <str> [<str> ...]'    echo ''    exit 0fiif [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then    echo "GNU shtool 1.5.1 (29-Jul-2000)"    exit 0fiif [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then    shtoolize -oshtool install mkdir mkshadow    exit 0fiif [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then    shift    set -xfiname=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'`case "$name" in    install|mkdir|mkshadow )        #   implicit tool command selection        tool="$name"        ;;    * )        #   explicit tool command selection        tool="$1"        shift        ;;esacarg_spec=""opt_spec=""gen_tmpfile=no####  DISPATCH INTO SCRIPT PROLOG##case $tool in    install )        str_tool="install"        str_usage="[-v] [-t] [-c] [-C] [-s] [-m<mode>] [-o<owner>] [-g<group>] [-e<ext>] <file> [<file> ...] <path>"        arg_spec="2+"        opt_spec="v.t.c.C.s.m:o:g:e:"        opt_v=no        opt_t=no        opt_c=no        opt_C=no        opt_s=no        opt_m=""        opt_o=""        opt_g=""        opt_e=""        ;;    mkdir )        str_tool="mkdir"        str_usage="[-t] [-f] [-p] [-m<mode>] <dir> [<dir> ...]"        arg_spec="1+"        opt_spec="t.f.p.m:"        opt_t=no        opt_f=no        opt_p=no        opt_m=""        ;;    mkshadow )        str_tool="mkshadow"        str_usage="[-v] [-t] [-a] <src-dir> <dst-dir>"        arg_spec="2="        opt_spec="v.t.a."        opt_v=no        opt_t=no        opt_a=no        ;;    -* )        echo "$0:Error: unknown option \`$tool'" 2>&1        echo "$0:Hint:  run \`$0 -h' for usage" 2>&1        exit 1        ;;    * )        echo "$0:Error: unknown command \`$tool'" 2>&1        echo "$0:Hint:  run \`$0 -h' for usage" 2>&1        exit 1        ;;esac####  COMMON UTILITY CODE###   determine name of toolif [ ".$tool" != . ]; then    #   used inside shtool script    toolcmd="$0 $tool"    toolcmdhelp="shtool $tool"    msgprefix="shtool:$tool"else    #   used as standalone script    toolcmd="$0"    toolcmdhelp="sh $0"    msgprefix="$str_tool"fi#   parse argument specification stringeval `echo $arg_spec |\      sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'`#   parse option specification stringeval `echo h.$opt_spec |\      sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'`#   interate over argument lineopt_PREV=''while [ $# -gt 0 ]; do    #   special option stops processing    if [ ".$1" = ".--" ]; then        shift        break    fi    #   determine option and argument    opt_ARG_OK=no    if [ ".$opt_PREV" != . ]; then        #   merge previous seen option with argument        opt_OPT="$opt_PREV"        opt_ARG="$1"        opt_ARG_OK=yes        opt_PREV=''    else        #   split argument into option and argument        case "$1" in            -[a-zA-Z0-9]*)                eval `echo "x$1" |\                      sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \                          -e 's/";\(.*\)$/"; opt_ARG="\1"/'`                ;;            -[a-zA-Z0-9])                opt_OPT=`echo "x$1" | cut -c3-`                opt_ARG=''                ;;            *)                break                ;;        esac    fi    #   eat up option    shift    #   determine whether option needs an argument    eval "opt_MODE=\$opt_MODE_${opt_OPT}"    if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then        if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then            opt_PREV="$opt_OPT"            continue        fi    fi    #   process option    case $opt_MODE in        '.' )            #   boolean option            eval "opt_${opt_OPT}=yes"            ;;        ':' )            #   option with argument (multiple occurances override)            eval "opt_${opt_OPT}=\"\$opt_ARG\""            ;;        '+' )            #   option with argument (multiple occurances append)            eval "opt_${opt_OPT}=\"\$opt_${opt_OPT} \$opt_ARG\""            ;;        * )            echo "$msgprefix:Error: unknown option: \`-$opt_OPT'" 1>&2            echo "$msgprefix:Hint:  run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2            exit 1            ;;    esacdoneif [ ".$opt_PREV" != . ]; then    echo "$msgprefix:Error: missing argument to option \`-$opt_PREV'" 1>&2    echo "$msgprefix:Hint:  run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2    exit 1fi#   process help optionif [ ".$opt_h" = .yes ]; then    echo "Usage: $toolcmdhelp $str_usage"    exit 0fi#   complain about incorrect number of argumentscase $arg_MODE in    '=' )        if [ $# -ne $arg_NUMS ]; then            echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2            echo "$msgprefix:Hint:  run \`$toolcmd -h' or \`man shtool' for details" 1>&2            exit 1        fi        ;;    '+' )        if [ $# -lt $arg_NUMS ]; then            echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2            echo "$msgprefix:Hint:  run \`$toolcmd -h' or \`man shtool' for details" 1>&2            exit 1        fi        ;;esac#   establish a temporary file on requestif [ ".$gen_tmpfile" = .yes ]; then    if [ ".$TMPDIR" != . ]; then        tmpdir="$TMPDIR"    elif [ ".$TEMPDIR" != . ]; then        tmpdir="$TEMPDIR"    else        tmpdir="/tmp"    fi    tmpfile="$tmpdir/.shtool.$$"    rm -f $tmpfile >/dev/null 2>&1    touch $tmpfilefi####  DISPATCH INTO SCRIPT BODY

⌨️ 快捷键说明

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