[size=5][/size]
虽然有好多事要做,学习Linux的进度不是很快,但毕竟还在坚持----这种状态让自己感到充实。很多时候,学习是件令人快乐的事情。
7.2管理文件与目录
ls命令的用法:
[root@linux ~]# ls -alF -color=never ~(不显示颜色,但是在文件名末尾显示出该文件名表示的类型)
-F:根据文件、目录等信息,附加数据结构,例如:*,表示可执行文件;/,表示目录;=,表示套接字文件; l:表示FIFO文件
-a:全部文件,与隐藏文件(开头为.的文件)一起列出来
-l:列出长数据串,包含文件的属性
-t:按时间排序
./表示“当前目录下”。
[root@linux ~]# ls -al -full-time (完整显示文件的修改时间)
7.2.2
复制、移出和删除:cp(copy),rm(rename 重命名),mv((move移动)rm(remove删除)
1.复制
[root@linux ~]# cp [-adfilprsu] 源文件 目标文件
[root@linux ~]# cp [options] source1 source2 source3.....directory
[root@linux ~]# cp ~/.bashrc bashrc
[root@linux ~]# cp ~/.bashrc bashrc
[root@linux ~]# cp -i ~/.bashrc bashrc(i表示若目标文件已经存在,在覆盖时会先询问是否真的操作)
cp:overwrite 'basrhc'? n(覆盖前让用户确认,可以按下n或y键,但是,如果不想询问,则加上-f参数来强调直接覆盖)
将/var/log/wtmp复制到/tmp下:
[root@linux tmp]# cp /var/log/wtmp . (复制到当前目录tmp,最后的. 不要忘记)
[root@linux tmp]# ls -l /var/log/wtmp wtmp(不加任何参数的情况下,文件的拥有者会改变,权限也会改变),如果想将文件的所有属性都一起复制,可以加上-a
[root@linux tmp] # cp -a /var/log/wtmp wtmp_2
[root@linux tmp] # ls -l /var/log/wtmp wtmp_2
将/etc/目录下的所有内容复制到/tmp
[root@linux tmp]# cp -r /etc/ /tmp(如果是目录,不能直接复制,要加上-r参数,但是文件与目录的权限会被改变,所以,也可以用cp -a /etc /tmp来执行命令)
将复制的bashrc建立一个符号连接文件(symbolic link)
[root@linux tmp]# ls -l bashrc
[root@linux tmp]# cp -s bashrc bashrc_slink(复制成符号连接文件symbolic link,即快捷方式文件)
[root@linux tmp]# cp -l bashrc bashrc_hlink(建立硬连接hard link的连接文件,而非复制文件本身)
[root@linux tmp]# ls -l bashrc*
若 ~/.bashrc 比/tmp/bashrc新,则复制
[root@linux tmp]# cp -u ~/.bashrc /tmp/bashrc(在目标文件与源文件有差异时,才会复制,所以通常用于备份)
将声称的bashrc_slink复制成为bashrc_slink_2
[root@linux tmp]# cp bashrc_slink bashrc_slink_2
[root@linux tmp]# ls -l bashrc_slink*
(原本要复制的是连接文件,却将连接文件的实际文件复制了。也就是说,如果没有加上任何参数,复制的是源文件,而非连接文件的属性。若要复制连接文件的属性,就要使用-d 或者-a 的参数
将家目录的.bashrc及.bash_history复制到/tmp下面
[root@linux tmp] # cp ~/.bashrc ~/.bash_history /tmp(将多个数据一次复制到同一个目录)(注意空格)
注意:在复制密码文件时(/etc/shadow)以及一些设置文件,就不能直接以cp来复制,而必须要加上-a或者-p,这些可以完整复制文件权限的参数。另外,如果想要复制文件给其他用户,也必须要注意文件的权限。(包含读写执行以及文件的拥有者),否则,其他人还是无法对您的文件进行修改)
在复制时,必须要清楚以下内容:是否需要完整地保留源文件的信息,
源文件是否为符号连接文件
源文件是否为特殊的文件,例如FIFO,套接字等
源文件是否为目录
2.rm(删除文件或目录)
[[root@linux ~]# rm [-fix] 文件或目录
-f:就是force的意思,强制删除
-i:交互模式,在删除前会询问用户是否操作
-r:递交删除,常在目录的删除
建立一个文件后予以删除L
[root@linux ~] # cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# rm -i bashrc(如果加上-i参数就会主动询问,如果不需要询问就加-f参数)
删除一个不为空的目录:
[root@linux tmp]# mkdir test
[root@linux tmp]# cp ~/.bashrc test/
[root@linux tmp]# rmdir test(删不掉,因为是空目录)
[root@linux tmp]# rm -rf test
删除命令相当于DOS下的del命令。如果要将目录下的内容都一起删除,例如子目录里面还有子目录,就要使用-rf参数。
mv(移动文件与目录,或重命名)
[root@linux ~] # mv [-fiv] source destination
[root@linux ~] # mv [options] source1 source2 .....directory
参数:-f:强制直接移动而不询问
-i:若目标文件已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
[root@linux ~]# cd /tmp
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# mkdir mvtest
[root@linux tmp]# mv bashrc mvtest
(将文件移动到某个目录去)
将刚刚的目录名重命名为mvtest2
[root@linux tmp] # mv mvtest mvtest2(重命名)(rename也可以用来重命名)
再建立两个文件,并全部移动到/tmp/mvtest2中
[root@linux tmp]# cp ~/.bashrc bashrc1
[root@linux tmp]# cp ~/.bashrc bashrc2
[root@linux tmp]# mv bashrc1 bashrc2 mvtest2(注意,如果有多个源文件或目录,则最后一个目标文件一定是目录,意思是,将所有的数据移动到该目录)
还可以使用-u(update)来测试新旧文件,看看是否需要移动,另一个用处就是更改文件名。rename命令,可以用来更改大量文件的文件名,。
3.获取路径的文件名与目录名
获取文件名或者目录名,通常是在编写程序时进行判断。所以,这部分命令可以用在第三部分的shelle脚本里。
[root@linux ~]# basename /etc/sysconfig/network
[root@linux ~]# dirname /etc/sysconfig/network
获取的变成目录名了
7. 查看文件内容
cat:由第一行开始显示文件内容
tac:从最后一行开始显示,可以看出tac与cat字母顺序相反
nl:显示的时候,输出行号
more:一页一页地显示文件内容
less:与more类似,但可以向前翻页
head:只看前几行
tail:只看最后几行
od:以二进制方式读取文件内容
直接查看文件的内容:
cat(concatenate):
查看/etc/issue这个文件的内容:
[root@linux ~]# cat /etc/issue
顺便显示出行号
[root@linux ~]# cat -n/etc/issue
将/etc/xinetd.conf的内容完整地显示出来(包含特殊字符)
[root@linux ~] # cat -A /etc/xinetd.conf(运行后找不到该文件?)
tac:反向显示
[root@linux ~] # tac /etc/issue
nl:显示时添加行号
[root@linux ~]# nl [-bnw] 文件
翻页查看:
more:一页一页翻动
[root@linux ~]# more /etc/man.config
less:一页一页翻动,可前翻
[root@linux ~] less /etc/man.config
数据选取:head与tail以行为单位进行数据选取
1.head(取出前几行)
[root@linux ~]# head [-n number] 文件
-n:后面接数字,表示显示几行的意思
[root@linux ~]# head /etc/man.config(默认情况下,显示前10行)
[root@linux ~]# head -n 20 /etc/man.config
2.tail(取出后几行)
非纯文本文件:od
执行文件通常是二进制文件,使用前面提到的命令读取时,会产生乱码。此时可以用od命令读取
[root@linux ~] # od [-t TYPE]文件
a:使用默认的字符来输出
c:使用ASCII字符来输出
d:使用十进制来输出数据,每个整数占用size字节
f:使用浮点数值来输出数据,每个数占用size字节
o:使用八进制输出数据,每个整数占用size字节
x:使用十六进制输出数据,每个整数占用size字节
[root@linux ~]# od -t c /usr/bin/passwd
修改文件时间与创建信文件:touch
modification time(mtime,修改时间):当该文件的内容数据更改时,就会更新这个时间。(在默认的情况下,ls显示的是该文件的mtime,也就是这个文件的内容上次更改的时间)
Status time(ctime,状态时间):当该文件的状态改变时,就会更新这个时间。比如,当更改了权限与属性,就会更新这个时间。
Access time(atime,访问时间):当读取文件内容时,就会更新这个读取时间。比如,使用cat读取~/.bashrc,就会更新atime.
[root@linux ~] # touch [-acdmt] 文件
-a:仅修改access time
-c:仅修改时间安,而不建立文件
-d:后面可以接日期,也可以使用--date=”日期或时间“
-m:仅修改mtime
-t:后面可以接时间爱你,格式为[YYMMDDhhmm]
建立一个空的文件:
[root@linux ~] # cd /tmp
[root@linux tmp]# touch testtouch
[root@linux tmp]# ls -l testtouch
将~/.bashrc 复制为bashrc,假设复制完全的属性,检查其日期
[root@linux tmp]# cp ~/.bashrc bashrc
[root@linux tmp]# ll ~/.bashrc; 11 --time=atime ~/.bashrc; ll -time=ctime ~/.bashrc(ll是ls -l的命令别名,“;”则同时发出两个命令。
修改bashrc文件,将日期调整为两天前。
[root@linux tmp] #touch -d “2 days ago”bashrc(mtime ,atime 都发生了改变----提前了2天,但是ctime并没有改变)
将bashrc的日期改为2005/07/15 2:02
[root@linux tmp]# touch -t 0507150202 bashrc
[root@linux tmp]# ll bashrc;ll -time=atime bashrc;ll -time=ctime bashrc
touch命令可以修改文件的日期和时间(mtime 与atime),还可以建立一个空文件。但是,即使要复制一个文件,并复制所有属性,但也没有办法复制ctime属性。ctime可以记录最近改变状态的时间安。比较重要的文件属性时间是mtime----修改时间。
文件与目录的默认权限与隐藏权限
文件与目录的默认权限与隐藏权限
一个文件有若干属性(r,w,x)等基本属性,以及是否为目录(d)与文件(-)或连接文件(l)等属性。linux还可以设置其他系统安全属性,使用chattr设置,以及lsattr来看,最重要的是可以设置其不可修改的特性。即便是文件的有拥者都不能进行修改。
文件默认权限:umask(指定当前用户在建立 文件或目录时的属性默认值)
[root@linux ~]# umask(查看数字类型的权限设置分数)
022
[root@linux ~]# umask -S(注意S大写)(加入Symbolic参数,以符号类型的方式显示权限)
umask指定是“该默认值需要减掉的权限”,因为r,w,x分别是4,2,1,当要去掉写权限时,就输入2。如果要去掉读与执行的权限,就输入5。因为umask为022,所以user并没有被去掉属性,group与others的属性被去掉了2,即写属性。
[root@linux ~]# umask
0022
[root@linux ~]# touch test1
[root@linux ~]# mkdir test2
[root@linux ~]# ll
[root@linux ~]# umask 002
[root@linux ~]# touch test3
[root@linux ~]# mkdir test4
[root@linux ~]# ll(?运行错误)
文件隐藏属性
chattr(设置文件隐藏属性)
[root@linux ~] # chattr [+-=][Asacdistu] 文件或目录名
[root@linux ~]# cd /tmp
[root@linux tmp]# touch attrtest
[root@linux tmp]# chattr +i attrtest(可以让一个文件“不能被删除、改名、设置连接,也无法写入或新增数据。对于系统安全性有相当大的帮助)
[root@linux tmp]# rm attrtest
显示文件的隐藏属性:lsattr
[root@linux ~]# lsattr [-aR] 文件或目录
-a:将隐藏文件的属性也显示出来
-R:连同子目录的数据也一并列出来
[root@linux tmp]# chattr +aij attrtest
[root@linux tmp]# lsattr
当想将/etc/shadow这个重要的密码记录文件设置为具有i属性,那么,在新增用户时,需要将i的属性去掉。
文件的特殊权限:SUID/SGID/Sticky Bit
[root@linux ~]# ls -ld /tmp; ls -l /usr/bin/passwd
Set UID:会创建s与t权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限。帐号与密码的存放文件其实是/etc/passwd 与/etc/shadow。而/etc/shadow文件的权限是-r--------,它的拥有者是root,在这个权限中,仅有root可以强制存储。但是,当一般身份的用户dmstai更新自己的密码时,使用/usr/bin/passwd程序,却可以更新自己的密码。也就说,一般身份用户可以访问/etc/shadow密码文件爱你。这就是因为有S权限的帮助,当s权限在user的x时,也就是类似-r-s--x--x,成为Set UID,简称SUID,这个UID表示User的ID,而User表示这个程序(/usr/bin/passwd)的拥有者(root)。当dmtsai用户执行/usr/bin/passwd时,可以暂时得到文件拥有者root的权限。
SUID是程序在执行过程中拥有文件拥有者的权限,仅可以用于二进制文件安,不能用在批处理文件(shell脚本)上。这是因为shell脚本只是将很多二进制执行文件调进来而已。所以SUID的权限部分,要看shell脚本调进来的程序设置,而不是shell脚本本身。SUID对目录是无效的。
Set GID:
如果s的权限是在用户组,那么就是Set GID.它可以用在两个方面:
1.文件:如果SGID设置在二进制文件上,则不论用户是谁,在执行该程序的时候,它的有效用户组(effective group)将会变成该程序的用户组所有者(group id)
2.目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将会是此A目录的用户组
一般,SGID多用在特定的多人团队的项目开发上,在系统中用得较少。
Sticky Bit
Sticky Bit(SBit)当前只针对目录有效,对文件没有效果。SBIT对目录的作用:在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权力删除。
SUID/SGID/SBIT权限设置:需要使用数字更改权限。使用数字更改权限的方式为3个数字的组合,如果在这3个数字之前再加上一个数字,最前面的数字就表示这个几个属性了。通常使用chmod xyz filename的方式来设置filename的属性时,是假设没有SUID、SGID及Sticky Bit)
SUID:4
SGID:2
Sticky Bit:1
假设要将一个文件属性改为“-rwsr-xr-x”,由于s在用户权限中,所以是SUID,因此,在原先的755之前还要加上4,也就是使用chmod 4755 filename来设置。此外,还有大S与大T的产生。
[root@linux ~]# cd /tmp
[root@linux tmp]# touch test
[root@linux tmp]# chmod 4755 test; ls -l test
[root@linux tmp]# chmod 6755 test; ls -1 test
[root@linux tmp]# chmod 1755 test; ls -l test
s与t都是取代x参数的,因为user,group,others都没有x这个可执行的标志,使用的是7666,所以S,T是空的。SUID表示该文件在执行时,具有文件拥有者的权限,但是文件拥有者无法执行,没有权限给其他人使用,当然就是空的。
文件类型:file
如果想知道某个文件基本信息,例如,是属于ASCII、数据文件,还是二进制文件,且其中是否使用到动态函数库(share library)等信息,就可以利用file命令来查看。
[root@linux ~]# file ~/.bashrc
搜索文件:
find:速度慢,耗费硬盘空间.
Whereis与locate使用数据库来搜索数据,所以相当快,并且没有实际搜索硬盘。
which(寻找执行文件)
[root@linux ~]# which passwd
[root@linux ~]# which traceroute -a(-a:将所有可找到的命令均列出,而不仅仅列出第一个找到的命令名称)
which 命令是根据PATH环境变量所规范的路径,来搜索执行文件的文件名。所以,重点是找出执行文件安。which后面接的是完整文件名。若加上-a参数,则可以列出所有可以找到的同名执行文件,而非只显示第一个。
whereis(寻找特定文件)
[root@linux ~]# whereis [-bmsu]文件或目录名
参数:-b:只找二进制文件
-m:只找在帮助文件manual路径下的文件
-s:只找源文件
-u:没有帮助文件的文件
[root@linux ~]# whereis passwd(用whereis查找可执行文件binary,那么加上-b参数就可以。
Locate:
[root@linux ~]# locate filename
[root@linux ~]# locate passwd(在完整文件名----包含路径名称中,只要其中有passwd,就会显示出来。如果忘记某个文件的完整文件名时,可以用此方法)
find:
[root@linux ~]# find [PATH] [option] [action]
第八章 linux磁盘与文件系统管理
载入U盘:放入U盘之后,再利用fdisk-1列出所有分区,会发现,系统多出/dev/sda[]的SCSI硬盘。USB硬盘号也是/dev/sd[a]的代号,第一个USB代号为/dev/sda。如果该USB硬盘还有分区,就会有一些号码出现。如果是便携式硬盘,通常只有/dev/sda1而已。假设便携式硬盘是/dev/sda1,将它载入到/mnt/usb.
[root@linux ~]# mkdir /mnt/usb
[root@linux ~]# mount -t vfat /dev/sda1 /mnt/usb
lnoem 于 2010-06-04 08:15:47发表:
先收藏着,谢谢
lazycat_work 于 2010-06-03 22:22:19发表:
第十章
1.块选择(Visual Block)
将光标移动到需要需要选择的地方,按下v或者V或者ctrl+v时,光标移动过的地方就会开始反白。按下y复制,移动到要插入的区域,按下p就可以插入刚刚复制的块内容。
2.多文件编辑
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前vim打开的所有文件
3.多窗口功能:
使用vim打开两个窗口,在命令行模式下输入:“:sp {filename}",如果想在新窗口启动另一个文件,就加入文件名,否则仅输入:sp,在两个窗口间会出现同一个文件。
两个文件同时在一个屏幕上显示。还可以利用ctrl+w+j(按下ctrl+w后放开,按j,光标可以移动到下方的窗口)
及ctrl+w+k(按下ctrl+w后放开,按下k,光标移动到上面的窗口)
4.vim环境设置:
:set all:可以得知当前的环境设置值
Shell执行命令:
[root@linux ~]# command [-options] parameter1 parameter2
命令太长时,可以使用\符号来转义enter符号。
Shell的变量功能:
使用echo命令可以获取变量,前面必须加上$.
[root@linux~]# echo $variable
[root@linux~]# echo $PATH
[root@linux~]# echo ${PATH}
设置、修改某个变量的内容:用等号=连接变量和内容
例如:将myname变量名称的内容设置为VBird
[root@linux~]# echo $myname(没有数据,因为变量没有设置,是空的)
[root@linux~]# myname=VBird
[root@linux~]# echo $myname
Vbird(出现了。因为这个变量已经设置了。这样以来,myname的内容就VBird数据。)
当一个变量名称尚未设置时,默认的内容是空的。另外,变量在设置时,还需要符合某些规定,否则设置会失败:1.变量与变量内容以等号=连接;2.等号两边不能直接接空格符;3.变量名称只能是英文字母与数字,但是数字不能是开头字符。
设置变量name,内容为VBird
[root@linux~]# 12name=VBird(屏幕会显示错误,因为不能以数字开头)
[root@linux~]# name = Vbird(错误,不能有空白)
若变量变量内容为VBird's name:
[root@linux~]# name=VBird's name(因为单引号可以将Enter这个特殊字符取消,所以,可以继续在下一行输入内容。)
[root@linux~]# name=”VBird's name”
[root@linux~]# name=VBird\'s\name
采用\转义特殊字符,例如单引号与空格键
要杂PATH变量中累加:/home/dmtsai/bin目录
[root@linux~]# PATH=$PATH:/home/dmtsai/bin
[root@linux~]# PATH=”$PATH”:/home/dmtsai/bin
要将name的内容多出yes?
[root@linux~]# name=$nameyes(如果没有双引号,name的内容是$nameyes这个变量。但是我们没有设置过nameyes这个变量,应该这样:
[root@linux~]# name=”$name”yes
[root@linux~]# name=${name}yes
如何让刚刚设置的name=VBird可以用在狭义个shell程序中
[root@Linux~]# name=VBird
[root@Linux~]# bash(进入到子程序)
[root@Linux~]# echo $name
[root@Linux~]# exit
[root@Linux~]# export name
[root@linux~]# bash(进入到子程序)
[root@Linux~]# echo $name(相互现设置值了)
[root@Linux~]# exit (离开刚刚的子程序)
子程序:就是说,在当前这个shell的情况下,去启用另一个新的shell,这个新的shell就是子程序。一般情况下,父程序的自定义变量是无法在子程序内使用的。但是通过export将变量变成环境变量后,就能够在子程序下应用了。
如何进入到当前核心的模块目录:
[root@Linux~]# cd /lib/modules/'uname -r'/kernel
每个操作系统的核心版本都不相同,以FC4为例,它的默认核心版本是2.6.11-1.1369 FC4,所以,它的模块目录在/lib/modules/2.6.11-1.1369 FC4/kernel中。先取得版本信息,所以,可以通过上面命令中的内容命令“uname -r”.先取得版本输入到cd ..命令中,就能顺利进入当前核心的驱动程序所放置
取消刚刚设置的name这个变量内容
[root@linux~]# unset name
lazycat_work 于 2010-06-03 22:22:11发表:
第十章
1.块选择(Visual Block)
将光标移动到需要需要选择的地方,按下v或者V或者ctrl+v时,光标移动过的地方就会开始反白。按下y复制,移动到要插入的区域,按下p就可以插入刚刚复制的块内容。
2.多文件编辑
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前vim打开的所有文件
3.多窗口功能:
使用vim打开两个窗口,在命令行模式下输入:“:sp {filename}",如果想在新窗口启动另一个文件,就加入文件名,否则仅输入:sp,在两个窗口间会出现同一个文件。
两个文件同时在一个屏幕上显示。还可以利用ctrl+w+j(按下ctrl+w后放开,按j,光标可以移动到下方的窗口)
及ctrl+w+k(按下ctrl+w后放开,按下k,光标移动到上面的窗口)
4.vim环境设置:
:set all:可以得知当前的环境设置值
Shell执行命令:
[root@linux ~]# command [-options] parameter1 parameter2
命令太长时,可以使用\符号来转义enter符号。
Shell的变量功能:
使用echo命令可以获取变量,前面必须加上$.
[root@linux~]# echo $variable
[root@linux~]# echo $PATH
[root@linux~]# echo ${PATH}
设置、修改某个变量的内容:用等号=连接变量和内容
例如:将myname变量名称的内容设置为VBird
[root@linux~]# echo $myname(没有数据,因为变量没有设置,是空的)
[root@linux~]# myname=VBird
[root@linux~]# echo $myname
Vbird(出现了。因为这个变量已经设置了。这样以来,myname的内容就VBird数据。)
当一个变量名称尚未设置时,默认的内容是空的。另外,变量在设置时,还需要符合某些规定,否则设置会失败:1.变量与变量内容以等号=连接;2.等号两边不能直接接空格符;3.变量名称只能是英文字母与数字,但是数字不能是开头字符。
设置变量name,内容为VBird
[root@linux~]# 12name=VBird(屏幕会显示错误,因为不能以数字开头)
[root@linux~]# name = Vbird(错误,不能有空白)
若变量变量内容为VBird's name:
[root@linux~]# name=VBird's name(因为单引号可以将Enter这个特殊字符取消,所以,可以继续在下一行输入内容。)
[root@linux~]# name=”VBird's name”
[root@linux~]# name=VBird\'s\name
采用\转义特殊字符,例如单引号与空格键
要杂PATH变量中累加:/home/dmtsai/bin目录
[root@linux~]# PATH=$PATH:/home/dmtsai/bin
[root@linux~]# PATH=”$PATH”:/home/dmtsai/bin
要将name的内容多出yes?
[root@linux~]# name=$nameyes(如果没有双引号,name的内容是$nameyes这个变量。但是我们没有设置过nameyes这个变量,应该这样:
[root@linux~]# name=”$name”yes
[root@linux~]# name=${name}yes
如何让刚刚设置的name=VBird可以用在狭义个shell程序中
[root@Linux~]# name=VBird
[root@Linux~]# bash(进入到子程序)
[root@Linux~]# echo $name
[root@Linux~]# exit
[root@Linux~]# export name
[root@linux~]# bash(进入到子程序)
[root@Linux~]# echo $name(相互现设置值了)
[root@Linux~]# exit (离开刚刚的子程序)
子程序:就是说,在当前这个shell的情况下,去启用另一个新的shell,这个新的shell就是子程序。一般情况下,父程序的自定义变量是无法在子程序内使用的。但是通过export将变量变成环境变量后,就能够在子程序下应用了。
如何进入到当前核心的模块目录:
[root@Linux~]# cd /lib/modules/'uname -r'/kernel
每个操作系统的核心版本都不相同,以FC4为例,它的默认核心版本是2.6.11-1.1369 FC4,所以,它的模块目录在/lib/modules/2.6.11-1.1369 FC4/kernel中。先取得版本信息,所以,可以通过上面命令中的内容命令“uname -r”.先取得版本输入到cd ..命令中,就能顺利进入当前核心的驱动程序所放置
取消刚刚设置的name这个变量内容
[root@linux~]# unset name