|
楼主 |
发表于 2011-1-21 13:54:56
|
显示全部楼层
2.2文件操作命令
QNX系统中带有很多操作文件系统的命令和工具,从简单的列文件命令到复杂的比较文件命令diff和字符串搜索命令grep等。本节中对一些常用文件操作命令进行介绍。
2.2.1显示文件内容的命令——cat
cat命令有点类似于DOS下的type命令,它用于显示文件的内容。其格式为:
[Code]cat[-u][-s][-v[-t][-e]]files[Code]
例2.10假设用户处于目录/300e/config并想在终端上显示文件comn1.sys的内容,可以在提示符下输入如下命令:
#catcomn1.sys<CR>
Protocol:U4F
Baudrate:600
set_clock:No
base_year:0
logic_rtu:1
rtu_codes(H):2
yk_lock_check:YES
#
正如cat命令格式中暗示的那样,cat可以同时显示两个或多个文件的内容,只要把想要显示的几个文件的名字依次输入,加在命令行中即可。也可以将cat命令的输出改向,送入另一个文件或一个新文件。如:
例2.11假设用户处于目录/300e/config并想将qcdt.sys的内容赋到channel1.sys中,除了cp命令外,还可以在提示符下输入如下命令:
#catqcdt.sys>channel1.sys<CR>
#
如果用户要了解cat命令参数的用法及更多的信息,请参阅联机帮助或有关文档。
2.2.2文件处理命令——diff、grep、sort、wc
在处理文件时,可能需要一些更高级的信息处理方法,本小节将介绍4个非常有用的文件处理命令:
•diff—用于找出两个文件的不同之处。
•grep—用于在文件中搜索一种模式。
•sort—用于排序和合并文件。
•wc—计算文件行数、词数和字符数。
1、diff命令
diff命令能够找出并报告两个文件之间的所有差别,而且告诉用户怎样改变第一个文件以使其与第二个文件相同。这条命令的基本格式为
difffile1file2
若file1和file2是相同的,则系统将回送一个提示符;若不同,diff命令将告诉用户两个文件的各个不同之处。QNX系统用小于号(“<”)标志file1中的行,用大于号(“>”)标志file2中的行。
例2.12假设执行diff命令以确定文件comn1.sys和comn2.sys之间的差别,在提示符下输入如下命令:
#diffcomn1.syscomn2.sys<CR>
6,7c6,7
<rtu_codes(H):2
<yk_lock_check:NO
---
>rtu_codes(H):1
>yk_lock_check:YES
#
上面例子diff命令输出的第一行为:
6,7c6,7
这意味着若想让comn1.sys和comn2.sys相同,就必须把comn1.sys的第六和第七行更改为comn2.sys的第六和第七行,接下来diff命令显示了两者的这些行。
如果用户要了解diff命令更多的信息,请参阅联机帮助或有关文档。
2、grep命令
grep命令用来使QNX系统在一个文件中搜索某个指定的词、短语或字符串。搜索的模式为正则表达式,简单地说,一个正则表达式是所指定的任何字符模式(一个词、一个短语或一个表达式)。有关正则表达式的内容请参阅有关文档。grep命令的基本格式为
greppatternfiles
例2.13为了在channel1.sys和channel2.sys两个文件中查找字符串“protocol”(不区分大小写),在提示符下输入如下命令:
#grep–iprotocolchannel1.syschannel2.sys<CR>
channel1.sys:Protocol:U4F
channel2.sys:Protocol:CDT
#
如果用户要了解grep命令更多的信息,请参阅联机帮助或有关文档。
3、sort命令
sort命令用来使指定文件中的行以一系列规则排序和合并。它的排序规则为:
•以数目开头的行按数字排序,并被列在以字母开头的行之前。
•以大写字母开头的行,被列在以小写字母开头的行之前。
•以符号如*、%或@开头的行,按这些符号的ASCII码顺序排序。
如果用户要了解sort命令更多的信息,请参阅联机帮助或有关文档。
4、wc命令
wc命令给出命令行中指定文件所具有的行数、词数和字符数,若命令行中含有多个文件,则wc程序先分别给出每个指定文件的行数、词数和字符数,然后再给出这些文件的行数、词数和字符数的总数。此命令的格式为
wc[-lwcht]files
其中:
l代表文件的行数。
w代表文件的词数。
c代表文件的字符数。
h在行数、词数或字符数的上方显示一个题头。
t对于多个文件,不显示行数、词数或字符数的总数。
例2.14为了当前目录中文件dbms.cfg和ser.cfg的行、词和字符数,在提示符下输入如下命令:
#wc–hdbms.cfgser.cfg<CR>
lineswordsbytes
2915955333dbms.cfg
739256ser.cfg
2986345589Total
#
2.2.3文件的拷贝、移动和删除——cp、mv、rm
本节讨论在使用文件时所必需的QNX系统命令:
•cp—拷贝一个已存在的文件。
•mv—移动和重新命名文件。
•rm—删除文件。
1、cp命令
cp用于拷贝一个或多个文件。它可以将一个文件中的内容完全复制到另一个文件中,也允许将一个或多个文件从一个目录复制到另一个目录中,并在原目录保留原来的文件。cp命令的基本格式为
cpsource_filetarget_file
QNX系统不允许在一个目录中存在两个名字相同的文件。如果在使用cp命令之前,目标文件不存在,则在cp命令发出后,系统就用目标文件名建立一个新文件。然而,如果以目标文件命名的文件已经存在,那么在使用cp命令后,它将被源文件的拷贝所替代,同时它的以前版本也将被覆盖。
注意:cp命令不能用于复制目录。
如果用户要了解cp命令更多的信息,请参阅联机帮助或有关文档。
2、mv命令
mv命令可对一个文件进行重新命名,或者把文件从一个目录移到另一个目录。当把文件从一个目录移动到另一个目录中时,这个文件可以重新命名,也可以使用它以前的名字。mv命令的基本格式为
mvsource_filetarget_file
例2.15如果想将qcdt.sys更名为channel1.sys,在提示符下输入如下命令:
#mvqcdt.syschannel1.sys<CR>
#
例如,如果想将/300e/config/qcdt.sys移动到/300e1/config目录下,并将其更名为channel1.sys,在提示符下输入如下命令:
#mv/300e/config/qcdt.sys/300e1/config/channel1.sys<CR>
#
3、rm命令
当不需要一个文件时,可以执行rm命令将其从目录中删除,也可以一次删除多个文件,此时命令行中指定要删去的几个文件名之间必须用空格分开。一般情况下,在QNX系统中并不保留被删除文件的副本,所以一旦执行了rm命令,文件将永久性的被删除,不能被恢复。
如果要被删除的文件是一个符号链接,那么只删除这个链接,它所指向的文件并不被删除。只要用户对目录有写权限,那么它对一个符号链接无需写权限就可以进行删除。
rm命令的基本格式为
rm[-r][-f][-i]files
其中:
-f使得目录中的所有文件都被删除,并且不提示用户。然而,在一个写保护(即不具备写权限)的目录中,不会删除任何文件,也不显示任何信息。如果试图删除一个写保护的目录,那么这个选项不显示出错信息。
-r递归地删除参数中的所有目录和子目录。使用该选项时,遇到的符号链接不会沿符号链接的指向进行下去,如果想删除一个非空的写保护的目录,那么命令会失败,并且产生一个出错消息。
-i删除时和用户进行交互确认,它覆盖了-f的功能。
注意:目录文件“.”和“..”是禁止删除的。
如果用户要了解rm命令更多的信息,请参阅联机帮助或有关文档。
2.2.4目录操作——cd、mkdir、rmdir
本节讨论在对目录操作时所必需的QNX系统命令:
•cd—改变当前工作目录。
•mkdir—建立目录。
•rmdir—删除目录。
1、cd命令
刚登录进入QNX系统时,用户被置于起始目录处,只要工作在该处,它就一直是用户的当前工作目录。然而,通过使用cd命令可以改变到其它目录处工作。cd命令的基本格式为
cdtarget_path
为了使用cd命令,只要在cd后带上想移至的目录路径名作为参数即可,任何有效的路径名(全路径名或相对路径名)都可以用作cd命令的参数。若不规定路径名,这个命令将把工作目录移到起始目录处。一旦移到了一个新的目录,这个目录就称为当前目录。
例2.16假设当前目录为/300e/bin,若想将当前目录移到/300e/config,则既可以使用绝对路径名,也可以使用相对路径名,在提示符下输入如下命令:
#pwd<CR>
/300e/bin
#cd/300e/config<CR>(使用绝对路径名)
#
#cd../config<CR>(使用相对路径名)
#
技巧:没有必要非在某个目录处才能访问它所包含的文件,可以指明全路径名或相对路径名。如,当前目录为/300e/bin,倘若需要cat目录/300e/config/下的文件comn1.sys时,可在命令行上指明comn1.sys的全路径名
(命令格式:cat/300e/config/comn1.sys)
或相对路径名
(命令格式:cat../config/comn1.sys)。
2、mkdir命令
为了建立目录,使用命令mkdir,后面跟随新目录名字。建立目录要求用户对父目录具有写权限。mkdir的命令格式为
mkdir[-mmode][-p]目录名列表
其中:
-m给新目录指定操作权限。
-p如果父目录不存在,先建立父目录。
例2.17假设当前目录为/300e,若想在此目录下同时建立3个目录(分别为bin、config、lib),在提示符下输入如下命令:
#pwd<CR>
/300e
#mkdirbinconfiglib
#
注意:mkdir将会自动建立新目录中的2个标准登记项,即文件“.”和“..”,mkdir不能通过名字来建立这些登记项。
3、rmdir命令
若不再需要某个目录,可用命令rmdir删除它。这条命令的标准格式为
rmdir[-p]目录名列表
其中:
-p允许用户删除目录,如果该目录的父目录为空,那么也将被删除。
与mkdir命令相同,rmdir命令也可以在命令行中指定一个以上的目录名。
注意:若想删除一个仍旧包含子目录和文件(即非空)的目录,则rmdir命令将显示消息:Directorynotempty。必须删除该目录下的所有子目录和文件之后才能使rmdir命令生效。
2.2.5设置文件和目录的操作权限——chmod
本节讨论设置文件和目录的操作权限所使用的命令:chmod命令。
1、保护文件
命令chmod允许用户决定谁可以读、写和使用文件,以及谁不能这样做。
可以使用下列3种符号指派权限类型:
•r允许读一个文件或复制其内容。
•w允许对一个文件进行写。
•x允许运行一个可执行文件。
系统中的所有用户,可以被分为三种类型:
•u文件和目录的属主(u是user的缩写)。
•g同组的成员。
•o系统上所有其它的用户。
当建立一个文件或目录时,系统自动授予(或拒绝授予)属主、同组成员和系统内其它用户的权限。不管在文件建立时这些权限是如何授予的,作为这个文件或目录的属主,总可以改变它们。
例2.18可以通过ls–l命令来确定一个文件已有的权限,因为这一命令能产生目录内容的长格式清单。例如,假设当前目录为/300e,在提示符下输入如下命令:
#ls-l<CR>
total56
drwxr-xr--7rootroot4096Apr0909:13.
drwxrwxr-x18rootroot4096Apr2816:49..
drwxr-xr--2rootroot4096May1413:25bin
......
#
对于目录“.”、“..”和“bin”的权限,显示在total56下,并且以下列形式显示:
drwxr-xr--(.)
drwxrwxr-x(..)
drwxr-xr--(bin)
在描述文件种类的起始字符之后,其它9个字符由表示权限的3组字符(每组3个字符)所组成。第一组指的是文件属主权限,第二组指的是同组成员的权限,最后一组指的是系统内其它所有用户的权限。每组字符中,r、w和x分别表示各组当前授予权限的情况,如果用短划线代替了r、w或x,则分别表示拒绝授予读、写或执行权限。如对于目录bin来说,目录属主具有r、w和x权限,同组成员有r和x权限,其它用户则只有r权限。
2、改变已有权限
可以用下列格式执行chmod命令来改变用户对一个文件所具有的权限:
chmodwho+permissionfiles
chmodwho-permissionfiles
其中:
who三种用户之一(u、g、o)或全部用户(a)。
+或-+表示授予,-表示拒绝授予权限。
permission三种权限的任意组合(r、w或x)。
files文件名或目录名(可以不止一个)。
注意:不要在who和+、-和permission之间输入空格,否则chmod命令不能正确执行。
chmod命令可以通过两种方法执行。上面讲述的方法称为符号方法,它是用r、w和x这样的符号来定义权限的。另一种可供选择的方法是八进制法,它需要用3个八进制数(从0到7)来定义特权。使用这种方式的chmod命令格式为
chmodnnnnfiles
其中n是从0到7的数。第一个n在设置用户ID时使用,对于一般的文件n=0;后面3个n分别对应三种用户的三种权限,对应关系如下表
八进制数 对应符号 权限
0 --- 无任何权限
1 --x 执行
2 -w- 写
3 -wx 写/执行
4 r-- 读
5 r-x 读/执行
6 rw- 读/写
7 rwx 读/写/执行
例2.19假设当前目录为/300e/bin,若想将此目录下的mkrtu文件的属性更改为所有用户可以进行读/写/执行,在提示符下输入如下命令:
#chmod777mkrtu<CR>
#
如果用户要了解chmod命令更多的信息,请参阅联机帮助或有关文档。
|
|