目录的操作
这部分给出的命令都关系到Linux的目录操作。它们能够完成显示当前路径、改变路径、把目录名字或文件名字列表、建立目录和删除目录以及移动目录等等。这些都是使用Linux系统是最经常、最基本的操作。
显示当前的工作目录 —— pwd
查看当前目录下的文件和目录 —— ls族
ls族命令包括l、ls、lf、lc、lr、lx,它们所完成的工作也是不一样的,其中最常用的是:l、lf,下面逐个介绍:
l —— 以长格式在每行显示目录或文件的详细信息
例如:
# l
drwxr-xr-x 3 bin bin 48 Mar 16 1996 C
-rw-rw-r-- 1 bankster bank 100 Mar 15 1997 bankcenter
每一行显示内容的组成部分包括:
权限:连接数:文件主:文件组:长度:建立或修改时间:目录或文件名
权限字段中,第一个字符表示文件的类型,具体的说:
- 表示一个普通文件
d 表示这是一个目录
l 表示一个符号连接文件
b 表示一个特殊文件,一次以一个块(block)为处理单位
c 表示一个特殊文件,一次以一个字符(character)为处理单位
p 为FIFO(First-In/First-out)的特殊文件,作为内部程序间的
联系通道
lc —— 以短格式显示目录或文件名
例如:
# lc
.lastlogin .utillist2 dev lib opt Linux
.mailrc app dos lost+found sfmt Linux.old
此命令不能分辨出哪个是文件哪个是目录。
lf ——以短格式显示目录或文件名
这条命令是lc命令的变种,不同之处是在显示目录或文件名字的同时,分别表示出它们的特征。如果是目录,在名字后面跟有一个斜杠“/”;如果是可执行文件,在名字后面跟有一个星号“*”;符号连接的文件,在名字后面跟有一个“@”符号;普通文件没有任何标志。
lr —— 以短格式显示目录或文件名
这条命令与lc命令相同,用来显示目录和文件名的格式。不同之处是,它可以把目录中各级的子目录、文件名全部列出来。
ls —— 以短格式列出目录名或文件名
与lc的功能差不多,不同的是ls每行只有一个名字。
改变当前的工作目录 —— cd
介绍两个符号:
. 指的是当前目录
.. 指的是当前目录的父母录
路径有相对路径、绝对路径之说,所以在更改工作目录的时候,也要搞清楚是绝对路径还是相对路径。
例如:
① cd /etc/conf/cf.d
② cd etc (假设在当前目录下有目录etc)
③ cd ..
① 指的就是绝对路径;
② 指的是相对路径,相对与当前目录来说的;
③ 回到当前目录的父母录,假设当前目录是/etc/conf/cf.d,执行该命令后到达目录/etc/conf。
创建目录 —— mkdir 目录名
此命令的功能是创建一个目录。它与DOS中的MD命令作用相似。
创建的目录也有相对路径(相对于当前路径)和绝对路径(相对于根目录)之说,如:
# pwd
/tmp
# mkdir test
则建的目录是/tmp/test,当然如果你想建的目录是/tmp/test,那么你可以使用下面的命令:
# mkdir /tmp/test
删除目录 —— rmdir
它的基本用法是:
# rmdir dirname
在执行这个命令的时候,要附和两个条件:
① 工作目录不能是命令行中指定要删除的目录;
② 要删除的目录必须是空目录,也就是说该目录下没有任何文件和目录;
在这里指定的目录也有相对目录和绝对目录之说,所以用的时候一定要注意不要删错目录。
移动目录命令 —— mvdir
它的基本用法是:
# mvdir dirname1 dirname2
此命令的功能是移动目录,在一个文件系统内部,它可以把目录从一个地方移到另一个地方。其中:dirname1 是原始目录名;dirname2 是目标目录名,命令将dirname1移到这个目录下。移动后,新的目录为dirname2/dirname1。要求这个目录不能与现有的目录或文件同名,否则,命令执行失败.
目录的拷贝 —— copy
基本用法是:
copy -r 源目录... 目标目录(对源目录的字目录也进行复制)
如果源目录不只一个,则把每个源目录依次向目标目录复制。
□ 文件操作
一个操作系统,它一定要支持文件操作:文件的建立、文件内容的查看、排序、粘贴、压缩等功能。其中文件建立的主要方法是利用Vi编辑器,Vi编辑器的主要用法我们作为一个专题来讨论。
1、 文件内容的查看
LINUX操作系统中,提供了几种查看文件内容的命令,有pg、more、cat,下面是对它们的介绍:
(1)cat filename...
这个命令可以用来显示一个或者多个文件,cat按你书写的顺序读每一个文件,并把它们在标准输出设备(屏幕)上显示出来。
另外,这个命令还可以用来串行的连接文件。例如:
# cat mm
这个命令行的工作是把文件mm送到屏幕显示。
# cat mm>/dev/lp0
这个命令行的工作是把文件mm送到打印机上打印输出。
# cat file1 file2>file3
这个命令行的工作是把文件file1和文件 file2 连接起来,放入文件file3中。
# cat file1>>file2
这个命令行的工作是把文件file1与文件file2 连接起来,并将file1附加到 file2后面。
(2)more filename...
命令的功能是在屏幕上浏览文件。使用它在屏幕上显示文件内容时,每显示一屏都暂停,并在屏幕底部左下侧显示:
--more--(n%)
提示到本屏为止,已经显示的内容占全部内容的百分之多少。当敲了空格键后,将显示下一屏;如果敲入回车,屏幕只滚动一行;键入Del键,则退出more命令;如果你想对这个文件进行编辑,可以键入“V”。
另一方面,more命令可以同其它命令结合使用。比如,使用l命令列出/bin 目录下的目录项时,由于屏幕滚动特别快,无法查看,这时可以键入命令行:
# l | more
各种符号的解释可以查看本节附录。
(3) pg filename …
命令的功能是在屏幕上浏览文件。使用它在屏幕上显示文件内容时,每显示一屏都暂停,并在屏幕底部左下侧显示:
:
提示到本屏为止,已经显示的内容占全部内容的百分之多少。当敲了空格键后,将显示下一屏;如果敲入回车,屏幕只滚动一行;键入Del键,则退出more命令;如果你想看前两行的信息,你可以键入“-2”;如果你想看第n页的信息可以键入“N”。
pg也可以配合其它命令使用。
有时你并不想将文件的所有内容显示出来,而是只想查看文件的前10行或者是后20行,这时使用上面的命令就不好用了。如果你想查看文件的前N行,你可以使用命令:
head -N filename
如果你想查看文件的后N行,你可以使用命令:
trail -N filename
2、 文件的拷贝、删除、移动与改名
(1)文件的拷贝
在对文件操作时,难免要对文件进行拷贝,它的基本命令是cp,它的基本命令同DOS的copy命令,如:
cp /tmp/test /usr/zhang
(2)文件的删除
在文件系统中,回经常存在一些过时的文件和临时性文件,需要将它们清理(删除,它的命令是rm,它同DOS的DELETE用法差不多,如:
rm /tmp/test 删除/tmp目录下的test
rm test 删除当前目录下的test
rm *.txt 删除当前目录下的以.txt结尾的文件
用此命令,文件一旦删除便不能恢复,所以使用要小心,最好是先用pwd、lf作一下查看再作删除。
rm命令还可以用来删除目录的所有内容(包括目录下的文件、子目录及其内容),它的用法是:
rm -r directory
删除目录下的所有内容(包括文件、子目录及其内容),并删除目录本身;
rm –r * 或 rm -r /directory/*
删除当前目录或指定目录下的所有内容(包括文件、子目录及其内容);
注意:用rm -r 来删除文件,因为它是批量删除,所以一定要确认你要删
除的目录正是你所需要的。
(3)文件的移动与改名
有时你想把某个文件改为另外一个名称,或者你想把一个文件从这个目录移到另外一个目录,这时候你就要用到这个命令:mv
这条命令既可以移动文件、目录,也可以给文件和目录重新命名。
①对文件改名:mv file1 file 2
执行过改命令后:文件1就不存在了,而文件2原内容将被覆盖。所以用该命令时一定确保文件file2不存在或者该文件无用了,以免造成不必要的损失。
②对目录改名:mv directory1 direcory2
在使用这个命令时一定要注意目录directory2不存在,否则该命令的执行不会成功。
③将文件移到某一目录下:mv file1 file2 ... directory
命令行所完成的任务是把一个或多个文件移到一个目录下。
3、 文件的查找
有时你会碰到这么一种情况,你只记得文件的名字而忘记了文件存在的目录;你只记得文件名字中的几个单词而忘记了它存在的目录和全名,怎么办?别急,这里有个命令可以解决这个问题,它就是find 。它的基本用法是:
find 查找的路径名 -name 文件名或目录名 -print
如:我想查找对公报表(以bgs_*开头的文件)在哪个目录下,可以用这个命令:
find / -name bgs_* -print
注意:-print不能少,如果不加上,即使找到也不会在屏幕上显示出来,也就是说它的作用是显示找到的每个文件及其路径。-name的作用是指按文件名查找。
你可能遇到这么一种情况,你想查找存在某一字符串的文件,这是你可以使用下面的命令来完成:grep(查找字符串所在的文件),如:
grep “tbmode” */*
若在根目录下键入此命令,则在系统的所有文件中查找该字符串;否则在当前目录的文件和子目录中查找;如果只在当前目录下查找,可以使用命令:
grep “tbmode” *
4、 文件的压缩及解压
或许你会遇到这么一种情况,一组文件你非常需要,但是你手头只有一张软盘,恰恰这组文件的大于1.44M,这是你可能慌了,不要紧,LINUX系统中有一压缩程序,它就是compress。它的用法是:
compress file
之后file文件不存在,而生成一个新文件file.Z。如果有一天你需要这些文件,可以通过解压命令uncompress将这些文件解开恢复原来的状态。Uncompress的用法是:
uncompress file.Z 或 uncompress file
5、 文件的粘贴
所谓文件的粘贴是指将两个文件并列的合并起来。例如你可能遇到过这种情况,你想打印一个班学员的名字,你输入的时候是以一列的形式输入的,当你输入完之后才发现如果这样打印出来太浪费纸张,你想以两列的形式打印,这时你可以将此文件的后一半存入另外一个文件然后使用下面的命令:paste(并行合并两个文件)。
基本格式:
paste file1 file2 > file3
这个命令默认的分割符是“Tab”键,当然你也可以指定分割符,格式如下:
paste -d “分割符” file1 file2 > file3
paste命令的另外一种用法是将文件的所有行连接起来,要完成这种功能要使用选项 -s,用法是;
paste -s filename
6、 文件的比较
对文件内容进行,也包括了对文件目录的比较。有的命令在进行文件比较过程中能统计出不同的行数与字节数,可以是两个文件也可以是三个文件。
(1) diff
这个命令的功能是对两个文本文件进行比较,它指出在两个文件中有哪些行必须进行修改,既:两个文件的哪些行不一致。
diff 文件1 文件2
如果文件1或文件2是一个目录,那么diff将使用目录中的同名文件进行比较,例如:
diff /tmp abc
在命令行中/tmp是目录名。执行这个命令时,将当前目录的文件abc与目录/tmp中的文件abc进行比较。
例如:
# diff file1 file2
1c1
< I an a student?
---
> I am a studnet!
这里,以小于号<打头的行属于文件file1,以大于号>打头的行属于文件file2,这样你可以看出两个文件的不同之处以便进行修改。
(2) cmp
它的功能是对两个文件进行比较。如果两个文件有不同之处,则显示那些不同的行数和字节数。这个命令只能比较文件,不能一个是文件另一个是目录。例如:
# cmp file1 file2
file1 file2 differ: char 12, line 1
(3) diff3
它的功能是对三个文件进行比较,比较的结果显示如下标志:
==== 表示三个文件都不相同
====1 表示文件1不同,另外两个文件相同
====2 表示文件2不同,另外两个文件相同
====3 表示文件3不同,另外两个文件相同
它的用法是:
diff3 file1 file2 file3
7、 文件的排序
或许你会碰到这么一种情况,你想对一个文件的内容进行排序。在LINUX系统中提供了这么一种工具,它就是sort。如果你想以数字为序排列,就要使用选项“-n”;如果你文件的格式是这样的:
字段1|字段2|字段3|字段4|·····
你可能要以某个字段排序,这时你就要指明分割符以及以何种顺序排列;在一般情况下sort的排列顺序是升序的,如果你想以降序排列就要使用选项“-r”。
它的基本用法是:
sort -u -n –r -t“分割符” +pos1 -pos2 -o 输出的文件名
其中:
-u 使排序的文件行唯一,如果文件中有两行或更多是一样的,
使用这个选项,可以使输出只输出一行;
-n 按算术值进行排序,按从大到小的顺序
-r 进行反向排序
-tx 定义分割符,其中x是新定义的分割符。通常分割符不作为
字段的一个组成部分
+pos1 –pos2 用来指定排序的字段,pos1是排序字段减一,
pos2等于排序字段
-o 用来指明排序后的输出文件
8、 确定文件的类型
Linux系统主要的文件类型有:
directory 目录文件
empty 空文件
cannot open 没有阅读许可权的文件
command text shell命令语言编写的文件
c programe text c语言程序文本
(separate)executeable 可执行文件
archieve 档案文件
要得到文件的类型可以用下面的命令:
file filename
□ 文件权限
LINUX系统把使用系统的人(仅限于普通用户)分成三个等级:即文件的所有者、同组的人和其他组的人。文件的所有者一般都是文件的创建者,由于他是文件的主人,因此对文件具有全权。在这三个级别中,权利的大小是逐级降低的。文件的主人的权利最大,并且有他决定下面两级的人应有多大的权利。
对每一个文件的使用者分成这样三个等级,每个文件的存取权是分别规定的。每个等级的人对一个文件的操作都有三种不同的存取权,即:阅读权(read用r表示)、写入权(write用w表示)和执行权(excute用x表示)。
由于有三个等级,每个等级都有三种存取权,所以文件的权限可以这样表示:
r w x r w x r w x
主 人 同组者 他组者
文件的权限可以用l命令来查看,用l命令后在屏幕上显示的内容的第一列为文件的权限。
既然文件的权限分三级:文件的主人、同组者、它组者,那么对一个文件来说,它的主人和组就尤其重要,因为这是一个安全性的问题。总上文件的权限分文件的寸取权、文件的属主和文见的属组。
(1) 改变文件或目录的属主
chown 主人名 文件名(目录名)
例如,在准备数据库磁盘空间时,需要把数据库空间的属主赋给informix,所以:
chown informix /dev/dbspace
chown informix /dev/rdbspace
(2) 改变文件或目录的属组
chgrp 组名 文件名(目录名)
例如,在准备数据库磁盘空间时,需要把数据库空间的属组赋给informix,所以:
chgrp informix /dev/dbspace
chgrp informix /dev/rdbspace
(3) 改变文件或目录的的存取权——chmod
所有的文件在刚建立时都是不可执行的(刚建立的文件的权限是755),如果想把文件变成可执行的,就必须改变文件的存取。如果不希望同组的人修改你的文件,或不希望其他人看你的文件,也只能通过修改文件的存取权限来施行保护。
使用chmod命令有两种方法:
一种是符号方式,其形式为:
chmod 谁 操作符 许可权 文件名(目录名)
其中:
谁:a(all:所有的人)、g(group:同组的人)、o(other:他组的人)、u(user:文件的主人);
操作符:+(赋予权限)、-(收回权限)、=(只有);
许可权:r(read读权)、w(write写权)、x(excute执行权);
如果在chmod命令中省略了“谁”,则默认为“a",即修改所有人的存取权。
例如:
chmod u+w display (文件的所有者增加写权)
chmod g=x display (同组的人享有执行权,但去掉读写权)
可以在命令行给出多个符号方式,用逗号隔开,逗号两边不能空格,例如:
chmod u+w,g=x display
如果几种人对共同的文件或目录有共同的权利,则可以在“谁”这一项将这几种人不加分隔的并列,在“许可权”这一项将几种存取权不加分隔的并列。如:
chmod ug+rw chap
另一种方法是数字方式:
chmod 三位八进制数 文件名或目录名
其中“三为八进制数字”的定义如下:
所 有 者 同 组 者 他 组 者
存取权 r w x r w x r w x
数 字 4 2 1 4 2 1 4 2 1
该等级有此权限,此处的数有效。如:660指rw-rw----。
例如,在准备数据库磁盘空间时,需要把数据库空间的存取权赋为660,所以:
chmod 660 /dev/dbspace
chmod 660 /dev/rdbspace
□ 对磁盘的操作部分
1. 格式化软盘 —— format
2. 判定磁盘上的数据存放格式
要对磁盘进行操作需知道磁盘的格式,在LINUX系统中有以下数据类型:LINUX文件系统、DOS格式、tar格式、cpio格式,只有知道了磁盘的格式才能选择恰当的命令进行操作。判定磁盘格式的命令是:
# dtype /dev/fd0
另外dtype还可以用来查看文件系统的类型。如:
# dtype /dev/root
/dev/root : HTFS filesystem
3. 文件保存和恢复
在文件的保存和恢复这一节中,我们介绍 tar命令。保存文件也称文件归档,通常使用的介质是软盘或磁带;恢复文件是从后备介质上提取文件。它的基本格式为:
tar [crutx]v6 [file……]
其中各选项的作用如下:
-c 创建一个新的后备文件。归档时,是从后备介质的起始位置进行,而不管原来介质上是否已经存放文件;若原来有文件,将覆盖原有信息;
-r 在进行文件归档时,把要归档的文件写到后备介质上现有文档的后面;
-t 当命令行中指定的文件在归档介质上出现时,把文件名列出来。如果使用了功能符t,而在命令行中没有指定文件名,那么把归档介质上全部的文件名字列出来。
-x 从归档的文件中,把命令中指定的文件抽取出来;若没有指定文件,则把归档介质上的全部文件抽取出来。
-v 在tar命令对文件进行处理时,把文件的名字一一在屏幕上显示出来。
例如:
# tar cv6 /tmp/* 将目录/tmp下的所有文件拷贝到软盘上
# tar tv6 查看tar格式软盘上的文件列表
# tar xv6
将以tar指令拷到软盘上的文件释放出来,若在向软盘上拷贝时使用的是绝对路径,那么拷出来时也是绝对路径,即从哪里来到哪里去;若在向软盘上拷贝时使用的是相对路径,那么拷出来时也是相对路径,即拷到当前目录下。
4. 进行不同规格、不同种类介质间的拷贝
基本指令是:dd,它的基本格式为:
dd if= inputfile of=outpurfile bs=10k
if=inputfile 代表着输入文件,等号右边的inputfile是文件名;
of=outputfile 代表着输出文件,等号右边的outputfile是文件名;
bs=10k 代表输入、输出块的大小为10k。
5. cpio指令
cpio命令和tar命令一样,用于文件的归档和恢复,它有很多个选项,这里仅介绍几个常用的选项。
-i:复制文件到当前目录
-c:文件头以ASCII格式写入
-v:显示正在处理的文件名
-d:若需要则产生目录
-u:无条件的复制
-m:保留文件的修改时间
-B:输入/输出所使用的块的大小为512B
-I:指明输入设备名
-t:显示输入的内容表,常用来查看归档介质上的文件目录
如将文件从软盘上拷贝出来,可以使用命令:
# cpio –icvdumBI/dev/fd0
如果只想查看软盘上的文件列表,可以使用:
# cpio -tvBI/dev/fd0
□ DOS操作部分
通过这一节的学习,你可以掌握在LINUX系统下如何对DOS格式的磁盘和文件操作。LINUX的DOS命令是指在LINUX系统中可以直接使用的能完成DOS操作的一些命令,它不同与DOS命令本身。下面列出的是各种不同的DOS命令以及LINUX与DOS之间的文件格式的转换。
1. 查看DOS盘上的目录和文件,你如果想用DOSDIR的格式列出,可以使用命令:
dosdir a: 或 dosdir c:
如果想用LINUX系统的ls格式列出,可以使用命令:
dosls a: 或 dosls c:
2. 你如果想查看文件的内容,你可以使用命令:
doscat a:\file 或者 doscat c:\file
3. 你如果想删除DOS盘上的文件,你可以使用命令:
dosrm a:\file 或者 dosrm c:\file
4. DOS盘目录操作的命令:
建立一个目录,可以使用命令:dosmkdir ;删除一个目录,可以使用命令:dosrmdir,例如:
dosmkdir a:\test
dosrmdir a:\test
5. 将一张软盘格式化为DOS格式的命令:
dosformat /dev/rfd0135ds18
一定要注意/dev/rfd0135ds18这个设备名不能少。
6. LINUX系统中的文件与DOS格式的磁盘之间的拷贝
将LINUX系统中的文件拷贝到DOS格式的磁盘上或将DOS格式的文本文件拷贝到LINUX系统中,他命令是:doscp ,它的具体用法是:
doscp ./test a: 将当前目录下的test文件拷贝到软盘上
doscp /tmp/test c:\test 将tmp目录下的test文件拷贝到C盘的test目录下
doscp a:\test . 将A盘上的test文件拷贝到当前目录下
7. LINUX格式与DOS格式文件的转换:
从LINUX格式到DOS格式的转换,它把回车符加到每一行的结尾,把ctrl_d字符加到文件的结尾。它的命令行结构是:
xtod filename > output.filename
从DOS格式到LINUX格式的转换是xtod命令的逆过程,即将每一行的回车符以及文件结尾的ctrl_d删除。它的命令行格式位:
dtox filename > output.filename
□ 其他命令
在这一部分中,我们将介绍LINUX操作系统中最常用的几个命令,如在讲解ls 族时讲到l 命令的格式中有一个连接数,连接数是什么概念,它能否修改;我想知道我系统的名字怎么办?如何得到系统的日期以及如何修改?若我忘记我的注册终端是哪个终端时,该怎么办?怎样才能知道当前的环境变量?如果前面讲到的命令格式忘记,能否在系统中得到帮助?另外LINUX系统还提供清屏、日历、计算器等工具。
1.文件的连接
文件之间的连接,实际上是与文件相关的目录之间的连接。同一个文件可以有若干个连接,也就是说,它同时可以与多个文件进行连接。文件的这种连接特性,使得无论在什么时候进行文件之间的连接,都不需要文件的物理移动或者合并。对文件的这种连接状态进行修改时不会影响到文件本身。文件的连接就时增加一个文件的入口。它的命令行是:
ln sourcefilename targetfilename
这样就实现了文件的连接,文件的连接数加一 。
2.显示操作系统的信息
命令行是:# uname -X
此命令显示系统名称、接点名、 操作系统的版本、kernel ID、 处理器的类型、 总线类型、 系统的序列号、用户数、OEM号码、原始号码、CPU的数目等信息
3.系统日期的确定与修改
显示系统日期的命令行是: # date
修改系统时间的命令行是: # asktime
4.注册终端的确定
命令行是: # tty
5.查看环境变量
命令行是: # set
HOME=/ 注册用户的用户主目录
HUSHLOGIN=FALSE
HZ=100
IFS= 指定的定界符,shell给IFS指定的初始值为: 空格、制表符(tab)和回车符。
INFORMIXDIR=/usr/informix 数据库用户的目录
INFORMIXSERVER=test 数据库服务器的名字
LOGNAME=root 注册用户
MAIL=/usr/spool/mail/root 注册用户的信箱
MAILPATH= 指明信箱的路径(可以指定多个信箱)
MAILCHECK=600 检查信箱的间隔时间
MF_ADM=adm.cat@Linux
MSG_MAIL=1
MS_PROFILE=1
OPTIND=1
PATH=/bin:/etc:/usr/bin:/tcb/bin:/usr/informix:/usr/informix/bin
该用户的设置的路径列表
PS1=# 用户提示符
PS2=> 次提示符,如果SHELL在接受输入还未完结时碰倒换行(回车符),下一行将用PS2作为系统的提示符
SHELL=/bin/sh 注册用户使用的SHELL
TERM=ansi 该注册终端的类型
TZ=CST-8 用户所处的时区
6.得到在线帮助
man为连机的手册命令,若用户只记得指令而忘记了它的相关用法,此时可利用MAN来查看该指令的用法。其指令格式为:
man 指令名称
LINUX操作系统还提供了一个命令,可以查处指令存在的目录,指令格式如下:
type 指令名称
7.其它实用程序
l cal 日历,它可以提供何年何月的日历;如果只指明月份,则给出今年相应月份的日历;如果没有任何参数,则给出今年一所出月份为中心的三个月份的日历;如果给出两个参数,则第一个位月份。第二个位年。
l bc 计算器
l clear 清屏命令
□ 附录
1、 mkdir命令的补充
通过上面建立的目录的权限是755,当然也可以在建立目录的时候规定目录的使用权限;只要使用“-m”选项即可;还有,如果你建目录的时候用的是绝对路径,所建目录的各级父母录必须都存在,可不可以不存在时同样给你创建呢?当然可以,只要使用“-p”选项即可;还可以指定目录的用户和用户组。下面介绍这几种情况:
# mkdir [ -m mode ] [ -p ] [ -e ] dirname
mode表示要创建的这个目录所使用的权限模式;dirname是要创建的目录的名字;
-m 指定新创目录权限模式为 mode 给出的值;
-p 使用这个选项时,命令在建立目录时,先要创建起所建起所有还不存在的父目录;
-e 是有效用户ID号(EUID)和有效组ID号(EGID),取代新建目录的实际用户ID号;
2、 rmdir命令的补充
该命令还有两个选项可以用,它们的基本用法是:
# rmdir [-p][-s] dirname
-p 它的作用是允许用户删除命令行中指定的目录,当其父目录为空时,也一同被删除。
-s 这个选项是在命令执行过程中,使错误信息不在屏幕上显示。
往往这这两个选项配合使用,这样即使是父母录不为空,命令不给以删除,也不给出错误提示,如果只使用“-p”而不是用“-s”,如果有一个父母录不为空,就给出提示。
3、 more命令的补充
另外more还提供从文件的第几行开始显示、在显示文件内容之前先清屏、在窗口中显示文本的行数以及是否需要提示信息的功能。其格式为:
more [-cdw][-n][+linenumber][+pattern] filename...
其中:
linenumber 行号,给出这个量后,more可以从这个文件的这一行开始显示。
pattern 字符串(也称表达式),给出这个字符串后,more从文件中包含它的那一行之前两行开始显示。
-n 这个选项是一个整数,它定义显示窗口的行数。如果使用了它,将取代默认值。
-c 它的作用是在文件显示之前先清屏。
-d more命令带有这个选项后,在每屏的底部增加显示提示信息:
--more--(n%)[Hit space to continue,Del to abort]
-w 使用此选项,到文件的结尾处,屏幕底行显示:
--No more--
表示文件显示完毕,敲任意键退出。
filename 要显示的文件名字。
4、 常用符号介绍
在Shell中有一些符号具有特殊的含义,可以用来某些功能,现分述如下:
星号(*):可以匹配任何字符串,包括空串。如:echo * 命令将显示当前目录下所有的文件和目录名,lf aa* 显示所有以aa开头的文件名。使用* 做匹配符时,应特别小心,如rm * 将删除目录下所有文件。
问号(?):除了以.开头的文件名外,?可以匹配文件名中的任何单个字符。如用 lf a??d 命令来显示当前目录下的文件时,其结果可能为:abce,aacd,aaad,
中括号([]):可以匹配一个集合的元素。如果[crf]作为一个文件名模式的一部分,Shell将可以查找到指定位置的字母为c、r或f的文件名。例如:lf [crf]at 命令的结果可能为:cat,fat,rat。
中括号也能用于指定一个字符域,无论是数字还是字母。如:lf chapter[1-9] 其结果将是可能存在的chapter1 ,chapter2 。。。等文件名。
后台执行符号(&):如果一个程序运行的时间很长,并且不是一个交互式程序的话,就可以用“&”号使程序以后台的形式执行。 其格式为:command &
分号(;):分号可以让你在一个命令行或程序的一行中执行多个命令。如:#cd; pwd
反斜杠(\):用于取消特殊字符的特殊含义。如:lf aa\* 命令将查找当前目录是否有名为“aa* ”的文件,与lf aa* 命令有截然不同的含义。此外,如果在程序中某一行尚未完成,可以在行尾加上"\" 号,使下一行的内容接到这一行的后面,成为同一行,如下
echo The message is too long so we have \
to split it into several lines
单引号(‘’):取消除单引号以外的任何字符的特殊含义。如:echo ‘my name is $name’其结果为:my name is $name ,此时$只作为一个普通字符使用了。
双引号(“”):取消除双引号、$号以及_号以外的所有字符的特殊含义。
输入转向符(〈):用于指定输入的设备或文件。如:mail root〈message则将文件message 的内容发送给root。
输出转向符(〉):用于将输出发送到指定的设备或文件。如:lf 〉myfile 其结果是将lf的执行结果放到文件myfile中(同时清空文件中原有的数据),而不显示到屏幕上。
追加符号(〉〉):用于将命令的输出追加到某个文件中。如:lf 〉〉myfile 其结果是将lf的执行结果追加到文件myfile中(文件中原有的数据予以保留),而不显示到屏幕上。
管道符号(|):可以将一个命令的输出作为另一个命令的输入,而不需要建立临时文件。以这样方式建立的多命令行称为管道线。如:ls /bin |more 将ls /bin执行的结果传递给more,由more 来分屏显示。
改向符号(〈〈):常用于建立一个here 文件。
&& 和 || :其作用是使管道线有条件地执行。其使用方法为:
command1 && command2:当且仅当command1执行成功后才执行command2
command1 || command2:当且仅当command1执行失败后才执行command2
5、 compress 和uncompress的其它用法
compress [ -cdfFqv ] [ -H | -b bits ] file
uncompress [ -fqcFv ] file
选项含义如下:
-b bits 指定在压缩处理过程中,所使用的编码的最大位数
-c 写到标准输出并且保留原文件
-d 解压缩文件,相当于uncompress
-f 重写以前的输出文件(压缩过的文件)
-F 即使没有保存压缩文件的空间,也建立压缩输出文件。如果命令行中没有使用这个选项,在没有空间保存压缩文件时,将不建立该文件
-H 使用LZH算法对文件进行压缩。它比正常压缩还要使文件进一步缩减长度的20%
-q 不产生屏幕输出
-v 压缩时显示被压缩文件的名称以及压缩百分比,解压时显示解开的文件
6、 uname的其它用法
选 项 作 用
-a 显示操作系统的名字、机器的节点名、操作系统的release number(版本)等信息
-A 许可范围,即用户数
-m 显示机器的硬件名
-n 显示机器的节点名,它用于网络通讯
-r 显示操作系统的release number(发行号)
-s 显示操作系统的名字(uname的缺省内容)
-S nodename 用于修改系统的节点名。注意:只有超级用户才可以修改节点名,并且修改节点名不会影响系统的名字。节点名可以由小写字母、数字、“-”、“_”组成,但是不能有数字开头。
-v 显示操作系统的版本号(version number)
-X 显示系统名称、接点名、 操作系统的版本、kernel ID、 处理器的类型、 总线类型、 系统的序列号、用户数、OEM号码、原始号码、CPU的数目等信息
这部分给出的命令都关系到Linux的目录操作。它们能够完成显示当前路径、改变路径、把目录名字或文件名字列表、建立目录和删除目录以及移动目录等等。这些都是使用Linux系统是最经常、最基本的操作。
显示当前的工作目录 —— pwd
查看当前目录下的文件和目录 —— ls族
ls族命令包括l、ls、lf、lc、lr、lx,它们所完成的工作也是不一样的,其中最常用的是:l、lf,下面逐个介绍:
l —— 以长格式在每行显示目录或文件的详细信息
例如:
# l
drwxr-xr-x 3 bin bin 48 Mar 16 1996 C
-rw-rw-r-- 1 bankster bank 100 Mar 15 1997 bankcenter
每一行显示内容的组成部分包括:
权限:连接数:文件主:文件组:长度:建立或修改时间:目录或文件名
权限字段中,第一个字符表示文件的类型,具体的说:
- 表示一个普通文件
d 表示这是一个目录
l 表示一个符号连接文件
b 表示一个特殊文件,一次以一个块(block)为处理单位
c 表示一个特殊文件,一次以一个字符(character)为处理单位
p 为FIFO(First-In/First-out)的特殊文件,作为内部程序间的
联系通道
lc —— 以短格式显示目录或文件名
例如:
# lc
.lastlogin .utillist2 dev lib opt Linux
.mailrc app dos lost+found sfmt Linux.old
此命令不能分辨出哪个是文件哪个是目录。
lf ——以短格式显示目录或文件名
这条命令是lc命令的变种,不同之处是在显示目录或文件名字的同时,分别表示出它们的特征。如果是目录,在名字后面跟有一个斜杠“/”;如果是可执行文件,在名字后面跟有一个星号“*”;符号连接的文件,在名字后面跟有一个“@”符号;普通文件没有任何标志。
lr —— 以短格式显示目录或文件名
这条命令与lc命令相同,用来显示目录和文件名的格式。不同之处是,它可以把目录中各级的子目录、文件名全部列出来。
ls —— 以短格式列出目录名或文件名
与lc的功能差不多,不同的是ls每行只有一个名字。
改变当前的工作目录 —— cd
介绍两个符号:
. 指的是当前目录
.. 指的是当前目录的父母录
路径有相对路径、绝对路径之说,所以在更改工作目录的时候,也要搞清楚是绝对路径还是相对路径。
例如:
① cd /etc/conf/cf.d
② cd etc (假设在当前目录下有目录etc)
③ cd ..
① 指的就是绝对路径;
② 指的是相对路径,相对与当前目录来说的;
③ 回到当前目录的父母录,假设当前目录是/etc/conf/cf.d,执行该命令后到达目录/etc/conf。
创建目录 —— mkdir 目录名
此命令的功能是创建一个目录。它与DOS中的MD命令作用相似。
创建的目录也有相对路径(相对于当前路径)和绝对路径(相对于根目录)之说,如:
# pwd
/tmp
# mkdir test
则建的目录是/tmp/test,当然如果你想建的目录是/tmp/test,那么你可以使用下面的命令:
# mkdir /tmp/test
删除目录 —— rmdir
它的基本用法是:
# rmdir dirname
在执行这个命令的时候,要附和两个条件:
① 工作目录不能是命令行中指定要删除的目录;
② 要删除的目录必须是空目录,也就是说该目录下没有任何文件和目录;
在这里指定的目录也有相对目录和绝对目录之说,所以用的时候一定要注意不要删错目录。
移动目录命令 —— mvdir
它的基本用法是:
# mvdir dirname1 dirname2
此命令的功能是移动目录,在一个文件系统内部,它可以把目录从一个地方移到另一个地方。其中:dirname1 是原始目录名;dirname2 是目标目录名,命令将dirname1移到这个目录下。移动后,新的目录为dirname2/dirname1。要求这个目录不能与现有的目录或文件同名,否则,命令执行失败.
目录的拷贝 —— copy
基本用法是:
copy -r 源目录... 目标目录(对源目录的字目录也进行复制)
如果源目录不只一个,则把每个源目录依次向目标目录复制。
□ 文件操作
一个操作系统,它一定要支持文件操作:文件的建立、文件内容的查看、排序、粘贴、压缩等功能。其中文件建立的主要方法是利用Vi编辑器,Vi编辑器的主要用法我们作为一个专题来讨论。
1、 文件内容的查看
LINUX操作系统中,提供了几种查看文件内容的命令,有pg、more、cat,下面是对它们的介绍:
(1)cat filename...
这个命令可以用来显示一个或者多个文件,cat按你书写的顺序读每一个文件,并把它们在标准输出设备(屏幕)上显示出来。
另外,这个命令还可以用来串行的连接文件。例如:
# cat mm
这个命令行的工作是把文件mm送到屏幕显示。
# cat mm>/dev/lp0
这个命令行的工作是把文件mm送到打印机上打印输出。
# cat file1 file2>file3
这个命令行的工作是把文件file1和文件 file2 连接起来,放入文件file3中。
# cat file1>>file2
这个命令行的工作是把文件file1与文件file2 连接起来,并将file1附加到 file2后面。
(2)more filename...
命令的功能是在屏幕上浏览文件。使用它在屏幕上显示文件内容时,每显示一屏都暂停,并在屏幕底部左下侧显示:
--more--(n%)
提示到本屏为止,已经显示的内容占全部内容的百分之多少。当敲了空格键后,将显示下一屏;如果敲入回车,屏幕只滚动一行;键入Del键,则退出more命令;如果你想对这个文件进行编辑,可以键入“V”。
另一方面,more命令可以同其它命令结合使用。比如,使用l命令列出/bin 目录下的目录项时,由于屏幕滚动特别快,无法查看,这时可以键入命令行:
# l | more
各种符号的解释可以查看本节附录。
(3) pg filename …
命令的功能是在屏幕上浏览文件。使用它在屏幕上显示文件内容时,每显示一屏都暂停,并在屏幕底部左下侧显示:
:
提示到本屏为止,已经显示的内容占全部内容的百分之多少。当敲了空格键后,将显示下一屏;如果敲入回车,屏幕只滚动一行;键入Del键,则退出more命令;如果你想看前两行的信息,你可以键入“-2”;如果你想看第n页的信息可以键入“N”。
pg也可以配合其它命令使用。
有时你并不想将文件的所有内容显示出来,而是只想查看文件的前10行或者是后20行,这时使用上面的命令就不好用了。如果你想查看文件的前N行,你可以使用命令:
head -N filename
如果你想查看文件的后N行,你可以使用命令:
trail -N filename
2、 文件的拷贝、删除、移动与改名
(1)文件的拷贝
在对文件操作时,难免要对文件进行拷贝,它的基本命令是cp,它的基本命令同DOS的copy命令,如:
cp /tmp/test /usr/zhang
(2)文件的删除
在文件系统中,回经常存在一些过时的文件和临时性文件,需要将它们清理(删除,它的命令是rm,它同DOS的DELETE用法差不多,如:
rm /tmp/test 删除/tmp目录下的test
rm test 删除当前目录下的test
rm *.txt 删除当前目录下的以.txt结尾的文件
用此命令,文件一旦删除便不能恢复,所以使用要小心,最好是先用pwd、lf作一下查看再作删除。
rm命令还可以用来删除目录的所有内容(包括目录下的文件、子目录及其内容),它的用法是:
rm -r directory
删除目录下的所有内容(包括文件、子目录及其内容),并删除目录本身;
rm –r * 或 rm -r /directory/*
删除当前目录或指定目录下的所有内容(包括文件、子目录及其内容);
注意:用rm -r 来删除文件,因为它是批量删除,所以一定要确认你要删
除的目录正是你所需要的。
(3)文件的移动与改名
有时你想把某个文件改为另外一个名称,或者你想把一个文件从这个目录移到另外一个目录,这时候你就要用到这个命令:mv
这条命令既可以移动文件、目录,也可以给文件和目录重新命名。
①对文件改名:mv file1 file 2
执行过改命令后:文件1就不存在了,而文件2原内容将被覆盖。所以用该命令时一定确保文件file2不存在或者该文件无用了,以免造成不必要的损失。
②对目录改名:mv directory1 direcory2
在使用这个命令时一定要注意目录directory2不存在,否则该命令的执行不会成功。
③将文件移到某一目录下:mv file1 file2 ... directory
命令行所完成的任务是把一个或多个文件移到一个目录下。
3、 文件的查找
有时你会碰到这么一种情况,你只记得文件的名字而忘记了文件存在的目录;你只记得文件名字中的几个单词而忘记了它存在的目录和全名,怎么办?别急,这里有个命令可以解决这个问题,它就是find 。它的基本用法是:
find 查找的路径名 -name 文件名或目录名 -print
如:我想查找对公报表(以bgs_*开头的文件)在哪个目录下,可以用这个命令:
find / -name bgs_* -print
注意:-print不能少,如果不加上,即使找到也不会在屏幕上显示出来,也就是说它的作用是显示找到的每个文件及其路径。-name的作用是指按文件名查找。
你可能遇到这么一种情况,你想查找存在某一字符串的文件,这是你可以使用下面的命令来完成:grep(查找字符串所在的文件),如:
grep “tbmode” */*
若在根目录下键入此命令,则在系统的所有文件中查找该字符串;否则在当前目录的文件和子目录中查找;如果只在当前目录下查找,可以使用命令:
grep “tbmode” *
4、 文件的压缩及解压
或许你会遇到这么一种情况,一组文件你非常需要,但是你手头只有一张软盘,恰恰这组文件的大于1.44M,这是你可能慌了,不要紧,LINUX系统中有一压缩程序,它就是compress。它的用法是:
compress file
之后file文件不存在,而生成一个新文件file.Z。如果有一天你需要这些文件,可以通过解压命令uncompress将这些文件解开恢复原来的状态。Uncompress的用法是:
uncompress file.Z 或 uncompress file
5、 文件的粘贴
所谓文件的粘贴是指将两个文件并列的合并起来。例如你可能遇到过这种情况,你想打印一个班学员的名字,你输入的时候是以一列的形式输入的,当你输入完之后才发现如果这样打印出来太浪费纸张,你想以两列的形式打印,这时你可以将此文件的后一半存入另外一个文件然后使用下面的命令:paste(并行合并两个文件)。
基本格式:
paste file1 file2 > file3
这个命令默认的分割符是“Tab”键,当然你也可以指定分割符,格式如下:
paste -d “分割符” file1 file2 > file3
paste命令的另外一种用法是将文件的所有行连接起来,要完成这种功能要使用选项 -s,用法是;
paste -s filename
6、 文件的比较
对文件内容进行,也包括了对文件目录的比较。有的命令在进行文件比较过程中能统计出不同的行数与字节数,可以是两个文件也可以是三个文件。
(1) diff
这个命令的功能是对两个文本文件进行比较,它指出在两个文件中有哪些行必须进行修改,既:两个文件的哪些行不一致。
diff 文件1 文件2
如果文件1或文件2是一个目录,那么diff将使用目录中的同名文件进行比较,例如:
diff /tmp abc
在命令行中/tmp是目录名。执行这个命令时,将当前目录的文件abc与目录/tmp中的文件abc进行比较。
例如:
# diff file1 file2
1c1
< I an a student?
---
> I am a studnet!
这里,以小于号<打头的行属于文件file1,以大于号>打头的行属于文件file2,这样你可以看出两个文件的不同之处以便进行修改。
(2) cmp
它的功能是对两个文件进行比较。如果两个文件有不同之处,则显示那些不同的行数和字节数。这个命令只能比较文件,不能一个是文件另一个是目录。例如:
# cmp file1 file2
file1 file2 differ: char 12, line 1
(3) diff3
它的功能是对三个文件进行比较,比较的结果显示如下标志:
==== 表示三个文件都不相同
====1 表示文件1不同,另外两个文件相同
====2 表示文件2不同,另外两个文件相同
====3 表示文件3不同,另外两个文件相同
它的用法是:
diff3 file1 file2 file3
7、 文件的排序
或许你会碰到这么一种情况,你想对一个文件的内容进行排序。在LINUX系统中提供了这么一种工具,它就是sort。如果你想以数字为序排列,就要使用选项“-n”;如果你文件的格式是这样的:
字段1|字段2|字段3|字段4|·····
你可能要以某个字段排序,这时你就要指明分割符以及以何种顺序排列;在一般情况下sort的排列顺序是升序的,如果你想以降序排列就要使用选项“-r”。
它的基本用法是:
sort -u -n –r -t“分割符” +pos1 -pos2 -o 输出的文件名
其中:
-u 使排序的文件行唯一,如果文件中有两行或更多是一样的,
使用这个选项,可以使输出只输出一行;
-n 按算术值进行排序,按从大到小的顺序
-r 进行反向排序
-tx 定义分割符,其中x是新定义的分割符。通常分割符不作为
字段的一个组成部分
+pos1 –pos2 用来指定排序的字段,pos1是排序字段减一,
pos2等于排序字段
-o 用来指明排序后的输出文件
8、 确定文件的类型
Linux系统主要的文件类型有:
directory 目录文件
empty 空文件
cannot open 没有阅读许可权的文件
command text shell命令语言编写的文件
c programe text c语言程序文本
(separate)executeable 可执行文件
archieve 档案文件
要得到文件的类型可以用下面的命令:
file filename
□ 文件权限
LINUX系统把使用系统的人(仅限于普通用户)分成三个等级:即文件的所有者、同组的人和其他组的人。文件的所有者一般都是文件的创建者,由于他是文件的主人,因此对文件具有全权。在这三个级别中,权利的大小是逐级降低的。文件的主人的权利最大,并且有他决定下面两级的人应有多大的权利。
对每一个文件的使用者分成这样三个等级,每个文件的存取权是分别规定的。每个等级的人对一个文件的操作都有三种不同的存取权,即:阅读权(read用r表示)、写入权(write用w表示)和执行权(excute用x表示)。
由于有三个等级,每个等级都有三种存取权,所以文件的权限可以这样表示:
r w x r w x r w x
主 人 同组者 他组者
文件的权限可以用l命令来查看,用l命令后在屏幕上显示的内容的第一列为文件的权限。
既然文件的权限分三级:文件的主人、同组者、它组者,那么对一个文件来说,它的主人和组就尤其重要,因为这是一个安全性的问题。总上文件的权限分文件的寸取权、文件的属主和文见的属组。
(1) 改变文件或目录的属主
chown 主人名 文件名(目录名)
例如,在准备数据库磁盘空间时,需要把数据库空间的属主赋给informix,所以:
chown informix /dev/dbspace
chown informix /dev/rdbspace
(2) 改变文件或目录的属组
chgrp 组名 文件名(目录名)
例如,在准备数据库磁盘空间时,需要把数据库空间的属组赋给informix,所以:
chgrp informix /dev/dbspace
chgrp informix /dev/rdbspace
(3) 改变文件或目录的的存取权——chmod
所有的文件在刚建立时都是不可执行的(刚建立的文件的权限是755),如果想把文件变成可执行的,就必须改变文件的存取。如果不希望同组的人修改你的文件,或不希望其他人看你的文件,也只能通过修改文件的存取权限来施行保护。
使用chmod命令有两种方法:
一种是符号方式,其形式为:
chmod 谁 操作符 许可权 文件名(目录名)
其中:
谁:a(all:所有的人)、g(group:同组的人)、o(other:他组的人)、u(user:文件的主人);
操作符:+(赋予权限)、-(收回权限)、=(只有);
许可权:r(read读权)、w(write写权)、x(excute执行权);
如果在chmod命令中省略了“谁”,则默认为“a",即修改所有人的存取权。
例如:
chmod u+w display (文件的所有者增加写权)
chmod g=x display (同组的人享有执行权,但去掉读写权)
可以在命令行给出多个符号方式,用逗号隔开,逗号两边不能空格,例如:
chmod u+w,g=x display
如果几种人对共同的文件或目录有共同的权利,则可以在“谁”这一项将这几种人不加分隔的并列,在“许可权”这一项将几种存取权不加分隔的并列。如:
chmod ug+rw chap
另一种方法是数字方式:
chmod 三位八进制数 文件名或目录名
其中“三为八进制数字”的定义如下:
所 有 者 同 组 者 他 组 者
存取权 r w x r w x r w x
数 字 4 2 1 4 2 1 4 2 1
该等级有此权限,此处的数有效。如:660指rw-rw----。
例如,在准备数据库磁盘空间时,需要把数据库空间的存取权赋为660,所以:
chmod 660 /dev/dbspace
chmod 660 /dev/rdbspace
□ 对磁盘的操作部分
1. 格式化软盘 —— format
2. 判定磁盘上的数据存放格式
要对磁盘进行操作需知道磁盘的格式,在LINUX系统中有以下数据类型:LINUX文件系统、DOS格式、tar格式、cpio格式,只有知道了磁盘的格式才能选择恰当的命令进行操作。判定磁盘格式的命令是:
# dtype /dev/fd0
另外dtype还可以用来查看文件系统的类型。如:
# dtype /dev/root
/dev/root : HTFS filesystem
3. 文件保存和恢复
在文件的保存和恢复这一节中,我们介绍 tar命令。保存文件也称文件归档,通常使用的介质是软盘或磁带;恢复文件是从后备介质上提取文件。它的基本格式为:
tar [crutx]v6 [file……]
其中各选项的作用如下:
-c 创建一个新的后备文件。归档时,是从后备介质的起始位置进行,而不管原来介质上是否已经存放文件;若原来有文件,将覆盖原有信息;
-r 在进行文件归档时,把要归档的文件写到后备介质上现有文档的后面;
-t 当命令行中指定的文件在归档介质上出现时,把文件名列出来。如果使用了功能符t,而在命令行中没有指定文件名,那么把归档介质上全部的文件名字列出来。
-x 从归档的文件中,把命令中指定的文件抽取出来;若没有指定文件,则把归档介质上的全部文件抽取出来。
-v 在tar命令对文件进行处理时,把文件的名字一一在屏幕上显示出来。
例如:
# tar cv6 /tmp/* 将目录/tmp下的所有文件拷贝到软盘上
# tar tv6 查看tar格式软盘上的文件列表
# tar xv6
将以tar指令拷到软盘上的文件释放出来,若在向软盘上拷贝时使用的是绝对路径,那么拷出来时也是绝对路径,即从哪里来到哪里去;若在向软盘上拷贝时使用的是相对路径,那么拷出来时也是相对路径,即拷到当前目录下。
4. 进行不同规格、不同种类介质间的拷贝
基本指令是:dd,它的基本格式为:
dd if= inputfile of=outpurfile bs=10k
if=inputfile 代表着输入文件,等号右边的inputfile是文件名;
of=outputfile 代表着输出文件,等号右边的outputfile是文件名;
bs=10k 代表输入、输出块的大小为10k。
5. cpio指令
cpio命令和tar命令一样,用于文件的归档和恢复,它有很多个选项,这里仅介绍几个常用的选项。
-i:复制文件到当前目录
-c:文件头以ASCII格式写入
-v:显示正在处理的文件名
-d:若需要则产生目录
-u:无条件的复制
-m:保留文件的修改时间
-B:输入/输出所使用的块的大小为512B
-I:指明输入设备名
-t:显示输入的内容表,常用来查看归档介质上的文件目录
如将文件从软盘上拷贝出来,可以使用命令:
# cpio –icvdumBI/dev/fd0
如果只想查看软盘上的文件列表,可以使用:
# cpio -tvBI/dev/fd0
□ DOS操作部分
通过这一节的学习,你可以掌握在LINUX系统下如何对DOS格式的磁盘和文件操作。LINUX的DOS命令是指在LINUX系统中可以直接使用的能完成DOS操作的一些命令,它不同与DOS命令本身。下面列出的是各种不同的DOS命令以及LINUX与DOS之间的文件格式的转换。
1. 查看DOS盘上的目录和文件,你如果想用DOSDIR的格式列出,可以使用命令:
dosdir a: 或 dosdir c:
如果想用LINUX系统的ls格式列出,可以使用命令:
dosls a: 或 dosls c:
2. 你如果想查看文件的内容,你可以使用命令:
doscat a:\file 或者 doscat c:\file
3. 你如果想删除DOS盘上的文件,你可以使用命令:
dosrm a:\file 或者 dosrm c:\file
4. DOS盘目录操作的命令:
建立一个目录,可以使用命令:dosmkdir ;删除一个目录,可以使用命令:dosrmdir,例如:
dosmkdir a:\test
dosrmdir a:\test
5. 将一张软盘格式化为DOS格式的命令:
dosformat /dev/rfd0135ds18
一定要注意/dev/rfd0135ds18这个设备名不能少。
6. LINUX系统中的文件与DOS格式的磁盘之间的拷贝
将LINUX系统中的文件拷贝到DOS格式的磁盘上或将DOS格式的文本文件拷贝到LINUX系统中,他命令是:doscp ,它的具体用法是:
doscp ./test a: 将当前目录下的test文件拷贝到软盘上
doscp /tmp/test c:\test 将tmp目录下的test文件拷贝到C盘的test目录下
doscp a:\test . 将A盘上的test文件拷贝到当前目录下
7. LINUX格式与DOS格式文件的转换:
从LINUX格式到DOS格式的转换,它把回车符加到每一行的结尾,把ctrl_d字符加到文件的结尾。它的命令行结构是:
xtod filename > output.filename
从DOS格式到LINUX格式的转换是xtod命令的逆过程,即将每一行的回车符以及文件结尾的ctrl_d删除。它的命令行格式位:
dtox filename > output.filename
□ 其他命令
在这一部分中,我们将介绍LINUX操作系统中最常用的几个命令,如在讲解ls 族时讲到l 命令的格式中有一个连接数,连接数是什么概念,它能否修改;我想知道我系统的名字怎么办?如何得到系统的日期以及如何修改?若我忘记我的注册终端是哪个终端时,该怎么办?怎样才能知道当前的环境变量?如果前面讲到的命令格式忘记,能否在系统中得到帮助?另外LINUX系统还提供清屏、日历、计算器等工具。
1.文件的连接
文件之间的连接,实际上是与文件相关的目录之间的连接。同一个文件可以有若干个连接,也就是说,它同时可以与多个文件进行连接。文件的这种连接特性,使得无论在什么时候进行文件之间的连接,都不需要文件的物理移动或者合并。对文件的这种连接状态进行修改时不会影响到文件本身。文件的连接就时增加一个文件的入口。它的命令行是:
ln sourcefilename targetfilename
这样就实现了文件的连接,文件的连接数加一 。
2.显示操作系统的信息
命令行是:# uname -X
此命令显示系统名称、接点名、 操作系统的版本、kernel ID、 处理器的类型、 总线类型、 系统的序列号、用户数、OEM号码、原始号码、CPU的数目等信息
3.系统日期的确定与修改
显示系统日期的命令行是: # date
修改系统时间的命令行是: # asktime
4.注册终端的确定
命令行是: # tty
5.查看环境变量
命令行是: # set
HOME=/ 注册用户的用户主目录
HUSHLOGIN=FALSE
HZ=100
IFS= 指定的定界符,shell给IFS指定的初始值为: 空格、制表符(tab)和回车符。
INFORMIXDIR=/usr/informix 数据库用户的目录
INFORMIXSERVER=test 数据库服务器的名字
LOGNAME=root 注册用户
MAIL=/usr/spool/mail/root 注册用户的信箱
MAILPATH= 指明信箱的路径(可以指定多个信箱)
MAILCHECK=600 检查信箱的间隔时间
MF_ADM=adm.cat@Linux
MSG_MAIL=1
MS_PROFILE=1
OPTIND=1
PATH=/bin:/etc:/usr/bin:/tcb/bin:/usr/informix:/usr/informix/bin
该用户的设置的路径列表
PS1=# 用户提示符
PS2=> 次提示符,如果SHELL在接受输入还未完结时碰倒换行(回车符),下一行将用PS2作为系统的提示符
SHELL=/bin/sh 注册用户使用的SHELL
TERM=ansi 该注册终端的类型
TZ=CST-8 用户所处的时区
6.得到在线帮助
man为连机的手册命令,若用户只记得指令而忘记了它的相关用法,此时可利用MAN来查看该指令的用法。其指令格式为:
man 指令名称
LINUX操作系统还提供了一个命令,可以查处指令存在的目录,指令格式如下:
type 指令名称
7.其它实用程序
l cal 日历,它可以提供何年何月的日历;如果只指明月份,则给出今年相应月份的日历;如果没有任何参数,则给出今年一所出月份为中心的三个月份的日历;如果给出两个参数,则第一个位月份。第二个位年。
l bc 计算器
l clear 清屏命令
□ 附录
1、 mkdir命令的补充
通过上面建立的目录的权限是755,当然也可以在建立目录的时候规定目录的使用权限;只要使用“-m”选项即可;还有,如果你建目录的时候用的是绝对路径,所建目录的各级父母录必须都存在,可不可以不存在时同样给你创建呢?当然可以,只要使用“-p”选项即可;还可以指定目录的用户和用户组。下面介绍这几种情况:
# mkdir [ -m mode ] [ -p ] [ -e ] dirname
mode表示要创建的这个目录所使用的权限模式;dirname是要创建的目录的名字;
-m 指定新创目录权限模式为 mode 给出的值;
-p 使用这个选项时,命令在建立目录时,先要创建起所建起所有还不存在的父目录;
-e 是有效用户ID号(EUID)和有效组ID号(EGID),取代新建目录的实际用户ID号;
2、 rmdir命令的补充
该命令还有两个选项可以用,它们的基本用法是:
# rmdir [-p][-s] dirname
-p 它的作用是允许用户删除命令行中指定的目录,当其父目录为空时,也一同被删除。
-s 这个选项是在命令执行过程中,使错误信息不在屏幕上显示。
往往这这两个选项配合使用,这样即使是父母录不为空,命令不给以删除,也不给出错误提示,如果只使用“-p”而不是用“-s”,如果有一个父母录不为空,就给出提示。
3、 more命令的补充
另外more还提供从文件的第几行开始显示、在显示文件内容之前先清屏、在窗口中显示文本的行数以及是否需要提示信息的功能。其格式为:
more [-cdw][-n][+linenumber][+pattern] filename...
其中:
linenumber 行号,给出这个量后,more可以从这个文件的这一行开始显示。
pattern 字符串(也称表达式),给出这个字符串后,more从文件中包含它的那一行之前两行开始显示。
-n 这个选项是一个整数,它定义显示窗口的行数。如果使用了它,将取代默认值。
-c 它的作用是在文件显示之前先清屏。
-d more命令带有这个选项后,在每屏的底部增加显示提示信息:
--more--(n%)[Hit space to continue,Del to abort]
-w 使用此选项,到文件的结尾处,屏幕底行显示:
--No more--
表示文件显示完毕,敲任意键退出。
filename 要显示的文件名字。
4、 常用符号介绍
在Shell中有一些符号具有特殊的含义,可以用来某些功能,现分述如下:
星号(*):可以匹配任何字符串,包括空串。如:echo * 命令将显示当前目录下所有的文件和目录名,lf aa* 显示所有以aa开头的文件名。使用* 做匹配符时,应特别小心,如rm * 将删除目录下所有文件。
问号(?):除了以.开头的文件名外,?可以匹配文件名中的任何单个字符。如用 lf a??d 命令来显示当前目录下的文件时,其结果可能为:abce,aacd,aaad,
中括号([]):可以匹配一个集合的元素。如果[crf]作为一个文件名模式的一部分,Shell将可以查找到指定位置的字母为c、r或f的文件名。例如:lf [crf]at 命令的结果可能为:cat,fat,rat。
中括号也能用于指定一个字符域,无论是数字还是字母。如:lf chapter[1-9] 其结果将是可能存在的chapter1 ,chapter2 。。。等文件名。
后台执行符号(&):如果一个程序运行的时间很长,并且不是一个交互式程序的话,就可以用“&”号使程序以后台的形式执行。 其格式为:command &
分号(;):分号可以让你在一个命令行或程序的一行中执行多个命令。如:#cd; pwd
反斜杠(\):用于取消特殊字符的特殊含义。如:lf aa\* 命令将查找当前目录是否有名为“aa* ”的文件,与lf aa* 命令有截然不同的含义。此外,如果在程序中某一行尚未完成,可以在行尾加上"\" 号,使下一行的内容接到这一行的后面,成为同一行,如下
echo The message is too long so we have \
to split it into several lines
单引号(‘’):取消除单引号以外的任何字符的特殊含义。如:echo ‘my name is $name’其结果为:my name is $name ,此时$只作为一个普通字符使用了。
双引号(“”):取消除双引号、$号以及_号以外的所有字符的特殊含义。
输入转向符(〈):用于指定输入的设备或文件。如:mail root〈message则将文件message 的内容发送给root。
输出转向符(〉):用于将输出发送到指定的设备或文件。如:lf 〉myfile 其结果是将lf的执行结果放到文件myfile中(同时清空文件中原有的数据),而不显示到屏幕上。
追加符号(〉〉):用于将命令的输出追加到某个文件中。如:lf 〉〉myfile 其结果是将lf的执行结果追加到文件myfile中(文件中原有的数据予以保留),而不显示到屏幕上。
管道符号(|):可以将一个命令的输出作为另一个命令的输入,而不需要建立临时文件。以这样方式建立的多命令行称为管道线。如:ls /bin |more 将ls /bin执行的结果传递给more,由more 来分屏显示。
改向符号(〈〈):常用于建立一个here 文件。
&& 和 || :其作用是使管道线有条件地执行。其使用方法为:
command1 && command2:当且仅当command1执行成功后才执行command2
command1 || command2:当且仅当command1执行失败后才执行command2
5、 compress 和uncompress的其它用法
compress [ -cdfFqv ] [ -H | -b bits ] file
uncompress [ -fqcFv ] file
选项含义如下:
-b bits 指定在压缩处理过程中,所使用的编码的最大位数
-c 写到标准输出并且保留原文件
-d 解压缩文件,相当于uncompress
-f 重写以前的输出文件(压缩过的文件)
-F 即使没有保存压缩文件的空间,也建立压缩输出文件。如果命令行中没有使用这个选项,在没有空间保存压缩文件时,将不建立该文件
-H 使用LZH算法对文件进行压缩。它比正常压缩还要使文件进一步缩减长度的20%
-q 不产生屏幕输出
-v 压缩时显示被压缩文件的名称以及压缩百分比,解压时显示解开的文件
6、 uname的其它用法
选 项 作 用
-a 显示操作系统的名字、机器的节点名、操作系统的release number(版本)等信息
-A 许可范围,即用户数
-m 显示机器的硬件名
-n 显示机器的节点名,它用于网络通讯
-r 显示操作系统的release number(发行号)
-s 显示操作系统的名字(uname的缺省内容)
-S nodename 用于修改系统的节点名。注意:只有超级用户才可以修改节点名,并且修改节点名不会影响系统的名字。节点名可以由小写字母、数字、“-”、“_”组成,但是不能有数字开头。
-v 显示操作系统的版本号(version number)
-X 显示系统名称、接点名、 操作系统的版本、kernel ID、 处理器的类型、 总线类型、 系统的序列号、用户数、OEM号码、原始号码、CPU的数目等信息