shtool
来自「lzo-1.08-src.zip 高效的压缩解压代码」· 代码 · 共 1,936 行 · 第 1/5 页
TXT
1,936 行
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 ;;mdate ) ## ## mdate -- Pretty-print modification time of a file or dir ## Copyright (c) 1995-1997 Free Software Foundation, Inc. ## Originally idea and basis code by Ulrich Drepper ## Enhanced by Ralf S. Engelschall for shtool ## fod="$1" case "$opt_o" in [dmy][dmy][dmy] ) ;; * ) echo "$msgprefix:Error: invalid argument to option \`-o': $opt_o" 1>&2 exit 1 ;; esac if [ ! -r "$fod" ]; then echo "$msgprefix:Error: file or directory not found: $fod" 1>&2 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 ls -L /dev/null >/dev/null 2>&1; then set - x`ls -L -l -d $fod` else set - x`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" ;;table ) ## ## table -- Pretty-print a field-separated list as a table ## Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com> ## Originally written for Apache ## if [ $opt_c -gt 4 ]; then echo "$msgprefix:Error: Invalid number of colums (1..4 allowed only)" 1>&2 exit 1 fi case "x$opt_F" in x? ) ;; * ) echo "$msgprefix:Error: Invalid separator (one char allowed only)" 1>&2; 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" ;;prop ) ## ## prop -- Display progress with a running propeller ## Copyright (c) 1998-2002 Ralf S. Engelschall <rse@engelschall.com> ## Originally written for mod_ssl ## 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 ;;move ) ## ## move -- Move files with simultaneous substitution ## Copyright (c) 1999-2002 Ralf S. Engelschall <rse@engelschall.com> ## Originally written for shtool ## src="$1" dst="$2" # consistency checks if [ ".$src" = . -o ".$dst" = . ]; then echo "$msgprefix:Error: Invalid arguments" 1>&2 exit 1 fi if [ ".$src" = ".$dst" ]; then echo "$msgprefix:Error: Source and destination files are the same" 1>&2 exit 1 fi expsrc="$src" if [ ".$opt_e" = .yes ]; then expsrc="`echo $expsrc`" 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 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 exit 1 fi if [ ".$expsrc" = ".$src" ]; then echo "$msgprefix:Error: Sources not found or no asterisk : $src" 1>&2 exit 1 fi else if [ ! -r "$src" ]; then echo "$msgprefix:Error: Source not found: $src" 1>&2 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 exit $errorstatus ;;install ) ## ## install -- Install a program, script or datafile ## Copyright (c) 1997-2002 Ralf S. Engelschall <rse@engelschall.com> ## Originally written for shtool ## # determine source(s) and destination argc=$# srcs="" while [ $# -gt 1 ]; do srcs="$srcs $1" shift done dstpath="$1"
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?