??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区二区大片,亚洲三级在线看,青春草免费在线视频http://www.aygfsteel.com/Javawind/category/24930.htmlzh-cnFri, 25 Jan 2008 15:40:35 GMTFri, 25 Jan 2008 15:40:35 GMT60Linux的shell变量http://www.aygfsteel.com/Javawind/archive/2008/01/25/177832.htmlkooyeekooyeeFri, 25 Jan 2008 10:55:00 GMThttp://www.aygfsteel.com/Javawind/archive/2008/01/25/177832.htmlhttp://www.aygfsteel.com/Javawind/comments/177832.htmlhttp://www.aygfsteel.com/Javawind/archive/2008/01/25/177832.html#Feedback0http://www.aygfsteel.com/Javawind/comments/commentRss/177832.htmlhttp://www.aygfsteel.com/Javawind/services/trackbacks/177832.htmlLinux的变量可分ؓ(f)两类Q环境变量和本地变量

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

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

Linux中环境变量的文g

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

1.    /etc/profileQ?/span>

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

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

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



2.   
/etc/bashrc
Q?/span>

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

    每个使用bash的用户在登陆以后执行?span lang="EN-US">/etc/profile中内容以后都?x)执行此文gQ在新开一?span lang="EN-US">bash的时候也?x)执行此文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>

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



4.   
~/.bashrc
Q?/span>

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

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

~/.bash_logoutQ?/span>

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

几个命o(h)

    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

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

    set

    用于昄与设|?span blue?>当前本地变量。单独一?span lang="EN-US">set显CZ(jin)当前环境的所有的变量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?qing)其?span lang="EN-US">shellQ因此重新登陆以后,它所讑֮的环境变量就消失?jin)。如何将环境变量怹化?修改上面介绍的那几个环境变量的配|文件?/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行的,卛_启了(jin)一个子shell来执行这个脚本,脚本执行完后该子shell自动退出?/span>

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

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

echo $myname

[oracle@dbamonitor NBU]$ echo $myname  -- 变量存在Q内Ҏ(gu)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命o(h)Q是脚本在当?span lang="FR">shell中执?/span>

ilonng



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

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

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

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

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

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

4Q特定参数变量。ؓ(f)Ҏ(gu)变量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(h)功能相同
$? 昄最后命令的退出状态,0表示没有错误Q其他表明错误?/div>

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

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

注:(x)使用RedHat 9.0默认的bash shell

 

1 使用命o(h)echo昄环境变量

 

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

$ echo $HOME  

/home/lqm

 

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

 

variableQnameQvalueQexport variableQname

或?/span>

export variableQnameQvalue

 

$ export HELLO=”Hello!”

$ echo $HELLO

Hello!

 

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

 

$ env

SSH_AGENT_PID=1875

HOSTNAME=lqm

SHELL=/bin/bash

TERM=xterm

HISTSIZE=1000

……

 

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

 

$ set

BASH=/bin/bash

……

 

5  使用unset命o(h)来清除环境变?/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(h)讄只读变量

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

 

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

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

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

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

-bash: TEST: readonly variable

 

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

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

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

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

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

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

 

#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避免修Ҏ(gu)用户的环境定义文Ӟ因ؓ(f)那样可能?x)造成潜在的危险?/span>

 

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

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

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

 

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

 

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

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

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

 

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



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

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



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



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


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



4. 使用set命o(h)昄所有本地定义的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(h)来清除环境变?

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



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

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



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



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

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



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

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

FTP命o(h)是Internet用户使用最频繁的命令之一,不论是在DOSq是UNIX操作pȝ?使用FTP,都会(x)遇到大量的FTP内部命o(h),熟?zhn)q灵zd用FTP的内部命?可以大大方便 使用?对于现在拨号上网的用P如果ISP提供?jin)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(h)执行完毕后计机响铃一ơ?
  7.bin使用二进制文件传输方式?
  8.bye退出ftp?x)话q程?
  9.case在用mget?远E主机文件名中的大写转ؓ(f)写字母?
  10.cd remoteQdir q入q程L目录?
  11.cdupq入q程L目录的父目录?
  12.chmod modefileQname远E主机文件fileQname的存取方式设|ؓ(f)mode,如chmod 777 a.out?
  13.close中断与远E服务器的ftp?x)?与open对应)?
  14.cr使用asscii方式传输文g?回车换行{换ؓ(f)回行?
  15.delete remoteQfile删除q程L文g?
  16.debug[debugQvalue]讄调试方式,昄发送至q程L的每条命?如debug3,?设ؓ(f)0,表示取消debug?
  17.dir[remoteQdir][localQfile]昄q程L目录,q将l果存入localQfile?
  18.disconnection同close?
  19.form format文件传输方式设|ؓ(f)format,~省为file方式?
  20.getremoteQfile[localQfile]远E主机的文gremoteQfile传至本地盘的localQfile?
  21.glob讄mdelete、mget、mput的文件名扩展,~省时不扩展文g?同命令行的-g参数?
  22.hash每传?024字节,昄一个hashW号(Q??
  23.help[cmd]昄ftp内部命o(h)cmd的帮助信?如help get?
  24.idle[seconds]远E服务器的休眠计时器设ؓ(f)[seconds]U?
     25.image讄二进制传输方?同binary)
     26.lcd[dir]本地工作目录切换至dir?
  27.ls[remoteQdir][localQfile]昄q程目录r(sh)emoteQdir,q存入本地l(f)ocalQfile?
   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]文件传输方式设|ؓ(f)modeQname,~省为stream方式?
   35.modtime fileQname昄q程L文g的最后修Ҏ(gu)间?
   36.mput localQfile多个文件传输至q程L?
   37.newerfileQname如果q程ZfileQname的修Ҏ(gu)间比本地盘同名文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(h)特别适用于远E主Zؓ(f)非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(h),该命令允许连接两个ft p
服务?以在两个服务器间传输文g。第一条ftp命o(h)必须为open,以首先徏立两个服务器间的q接?
   45.put localQfile[remoteQfile]本地文件localQfile传送至q程L?
   46.pwd昄q程L的当前工作目录?
   47.quit同bye,退出ftp?x)话?
   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(h)的用?
   60.site arg1,arg2……参C为SITE命o(h)逐字发送至q程ftpL?
   61.size fileQname昄q程L文g大小,如site idle 7200?
   62.status昄当前ftp状态?
   63.struct[structQname]文件传输结构设|ؓ(f)structQname,~省时用streaml构?
64.sunique远E主机文件名存储讄为唯一(与runique对应)?
   65.system昄q程L的操作系l类型?
   66.tenex文件传输类型设|ؓ(f)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(h),如user anonymous my@email?
   72.verbose同命令行的-v参数,卌|详报告方?ftp服务器的所有响应都显C给用户,~省为on.
   73.?[cmd]同help?
  
那么如何应用q些命o(h)提高效率呢?下面我D一个例子,如何利用fttpq行后台下蝲Q假设你的ISPl你提供?jin)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行?jin),如果你想知道情况如何Q可以more aaa2可以知道情况如何了(jin)。这时你可以断线?jin)或q点别的Q估计时间到?timeU?30M/(33.6K/9)s)拨号上去Qmore aaa2如果昄成功下蝲aaa.zippC?aaa.zip已经被下载到ISP的服务器上了(jin)Q你再由ISP的服务器拉回来就相当与点对点?记得下蝲完成后del掉你的文?aaa.zip)Q免得浪费ISP资源Q它?x)关掉shell?



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

        三、bin文g安装
Code:
chmod +x file.bin ./file.bin
            启动安装文g。多数情况会(x)询问安装到那里,如果没有则安装到 .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{)(j)或者用zip{解压羃软g解开卛_安装Q运行反安装E序Quninstall、unware?#8220;卸蝲”{)(j)pY件清除干净Q完全图形化的操作界面,单到只要用鼠标一直点?#8220;下一?#8221;可以了(jin)。?nbsp;Linux好象׃一样了(jin)Q很多的初学者都抱怨在Linux下安装和卸蝲软g非常地困难,没有像用Windows旉么直观。其实在Linux下安装和卸蝲软g也非常简单,同样也有安装向导或解压安装的方式Q不相同的只不过是除?jin)二q制形式的Y件分发外Q还有许许多多以源代码Ş式分发的软g包,下面来详细地讲一讲这些Y件的安装与卸载:(x)

 


一、二q制分发软g包的安装与卸?br />
Linux软g的二q制分发是指事先已经~译好二q制形式的Y件包的发布Ş式,其优Ҏ(gu)安装使用Ҏ(gu)Q缺点则是缺乏灵zL,如果该Y件包是ؓ(f)特定的硬?操作pȝq_~译的,那它?yu)׃能在另外的^台或环境下正执行?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Ҏ(gu)*.src.rpm以外的以rpm为后~的文Ӟ(j)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(h)“rm -rf 软g目录?#8221;Q如果解压后文g分散在多处目录中Q则必须一一手动删除Q稍ȝ(ch)Q,想知道解压时向系l中安装?jin)哪些文Ӟ可以用命?#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提供了(jin)安装脚本或二q制的安装向导程序(setup、install、install.sh{)(j)Q只需q行它就可以完成软g的安装;而卸载时也相应地提供?jin)反安装的脚本或E序。例如SUN公司的StarOffice办公软g套g׃用名为setup的安装程序,而且在Y件安装后提供反安装的功能Q目前这U类型的软g包还比较?yu),因其安装与卸载的方式与Windows软g一P所以就无需多讲?jin)?br />

二、源代码分发软g包的安装与卸?br />
Linux软g的源代码分发是指提供?jin)该软g所有程序源代码的发布Ş式,需要用戯q译成可执行的二进制代码ƈq行安装Q其优点是配|灵z,可以随意L或保留某些功?模块Q适应多种g/操作pȝq_?qing)编译环境,~点是难度较大,一般不适合初学者用?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(h)源代码~译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徏议解压后先阅读说明文Ӟ可以?jin)解安装有哪些需求,有必要时q需改动~译配置。有些Y件包的源代码在编译安装后可以用make install命o(h)来进行卸载,如果不提供此功能Q则软g的卸载必L动删除。由于Y件可能将文g分散地安装在pȝ的多个目录中Q往往很难把它删除q净Q那你应该在~译前进行配|,指定软g要安装到目标\径:(x)./configure --prefix=目录名,q样可以使用“rm -rf 软g目录?#8221;命o(h)来进行干净d的卸载。与其它安装方式相比Q需要用戯q译安装是最隄Q它适合于用Linux已有一定经验的人,一般不推荐初学者用?/p>

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



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

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

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

1.1.5 Shell命o(h)和流E控?br>在shell脚本中可以用三cd令:(x)
1)Unix 命o(h):
  虽然在shell脚本中可以用Q意的unix命o(h)Q但是还是由一些相Ҏ(gu)常用的命令。这些命令通常是用?br>q行文g和文字操作的?
常用命o(h)语法?qing)功?
  echo "some text": 文字内Ҏ(gu)印在屏幕?
  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: 在文件内搜烦(ch)字符串比如:(x)grep 'searchstring' file.txt
  cut -b colnum file: 指定Ʋ显C的文g内容范围Qƈ它们输出到标准输出讑֤比如Q输?br>每行W?个到W?个字Wcut -b5-9 file.txt千万不要和cat命o(h)hQ?br>q是两个完全不同的命?
  cat file.txt: 输出文g内容到标准输?gu)备(屏幕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: 搜烦(ch)文g比如Q根据文件名搜烦(ch)find . -name filename -print
  tee: 数据输出到标准输出讑֤(屏幕) 和文件比如:(x)somecommand | tee outfile
  basename file: q回不包含\径的文g名比如:(x) basename /bin/tux返?tux
  dirname file: q回文g所在\径比如:(x)dirname /bin/tux返?/bin
  head file: 打印文本文g开头几?
  tail file : 打印文本文g末尾几行
  sed: Sed是一个基本的查找替换E序。可以从标准输入Q比如命令管道)(j)d文本Qƈ?br>l果输出到标准输出(屏幕Q。该命o(h)采用正则表达式(见参考)(j)q行搜烦(ch)?
不要和shell中的通配W相h。比如:(x)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(din)如果该文g内容如下Q?Adam Bor, 34, IndiaKerry Miller, 22, USA
命o(h)输出l果为:(x)Adam Bor, IndiaKerry Miller, USA
2) 概念: 道, 重定向和 backtick
  q些不是pȝ命o(h)Q但是他们真的很重要?br>
  道 (|) 一个命令的输出作ؓ(f)另外一个命令的输入?
grep "hello" file.txt | wc -l
  在file.txt中搜索包含有”hello”的行q计其行数?
  在这里grep命o(h)的输Z为wc命o(h)的输入。当然?zhn)可以使用多个命o(h)?
  重定向:(x)命令的l果输出到文Ӟ而不是标准输出(屏幕Q?br>
  > 写入文gq覆盖旧文g
  >> 加到文g的尾部,保留旧文件内宏V?

反短斜线
  使用反短斜线可以一个命令的输出作ؓ(f)另外一个命令的一个命令行参数?br>命o(h)Q?
find . -mtime -1 -type f -print
  用来查找q去24时Q?mtime –2则表C?8时Q内修改q的文g。如果?zhn)?br>惛_所有查扑ֈ的文件打一个包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后面的部分:(x)
if ....; then
  ....
elif ....; then
  ....
else
  ....
fi
大多数情况下Q可以用测试命令来Ҏ(gu)件进行测试。比如可以比较字W串、判断文?br>是否存在?qing)是否可ȝ{?#8230;
  通常? [ ] "来表C条件测试。注意这里的I格很重要。要保Ҏ(gu)L(fng)I格?
[ -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包含?jin)登录shell的名Uͼ我们?bin/bashq行?jin)比较?
快捷操作W?
熟?zhn)C语言的朋友可能会(x)很喜Ƣ下面的表达式:(x)
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
  q里 && 是一个快h作符Q如果左边的表达式ؓ(f)真则执行双的语句?br>(zhn)也可以认ؓ(f)是逻辑q算中的与操作。上例中表示如果/etc/shadow文g存在
则打?#8221; This computer uses shadow passwors”。同h操作(||)在shell~程中也?br>可用的。这里有个例子:(x)
#!/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两个命o(h)Q?
  -打印错误信息
  -退出程?
  我们使用花括号以匿名函数的Ş式将两个命o(h)攑ֈ一起作Z个命令用。一般函数将在下文提?qing)?
  不用与和或操作符Q我们也可以用if表达式作M事情Q但是用与或操作符?x)更便利很多?br>
2.case

case :表达式可以用来匹配一个给定的字符Ԍ而不是数字?
case ... in
...) do something here ;;
esac
  让我们看一个例子?file命o(h)可以辨别Z个给定文件的文gcdQ比如:(x)
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一点写?jin)一个叫做smartzip的脚本,该脚本可以自动解压bzip2, gzip 和zip cd的压~文Ӟ(x)
#!/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
  (zhn)可能注意到我们在这里用了(jin)一个特D的变量$1。该变量包含?jin)传递给该程序的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 ....
下面是一个例子:(x)
#!/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行的结果:(x)
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux

4.loop

loop表达式:(x)
while ...; do
....
done
  while-loop 运行直到表辑ּ试为真。will run while the expression that we test for is true.
关键?break" 用来跛_循环。而关键字”continue”用来不执行余下的部分而直接蟩C一个@环?
  
for-loop表达式查看一个字W串列表 (字符串用I格分隔) 然后其赋给一个变量:(x)
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里出现?jin)第二个?gu)的变?*Q该变量包含?jin)所有输入的命o(h)行参数倹{?br>如果(zhn)运行showrpm openssh.rpm w3m.rpm webgrep.rpm
此时 $* 包含?3 个字W串Q即openssh.rpm, w3m.rpm and webgrep.rpm.


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

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

当要几行文字传递给一个命令时Qhere documentsQ译者注Q目前还没有见到q对该词适合的翻译)(j)
一U不错的Ҏ(gu)。对每个脚本写一D帮助性的文字是很有用的,此时如果我们四有那个 here documents
׃必用echo函数一行行输出?一?"Here document" ?<< 开_(d)后面接上一个字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>否小??(Ҏ(gu)变量$# 表示包含参数的个? 。如果输入参数小?个,则将帮助文字传?br>lcat命o(h)Q然后由cat命o(h)其打印在屏q上。打印帮助文字后E序退出?如果输入参数{?br>于或大于3个,我们将W一个参数赋值给变量OLDQ第二个参数赋值给变量NEW。下一步,?br>们用shift命o(h)第一个和W二个参C 参数列表中删除,q样原来的第三个参数成为参
数列?*的第一个参数。然后我们开始@环,命o(h)行参数列表被一个接一个地被赋值给变量$file?br>接着?们判断该文g是否存在Q如果存在则通过sed命o(h)搜烦(ch)和替换来产生新的文g名。然?br>反短斜U内命o(h)l果赋值给newfile。这h们就辑ֈ?jin)我们的?的:(x)得到?jin)旧文g名和?br>文g名。然后用mv命o(h)q行重命名?
4)函数
如果(zhn)写?jin)一些稍微复杂一些的E序Q?zhn)׃?x)发现在程序中可能在几个地方用了(jin)相同的代码,
q且(zhn)也?x)发玎ͼ如果我们使用了(jin)函敎ͼ会(x)方便很多。一个函数是q个样子的:(x)
functionname()
{
# inside the body $1 is the first argument given to the function
# $2 the second ...
body
}
(zhn)需要在每个E序的开始对函数q行声明?

  下面是一个叫做xtitlebar的脚本,使用q个脚本(zhn)可以改变终端窗口的名称?br>q里使用?jin)一个叫做help的函数。正如?zhn)可以看到的那Pq个定义的函数被使用?jin)两ơ?
#!/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很好的~程?fn)惯Q这h便其他用P和?zhn)Q用和理解脚本?
命o(h)行参?
  我们已经见过$* ?$1, $2 ... $9 {特D变量,q些Ҏ(gu)变量包含?jin)用户从命o(h)
行输入的参数。迄今ؓ(f)止,我们仅仅?jin)解了(jin)一些简单的命o(h)行语法(比如一些强制性的
参数和查看帮助的-h选项Q?但是在编写更复杂的程序时Q?zhn)可能会(x)发现(zhn)需要更多的
自定义的选项。通常的惯例是在所有可选的参数之前加一个减P后面再加上参数?(
比如文g??
有好多方法可以实现对输入参数的分析,但是下面的用case表达式的例子无遗是一个不错的Ҏ(gu)?
#!/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"
  (zhn)可以这栯行该脚本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,该脚本包含了(jin)大多数脚本都需要的框架l构Q是一个非怸错的L。这时候,在写一个新的脚本时我们只需要执行一下copy命o(h)Q?
cp framework.sh myscript
 然后再插入自q函数?
  让我们再看两个例子:(x)
  二进制到十进制的转换
  脚本 b2d 二q制?(比如 1101) 转换为相应的十进制数。这也是一个用expr命o(h)q行数学q算的例子:(x)
#!/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>以这栯{换成十进Ӟ(x)
0 * 1 + 1 * 2 = 2
  Z(jin)得到单个的二q制数我们是用了(jin)lastchar 函数。该函数使用wc –c计算字符个数Q?br>然后使用cut命o(h)取出末尾一个字W。Chop函数的功能则是移除最后一个字W?

文g循环E序
  或许(zhn)是惛_所有发出的邮g保存C个文件中的h们中的一员,但是在过?jin)几个?br>以后Q这个文件可能会(x)变得很大以至于对该文g的访问速度变慢。下面的 脚本rotatefile
可以解决q个问题。这个脚本可以重命名邮g保存文gQ假设ؓ(f)outmailQؓ(f)outmail.1Q?br>而对于outmail.1变成了(jin)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供了(jin)一个文件名以后Q我们进行一??的@环。文?被命名ؓ(f)10Q文?重命名ؓ(f)9{等。@环完成之后,我们原始文件命名ؓ(f)文g1同时建立一个与原始文g同名的空文g?
调试 //---------------------------------------  
//-- www.icwin.net
//---------------------------------------
  最单的调试命o(h)当然是用echo命o(h)。?zhn)可以使用echo在Q何怀疑出错的地方打印M变量倹{这也是l大多数的shellE序员要p80%的时间来调试E序的原因。ShellE序的好处在于不需要重新编译,插入一个echo命o(h)也不需要多时间?
  shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误Q?zhn)可以q样来进行调试:(x)
sh -x strangescript
  q将执行该脚本ƈ昄所有变量的倹{?
  shellq有一个不需要执行脚本只是检查语法的模式。可以这样用:(x)
sh -n your_script
  q将q回所有语法错误?

kooyee 2007-08-30 18:47 发表评论
]]>
【应用】Linux查找文g的相兛_?/title><link>http://www.aygfsteel.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.aygfsteel.com/Javawind/archive/2007/08/30/141472.html</guid><wfw:comment>http://www.aygfsteel.com/Javawind/comments/141472.html</wfw:comment><comments>http://www.aygfsteel.com/Javawind/archive/2007/08/30/141472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Javawind/comments/commentRss/141472.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.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却十有八?ji)是在找文g时把它派上用场?/p> <p>  因ؓ(f) more 主要的作用是把输出结果显C在屏幕上,一停止一ơ,所以例如当我们?ls 命o(h)L一?x字母开头的文gQ而下达了(jin) ls x* 却仍然列出太多文Ӟ一个屏q看不完Ӟ可以配合管道符号和 more 命o(h)Q?/p> <p>  ls x* | more</p> <p>  它会(x)一屏停止一下,{待(zhn)按I白键才l箋往上卷。于?more 俨然犹如 DOS ?DIR 命o(h) /P 选项的地位了(jin)。?more 当主角的时候,是用做一一ơ显C文章,例如我们惌?/etc 里面?XF86Config 文gQ可以下如下命o(h)Q?/p> <p>  more /etc/XF86Config</p> <p>  q样Q我们就可以不断按空白键把这个文件慢慢看完。但是,因ؓ(f)more 先天的设计,如果(zhn)看完了(jin)q页Q想要回头看上一,很抱歉,是不行的Q?zhn)必须从头再来Q于是大家在使用中就q脆摒弃q个命o(h)Q而代之以 vi 或者pico, joe{文书编辑器来看文字文g?jin)?/p> <p>  pico /etc/XF86Config</p> <p>  到最后,很少人再用more?jin)。所以morel常配合 ls在找文g的场合出玎ͼ每天都可以上场十几次?/p> <p>  所以,怿把失M要舞台的 more归类为找L件的相关命o(h)虽不合法Q但合情合理也合于现状?/p> <p>  l习(fn)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(h)很好W,取名时就故意与more 命o(h)打对収ͼ你叫“更多”Q我叫“更少”Q就好像你叫黑h牙膏我就叫白人牙膏一栗事实上与什?#8220;更多”?#8220;更少”都没有关pR它最主要只是Z(jin)改进一点:(x)more 不能回头看的问题Q?/p> <p>  less 的优点就是可以随时回_(d)最单的用【PgUp】键可以向上翻?/p> <p>  可是依我们的孤陋之见Q还是用文书~辑器去阅读文g好?jin)嘛Q更何况 less 本nq有高达 42 个选项Q何必那么麻?ch)?/p> <p>  所以,Z(jin)(zhn)好Q选项我们也不介绍?jin)。这个命令目前只?Linux pȝ可以使用Q其?UNIX 家族无?/p> <p>  l习(fn)Q?/p> <p>  Q?Q请(zhn)用 less ȝ一个文字文Ӟ与用 pico ȝ一个文字文件相比,哪一个比较方便?</p> <p>  Q?Qless命o(h)能像more命o(h)一样配合管道符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>  例如执行命o(h)Q?/p> <p>  whereis bzip2</p> <p>  它就?x)告诉(zhn)Qbzip2 攑֜ /usr/bin 。通常Q如果?zhn)定某个东西是程序,而用 whereis 找不到的话,那就表示本系l没有安装该E序?jin),例如Q?/p> <p>  whereis cjoe</p> <p>  表示q套pȝ中没有装 cjoeQ否则应该会(x)扑ֈ才对?/p> <p>  l习(fn)Q?/p> <p>  Q?Q找找?zhn)的系l上有没有xpaintq个E序Q因个程序在 KDE ?GNOME 的默认主菜单上都没有列出来,但ƈ不表CZ定没有?/p> <p>  Q?Q能?whereis 命o(h)L到XF86Config讄文g在哪里吗Qؓ(f)什?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了(jin)Q复杂到很多人用不熟l。我们尽量只丄单的例子?/p> <p>  最单的格式如下Q?/p> <p>  find / -name my* -print</p> <p>  q个意思是请它从最底层的主目录开始找Q找出文件名?my 开头的文gQ把它显C出来?print 选项是显C,(zhn)可把它当做固定要加上的目?/p> <p>  但它q可以用旉来找Q例如:(x)</p> <p>  find /usr -atime 3 –print</p> <p>  ?x)?/usr 目录开始往下找Q找最q?天之内存取过的文件?/p> <p>  find /usr -ctime 5 –print</p> <p>  ?x)?/usr 目录开始往下找Q找最q?天之内修改过的文件?/p> <p>  find /doc -user jacky -name 'j*' –print</p> <p>  ?x)?/doc 目录开始往下找Q找jacky 的、文件名开头是 j的文件?/p> <p>  find /doc \( -name 'ja*' -o- -name 'ma*' \) –print</p> <p>  ?x)?/doc 目录开始往下找Q找L件名?ja 开头或?ma开头的文g?/p> <p>  find /doc -name '*bak' -exec rm {} \;</p> <p>  ?x)?/doc 目录开始往下找Q找到凡是文件名l尾?bak的文Ӟ把它删除掉?exec 选项是执行的意思,rm 是删除命令,{ } 表示文g名,“\;”是规定的命o(h)l尾?/p> <p>  l习(fn)Q?/p> <p>  ?find 命o(h)能否扑և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寻找文件命令的Ҏ(gu)</font></td> </tr> </tbody> </table> </p> <p>  whereis找不到的文gQfind要一大串命o(h)Q还׃(jin)很久的时间才扑ֈ的XF86Config讄文gQ而用locate一下子q单找C(jin)Q?/p> <p>  l习(fn)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旉手ؕ取了(jin)一个文件名Q事后自己都忘了(jin)那个文g名叫什么,q开头第一个字母都想不h。那么,如果(zhn)还记得该文件一点特D的词语Q应该可以用 grep 命o(h)扑ֈ?/p> <p>  例如Q我们想在一个目录的200个文仉面,扑և哪一个文件提?#8220;排版”q个词语Q?/p> <p>  grep 排版 *.txt</p> <p>  扑ֈ?jin)两个文件有此字栗然后?zhn)再自行调出看看到底哪一才是?zhn)所要的卛_。寻找时注意量LҎ(gu)词语Q如果?zhn)输?#8220;然后”?#8220;q样”?#8220;不是”?#8220;?sh)?#8221;……q类太普遍的词语Q可能几癄文章中都有,那就失去?jin)?grep 找文件的意义?jin)?/p> <p>  因ؓ(f)例子中第二篇文章出现?jin)两ơ,所以列Z(jin)3行,其实只有两个文gW合。如果?zhn)惌让它凡是W合条g的只出现一ơ的话,加上 -l 选项可以了(jin)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(h)</font></td> </tr> </tbody> </table> </p> <p>  其他常用的选项q有Q?/p> <p>  -n 同时列出该词语出现在文章的第几行?/p> <p>  -c 计算一下该字串出现的次数?/p> <p>  -i 比对的时候,不计较大写的不同?/p> <p>  l习(fn)Q?/p> <p>  当我们要为系l增加一个用hQ往往担心(j)d一个已l存在的用户名字。如果用 grep 命o(h)Q可不可以避免这个问题?如何避免 Q?br><br>         <strong><font color=#ff0000>env</font></strong></p> <p><strong><font color=#ff0000>  查看环境讄</font></strong></p> <p>  env 命o(h)可以讄很多环境变量Q例如终端机的类型、用的览器、用户主目录QHome DirectoryQ的所在等{?/p> <p>  但是我们现在把焦炚w中在其中一:(x)PATH环境变量?/p> <p>  因ؓ(f) PATH q个环境变量掌管?jin)(zhn)下达命o(h)的时候,它会(x)C面几个目录去找?zhn)命o(h)的程序:(x)</p> <p>  /usr/bin</p> <p>  /sbin</p> <p>  /usr/sbin</p> <p>  /usr/X11R6/bin</p> <p>  /root/bin</p> <p>  那么(zhn)用 env 命o(h)Q让它把所有的环境变量列出来的时候,可以看到有一行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(h)</font></td> </tr> </tbody> </table> </p> <p>  如果(zhn)想在它查找命o(h)的\径上增加一?/usr/bin/heQ而把 /root/bin LQ那么?zhn)可以重新下达Q?/p> <p>  env PATH=/usr/bin;/sbin;/usr/sbin;/usr/X11R6/bin;/usr/bin/he</p> <p>  当然env 其他的变量也可以q样改变。但是因为涉?qing)面太广Q我们就只把焦点集中在改变查找\径上Q其他暂时不谈?/p> <p>  l习(fn)Q?/p> <p>  用env命o(h)改变(zhn)默认的览?/p> <img src ="http://www.aygfsteel.com/Javawind/aggbug/141472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Javawind/" target="_blank">kooyee</a> 2007-08-30 17:55 <a href="http://www.aygfsteel.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.aygfsteel.com/Javawind/archive/2007/08/29/141122.htmlkooyeekooyeeWed, 29 Aug 2007 15:06:00 GMThttp://www.aygfsteel.com/Javawind/archive/2007/08/29/141122.htmlhttp://www.aygfsteel.com/Javawind/comments/141122.htmlhttp://www.aygfsteel.com/Javawind/archive/2007/08/29/141122.html#Feedback0http://www.aygfsteel.com/Javawind/comments/commentRss/141122.htmlhttp://www.aygfsteel.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}则会(x)用新的变量替换原来的?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.aygfsteel.com/Javawind/archive/2007/08/29/141119.htmlkooyeekooyeeWed, 29 Aug 2007 14:51:00 GMThttp://www.aygfsteel.com/Javawind/archive/2007/08/29/141119.htmlhttp://www.aygfsteel.com/Javawind/comments/141119.htmlhttp://www.aygfsteel.com/Javawind/archive/2007/08/29/141119.html#Feedback0http://www.aygfsteel.com/Javawind/comments/commentRss/141119.htmlhttp://www.aygfsteel.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 发表评论
]]>
【基学习(fn)】文件结?/title><link>http://www.aygfsteel.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.aygfsteel.com/Javawind/archive/2007/08/29/141109.html</guid><wfw:comment>http://www.aygfsteel.com/Javawind/comments/141109.html</wfw:comment><comments>http://www.aygfsteel.com/Javawind/archive/2007/08/29/141109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Javawind/comments/commentRss/141109.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Javawind/services/trackbacks/141109.html</trackback:ping><description><![CDATA[<p>~ 表示root文g?/p> <img src ="http://www.aygfsteel.com/Javawind/aggbug/141109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Javawind/" target="_blank">kooyee</a> 2007-08-29 22:19 <a href="http://www.aygfsteel.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"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֵ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">Һ</a>| <a href="http://" target="_blank">Ͻ</a>| <a href="http://" target="_blank">˷</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">е</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӱʡ</a>| <a href="http://" target="_blank">Ҷ</a>| <a href="http://" target="_blank">Ʊ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ʼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">麣</a>| <a href="http://" target="_blank">ղ</a>| <a href="http://" target="_blank">Т</a>| <a href="http://" target="_blank">ʶ</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>