??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕无码精品亚洲资源网久久 ,亚洲中文字幕无码永久在线,亚洲日韩欧洲乱码AV夜夜摸http://www.tkk7.com/Javawind/category/24930.htmlzh-cnFri, 25 Jan 2008 15:40:35 GMTFri, 25 Jan 2008 15:40:35 GMT60Linux的shell变量http://www.tkk7.com/Javawind/archive/2008/01/25/177832.htmlkooyeekooyeeFri, 25 Jan 2008 10:55:00 GMThttp://www.tkk7.com/Javawind/archive/2008/01/25/177832.htmlhttp://www.tkk7.com/Javawind/comments/177832.htmlhttp://www.tkk7.com/Javawind/archive/2008/01/25/177832.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/177832.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/177832.htmlLinux的变量可分ؓ两类Q环境变量和本地变量

环境变量Q或者称为全局变量Q存在与所有的shell中,在你登陆pȝ的时候就已经有了相应的系l定义的环境变量了?span lang="EN-US">Linux的环境变量具有承性,卛_shell会承父shell的环境变量?/span>

本地变量Q当?span lang="EN-US">shell中的变量Q很昄本地变量中肯定包含环境变量?span lang="EN-US">Linux的本地变量的非环境变量不具备l承性?/span>

Linux中环境变量的文g

    当你q入pȝ的时候,linux׃Zdpȝ的环境变量,q些环境变量存放在什么地方,那就是环境变量的文g中?span lang="EN-US">Linux中有很多记蝲环境变量的文Ӟ它们被系l读入是按照一定的序的?/span>

1.    /etc/profileQ?/span>

此文件ؓpȝ的环境变量,它ؓ每个用户讄环境信息Q当用户W一ơ登录时Q该文g被执行。ƈ?span lang="EN-US">/etc/profile.d目录的配|文件中搜集shell的设|?/span>

    q个文gQ是M用户登陆操作pȝ以后都会d的文Ӟ如果用户?span lang="EN-US">shell?span lang="EN-US">csh?span lang="EN-US">tcsh?span lang="EN-US">zshQ则不会d此文ӞQ用于获取系l的环境变量Q只在登陆的时候读取一ơ?/span>

    假设用户使用的是BASHQ那?/span>



2.   
/etc/bashrc
Q?/span>

在执行完/etc/profile内容之后Q如果用LSHELLq行的是bashQ那么接着׃执行此文件。另外,当每ơ一个新?span lang="EN-US">bash shell被打开?span lang="EN-US">,该文件被d?/span>

    每个使用bash的用户在登陆以后执行?span lang="EN-US">/etc/profile中内容以后都会执行此文gQ在新开一?span lang="EN-US">bash的时候也会执行此文g。因此,如果你想让每个?span lang="EN-US">bash的用h新开一?span lang="EN-US">bash和每ơ登陆都执行某些操作Q或者给他们定义一些新的环境变量,可以在q个里面讄?/span>



3.   
~/.bash_profile
Q?/span>

每个用户都可使用该文件输入专用于自己使用?span lang="EN-US">shell信息。当用户dӞ该文件仅仅执行一ơ,默认情况下,它设|一些环境变量,执行用户?span lang="EN-US">.bashrc文g?/span>

    单个用户此文件的修改只会影响C以后的每一ơ登陆系l。因此,可以在这里设|单个用LҎ的环境变量或者特D的操作Q那么它在每ơ登陆的时候都会去获取q些新的环境变量或者做某些Ҏ的操作,但是仅仅在登陆时?/span>



4.   
~/.bashrc
Q?/span>

该文件包含专用于单个人的bash shell?span lang="EN-US">bash信息Q当d时以及每ơ打开一个新?span lang="EN-US">shell?span lang="EN-US">,该该文g被读取?/span>

    单个用户此文件的修改会媄响到他以后的每一ơ登陆系l和每一ơ新开一?span lang="EN-US">bash。因此,可以在这里设|单个用LҎ的环境变量或者特D的操作Q那么每ơ它新登陆系l或者新开一?span lang="EN-US">bashQ都会去获取相应的特D的环境变量和特D操作?/span>

~/.bash_logoutQ?/span>

当每ơ退出系l?span lang="EN-US">(退?span lang="EN-US">bash shell)?span lang="EN-US">,执行该文件?/span>

几个命o

    env?span lang="EN-US">printenv

    q两个变量用于打印所有的环境变量Q?/span>

[root@devdb1 worksh]# env

HOSTNAME=devdb1

TERM=vt100

..........................................................

OLDPWD=/root

[root@devdb1 worksh]# printenv

HOSTNAME=devdb1

TERM=vt100

..........................................................

OLDPWD=/root

[root@devdb1 worksh]#

    另外Q?span lang="EN-US">env变量q有其他的功能,如下Q?/span>

env [-i|-] [name=value] [command [argument]]

q里?#8220;-i”或?#8220;-”Q都是表C忽略承的环境变量Q这里的name=valueQ用于指定本地变量对Q可以有多组Q整个命令的含义是,忽略l承的环境变量,讑֮多组name变量Q在此基上运行命?span lang="EN-US">command。如

env -i test="test" bash -c 'echo $SHELL; env'

/bin/bash

PWD=/home/oracle

test=test

SHLVL=1

_=/bin/env

很显Ӟq里新运?span lang="EN-US">bashq没有承环境变量,但是却设|了本地变量test?/span>

    set

    用于昄与设|?span blue?>当前本地变量。单独一?span lang="EN-US">set显CZ当前环境的所有的变量Q它肯定包括环境变量和一些非环境变量Q如Q?/span>

[oracle@devdb1 oracle]$ set

BASH=/bin/bash

BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")

BASH_VERSION='2.05b.0(1)-release'

BDUMP=/opt/oracle/admin/devdb/bdump

COLORS=/etc/DIR_COLORS

COLUMNS=132

DIRSTACK=()

EUID=500

GROUPS=()

G_BROKEN_FILENAMES=1

HISTFILE=/home/oracle/.bash_history

HISTFILESIZE=1000

HISTSIZE=1000

HOME=/home/oracle

.............................

    set很有很多其他的选项Q具体请参?span lang="EN-US">man set?/span>

    unset

    用于清除变量。不这个变量是环境变量q是本地变量Q它都可以清除?/span>

-- 下面是清除本地变?/span>

[oracle@devdb1 oracle]$ set|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ unset myname

[oracle@devdb1 oracle]$ set|grep myname

-- 下面是清除环境变?/span>

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ unset myname

[oracle@devdb1 oracle]$ env|grep myname

    export

用于把变量变成当?span lang="EN-US">shell和其?span lang="EN-US">shell的环境变量,存活期是当前?span lang="EN-US">shell及其?span lang="EN-US">shellQ因此重新登陆以后,它所讑֮的环境变量就消失了。如何将环境变量怹化?修改上面介绍的那几个环境变量的配|文件?/span>

[oracle@devdb1 oracle]$ export myname=ilonng

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ bash

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ exit

exit

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

    source

当直接执行一个脚本的时候,其实是在一个子shell环境q行的,卛_启了一个子shell来执行这个脚本,脚本执行完后该子shell自动退出?/span>

有没有办法在当前shell中执行一个脚本呢Q?span lang="EN-US">source命o可以让脚本在当?span lang="EN-US">shell中执行。如Q?/span>

[oracle@dbamonitor NBU]$ cat test.sh   -- 查看脚本内容Q显C变量内?/span>

echo $myname

[oracle@dbamonitor NBU]$ echo $myname  -- 变量存在Q内Ҏilonng

ilonng

[oracle@dbamonitor NBU]$ set |grep myname -- 变量是本地变?/span>

myname=ilonng

[oracle@dbamonitor NBU]$ env |grep myname -- 变量不是环境变量

[oracle@dbamonitor NBU]$ sh test.sh  -- 直接执行Q新开?span lang="FR">shellQ非环境变量的本地变量不具备l承性,在子shell中不可见

  -- q里什么都没有输出

[oracle@dbamonitor NBU]$ source test.sh -- source命oQ是脚本在当?span lang="FR">shell中执?/span>

ilonng



kooyee 2008-01-25 18:55 发表评论
]]>
shell基础学习pdQ?Q:学习shell变量http://www.tkk7.com/Javawind/archive/2008/01/25/177828.htmlkooyeekooyeeFri, 25 Jan 2008 10:39:00 GMThttp://www.tkk7.com/Javawind/archive/2008/01/25/177828.htmlhttp://www.tkk7.com/Javawind/comments/177828.htmlhttp://www.tkk7.com/Javawind/archive/2008/01/25/177828.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/177828.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/177828.html1、登陆过E:

W一步:键入用户名和密码
W二步:pȝ通过查询/etc/passwd来检是否ؓ有效用户
W三步:如果登陆正确q且密码有效Q则pȝ执行环境讄文g/etc/profile-->.bash_profile?/div>

一般情况下Qroot的权限太高,Z防止误操作造成pȝ崩溃Q我现在的做法是以一个普通用Lw䆾登陆Q重新定制环境,需要root权限时以su指o切换q去执行。这h较安全。对于shell变量的定Ӟ有新的理解。变量的作用很多Q可以定制用hw的工作环境Q可以保存有用的信息Q也可以暂时保存信息。所以出C下面变量Q?/div>

1Q本地变量。只是在当前shell生命期的脚本中用,一旦shell中启动另一个进E或者退出,则失效。好处就是不会对其他的shell或者进E生媄响?/div>

2Q环境变量。在建立嵌入式交叉编译环境的工具链时讄q环境变量,在这里算是对环境变量的位|特Ҏ较清C。环境变量用于所有用戯E,dq程UCؓ父进E,shell中执行的用户q程UCؓ子进E。按照传l方法,所有环境变量均为大写,q点与本地变量不同。而且Q环境变量在应用于用戯E前Q必ȝexport命o导出Q而本地变量不需要。环境变量的两种定制Ҏ前面已经掌握了,在命令行中定制用h销时就会丢失,所以最好还是在.bash_profile中定制?/div>

3Q位|变量。这UؓҎ变量Q因为它们是只读的。它的作用是向一个shell脚本传递参敎ͼ用位|参数的方式完成此功能。参数数目可以Q意多Q但是只有前9个可以被讉KQ不q用shift命o可以改变q个限制。参CW一个开始,在第9个结束;每个讉K参数前都要加$W号。其中第一个参Cؓ0Q表C预留保存实际脚本名Uͼ无论脚本是否有参敎ͼ此值均可用。以前ؓopenvpn的启动看q一个脚本,实质上就是用了位置变量。现在才理解Q也能够~写此类脚本了?/div>

4Q特定参数变量。ؓҎ变量Q只诅R共?个特定变量,在编E时用的比较多?/div>

$# 传递到脚本的参C?br /> $* 以一个单字符串显C所有向脚本传递的参数Q与位置变量不同Q此选项参数可以过9个?br /> $$ 脚本q行的当前进EID?br /> $! 后台q行的最后一个进E的q程ID?br /> $@ ?#相同Q但是用时加引Pq在引号中返回每个参?br /> $- 昄shell使用的当前选项Q与set命o功能相同
$? 昄最后命令的退出状态,0表示没有错误Q其他表明错误?/div>

2、密码文?etc/passwd的格式:7个域

登陆名:加密的密码:uidQgidQ用户全名:用户home目录Q用Lshell路径
以前ȝq忘记root密码的处理方法,当时只是依葫芦画瓢,现在才明白原理。只要将加密的密码域去除Q密码自然也没有了。即“Q:”
 
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?/div>
实例讄1
注:使用RedHat 9.0默认的bash shell
 
嵌入式shell变量中有一些预留的环境变量Q比如HOMEQPATH{。现在要利用PS1QPS2来定制自q命o提示W?
 
PS1Q基本提C符包含shell提示W,~省是对用户为#Q其他ؓ$?/div>
在默认情况下Q我的命令提C符如下Q?/div>
[armlinux@lqm armlinux]$ echo $PS1
[\u@\h \W]\$
其中\u代表用户名,\h代表L名,\W代表当前的文件夹?/div>
现在我希望我的命令提C符由如下几个部分组成,首先要显C用户名Q然后要昄l对路径Q方便用。那么就可以用如下的命o定制Q?/div>
[armlinux@lqm armlinux]$PS1="\u: \`pwd\`>"
armlinux: /home/armlinux>
如果惌|系l主机名做提C符Q则只需令PS1="`hostname`>"卛_?/div>
要想始终起作用,当然是修?bash_profile文gQ前面刚刚学了?/div>
 
PS2Qؓ附属提示W,~省W号?gt;。当执行多行命oӞ出现的符受这个一般我习惯用默认的?/div>
举例Q?/div>
armlinux: /home/armlinux>cat >>test<<EOF
> test
> test
> test
> EOF
armlinux: /home/armlinux>cat test
test
test
test
如果讄?@:"Q则昄如下Q?/div>
armlinux: /home/armlinux>PS2="@:"
armlinux: /home/armlinux>cat >>test<<EOF
@:test
@:test
@:test
@:EOF
armlinux: /home/armlinux>cat test
test
test
test
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?/div>

实例讄2

注:使用RedHat 9.0默认的bash shell

 

1 使用命oecho昄环境变量

 

#本例使用echo昄常见的变量HOME

$ echo $HOME  

/home/lqm

 

2 讄一个新的环境变?/span>

 

variableQnameQvalueQexport variableQname

或?/span>

export variableQnameQvalue

 

$ export HELLO=”Hello!”

$ echo $HELLO

Hello!

 

3 使用env命o昄所有的环境变量

 

$ env

SSH_AGENT_PID=1875

HOSTNAME=lqm

SHELL=/bin/bash

TERM=xterm

HISTSIZE=1000

……

 

4  使用set命o昄所有本地定义的Shell变量

 

$ set

BASH=/bin/bash

……

 

5  使用unset命o来清除环境变?/span>

 

$ export TEST=”test”      #增加一个环境变?/span>TEST

$ env | grep TEST           #此命令有输出Q证明环境变?/span>TEST已经存在?/span>

TEST=test

$ unset $TEST                #删除环境变量TEST

$ env | grep TEST           #此命令无输出Q证明环境变?/span>TEST已经存在?/span>

 

6  使用readonly命o讄只读变量

如果使用?/span>readonly命o的话Q变量就不可以被修改或清除了。示例如下:

 

$ export TEST="Test..."                                        #增加一个环境变?/span>TEST

$ readonly TEST                                                   #环境变?/span>TEST设ؓ只读

$ unset TEST                                                        #会发现此变量不能被删?/span>

-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New"                                                     #
会发现此变量不能被修?/span>

-bash: TEST: readonly variable

 

?/span>CE序来访问和讄环境变量

对于CE序的用h_可以使用下列三个函数来设|或讉K一个环境变量?/span>

getenv()讉K一个环境变量。输入参数是需要访问的变量名字Q返回值是一个字W串。如果所讉K的环境变量不存在Q则会返?/span>NULL?/span>

setenv()在程序里面设|某个环境变量的函数?/span>

unsetenv()清除某个特定的环境变量的函数?/span>

另外Q还有一个指针变?/span>environQ它指向的是包含所有的环境变量的一个列表。下面的E序可以打印出当前运行环境里面的所有环境变量:

 

#include <stdio.h>

extern char**environ;

int main ()

{

char**var;

for (var =environ;*var !=NULL;++var)

printf ("%s \n ",*var);

return 0;

}

 

8      通过修改环境变量定义文g来修改环境变量?/span>

需要注意的是,一般情况下Q这仅仅对于普通用户适用Q避免修Ҏ用户的环境定义文Ӟ因ؓ那样可能会造成潜在的危险?/span>

 

$cd                                     #到用h目录?/span>

$ls -a                                  #查看所有文Ӟ包含隐藏的文?/span>

$vi .bash_profile                 #修改环境变量定义文g

 

U色部分也可以用一条语句代替:$vi ?.bash_profile。在q里Q~实际上是shell变量的扩展。它包含着内徏命ocd。可以这L解,~就是你当前dshell的根目录的绝对\径。假设你的当前用harmlinuxQ那么你执行ls ~,会昄/home/armlinux文g夹下的内宏V同LQ?vi ?.bash_profile展开后,实际上是$vi /home/armlinux/.bash_profile。所以,很容易理解ؓ什么与U色部分{h了?/font>

 

然后~辑你的PATH声明Q其格式为:

PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

你可以自己加上指定的路径Q中间用冒号隔开。环境变量更改后Q在用户下次登陆时生效,如果想立ȝ效,则可执行下面的语句:$source .bash_profile。如果在命o行中定制环境变量Q那么你所讄的环境变量的生命期就是你当前shell用户的登录时间。一旦退出,那么环境变量也就失效了。所以,如果惛_要登录改用户Q就要环境变量生效Q还是在.bash_profile中修攏V至于原因,q就与shell的激zL式相关了Q可了解相关内容?/font>

 

需要注意的是,最好不要把当前路径”./”攑ֈPATH里,q样可能会受到意想不到的d。完成后Q可以通过$ echo $PATH查看当前的搜索\径。这样定制后Q就可以避免频繁的启动位?/span>shell搜烦的\径之外的E序了?/span>



kooyee 2008-01-25 18:39 发表评论
]]>linux环境变量讄及保存地?http://www.tkk7.com/Javawind/archive/2008/01/19/176378.htmlkooyeekooyeeFri, 18 Jan 2008 16:29:00 GMThttp://www.tkk7.com/Javawind/archive/2008/01/19/176378.htmlhttp://www.tkk7.com/Javawind/comments/176378.htmlhttp://www.tkk7.com/Javawind/archive/2008/01/19/176378.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/176378.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/176378.html

1. 昄环境变量HOME
$ echo $HOME
/home/terry



2. 讄一个新的环境变量WELCOME
$ export WELCOME="Hello!"
$ echo $WELCOME
Hello!



3. 使用env命o昄所有的环境变量


$ env
HOSTNAME=terry.mykms.org
PVM_RSH=/usr/bin/rsh
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
...



4. 使用set命o昄所有本地定义的Shell变量
$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
COLORS=/etc/DIR_COLORS.xterm
COLUMNS=80
DIRSTACK=()
DISPLAY=:0.0
...



5. 使用unset命o来清除环境变?

set可以讄某个环境变量的倹{清除环境变量的值用unset命o。如果未指定|则该变量值将被设为NULL。示例如下:
$ export TEST="Test..." #增加一个环境变量TEST
$ env|grep TEST #此命令有输入Q证明环境变量TEST已经存在?br /> TEST=Test...
$ unset $TEST #删除环境变量TEST
$ env|grep TEST #此命令没有输出,证明环境变量TEST已经不存在了



6. 使用readonly命o讄只读变量

如果使用了readonly命o的话Q变量就不可以被修改或清除了。示例如下:
$ export TEST="Test..." #增加一个环境变量TEST
$ readonly TEST #环境变量TEST设ؓ只读
$ unset TEST #会发现此变量不能被删?br /> -bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #会发现此也变量不能被修改
-bash: TEST: readonly variable



环境变量的设|位?etc/profile文g



如果需要增加新的环境变量可以添加下属行

export PATH=$PATH:/path1:/path2:/pahtN



kooyee 2008-01-19 00:29 发表评论
]]>
【应用】GNU/screenhttp://www.tkk7.com/Javawind/archive/2007/08/31/141806.htmlkooyeekooyeeFri, 31 Aug 2007 10:38:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/31/141806.htmlhttp://www.tkk7.com/Javawind/comments/141806.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/31/141806.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141806.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141806.html 现在好了Q?screen 可以保证在你断U的时候还l箋Z工作Q?br /> 1. 登陆q程LQ?screen 新徏一个会?mm
    $screen -S mm
    OKQ开始干zdQ下载或者是~译
    现在你可以按 Ctr+A+D 断开会话 mmQ不要去他了?br /> 2. 想看看Q务完成的怎么样了Q?再次登陆q程LQ返回会?mm
    $screen -r mm
    原来事情已经完成了,不错Q?

kooyee 2007-08-31 18:38 发表评论
]]>
【应用】Linux下FTP 命o大全http://www.tkk7.com/Javawind/archive/2007/08/31/141805.htmlkooyeekooyeeFri, 31 Aug 2007 10:35:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/31/141805.htmlhttp://www.tkk7.com/Javawind/comments/141805.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/31/141805.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141805.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141805.html从FTP链接下蝲用wgetQegQ?wget ftp://www.dekaino.net/pub/screen/screen-4.0.3.tar.gz

FTP命o是Internet用户使用最频繁的命令之一,不论是在DOSq是UNIX操作pȝ?使用FTP,都会遇到大量的FTP内部命o,熟悉q灵zd用FTP的内部命?可以大大方便 使用?对于现在拨号上网的用P如果ISP提供了shell可以使用nohupQ那么ftp是 你最省钱的上download方式Qftp的命令行格式?ftp Qv Qd Qi Qn Qg[L名]  
 
          Qv 昄q程服务器的所有响应信息?
   Qd 使用调试方式?
   Qn 限制ftp的自动登?即不使用.netrc文g?
   Qg 取消全局文g名?


  ftp使用的内部命令如?其中括号表示可选项):   
        1.![cmd[args]]在本地机中执行交互shell、exit回到ftp环境,?lsQ?zip?
  2.K?macroQame[args]执行宏定义macroQname?
  3.account[password]提供dq程pȝ成功后访问系l资源所需的补充口令?
  4.appendlocalQfile[remoteQfile]本地文件追加到q程pȝL,若未指定q程pȝ文g?则用本地文件名?
  5.ascii 使用asciicd传输方式?
  6.bell每个命o执行完毕后计机响铃一ơ?
  7.bin使用二进制文件传输方式?
  8.bye退出ftp会话q程?
  9.case在用mget?远E主机文件名中的大写转ؓ写字母?
  10.cd remoteQdir q入q程L目录?
  11.cdupq入q程L目录的父目录?
  12.chmod modefileQname远E主机文件fileQname的存取方式设|ؓmode,如chmod 777 a.out?
  13.close中断与远E服务器的ftp会话(与open对应)?
  14.cr使用asscii方式传输文g?回车换行{换ؓ回行?
  15.delete remoteQfile删除q程L文g?
  16.debug[debugQvalue]讄调试方式,昄发送至q程L的每条命?如debug3,?设ؓ0,表示取消debug?
  17.dir[remoteQdir][localQfile]昄q程L目录,q将l果存入localQfile?
  18.disconnection同close?
  19.form format文件传输方式设|ؓformat,~省为file方式?
  20.getremoteQfile[localQfile]远E主机的文gremoteQfile传至本地盘的localQfile?
  21.glob讄mdelete、mget、mput的文件名扩展,~省时不扩展文g?同命令行的-g参数?
  22.hash每传?024字节,昄一个hashW号(Q??
  23.help[cmd]昄ftp内部命ocmd的帮助信?如help get?
  24.idle[seconds]远E服务器的休眠计时器设ؓ[seconds]U?
     25.image讄二进制传输方?同binary)
     26.lcd[dir]本地工作目录切换至dir?
  27.ls[remoteQdir][localQfile]昄q程目录remoteQdir,q存入本地localQfile?
   28.macdef macroQname定义一个宏,遇到macdef下的I?宏定义结束?
   29.mdelete[remoteQfile]删除q程L文g?
   30.mdir remoteQfiles localQfile与dircM,但可指定多个q程文g,如mdirQ?o.Q? zipoutfile?
   31.mget remoteQfiles传输多个q程文g?
   32.mkdir dirQname 在远E主ZZ目录?
   33.mls remoteQfile localQfile同nlist,但可指定多个文g名?
   34.mode[modeQname]文件传输方式设|ؓmodeQname,~省为stream方式?
   35.modtime fileQname昄q程L文g的最后修Ҏ间?
   36.mput localQfile多个文件传输至q程L?
   37.newerfileQname如果q程ZfileQname的修Ҏ间比本地盘同名文g的时间更q?则重传该文g?
   38.nlist[remoteQdir][localQfile]昄q程L目录的文件清?q存入本地硬盘的localQfile?
   39.nmap[inpatternoutpattern]讄文g名映机?使得文g传输?文g中的某些字符怺转换,如nmapK?.K?.K?[K?,K?].[K?,K?],则传输文件a1.a2.a3?,文g名变为a1、a2Q该命o特别适用于远E主Zؓ非UQNIX机的情况?
   40.ntrans[inchars[outchars]]讄文g名字W的译机制,如ntrans1R,则文件名LL L变为RRR?
   41.open host[port]建立指定ftp服务器连?可指定连接端口?
   42.passiveq入被动传输方式?
   43.prompt讄多个文g传输时的交互提示?
   44.proxyftpQcmd在次要控制连接中,执行一条ftp命o,该命令允许连接两个ft p
服务?以在两个服务器间传输文g。第一条ftp命o必须为open,以首先徏立两个服务器间的q接?
   45.put localQfile[remoteQfile]本地文件localQfile传送至q程L?
   46.pwd昄q程L的当前工作目录?
   47.quit同bye,退出ftp会话?
   48.quote arg1,arg2……参数逐字发至q程ftp服务?如quote syst?
   49.recv remoteQfile[localQfile]同get?
   50.regetremoteQfile[localQfile]cM于get,但若localQfile存在,则从上次传输中断处箋传?
   51.rhelp[cmdQname]h获得q程L的帮助?
   52.rstatus[fileQname]若未指定文g?则显CE主机的状?否则昄文g状态?
   53.rename[from][to]更改q程L文g名?
   54.reset清除回答队列?
   55.restart marker从指定的标志marker?重新开始get或put,如restart 130?
   56.rmdir dirQname删除q程L目录?
   57.runique讄文g名唯一性存?若文件存?则在原文件后加后~?
   58.send localQfile[remoteQfile]同put?
   59.sendport讄PORT命o的用?
   60.site arg1,arg2……参C为SITE命o逐字发送至q程ftpL?
   61.size fileQname昄q程L文g大小,如site idle 7200?
   62.status昄当前ftp状态?
   63.struct[structQname]文件传输结构设|ؓstructQname,~省时用streaml构?
64.sunique远E主机文件名存储讄为唯一(与runique对应)?
   65.system昄q程L的操作系l类型?
   66.tenex文件传输类型设|ؓTENEX机所需的类型?
   67.tick讄传输时的字节计数器?
   68.trace讄包跟t?
   69.type[typeQname]讄文g传输cd为typeQname,~省为ascii,如typebinary,讄二进制传输方式?
   70.umask[newmask]远E服务器的缺省umask讄为newmask,如umask 3?
   71.useruserQname[password][account]向远E主明自qw䆾,需要口令时,必须输入口o,如user anonymous my@email?
   72.verbose同命令行的-v参数,卌|详报告方?ftp服务器的所有响应都显C给用户,~省为on.
   73.?[cmd]同help?
  
那么如何应用q些命o提高效率呢?下面我D一个例子,如何利用fttpq行后台下蝲Q假设你的ISPl你提供了shellq且可以用nohupQ你想由fttp.download.com/pub/internet/ 下蝲一?0M的程序aaa.zip具体步骤如下Q?
  1.用notepad做一个文件如aaa1内容如下
   open ftp.dwonload.com
   user anonymous zyz@cenpok.net
   cd /pub/internet/
   i
   get aaa.zip
   close
   bye
   2.拨号dC的ISP上。用telnet 或nettermd到shellQ一般都在你的home子目录里bbs?
   3.用fttp上传aaa1到ISP服务器你的子目录?
   4. 执行nohup fttp Qinvd aaa2Q?
  q样q个q程p攑֜ISP服务器的后台q行了,如果你想知道情况如何Q可以more aaa2可以知道情况如何了。这时你可以断线了或q点别的Q估计时间到?timeU?30M/(33.6K/9)s)拨号上去Qmore aaa2如果昄成功下蝲aaa.zippC?aaa.zip已经被下载到ISP的服务器上了Q你再由ISP的服务器拉回来就相当与点对点?记得下蝲完成后del掉你的文?aaa.zip)Q免得浪费ISP资源Q它会关掉shell?



kooyee 2007-08-31 18:35 发表评论
]]>
Linux中的应用软g安装http://www.tkk7.com/Javawind/archive/2007/08/31/141779.htmlkooyeekooyeeFri, 31 Aug 2007 09:17:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/31/141779.htmlhttp://www.tkk7.com/Javawind/comments/141779.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/31/141779.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141779.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141779.html   
    大多数Linux 初学者往往不知道该如何q行配置和编译。下面笔者就单介l一下如何安装Linux应用软g。在安装应用软g之前Q还要确保Y件安装的~译环境Q比如编译器GCC、必要的库文件等。不q,用户不需要担心这些问题,因ؓ大多?Linux发行版本都已l默认安装了GCC~译器?
  
    目前行的Y件包有两U比较常见的形式Q一U是?RPM、deb包ؓ代表的智能Y件包Q另一U是file.tar.gz形式的压~。本文将讨论file.tar.gz的安装方法以及智能Y件包在文本环境和囑Ş环境下的安装Ҏ?
  
    一、源代码安装
  
    应用软g的源代码一般是file.tar.gz或者file.tgz格式Q也是说是以tar来打包,然后用gzip来压~?
  
    以应用Y件xfce-3.8.7.tar.gzZQ先q入软g的当前目录,然后使用gzip解压Q?gzip -d xfce-3.8.7.tar.gz(?-d 代表解压)。然后用tar解包Q?tar -xvf xfce-3.8.7.tar。由于tar和gzipl常一起用,所以tarq提供了一个参敎ͼ它可以自动调用gzip来解压,卻I# tar -xzvf xfce-3.8.7.tar.gz?
  
    q入解压完成之后新徏立的目录Q一般的应用软g中都有一个用来配|Y件的可执行文件——configureQ它的参数比较多Q而且用法也非常灵zR当Ӟ安装不同的Y件参C不相同,具体有些什么参敎ͼ可以用命?#./configure help取得详细的帮助。例?/configure --prefix=/usr/local/mysqlQ表C|Y件的安装目录?/usr/local/mysqlQ?
  
    在运?./configure 配置软g后,它会Ҏ你当前系l、编译、安装相关的信息Q生成一个安装配|文件Makefile。Makefile文g通常是用来编译和安装软g的,q行make命o时系l会自动ҎMakefile文g中的讄对Y件进行编译和安装Q如果编译能够顺利通过的话Q运?make install命o来安装。运?make uninstall 来卸载?br />   
  二、智能包安装
  
    现在Q以包Ş式提供的软g很多Q像RedHat Linux的RPM、Debian Linux的DEB、KISS、BSD以及Slackware{。RPM和Debian几乎l治着Linux包管理世界,它们是首先被大多数商业Linux发行版本所q泛采用的应用Y件。下面笔者就介绍一下如何安装以RPM和Deb格式打包的Y件?
  
    RPM是RedHat Package Manager的羃写,它只能用在安装了RPM软g的系l中Q不q好像目前大多数中文Linux发行版本都支持RPM软g包?
  
    1.用命令管?
  
    #rpm abc.rpm
  
    例如安装python-1.5.2-35.i386.rpm软gӞ可以使用如下命oQ?rpm –ivh python-1.5.2-35.i386.rpm?
  
    如果你想知道RPM软g包中的相关信息,可以使用命o:#rpm ivh python-1.5.2-35.i386.rpm?
  
    如果想知道python-1.5.2-35.i386.rpm会在pȝ里安装哪些文Ӟ可以使用以下q个命oQrpm -qpl python-1.5.2-35.i386.rpm?
  
    ׃RPM的参数很多,我们׃一一列DQ想得到更多有关RPM的参敎ͼ可以用命令:#man rpm取得详细的帮助信息?
  
    2.囑Ş界面工具理
  
    相对命o方式来说Q在囑Ş环境下,安装、升U、卸载和查询RPM软g包是一仉常简单轻杄事情Q因为Linux提供了几个功能强大的RPM包管理工兗我们推荐用Linux的图形管理工hl护RPM软g包,GNOME中的GnoRPM和KDE中的Kpackage是功能强大的RPM 包管理工兗由于国内用户用的中文Linux发行版本中最常见的窗口管理器是KDEQ下面笔者就以KDE中KpackageZQ介l如何用RPM包管理工兗?
  
    点击StartQ开始)→System toolsQ系l工P→KpackageQ出现Kpackage界面Q同时分析Linuxpȝ中的 RPM数据库。它安装好的RPM包Ş式的软g按照功能分在Amusements、Application、Development、Document?Extension、Extentions、Networking、System Environment、User Interface以及X11{几个树形目录中Q每个目录中有相应的文g图标和名U。要安装或升UYӞ只要点击工具栏的相应按钮׃弹出打开文g的对话框Q选中要安装的RPM文gQ单击OK按钮Q如果不~必要的q行库,开始安装Y件了。卸载Y件时Q用鼠标选择相应的YӞ单击双的Uninstall按钮可以了 

        三、bin文g安装
Code:
chmod +x file.bin ./file.bin
            启动安装文g。多数情况会询问安装到那里,如果没有则安装到 .bin文g所在的文g夏V?br />             如果让所有用户都能用system-wide install 需要login到root :
Code:
su - password: <enter password>
Linux下Y件的安装与卸?ZT)

在Windows下安装Y件时Q只需q行软g的安装程序(setup、install{)或者用zip{解压羃软g解开卛_安装Q运行反安装E序Quninstall、unware?#8220;卸蝲”{)pY件清除干净Q完全图形化的操作界面,单到只要用鼠标一直点?#8220;下一?#8221;可以了。?nbsp;Linux好象׃一样了Q很多的初学者都抱怨在Linux下安装和卸蝲软g非常地困难,没有像用Windows旉么直观。其实在Linux下安装和卸蝲软g也非常简单,同样也有安装向导或解压安装的方式Q不相同的只不过是除了二q制形式的Y件分发外Q还有许许多多以源代码Ş式分发的软g包,下面来详细地讲一讲这些Y件的安装与卸载:

 


一、二q制分发软g包的安装与卸?br />
Linux软g的二q制分发是指事先已经~译好二q制形式的Y件包的发布Ş式,其优Ҏ安装使用ҎQ缺点则是缺乏灵zL,如果该Y件包是ؓ特定的硬?操作pȝq_~译的,那它׃能在另外的^台或环境下正执行?br />
1?.rpm形式的二q制软g?br /> 安装Qrpm -ivh *.rpm
卸蝲Qrpm -e packgename
说明QRPMQRedHat Packge ManagerQ是RedHat公司出的软g包管理器Q用它可以很容易地对rpm形式的Y件包q行安装、升U、卸载、验证、查询等操作Q安装简单,而卸载时也可以将软g安装在多处目录中的文件删除干净Q因此推荐初学者尽可能使用rpm形式的Y件包。rpm的参C-i是安装,-v是校验,-h是用散列W显C安装进度,*.rpm是Y件包的文件名Q这里的*.rpmҎ*.src.rpm以外的以rpm为后~的文ӞQ参?e是删除Y件包Q?nbsp;packgename是Y件包名,与Y件包的文件名有所区别Q它往往是文件名中位于版本号前面的字W串Q例如apache-3.1.12- i386.rpm和apache-devel-3.1.12-i386.rpm是Y件包文g名,它们的Y件包名称分别是apache和apache- devel。更多的rpm参数误行参看手册页Qman rpm?br /> 如果你不喜欢在字W界面下安装或卸载这些Y件包Q完全可以在X-Window下用图形界面的软g包管理程序,如glint、xrpmq样的图形接口,或者是KDE的kpackge{,q样对Y件包的安装、升U、卸载、验证和查询可以通过点击鼠标来轻村֮成?br />
2?.tar.gz/*.tgz?.bz2形式的二q制软g?br /> 安装Qtar zxvf *.tar.gz ?nbsp;tar yxvf *.bz2
卸蝲Q手动删?br /> 说明Q?.tar.gz/*.bz2形式的二q制软g包是用tar工具来打包、用gzip/bzip2压羃的,安装时直接解包即可。对于解压后只有单一目录的YӞ卸蝲时用命o“rm -rf 软g目录?#8221;Q如果解压后文g分散在多处目录中Q则必须一一手动删除Q稍ȝQ,想知道解压时向系l中安装了哪些文Ӟ可以用命?#8220;tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压Qx是解包,v是校验,f是显C结果,y是调用bzip2解压Qt是列出包的文件清单。更多的参数请参看手册页Qman tar?br /> 如果你更喜欢囑Ş界面的操作,可以在X-Window下用KDE的ArK压羃档案理工具?br />
3、提供安装程序的软g?br /> q类软g包已l提供了安装脚本或二q制的安装向导程序(setup、install、install.sh{)Q只需q行它就可以完成软g的安装;而卸载时也相应地提供了反安装的脚本或E序。例如SUN公司的StarOffice办公软g套g׃用名为setup的安装程序,而且在Y件安装后提供反安装的功能Q目前这U类型的软g包还比较,因其安装与卸载的方式与Windows软g一P所以就无需多讲了?br />

二、源代码分发软g包的安装与卸?br />
Linux软g的源代码分发是指提供了该软g所有程序源代码的发布Ş式,需要用戯q译成可执行的二进制代码ƈq行安装Q其优点是配|灵z,可以随意L或保留某些功?模块Q适应多种g/操作pȝq_及编译环境,~点是难度较大,一般不适合初学者用?br />
1?.src.rpm形式的源代码软g?br /> 安装Qrpm -rebuild *.src.rpm
cd /usr/src/dist/RPMS
rpm -ivh *.rpm
卸蝲Qrpm -e packgename
说明Qrpm --rebuild *.src.rpm命o源代码~译q在/usr/src/dist/RPMS下生成二q制的rpm包,然后再安装该二进制包卛_。packgename如前所q?br />
2?.tar.gz/*.tgz?.bz2形式的源代码软g?br /> 安装Qtar zxvf *.tar.gz ?nbsp;tar yxvf *.bz2 先解?br /> 然后q入解压后的目录Q?br /> ./configure 配置
make ~译
make install 安装
卸蝲Qmake uninstall ?nbsp;手动删除
说明Q徏议解压后先阅读说明文Ӟ可以了解安装有哪些需求,有必要时q需改动~译配置。有些Y件包的源代码在编译安装后可以用make install命o来进行卸载,如果不提供此功能Q则软g的卸载必L动删除。由于Y件可能将文g分散地安装在pȝ的多个目录中Q往往很难把它删除q净Q那你应该在~译前进行配|,指定软g要安装到目标\径:./configure --prefix=目录名,q样可以使用“rm -rf 软g目录?#8221;命o来进行干净d的卸载。与其它安装方式相比Q需要用戯q译安装是最隄Q它适合于用Linux已有一定经验的人,一般不推荐初学者用?/p>

关于Linux下Y件的安装与卸载lanche已经讲了q么多,但可能还会有人问怎么知道一个tar.gz/bz2包是二进制文件包呢还是源代码包?如果你用q压~工具就会明白,压羃包未必就是YӞ它也可能是备份的许多囄Q也可能是打包在一L普通资料,要分辨它到底是什么最好的办法是查看包里的文件清单,使用命otar ztvf *.tar.gz / tar ytvf *.bz2或者在X-Window下用图形化的ArK压羃档案理工具都可以,源代码包里的文g往往会含有种U源代码文gQ头文g*.h、c代码源文?nbsp;*.c、C++代码源文?.cc/*.cpp{;而二q制包里的文件则会有可执行文Ӟ与Y件同名的往往是主执行文gQ,标志是其所在\径含有名?nbsp;bin的目录(仅有数例外Q。原来这么简单呀Q还不快点自p试!



kooyee 2007-08-31 17:17 发表评论
]]>
【linux脚本】bad interpreter: No such file or directoryhttp://www.tkk7.com/Javawind/archive/2007/08/30/141493.htmlkooyeekooyeeThu, 30 Aug 2007 11:14:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/30/141493.htmlhttp://www.tkk7.com/Javawind/comments/141493.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/30/141493.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141493.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141493.html一般来_在windows用徏立的sh文g在linux中运行时Q因为window在每行后加入隐藏字符^M
所以当linux~译?׃无法~译^M而导致bad interpreter错误

使用 vi -b <file name> 扑և^M 然后删除?br>



kooyee 2007-08-30 19:14 发表评论
]]>
Linux Shell 脚本入门http://www.tkk7.com/Javawind/archive/2007/08/30/141488.htmlkooyeekooyeeThu, 30 Aug 2007 10:47:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/30/141488.htmlhttp://www.tkk7.com/Javawind/comments/141488.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/30/141488.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141488.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141488.html1.1 语法基本介绍
1.1.1 开?br>E序必须以下面的行开始(必须方在文g的第一行)Q?
#!/bin/sh
  W号#!用来告诉pȝ它后面的参数是用来执行该文g的程序。在q个例子中我们?bin/sh来执行程序?
  当编辑好脚本Ӟ如果要执行该脚本Q还必须使其可执行?
  要脚本可执行:
~译 chmod +x filename q样才能?/filename 来运?br>
1.1.2 注释
  在进行shell~程Ӟ?开头的句子表示注释Q直到这一行的l束。我们真诚地您在E序中用注释?br>如果您用了注释Q那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用
及工作原理?br>
-- 我们的技术是你的Q?a target=_blank>www.icwin.net

1.1.3 变量
  在其他编E语a中您必须使用变量。在shell~程中,所有的变量都由字符串组成,q且您不需要对变量
q行声明。要赋值给一个变量,您可以这样写Q?
#!/bin/sh
#对变量赋|
a="hello world"
# 现在打印变量a的内容:
echo "A is:"
echo $a
有时候变量名很容易与其他文字hQ比如:
num=2
echo "this is the $numnd"
qƈ不会打印?this is the 2nd"Q而仅仅打?this is the "Q因为shell会去搜烦变量numnd的|
但是q个变量时没有值的。可以用花括号来告诉shell我们要打印的是num变量Q?
num=2
echo "this is the ${num}nd"
  q将打印Q?this is the 2nd

1.1.4 环境变量
由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因ؓ通常情况下仅仅在d
脚本中用环境变量?

1.1.5 Shell命o和流E控?br>在shell脚本中可以用三cd令:
1)Unix 命o:
  虽然在shell脚本中可以用Q意的unix命oQ但是还是由一些相Ҏ常用的命令。这些命令通常是用?br>q行文g和文字操作的?
常用命o语法及功?
  echo "some text": 文字内Ҏ印在屏幕?
  ls: 文g列表
  wc –l filewc -w filewc -c file: 计算文g行数计算文g中的单词数计文件中的字W数
  cp sourcefile destfile: 文g拯
  mv oldname newname : 重命名文件或Ud文g
  rm file: 删除文g
  grep 'pattern' file: 在文件内搜烦字符串比如:grep 'searchstring' file.txt
  cut -b colnum file: 指定Ʋ显C的文g内容范围Qƈ它们输出到标准输出讑֤比如Q输?br>每行W?个到W?个字Wcut -b5-9 file.txt千万不要和cat命ohQ?br>q是两个完全不同的命?
  cat file.txt: 输出文g内容到标准输备(屏幕Q上
  file somefile: 得到文gcd
  read var: 提示用户输入Qƈ输入赋值给变量
  sort file.txt: 对file.txt文g中的行进行排?
  uniq: 删除文本文g中出现的行列比如Q?sort file.txt | uniq
  expr: q行数学q算Example: add 2 and 3expr 2 "+" 3
  find: 搜烦文g比如Q根据文件名搜烦find . -name filename -print
  tee: 数据输出到标准输出讑֤(屏幕) 和文件比如:somecommand | tee outfile
  basename file: q回不包含\径的文g名比如: basename /bin/tux返?tux
  dirname file: q回文g所在\径比如:dirname /bin/tux返?/bin
  head file: 打印文本文g开头几?
  tail file : 打印文本文g末尾几行
  sed: Sed是一个基本的查找替换E序。可以从标准输入Q比如命令管道)d文本Qƈ?br>l果输出到标准输出(屏幕Q。该命o采用正则表达式(见参考)q行搜烦?
不要和shell中的通配W相h。比如:linuxfocus 替换?
LinuxFocus Qcat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file
  awk: awk 用来从文本文件中提取字段。缺省地Q字D分割符是空|可以使用-F指定其他分割W?br>cat file.txt | awk -F, '{print $1 "," $3 }'q里我们使用Q作为字D分割符Q同时打?br>W一个和W三个字Dc如果该文g内容如下Q?Adam Bor, 34, IndiaKerry Miller, 22, USA
命o输出l果为:Adam Bor, IndiaKerry Miller, USA
2) 概念: 道, 重定向和 backtick
  q些不是pȝ命oQ但是他们真的很重要?br>
  道 (|) 一个命令的输出作ؓ另外一个命令的输入?
grep "hello" file.txt | wc -l
  在file.txt中搜索包含有”hello”的行q计其行数?
  在这里grep命o的输Z为wc命o的输入。当然您可以使用多个命o?
  重定向:命令的l果输出到文Ӟ而不是标准输出(屏幕Q?br>
  > 写入文gq覆盖旧文g
  >> 加到文g的尾部,保留旧文件内宏V?

反短斜线
  使用反短斜线可以一个命令的输出作ؓ另外一个命令的一个命令行参数?br>命oQ?
find . -mtime -1 -type f -print
  用来查找q去24时Q?mtime –2则表C?8时Q内修改q的文g。如果您
惛_所有查扑ֈ的文件打一个包Q则可以使用以下脚本Q?
#!/bin/sh
# The ticks are backticks (`) not normal quotes ('):
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
3) 程控制
1.if
  "if" 表达?如果条g为真则执行then后面的部分:
if ....; then
  ....
elif ....; then
  ....
else
  ....
fi
大多数情况下Q可以用测试命令来Ҏ件进行测试。比如可以比较字W串、判断文?br>是否存在及是否可ȝ{?#8230;
  通常? [ ] "来表C条件测试。注意这里的I格很重要。要保ҎLI格?
[ -f "somefile" ] Q判断是否是一个文?
[ -x "/bin/ls" ] Q判?bin/ls是否存在q有可执行权?
[ -n "$var" ] Q判?var变量是否有?
[ "$a" = "$b" ] Q判?a?b是否相等
  执行man test可以查看所有测试表辑ּ可以比较和判断的cd?
  直接执行以下脚本Q?
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]; then
 echo "your login shell is the bash (bourne again shell)"
else
 echo "your login shell is not bash but $SHELL"
fi
  变量$SHELL包含了登录shell的名Uͼ我们?bin/bashq行了比较?
快捷操作W?
熟悉C语言的朋友可能会很喜Ƣ下面的表达式:
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
  q里 && 是一个快h作符Q如果左边的表达式ؓ真则执行双的语句?br>您也可以认ؓ是逻辑q算中的与操作。上例中表示如果/etc/shadow文g存在
则打?#8221; This computer uses shadow passwors”。同h操作(||)在shell~程中也?br>可用的。这里有个例子:
#!/bin/sh
mailfolder=/var/spool/mail/james
[ -r "$mailfolder" ]' '{ echo "Can not read $mailfolder" ; exit 1; }
echo "$mailfolder has mail from:"
grep "^From " $mailfolder

该脚本首先判断mailfolder是否可读。如果可d打印该文件中?From" 一行。如果不可读
则或操作生效Q打印错误信息后脚本退出。这里有个问题,那就是我们必L两个命oQ?
  -打印错误信息
  -退出程?
  我们使用花括号以匿名函数的Ş式将两个命o攑ֈ一起作Z个命令用。一般函数将在下文提及?
  不用与和或操作符Q我们也可以用if表达式作M事情Q但是用与或操作符会更便利很多?br>
2.case

case :表达式可以用来匹配一个给定的字符Ԍ而不是数字?
case ... in
...) do something here ;;
esac
  让我们看一个例子?file命o可以辨别Z个给定文件的文gcdQ比如:
file lf.gz
  q将q回Q?
lf.gz: gzip compressed data, deflated, original filename,
last modified: Mon Aug 27 23:09:18 2001, os: Unix
 我们利用q一点写了一个叫做smartzip的脚本,该脚本可以自动解压bzip2, gzip 和zip cd的压~文Ӟ
#!/bin/sh
ftype=`file "$1"`
case "$ftype" in
"$1: Zip archive"*)
  unzip "$1" ;;
"$1: gzip compressed"*)
  gunzip "$1" ;;
"$1: bzip2 compressed"*)
  bunzip2 "$1" ;;
*) echo "File $1 can not be uncompressed with smartzip";;
esac
  您可能注意到我们在这里用了一个特D的变量$1。该变量包含了传递给该程序的W一个参数倹{?br>也就是说Q当我们q行Q?
smartzip articles.zip
$1 是字符?articles.zip

3. selsect
select 表达式是一Ubash的扩展应用,其擅长于交互式使用。用户可以从一l不同的gq行选择?
select var in ... ; do
 break
done
.... now $var can be used ....
下面是一个例子:
#!/bin/sh
echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
    break
done
echo "You have selected $var"
  下面是该脚本q行的结果:
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux

4.loop

loop表达式:
while ...; do
....
done
  while-loop 运行直到表辑ּ试为真。will run while the expression that we test for is true.
关键?break" 用来跛_循环。而关键字”continue”用来不执行余下的部分而直接蟩C一个@环?
  
for-loop表达式查看一个字W串列表 (字符串用I格分隔) 然后其赋给一个变量:
for var in ....; do
  ....
done
在下面的例子中,分别打印ABC到屏q上Q?
#!/bin/sh
for var in A B C ; do
  echo "var is $var"
done
下面是一个更为有用的脚本showrpmQ其功能是打C些RPM包的l计信息Q?
#!/bin/sh
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm
for rpmpackage in $*; do
 if [ -r "$rpmpackage" ];then
  echo "=============== $rpmpackage =============="
  rpm -qi -p $rpmpackage
 else
  echo "ERROR: cannot read file $rpmpackage"
 fi
done
  q里出现了第二个Ҏ的变?*Q该变量包含了所有输入的命o行参数倹{?br>如果您运行showrpm openssh.rpm w3m.rpm webgrep.rpm
此时 $* 包含?3 个字W串Q即openssh.rpm, w3m.rpm and webgrep.rpm.


5. 引号
在向E序传递Q何参C前,E序会扩展通配W和变量。这里所谓扩展的意思是E序会把通配W?br>Q比?Q替换成合适的文g名,它变量替换成变量倹{ؓ了防 止程序作q种替换Q您可以使用
引号Q让我们来看一个例子,假设在当前目录下有一些文Ӟ两个jpg文gQ?mail.jpg 和tux.jpg?
1.2 ~译SHELL脚本
#ch#!/bin/sh mod +x filename
 cho *.jpg ∪~螅梢酝üx?./filename 来执行您的脚本?
  q将打印?mail.jpg tux.jpg"的结果?
    引号 (单引号和双引? 防止这U通配W扩展:
#!/bin/sh
echo "*.jpg"
echo '*.jpg'
  q将打印"*.jpg" 两次?
  单引h严格一些。它可以防止M变量扩展。双引号可以防止通配W扩展但允许变量扩展?
#!/bin/sh
echo $SHELL
echo "$SHELL"
echo '$SHELL'
  q行l果为:
/bin/bash
/bin/bash
$SHELL
  最后,q有一U防止这U扩展的ҎQ那是使用转义字符——反斜杆Q?
echo *.jpg
echo $SHELL
  q将输出Q?
*.jpg
$SHELL

6. Here documents -- 我们的技术是你的Q?a target=_blank>www.icwin.net

当要几行文字传递给一个命令时Qhere documentsQ译者注Q目前还没有见到q对该词适合的翻译)
一U不错的Ҏ。对每个脚本写一D帮助性的文字是很有用的,此时如果我们四有那个 here documents
׃必用echo函数一行行输出?一?"Here document" ?<< 开_后面接上一个字W串Q这个字W串
q必d现在here document的末。下面是一个例子,在该例子中,我们对多个文件进行重命名Qƈ?br>使用here documents打印帮助Q?
#!/bin/sh
# we have less than 3 arguments. Print the help text:
if [ $# -lt 3 ] ; then
cat <
ren -- renames a number of files using sed regular expressions
USAGE: ren 'regexp' 'replacement' files...
EXAMPLE: rename all *.HTM files in *.html:
 ren 'HTM$' 'html' *.HTM
HELP
 exit 0
fi
OLD="$1"
NEW="$2"
# The shift command removes one argument from the list of
# command line arguments.
shift
shift
# $* contains now all the files:
for file in $*; do
  if [ -f "$file" ] ; then
   newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
   if [ -f "$newfile" ]; then
    echo "ERROR: $newfile exists already"
   else
    echo "renaming $file to $newfile ..."
    mv "$file" "$newfile"
   fi
  fi
done
 q是一个复杂一些的例子。让我们详细讨论一下。第一个if表达式判断输入命令行参数?br>否小??(Ҏ变量$# 表示包含参数的个? 。如果输入参数小?个,则将帮助文字传?br>lcat命oQ然后由cat命o其打印在屏q上。打印帮助文字后E序退出?如果输入参数{?br>于或大于3个,我们将W一个参数赋值给变量OLDQ第二个参数赋值给变量NEW。下一步,?br>们用shift命o第一个和W二个参C 参数列表中删除,q样原来的第三个参数成为参
数列?*的第一个参数。然后我们开始@环,命o行参数列表被一个接一个地被赋值给变量$file?br>接着?们判断该文g是否存在Q如果存在则通过sed命o搜烦和替换来产生新的文g名。然?br>反短斜U内命ol果赋值给newfile。这h们就辑ֈ了我们的?的:得到了旧文g名和?br>文g名。然后用mv命oq行重命名?
4)函数
如果您写了一些稍微复杂一些的E序Q您׃发现在程序中可能在几个地方用了相同的代码,
q且您也会发玎ͼ如果我们使用了函敎ͼ会方便很多。一个函数是q个样子的:
functionname()
{
# inside the body $1 is the first argument given to the function
# $2 the second ...
body
}
您需要在每个E序的开始对函数q行声明?

  下面是一个叫做xtitlebar的脚本,使用q个脚本您可以改变终端窗口的名称?br>q里使用了一个叫做help的函数。正如您可以看到的那Pq个定义的函数被使用了两ơ?
#!/bin/sh
# vim: set sw=4 ts=4 et:
help()
{
  cat <
xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole
USAGE: xtitlebar [-h] "string_for_titelbar"
OPTIONS: -h help text
EXAMPLE: xtitlebar "cvs"
HELP
  exit 0
}
# in case of error or if -h is given we call the function help:
[ -z "$1" ] && help
[ "$1" = "-h" ] && help
# send the escape sequence to change the xterm titelbar:
echo -e "33]0;$107"
#

在脚本中提供帮助是一U很好的~程习惯Q这h便其他用P和您Q用和理解脚本?
命o行参?
  我们已经见过$* ?$1, $2 ... $9 {特D变量,q些Ҏ变量包含了用户从命o
行输入的参数。迄今ؓ止,我们仅仅了解了一些简单的命o行语法(比如一些强制性的
参数和查看帮助的-h选项Q?但是在编写更复杂的程序时Q您可能会发现您需要更多的
自定义的选项。通常的惯例是在所有可选的参数之前加一个减P后面再加上参数?(
比如文g??
有好多方法可以实现对输入参数的分析,但是下面的用case表达式的例子无遗是一个不错的Ҏ?
#!/bin/sh
help()
{
 cat <
This is a generic command line parser demo.
USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2
HELP
 exit 0
}
while [ -n "$1" ]; do
case $1 in
  -h) help;shift 1;; # function help is called
  -f) opt_f=1;shift 1;; # variable opt_f is set
  -l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
  --) shift;break;; # end of options
  -*) echo "error: no such option $1. -h for help";exit 1;;
  *) break;;
esac
done

echo "opt_f is $opt_f"
echo "opt_l is $opt_l"
echo "first arg is $1"
echo "2nd arg is $2"
  您可以这栯行该脚本Q?
cmdparser -l hello -f -- -somefile1 somefile2
  q回的结果是Q?
opt_f is 1
opt_l is hello
first arg is -somefile1
2nd arg is somefile2
  q个脚本是如何工作的呢?脚本首先在所有输入命令行参数中进行@环,输入参?br>与case表达式进行比较,如果匚w则设|一个变量ƈ且移除该参数。根据unixpȝ的惯例,
首先输入的应该是包含减号的参?
W?部分 实例
现在我们来讨论编写一个脚本的一般步骤。Q何优U的脚本都应该h帮助和输入参数。ƈ且写一个伪脚本Qframework.shQ,该脚本包含了大多数脚本都需要的框架l构Q是一个非怸错的L。这时候,在写一个新的脚本时我们只需要执行一下copy命oQ?
cp framework.sh myscript
 然后再插入自q函数?
  让我们再看两个例子:
  二进制到十进制的转换
  脚本 b2d 二q制?(比如 1101) 转换为相应的十进制数。这也是一个用expr命oq行数学q算的例子:
#!/bin/sh
# vim: set sw=4 ts=4 et:
help()
{
 cat <
b2h -- convert binary to decimal
USAGE: b2h [-h] binarynum
OPTIONS: -h help text
EXAMPLE: b2h 111010
will return 58
HELP
 exit 0
}
error()
{
  # print an error and exit
  echo "$1"
  exit 1
}
lastchar()
{
  # return the last character of a string in $rval
  if [ -z "$1" ]; then
    # empty string
    rval=""
    return
  fi
  # wc puts some space behind the output this is why we need sed:
  numofchar=`echo -n "$1" | wc -c | sed 's/ //g' `
  # now cut out the last char
  rval=`echo -n "$1" | cut -b $numofchar`
}

chop()
{
  # remove the last character in string and return it in $rval
  if [ -z "$1" ]; then
    # empty string
    rval=""
    return
  fi
  # wc puts some space behind the output this is why we need sed:
  numofchar=`echo -n "$1" | wc -c | sed 's/ //g' `
  if [ "$numofchar" = "1" ]; then
    # only one char in string
    rval=""
    return
  fi
  numofcharminus1=`expr $numofchar "-" 1`
  # now cut all but the last char:
  rval=`echo -n "$1" | cut -b 0-${numofcharminus1}`
}
while [ -n "$1" ]; do
case $1 in
  -h) help;shift 1;; # function help is called
  --) shift;break;; # end of options
  -*) error "error: no such option $1. -h for help";;
  *) break;;
esac
done
# The main program
sum=0
weight=1
# one arg must be given:
[ -z "$1" ] && help
binnum="$1"
binnumorig="$1"

while [ -n "$binnum" ]; do
  lastchar "$binnum"
  if [ "$rval" = "1" ]; then
    sum=`expr "$weight" "+" "$sum"`
  fi
  # remove the last position in $binnum
  chop "$binnum"
  binnum="$rval"
  weight=`expr "$weight" "*" 2`
done
echo "binary $binnumorig is decimal $sum"
 该脚本用的法是利用十q制和二q制数权?(1,2,4,8,16,..)Q比如二q制"10"?br>以这栯{换成十进Ӟ
0 * 1 + 1 * 2 = 2
  Z得到单个的二q制数我们是用了lastchar 函数。该函数使用wc –c计算字符个数Q?br>然后使用cut命o取出末尾一个字W。Chop函数的功能则是移除最后一个字W?

文g循环E序
  或许您是惛_所有发出的邮g保存C个文件中的h们中的一员,但是在过了几个月
以后Q这个文件可能会变得很大以至于对该文g的访问速度变慢。下面的 脚本rotatefile
可以解决q个问题。这个脚本可以重命名邮g保存文gQ假设ؓoutmailQؓoutmail.1Q?br>而对于outmail.1变成了outmail.2 {等{等...
#!/bin/sh
# vim: set sw=4 ts=4 et:
ver="0.1"
help()
{
  cat <
rotatefile -- rotate the file name

USAGE: rotatefile [-h] filename

OPTIONS: -h help text
EXAMPLE: rotatefile out
This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
and create an empty out-file
The max number is 10
version $ver
HELP
  exit 0
}

error()
{
  echo "$1"
  exit 1
}
while [ -n "$1" ]; do
case $1 in
  -h) help;shift 1;;
  --) break;;
  -*) echo "error: no such option $1. -h for help";exit 1;;
  *) break;;
esac
done
# input check:
if [ -z "$1" ] ; then
error "ERROR: you must specify a file, use -h for help"
fi
filen="$1"
# rename any .1 , .2 etc file:
for n in 9 8 7 6 5 4 3 2 1; do
  if [ -f "$filen.$n" ]; then
    p=`expr $n + 1`
    echo "mv $filen.$n $filen.$p"
    mv $filen.$n $filen.$p
  fi
done
# rename the original file:
if [ -f "$filen" ]; then
  echo "mv $filen $filen.1"
  mv $filen $filen.1
fi
echo touch $filen
touch $filen
  q个脚本是如何工作的呢?在检用h供了一个文件名以后Q我们进行一??的@环。文?被命名ؓ10Q文?重命名ؓ9{等。@环完成之后,我们原始文件命名ؓ文g1同时建立一个与原始文g同名的空文g?
调试 //---------------------------------------  
//-- www.icwin.net
//---------------------------------------
  最单的调试命o当然是用echo命o。您可以使用echo在Q何怀疑出错的地方打印M变量倹{这也是l大多数的shellE序员要p80%的时间来调试E序的原因。ShellE序的好处在于不需要重新编译,插入一个echo命o也不需要多时间?
  shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误Q您可以q样来进行调试:
sh -x strangescript
  q将执行该脚本ƈ昄所有变量的倹{?
  shellq有一个不需要执行脚本只是检查语法的模式。可以这样用:
sh -n your_script
  q将q回所有语法错误?

kooyee 2007-08-30 18:47 发表评论
]]>
【应用】Linux查找文g的相兛_?/title><link>http://www.tkk7.com/Javawind/archive/2007/08/30/141472.html</link><dc:creator>kooyee</dc:creator><author>kooyee</author><pubDate>Thu, 30 Aug 2007 09:55:00 GMT</pubDate><guid>http://www.tkk7.com/Javawind/archive/2007/08/30/141472.html</guid><wfw:comment>http://www.tkk7.com/Javawind/comments/141472.html</wfw:comment><comments>http://www.tkk7.com/Javawind/archive/2007/08/30/141472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Javawind/comments/commentRss/141472.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Javawind/services/trackbacks/141472.html</trackback:ping><description><![CDATA[ Linux查找文g的相兛_令如?-7所C? <p>  ?-7 Linux查找文g的相兛_令说?/p> <div align=center> <table style="MARGIN-LEFT: -0.3pt; BORDER-COLLAPSE: collapse; mso-table-layout-alt: fixed; mso-padding-alt: 0cm 1.4pt 0cm 1.4pt" cellSpacing=0 cellPadding=0 border=0> <tbody> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 0cm; BACKGROUND: #e0e0e0; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" width=82> <p class=a1 style="MARGIN: 0cm 0cm 0pt"><font size=1><span lang=AR-SA style="FONT-FAMILY: 黑体; mso-ascii-font-family: 'Times New Roman'">?/span><span lang=AR-SA style="mso-fareast-language: ZH-CN"> </span><span lang=AR-SA style="FONT-FAMILY: 黑体; mso-ascii-font-family: 'Times New Roman'">?/span><span lang=AR-SA style="mso-fareast-language: ZH-CN"> </span><span lang=AR-SA style="FONT-FAMILY: 黑体; mso-ascii-font-family: 'Times New Roman'">?/span><span lang=AR-SA style="mso-fareast-language: ZH-CN"> </span><span lang=AR-SA style="FONT-FAMILY: 黑体; mso-ascii-font-family: 'Times New Roman'">?/span><span lang=EN-US style="mso-fareast-language: ZH-CN"><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 0cm; BACKGROUND: #e0e0e0; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" width=263> <p class=a1 style="MARGIN: 0cm 0cm 0pt"><font size=1><span lang=AR-SA style="FONT-FAMILY: 黑体; mso-ascii-font-family: 'Times New Roman'">要中文说?/span><span lang=EN-US style="mso-fareast-language: ZH-CN"><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 0cm; BACKGROUND: #e0e0e0; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid" width=120> <p class=a1 style="MARGIN: 0cm 0cm 0pt"><font size=1><span lang=AR-SA style="FONT-FAMILY: 黑体; mso-ascii-font-family: 'Times New Roman'">E序所在目?/span><span lang=EN-US style="mso-fareast-language: ZH-CN"><o:p></o:p></span></font></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>more<o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分页昄一个文件或M输出l果</span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/bin<o:p></o:p></font></span></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>less<o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分页昄一个文件ƈ且可以回?/span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/usr/bin<o:p></o:p></font></span></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>whereis<o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">L文g工具</span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/usr/bin<o:p></o:p></font></span></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>find<o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">L文g工具</span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/usr/bin<o:p></o:p></font></span></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>locate<o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">L文g工具</span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/usr/bin<o:p></o:p></font></span></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>grep <o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">L某字串内容工?/span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; BACKGROUND-COLOR: transparent" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/bin<o:p></o:p></font></span></p> </td> </tr> <tr> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 61.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=82> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>env<o:p></o:p></font></span></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 196.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=263> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><font size=1><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查看环境讄</span><span lang=EN-US><o:p></o:p></span></font></p> </td> <td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 1.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 1.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 90.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" width=120> <p class=a2 style="MARGIN: 0cm 0cm 0pt 10.5pt"><span lang=EN-US><font size=1>/usr/bin<o:p></o:p></font></span></p> </td> </tr> </tbody> </table> </div> <p><font color=#ff0000><strong>  more [文g名]</strong></font></p> <p><font color=#ff0000><strong>  分页昄一个文件或M输出l果</strong></font></p> <p>  其实more不是用来L文g的,但是一般h却十有八九是在找文g时把它派上用场?/p> <p>  因ؓ more 主要的作用是把输出结果显C在屏幕上,一停止一ơ,所以例如当我们?ls 命oL一?x字母开头的文gQ而下达了 ls x* 却仍然列出太多文Ӟ一个屏q看不完Ӟ可以配合管道符号和 more 命oQ?/p> <p>  ls x* | more</p> <p>  它会一屏停止一下,{待您按I白键才l箋往上卷。于?more 俨然犹如 DOS ?DIR 命o /P 选项的地位了。?more 当主角的时候,是用做一一ơ显C文章,例如我们惌?/etc 里面?XF86Config 文gQ可以下如下命oQ?/p> <p>  more /etc/XF86Config</p> <p>  q样Q我们就可以不断按空白键把这个文件慢慢看完。但是,因ؓmore 先天的设计,如果您看完了q页Q想要回头看上一,很抱歉,是不行的Q您必须从头再来Q于是大家在使用中就q脆摒弃q个命oQ而代之以 vi 或者pico, joe{文书编辑器来看文字文g了!</p> <p>  pico /etc/XF86Config</p> <p>  到最后,很少人再用more了。所以morel常配合 ls在找文g的场合出玎ͼ每天都可以上场十几次?/p> <p>  所以,怿把失M要舞台的 more归类为找L件的相关命o虽不合法Q但合情合理也合于现状?/p> <p>  l习Q?/p> <p>  h?more ȝ一个文字文Ӟ与用 pico ȝ一个文字文件相比较Q哪一个比较方便?<br><br><strong><font color=#ff0000>         less [文g名]</font></strong></p> <p><strong><font color=#ff0000>  分页昄一个文件ƈ且可以回?/font></strong></p> <p>  less命o很好W,取名时就故意与more 命o打对収ͼ你叫“更多”Q我叫“更少”Q就好像你叫黑h牙膏我就叫白人牙膏一栗事实上与什?#8220;更多”?#8220;更少”都没有关pR它最主要只是Z改进一点:more 不能回头看的问题Q?/p> <p>  less 的优点就是可以随时回_最单的用【PgUp】键可以向上翻?/p> <p>  可是依我们的孤陋之见Q还是用文书~辑器去阅读文g好了嘛Q更何况 less 本nq有高达 42 个选项Q何必那么麻烦!</p> <p>  所以,Z您好Q选项我们也不介绍了。这个命令目前只?Linux pȝ可以使用Q其?UNIX 家族无?/p> <p>  l习Q?/p> <p>  Q?Q请您用 less ȝ一个文字文Ӟ与用 pico ȝ一个文字文件相比,哪一个比较方便?</p> <p>  Q?Qless命o能像more命o一样配合管道符P让ls的列C文件能够回头翻看吗Q?/p> <p><font color=#ff0000><strong>  whereis 文g?/strong></font></p> <p><font color=#ff0000><strong>  L文g工具</strong></font></p> <p>  whereis 是一个小巧好用的文gL工具Q它专门用来L可执行的E序、原始程序和使用手册?/p> <p>  例如执行命oQ?/p> <p>  whereis bzip2</p> <p>  它就会告诉您Qbzip2 攑֜ /usr/bin 。通常Q如果您定某个东西是程序,而用 whereis 找不到的话,那就表示本系l没有安装该E序了,例如Q?/p> <p>  whereis cjoe</p> <p>  表示q套pȝ中没有装 cjoeQ否则应该会扑ֈ才对?/p> <p>  l习Q?/p> <p>  Q?Q找找您的系l上有没有xpaintq个E序Q因个程序在 KDE ?GNOME 的默认主菜单上都没有列出来,但ƈ不表CZ定没有?/p> <p>  Q?Q能?whereis 命oL到XF86Config讄文g在哪里吗Qؓ什?Q?br><br><strong><font color=#ff0000>         find [L的目录] [表示式]</font></strong></p> <p><strong><font color=#ff0000>  L文g工具</font></strong></p> <p>  find 是高U的L文g工具Q可不像 whereis 那么“x白雪”。但也因为它太高U了Q复杂到很多人用不熟l。我们尽量只丄单的例子?/p> <p>  最单的格式如下Q?/p> <p>  find / -name my* -print</p> <p>  q个意思是请它从最底层的主目录开始找Q找出文件名?my 开头的文gQ把它显C出来?print 选项是显C,您可把它当做固定要加上的目?/p> <p>  但它q可以用旉来找Q例如:</p> <p>  find /usr -atime 3 –print</p> <p>  会从 /usr 目录开始往下找Q找最q?天之内存取过的文件?/p> <p>  find /usr -ctime 5 –print</p> <p>  会从 /usr 目录开始往下找Q找最q?天之内修改过的文件?/p> <p>  find /doc -user jacky -name 'j*' –print</p> <p>  会从 /doc 目录开始往下找Q找jacky 的、文件名开头是 j的文件?/p> <p>  find /doc \( -name 'ja*' -o- -name 'ma*' \) –print</p> <p>  会从 /doc 目录开始往下找Q找L件名?ja 开头或?ma开头的文g?/p> <p>  find /doc -name '*bak' -exec rm {} \;</p> <p>  会从 /doc 目录开始往下找Q找到凡是文件名l尾?bak的文Ӟ把它删除掉?exec 选项是执行的意思,rm 是删除命令,{ } 表示文g名,“\;”是规定的命ol尾?/p> <p>  l习Q?/p> <p>  ?find 命o能否扑ևXF86Configq个文g在哪?br><br>         <strong><font color=#ff0000>locate 文g?/font></strong></p> <p><strong><font color=#ff0000>  L文g工具</font></strong></p> <p>  locate 也是一个寻找文件的工具Q但是它不像 whereis 只能扄序文件等几种文gQ也不像find那么复杂Q可以算?#8220;中庸之道”Q?/p> <p>  中庸之道Q往往是大部分h最佳的选择Q如?-32所C?/p> <p> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr> <td align=middle><img src="http://photo.sohu.com/2004/06/09/32/Img220453227.gif" border=1><br><font size=2>?-32 3U寻找文件命令的Ҏ</font></td> </tr> </tbody> </table> </p> <p>  whereis找不到的文gQfind要一大串命oQ还׃很久的时间才扑ֈ的XF86Config讄文gQ而用locate一下子q单找CQ?/p> <p>  l习Q?/p> <p>  Q?Q用 locate 找找有没有一个inittab文gQ?/p> <p>  Q?Q用 locate 找找有哪?.pcf 字Ş文g。如果找不到的话Q找扄已经压羃q的字Ş文g .pcf.Z 或?.pcf.gz?/p> <p><font color=#ff0000><strong>  grep [-选项] [字串] [文g名]</strong></font></p> <p><font color=#ff0000><strong>  L某字串内容工?/strong></font></p> <p>  有些时候,我们存储文g旉手ؕ取了一个文件名Q事后自己都忘了那个文g名叫什么,q开头第一个字母都想不h。那么,如果您还记得该文件一点特D的词语Q应该可以用 grep 命o扑ֈ?/p> <p>  例如Q我们想在一个目录的200个文仉面,扑և哪一个文件提?#8220;排版”q个词语Q?/p> <p>  grep 排版 *.txt</p> <p>  扑ֈ了两个文件有此字栗然后您再自行调出看看到底哪一才是您所要的卛_。寻找时注意量LҎ词语Q如果您输入“然后”?#8220;q样”?#8220;不是”?#8220;电脑”……q类太普遍的词语Q可能几癄文章中都有,那就失去了用 grep 找文件的意义了?/p> <p>  因ؓ例子中第二篇文章出现了两ơ,所以列Z3行,其实只有两个文gW合。如果您惌让它凡是W合条g的只出现一ơ的话,加上 -l 选项可以了Q如?-33所C?/p> <p> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr> <td align=middle><img src="http://photo.sohu.com/2004/06/09/32/Img220453228.gif" border=1><br><font size=2>?-33 增加-l选项后的grep命o</font></td> </tr> </tbody> </table> </p> <p>  其他常用的选项q有Q?/p> <p>  -n 同时列出该词语出现在文章的第几行?/p> <p>  -c 计算一下该字串出现的次数?/p> <p>  -i 比对的时候,不计较大写的不同?/p> <p>  l习Q?/p> <p>  当我们要为系l增加一个用hQ往往担心d一个已l存在的用户名字。如果用 grep 命oQ可不可以避免这个问题?如何避免 Q?br><br>         <strong><font color=#ff0000>env</font></strong></p> <p><strong><font color=#ff0000>  查看环境讄</font></strong></p> <p>  env 命o可以讄很多环境变量Q例如终端机的类型、用的览器、用户主目录QHome DirectoryQ的所在等{?/p> <p>  但是我们现在把焦炚w中在其中一:PATH环境变量?/p> <p>  因ؓ PATH q个环境变量掌管了您下达命o的时候,它会C面几个目录去找您命o的程序:</p> <p>  /usr/bin</p> <p>  /sbin</p> <p>  /usr/sbin</p> <p>  /usr/X11R6/bin</p> <p>  /root/bin</p> <p>  那么您用 env 命oQ让它把所有的环境变量列出来的时候,可以看到有一行PATH 讄Q把上述几个目录用分号分开Q然后串成一丌Ӏ这是它所谓寻扑֑令的“路径”。DOS pȝ也有一个同名而且意义非常怼的\径设|。如?-34所C?/p> <p> <table cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr> <td align=middle><img src="http://photo.sohu.com/2004/06/09/32/Img220453229.gif" border=1><br><font size=2>?-34 执行env命o</font></td> </tr> </tbody> </table> </p> <p>  如果您想在它查找命o的\径上增加一?/usr/bin/heQ而把 /root/bin LQ那么您可以重新下达Q?/p> <p>  env PATH=/usr/bin;/sbin;/usr/sbin;/usr/X11R6/bin;/usr/bin/he</p> <p>  当然env 其他的变量也可以q样改变。但是因为涉及面太广Q我们就只把焦点集中在改变查找\径上Q其他暂时不谈?/p> <p>  l习Q?/p> <p>  用env命o改变您默认的览?/p> <img src ="http://www.tkk7.com/Javawind/aggbug/141472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Javawind/" target="_blank">kooyee</a> 2007-08-30 17:55 <a href="http://www.tkk7.com/Javawind/archive/2007/08/30/141472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【调试】Setting Environment Variableshttp://www.tkk7.com/Javawind/archive/2007/08/29/141122.htmlkooyeekooyeeWed, 29 Aug 2007 15:06:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/29/141122.htmlhttp://www.tkk7.com/Javawind/comments/141122.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/29/141122.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141122.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141122.htmlexport PATH=${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}

q里?{PATH}指向Z前path中的variavle|所以这个命令运行后是把${ANT_HOME}/bin:${JAVA_HOME}/bindC前的path中去?如果没有${PATH}则会用新的变量替换原来的?br>
单独调用export or env 查看当前的variable 讄情况 




You can check the CLASSPATH setting by typing:
echo %CLASSPATH%
under W95/W98/Me/NT/W2K/XP/W2K3/Vista or
echo $CLASSPATH
under Unix/Linux.


kooyee 2007-08-29 23:06 发表评论
]]>【Y件安装】Installing the Java Software Developers Kit Version (SDK) 1.4: http://www.tkk7.com/Javawind/archive/2007/08/29/141119.htmlkooyeekooyeeWed, 29 Aug 2007 14:51:00 GMThttp://www.tkk7.com/Javawind/archive/2007/08/29/141119.htmlhttp://www.tkk7.com/Javawind/comments/141119.htmlhttp://www.tkk7.com/Javawind/archive/2007/08/29/141119.html#Feedback0http://www.tkk7.com/Javawind/comments/commentRss/141119.htmlhttp://www.tkk7.com/Javawind/services/trackbacks/141119.html Installing the Java Software Developers Kit Version (SDK) 1.4:

Download: http://java.sun.com/j2se/1.4/download.html
(Download j2sdk-1_4_0_03-linux-i586-rpm.bin)
x86_64 AMD Athelon/Opteron/Turion-64/EM64T info for: jdk-1_5_0_version-linux-amd64-rpm.bin

Install:

chmod +x j2sdk-1_4_0_03-linux-i586-rpm.bin
./j2sdk-1_4_0_03-linux-i586-rpm.bin
...
This is where you agree to their license. Press the space bar to scroll down in "More".
Do you agree the the above license terms? [yes or no]
yes
...
rpm -ivh j2sdk-1_4_0_03-fcs-linux-i586.rpm
The SDK installed in /usr/java/j2sdk1.4.0_03/

Set environment variables. (Add to $HOME/.bash_profile)

PATH=/usr/java/j2sdk1.4.0_03/bin:$PATH:$HOME/bin:./
export PATH
export JAVA_HOME=/usr/java/j2sdk1.4.0_03
export CLASSPATH=/usr/java/j2sdk1.4.0_03/lib/tools.jar:/usr/java/j2sdk1.4.0_03/jre/lib/rt.jar:./
Must include "./" in CLASSPATH. This is necessary in 1.4.0_03.

Test program: Test.java

public class Test
            {
            public static void main(String[] args)
            {
            System.out.println("Hello world");
            }
            }
            
Compile: javac Test.java

(or /usr/java/j2sdk1.4.0/bin/javac Test.java)
Note that the file name and the class name are the same. This became a requirement in SDK 1.4. The result of the compile is the file: Test.class

Run:

[prompt]$ java Test
Hello world
(or /usr/java/j2sdk1.4.0/bin/java Test)

[Potential Pitfall]: Red Hat Enterprise Linux and other Linus systems which install GNU Java may find that this conflicts with the Sun Java installation. You may have to remove this (for example RHEL4):
rpm -e java-1.4.2-gcj-compat-1.4.2.0-27jpp java-1.4.2-gcj-compat-devel-1.4.2.0-27jpp.noarch

The Java SDK includes the following commands:

  • javac: Linux Java compiler (i.e. javac program-name.java)
  • java: Byte code interpreter / Java program launcher. (i.e. java program-name Do not include ".class" extension.)
    Test version: java -version
  • appletviewer: Views Java applet embedded in html file. (appletviewer myfile.html)
  • javaws: Java Web Start application manager. Java application handler for browser.
    (Also see YoLinux Mozilla configuration tutorial)
  • javadoc: Generate API documentation from tagged comments.
  • javah: Creates C header and stub files for Java class.
  • javap: Java file disassembler
  • jdb: Java debugger
  • jar: JAR archive file generation tool.


kooyee 2007-08-29 22:51 发表评论
]]>
【基学习】文件结?/title><link>http://www.tkk7.com/Javawind/archive/2007/08/29/141109.html</link><dc:creator>kooyee</dc:creator><author>kooyee</author><pubDate>Wed, 29 Aug 2007 14:19:00 GMT</pubDate><guid>http://www.tkk7.com/Javawind/archive/2007/08/29/141109.html</guid><wfw:comment>http://www.tkk7.com/Javawind/comments/141109.html</wfw:comment><comments>http://www.tkk7.com/Javawind/archive/2007/08/29/141109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Javawind/comments/commentRss/141109.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Javawind/services/trackbacks/141109.html</trackback:ping><description><![CDATA[<p>~ 表示root文g?/p> <img src ="http://www.tkk7.com/Javawind/aggbug/141109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Javawind/" target="_blank">kooyee</a> 2007-08-29 22:19 <a href="http://www.tkk7.com/Javawind/archive/2007/08/29/141109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://zjfxjy.com" target="_blank">ŮƷþþ2020 </a>| <a href="http://yygcui.com" target="_blank">Ƶ߹ۿ</a>| <a href="http://qiyupu.com" target="_blank">þþþAvƬv </a>| <a href="http://liulian88.com" target="_blank">AVרAV</a>| <a href="http://spxingyiquan.com" target="_blank">һ</a>| <a href="http://bqjonline.com" target="_blank">þþþޱٸ</a>| <a href="http://519vip.com" target="_blank">ѸƵվ</a>| <a href="http://kimheezk.com" target="_blank">ѳ˸Ƶ</a>| <a href="http://yzxjk.com" target="_blank">Ƶ</a>| <a href="http://9844555.com" target="_blank">պƷר </a>| <a href="http://zmtme.com" target="_blank">õĻ2019</a>| <a href="http://www-63228.com" target="_blank">þøݾƷԴվ</a>| <a href="http://saohu533.com" target="_blank">ѾþҹƷ</a>| <a href="http://spvec.com" target="_blank">ޱavӲʵ</a>| <a href="http://yx6768.com" target="_blank">߲</a>| <a href="http://xyflash.com" target="_blank">ŮƵַ</a>| <a href="http://zhuguangbaoyu.com" target="_blank">þAV</a>| <a href="http://0967c.com" target="_blank">޸ľƷ26U</a>| <a href="http://fjwkjx.com" target="_blank">߲޵һĻ</a>| <a href="http://doubaye.com" target="_blank">þþƷƷ</a>| <a href="http://zzyqr.com" target="_blank">޹һɾþþƷۺ </a>| <a href="http://dzhankong.com" target="_blank">ѸƵ</a>| <a href="http://binz132.com" target="_blank">182tvѹۿƵ </a>| <a href="http://by8847.com" target="_blank">޹ֻߵӰbd</a>| <a href="http://szgreater.com" target="_blank">˳߲վ</a>| <a href="http://987566.com" target="_blank">þ޹ҹƷƬ </a>| <a href="http://spvec.com" target="_blank">fc2˳ΪƵ</a>| <a href="http://4eeyy.com" target="_blank">һëƬڲ</a>| <a href="http://kanzhelu23.com" target="_blank">ҳַȫѹۿ12վ</a>| <a href="http://ekyzs.com" target="_blank">ŮһëƬѹۿ</a>| <a href="http://19933k.com" target="_blank">Ůxx00ƵԿ</a>| <a href="http://ur5r2kr.com" target="_blank">Ʒ޶</a>| <a href="http://qu41.com" target="_blank">ŮƵһ</a>| <a href="http://mangaou.com" target="_blank">ѲŮһëƬ</a>| <a href="http://bdyls.com" target="_blank">һ߹ۿ</a>| <a href="http://qiseka.com" target="_blank">eeussӰԺֱ</a>| <a href="http://www-36664.com" target="_blank">߹ۿƵһ</a>| <a href="http://gbn21.com" target="_blank">ҰƵѹۿȫ</a>| <a href="http://528676.com" target="_blank">þþ99Ʒѹۿ</a>| <a href="http://sdsupuchem.com" target="_blank">99ƵоƷƵѹۿ</a>| <a href="http://igo98.com" target="_blank">91Ƶ߹ۿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>