📄 shtool
字号:
#!/bin/sh#### GNU shtool -- The GNU Portable Shell Tool## Copyright (c) 1994-2002 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.6.0 (01-Feb-2002)## Contents: all 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:## 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## install Install a program, script or datafile## mkdir Make one or more directories## mkln Make link with calculation of relative paths## mkshadow Make a shadow tree through symbolic links## fixperm Fix file permissions inside a source tree## rotate Logfile rotation## tarball Roll distribution tarballs## subst Apply sed(1) substitution operations## 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.6.0 (01-Feb-2002)" echo "Copyright (c) 1994-2002 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 ' echo [-n|--newline] [-e|--expand] [<str> ...]' echo ' mdate [-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits]' echo ' [-f|--field-sep <str>] [-o|--order <spec>] <path>' echo ' table [-F|--field-sep <sep>] [-w|--width <width>] [-c|--columns' echo ' <cols>] [-s|--strip <strip>] <str><sep><str>...' echo ' prop [-p|--prefix <str>]' echo ' move [-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve]' echo ' <src-file> <dst-file>' echo ' install [-v|--verbose] [-t|--trace] [-c|--copy] [-C|--compare-copy]' echo ' [-s|--strip] [-m|--mode <mode>] [-o|--owner <owner>]' echo ' [-g|--group <group>] [-e|--exec <sed-cmd>] <file> [<file>' echo ' ...] <path>' echo ' mkdir [-t|--trace] [-f|--force] [-p|--parents] [-m|--mode' echo ' <mode>] <dir> [<dir> ...]' echo ' mkln [-t|--trace] [-f|--force] [-s|--symbolic] <src-path>' echo ' [<src-path> ...] <dst-path>' echo ' mkshadow [-v|--verbose] [-t|--trace] [-a|--all] <src-dir> <dst-dir>' echo ' fixperm [-v|--verbose] [-t|--trace] <path> [<path> ...]' echo ' rotate [-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files' echo ' <count>] [-s|--min-size <size>] [-c|--copy] [-r|--remove]' echo ' [-a|--archive-dir <dir>] [-z|--compress [<tool>:]<level>]' echo ' [-b|--background] [-d|--delay] [-p|--pad <len>] [-o|--owner' echo ' <owner>] [-g|--group <group>] [-m|--mode <mode>] [-M|--migrate' echo ' <cmd>] [-P|--prolog <cmd>] [-E|--epilog <cmd>] <file> [...]' echo ' tarball [-t|--trace] [-v|--verbose] [-o|--output <tarball>]' echo ' [-c|--compress <prog>] [-d|--directory <dir>] [-u|--user' echo ' <user>] [-g|--group <group>] [-e|--exclude <pattern>]' echo ' <path> [<path> ...]' echo ' subst [-v|--verbose] [-t|--trace] [-n|--nop] [-s|--stealth]' echo ' [-i|--interactive] [-b|--backup <ext>] [-e|--exec <cmd>]' echo ' [-f|--file <cmd-file>] [<file>] [...]' echo ' guessos ' echo ' arx [-t|--trace] [-C|--command <cmd>] <op> <archive> [<file>' echo ' ...]' echo ' slo [-p|--prefix <str>] -- -L<dir> -l<lib> [-L<dir> -l<lib>' echo ' ...]' echo ' scpp [-v|--verbose] [-p|--preserve] [-f|--filter <filter>]' echo ' [-o|--output <ofile>] [-t|--template <tfile>] [-M|--mark' echo ' <mark>] [-D|--define <dname>] [-C|--class <cname>]' echo ' <file> [<file> ...]' echo ' version [-l|--language <lang>] [-n|--name <name>] [-p|--prefix' echo ' <prefix>] [-s|--set <version>] [-e|--edit] [-i|--increase' echo ' <knob>] [-d|--display <type>] <file>' echo ' path [-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename]' echo ' [-m|--magic] [-p|--path <path>] <str> [<str> ...]' echo '' exit 0fiif [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then echo "GNU shtool 1.6.0 (01-Feb-2002)" exit 0fiif [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then shtoolize -oshtool all 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 echo|mdate|table|prop|move|install|mkdir|mkln|mkshadow|fixperm|rotate|tarball|subst|guessos|arx|slo|scpp|version|path ) # 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 echo ) str_tool="echo" str_usage="[-n|--newline] [-e|--expand] [<str> ...]" arg_spec="0+" opt_spec="n.e." opt_alias="n:newline,e:expand" opt_n=no opt_e=no ;; mdate ) str_tool="mdate" str_usage="[-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits] [-f|--field-sep <str>] [-o|--order <spec>] <path>" arg_spec="1=" opt_spec="n.z.s.d.f:o:" opt_alias="n:newline,z:zero,s:shorten,d:digits,f:field-sep,o:order" opt_n=no opt_z=no opt_s=no opt_d=no opt_f=" " opt_o="dmy" ;; table ) str_tool="table" str_usage="[-F|--field-sep <sep>] [-w|--width <width>] [-c|--columns <cols>] [-s|--strip <strip>] <str><sep><str>..." arg_spec="1+" opt_spec="F:w:c:s:" opt_alias="F:field-sep,w:width,c:columns,s:strip" opt_F=":" opt_w=15 opt_c=3 opt_s=79 ;; prop ) str_tool="prop" str_usage="[-p|--prefix <str>]" arg_spec="0=" opt_spec="p:" opt_alias="p:prefix" opt_p="" ;; move ) str_tool="move" str_usage="[-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve] <src-file> <dst-file>" arg_spec="2=" opt_spec="v.t.e.p." opt_alias="v:verbose,t:trace,e:expand,p:preserve" opt_v=no opt_t=no opt_e=no opt_p=no ;; install ) str_tool="install" str_usage="[-v|--verbose] [-t|--trace] [-c|--copy] [-C|--compare-copy] [-s|--strip] [-m|--mode <mode>] [-o|--owner <owner>] [-g|--group <group>] [-e|--exec <sed-cmd>] <file> [<file> ...] <path>" arg_spec="2+" opt_spec="v.t.c.C.s.m:o:g:e+" opt_alias="v:verbose,t:trace,c:copy,C:compare-copy,s:strip,m:mode,o:owner,g:group,e:exec" opt_v=no opt_t=no opt_c=no opt_C=no opt_s=no opt_m="0755" opt_o="" opt_g="" opt_e="" ;; mkdir ) str_tool="mkdir" str_usage="[-t|--trace] [-f|--force] [-p|--parents] [-m|--mode <mode>] <dir> [<dir> ...]" arg_spec="1+" opt_spec="t.f.p.m:" opt_alias="t:trace,f:force,p:parents,m:mode" opt_t=no opt_f=no opt_p=no opt_m="" ;; mkln ) str_tool="mkln" str_usage="[-t|--trace] [-f|--force] [-s|--symbolic] <src-path> [<src-path> ...] <dst-path>" arg_spec="2+" opt_spec="t.f.s." opt_alias="t:trace,f:force,s:symbolic" opt_t=no opt_f=no opt_s=no ;; mkshadow ) str_tool="mkshadow" str_usage="[-v|--verbose] [-t|--trace] [-a|--all] <src-dir> <dst-dir>" arg_spec="2=" opt_spec="v.t.a." opt_alias="v:verbose,t:trace,a:all" opt_v=no opt_t=no opt_a=no ;; fixperm ) str_tool="fixperm" str_usage="[-v|--verbose] [-t|--trace] <path> [<path> ...]" arg_spec="1+" opt_spec="v.t." opt_alias="v:verbose,t:trace" opt_v=no opt_t=no ;; rotate ) str_tool="rotate" str_usage="[-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files <count>] [-s|--min-size <size>] [-c|--copy] [-r|--remove] [-a|--archive-dir <dir>] [-z|--compress [<tool>:]<level>] [-b|--background] [-d|--delay] [-p|--pad <len>] [-o|--owner <owner>] [-g|--group <group>] [-m|--mode <mode>] [-M|--migrate <cmd>] [-P|--prolog <cmd>] [-E|--epilog <cmd>] <file> [...]" arg_spec="1+" opt_spec="v.t.f.n:s:c.r.a:z:b.d.p:o:g:m:M:P:E:" opt_alias="v:verbose,t:trace,f:force,n:num-files,s:size,m:min-size,c:copy,r:remove,a:archive-dir,z:compress,b:background,d:delay,p:pad,o:owner,g:group,m:mode,M:migrate,P:prolog,E:epilog" opt_v=no opt_t=no opt_f=no opt_n=10 opt_s="" opt_c=no opt_r=no opt_a="" opt_z="" opt_b=no opt_d=no opt_p=1 opt_o="" opt_g="" opt_m="" opt_M="" opt_P="" opt_E="" ;; tarball ) str_tool="tarball" str_usage="[-t|--trace] [-v|--verbose] [-o|--output <tarball>] [-c|--compress <prog>] [-d|--directory <dir>] [-u|--user <user>] [-g|--group <group>] [-e|--exclude <pattern>] <path> [<path> ...]" gen_tmpfile=yes arg_spec="1+" opt_spec="t.v.o:c:d:u:g:e:" opt_alias="t:trace,v:verbose,o:output,c:compress,d:directory,u:user,g:group,e:exclude" opt_t=no opt_v=no opt_o="" opt_c="" opt_d="" opt_u="" opt_g="" opt_e="CVS,\\.cvsignore,\\.[oa]\$" ;; subst ) str_tool="subst" str_usage="[-v|--verbose] [-t|--trace] [-n|--nop] [-s|--stealth] [-i|--interactive] [-b|--backup <ext>] [-e|--exec <cmd>] [-f|--file <cmd-file>] [<file>] [...]" gen_tmpfile=yes arg_spec="0+" opt_spec="v.t.n.s.i.b:e+f:" opt_alias="v:verbose,t:trace,n:nop,s:stealth,i:interactive,b:backup,e:exec,f:file" opt_v=no opt_t=no opt_n=no opt_s=no opt_i=no opt_b="" opt_e="" opt_f="" ;; guessos ) str_tool="guessos" str_usage="" arg_spec="0=" opt_spec="" opt_alias="" ;; arx ) str_tool="arx" str_usage="[-t|--trace] [-C|--command <cmd>] <op> <archive> [<file> ...]" arg_spec="2+" opt_spec="t.C:" opt_alias="t:trace,C:command" opt_t=no opt_C="ar" ;; slo ) str_tool="slo" str_usage="[-p|--prefix <str>] -- -L<dir> -l<lib> [-L<dir> -l<lib> ...]" arg_spec="1+" opt_spec="p:" opt_alias="p:prefix" opt_p="SLO_" ;; scpp ) str_tool="scpp" str_usage="[-v|--verbose] [-p|--preserve] [-f|--filter <filter>] [-o|--output <ofile>] [-t|--template <tfile>] [-M|--mark <mark>] [-D|--define <dname>] [-C|--class <cname>] <file> [<file> ...]" gen_tmpfile=yes arg_spec="1+" opt_spec="v.p.f+o:t:M:D:C:" opt_alias="v:verbose,p:preserve,f:filter,o:output,t:template,M:mark,D:define,C:class" opt_v=no opt_p=no opt_f="" opt_o="lib.h" opt_t="lib.h.in" opt_M="%%MARK%%" opt_D="cpp" opt_C="intern" ;; version ) str_tool="version" str_usage="[-l|--language <lang>] [-n|--name <name>] [-p|--prefix <prefix>] [-s|--set <version>] [-e|--edit] [-i|--increase <knob>] [-d|--display <type>] <file>" arg_spec="1=" opt_spec="l:n:p:s:i:e.d:" opt_alias="l:language,n:name,p:prefix,s:set,e:edit,i:increase,d:display" opt_l="txt" opt_n="unknown" opt_p="" opt_s="" opt_e="no" opt_i="" opt_d="short" ;; path ) str_tool="path" str_usage="[-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename] [-m|--magic] [-p|--path <path>] <str> [<str> ...]" gen_tmpfile=yes arg_spec="1+" opt_spec="s.r.d.b.m.p:" opt_alias="s:suppress,r:reverse,d:dirname,b:basename,m:magic,p:path" opt_s=no
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -