发信人: flyck1981(纤舞冰狼~)
整理人: qiaoqian(2002-05-13 06:53:32), 站内信件
|
如果用ls加上开关命令 –l 就可以显示一个文件的权限。-l 开关告诉ls命令显示文件权限列表。如果敲入ls –l ,用户就会看到像下面的列表:
$ ls –l
total 7
drwx------ 2 chen chen 1024 Mar 10 12:44 chen
drwx------ 2 clf clf 1024 Mar 10 12:45 clf
drwxr-xr-x 6 root root 1024 Mar 8 02:17 ftp
drwxr-xr-r 5 root root 1024 Mar 8 02:18 httpd
drwx------ 2 lin lin 1024 Mar 7 20:50 lin
drwxrwxr-x 2 root root 1024 Mar 11 1998 httpd
该列表几乎显示了目录和文件的索引节点所包含的与文件有关的所有信息。第一列显示的是文件的权限,第二列显示的是对一个文件或目录中的附加块的连接数量,第三列显示谁拥有该文件,第四列显示文件所属的组,第五列显示文件的字节数,第六列显示文件创建的日期和时间,最后一列显示文件自身的名字。
权限字段分为四个子字段:
rwx rwx rwx
第一个字段定义文件的类型。普通文件以连字符(-)作为占字符;目录用一个d表示。表3-1列出了文件类型子字段的权限值。
表1 文件类型子字段的权限值
字符
含义
-
普通文件
B
特殊块文件
C
特殊字符文件
D
目录
L
符号连接
接下来的三个子字段显示文件的读,写和执行权限。如果这三个字段中的第一个字段的rwx是说所有者对文件有读,写和执行权限。这三个字段中的第二个字段是rwx说明拥有文件的组对文件有读,写和执行权限。最后一个字段显示其它人的权限。
在我们使用DOS的时候,我们可以使用tree命令来显示文件系统,在Linux中没有与之完全等效的命令,但可以使用ls –R命令列出当前目录、每一个子目录以及每一个子目录下的子目录中的所有文件。此外还可以用find和du命令列出当前目录及其子目录中的所有文件。
$ find . –print
.
./.Xdefaults
./.bash_logout
./.bash_profile
./.bashrc
./.screenrc
而使用du命令时,不仅可以列出所有文件的名字,还可以列出文件的大小,例如:
$ du –a
4 ./.Xdefaults
1 ./.bash_logout
1 ./.bash_profile
1 ./.bashrc
4 ./.screenrc
12 .
ls命令还可以统记出一个目录中的文件数,但不包括以“.”开头的文件。例如如果用户想统记出根目录下所有非“.”开头的文件的数目,要用如下的命令格式:
$ ls –l|wc –l
16
如要统计所有文件的数目,可运行:
$ ls –al|wc –l
19
ls命令后可以跟很多种开关选项,上文只是介绍了少数几种 ,可根据需要查阅有关资料或键入man ls 取得ls命令的帮助。
建立和删除目录
因为Linux 的文件系统是基于目录的,所以Linux提供了mkdir命令使用户能创建新目录。DOS中创建新目录有mkdir(MD)命令, Linux与DOS类似,但Linux命令提供了更多的选项,功能更强大。例如,如果想在根目录下创建名为pic的目录,可按以下步骤进行:
# mkdir pic
mkdir命令可以创建任意数量的新目录,例如,在根目录下创建名为txt、pic 和work
的三个新目录可用下面的格式:
# mkdir txt pic work
用mkdir创建了目录之后,我们还可以用rmdir命令来删除它,要注意的是,只有当要删除的目录为空目录时才可用rmdir命令,如果目录非空时使用rmdir命令就会得到如下结果:
# rmdir txt
rmdir:txt:Directory not empty
这时就需要先将其目录下的所有文件删除,删除文件可用rm命令:
# rm /txt/mytxt
也可以使用带开关-r的rm命令可以删除txt及其目录下的所有文件:
# rm –r txt
文件操作命令
本节我们将介绍诸如mv、cat、find等有关文件操作的一些基本命令,在第八章文件系统管理中我们将详细介绍这方面的知识。
移动文件命令mv
Linux系统提供了命令mv用来重命名文件或移动文件到目录中的另一个位置。将当前目录下的文件demo重命名为demo1,可使用:
$ mv demo demo1
想移动文件到目录中的另一个位置,需要给mv提供老文件和新文件的完全路径名,例如,想移动文件/home/clf/demo1到/home/lin/file,可使用命令:
$ mv /home/clf/demo1 /home/lin/file
使用mv重命名文件时可能会犯严重的错误。在用户试图重命名一个文件为另一个已存在的文件时,就可能重写已存在的文件。为了避免这个问题,可使用mv –i (interactive)这时,如果mv需要重写已存在的文件时,会通知用户,让用户选择是否重写以存在的文件。
$ mv –i demo demo1
mv:overwrite demo1?
如果在“?”后敲入“y”,demo1就会被demo的内容重写,如果敲入“n”(或其它任何字符),demo1就不会被重写。
也可以使用mv命令移动整个目录。例如,把目录lin下所有子目录和文件移动到目录clf下,可使用:
$ mv /home/lin /home/clf
文件拷贝命令cp
我们使用DOS的时候,可以用copy命令来备份文件,Linux的cp命令类似于DOS的copy命令。把文件document备份到document99.doc可使用:
$ cp document document99.doc
如果文件document99.doc不存在,则系统会建立该文件,并把document的内容拷贝给它。如果document99.doc已存在,其内容将被document的内容重写。
用户也可以拷贝几个文件到一个目录中,您需要列出这些文件的名字,并在后面用子目录名作为参数,例如,命令:
$cp document document97 document98 document99 Report
将文件document,document97,document98,document99拷贝到子目录Report中。cp命令不同于mv命令因为cp不删除源文件,用户需要给cp命令提供源文件名,其后要跟目标文件名。
使用cp命令时,会遇到和命令同样的问题 —— 重写已存在的文件。解决这个问题的办法也是用带 –i的cp命令,这样在重写已存在的文件时会提醒您。
DOS使用xcopy命令拷贝目录中所有的文件。Linux使用带-r的cp命令就可拷贝整个目录。例如,要拷贝project下的目录结构到目录plan,可使用命令:
$ cp –r project plan
欲知命令的更多详情,请使用命令man cp。
查看文件内容
几乎每个Linux命令都打印到标准输出设备上,例如显示器。如果在用某些方法处理完文件后,命令从这个文件中接收输入,那么这个命令把这个文件打印到显示器上。您可以用三种标准命令:cat,more和less。
cat命令用于显示短小的ASCII文件,cat命令以一个文件列表(或单个文件)为参数并把内容不加修改地在标准输出设备上输出(一个文件接一个文件)。它主要的用途是连接文件(如cat file1 file2 >file),但它也适用于把一个短小文件的内容送到显示器上。用cat显示文件的速度和屏幕处理字符的速度一样快,当用它处理长文件时,还没有等您看清文件的内容,屏幕就滚过去了,一种解决的方法是在阅读屏幕内容时按Ctrl+s键使输出暂停,按Ctrl+q恢复屏幕滚动,但这种方法难于控制,难于使屏幕在真正需要的地方停止滚动。
一种更好的方法是使用分页程序,让用户逐屏滚动文件。即使用more和less命令。
more名令由 Berkeley的UNIX版本派生出来。其最简便的形式是more filename,该命令向用户显示文件的第一屏文本,然后给出提示,如果在提示时按回车键,屏幕上滚显示下一行。如果按空格键,屏幕显示下一页。使用more命令的缺点是不能回走重新显示前一页。
less命令是一个比more命令更好的查看文件内容的命令,它允许用户向前向后移动文件。命令格式同样是less filename。要查看下一屏文件,按空格键。在文件中来回移动按b键或PageDown和PageUp键。
查找文件命令find
find命令是功能很强大的工具,因此比较难使用。Find命令有三部分,每部分由多个子部分组成,这些子部分是:
■ 寻找路径
■ 寻找的内容
■ 找到后做什么
如果知道文件名,但不知道文件在何处,最简单的find命令为:
$ find / -name filename –print
“/”表示从根目录下开始查找,这在大系统上可能会花很长的时间来查找每个目录,从根目录开始,在找到要查找的文件之前,继续查找每个子目录。
如果用户知道要查找的文件大体在某几个目录的话,就能大大缩短查找时间。如果知道文件可能在/home/clf和/home/chen下,可用下面的命令代替上面的命令:
$ find /home/clf /home/chen –name filename –print
与find命令一起使用的还有许多不同的参数,大家可以使用man find
查看所有可使用的参数。
表2 find命令部分参数
命令
说明
-name file
File变量是文件名或含通配符的文件名。如果是含通配符的文件名,每个与通配符匹配的文件都被选出来以备使用
-link n
有n个或更多连接的任何文件被选出来以备使用
-size n[c]
占n个或更多个512字节块的文件被选出以备处理。C意味着选出占用n个或更多个字符的任何文件。
-exec cmd
当选出一组文件列表后,您可以运行把选出的文件作为一个参数的Linux命令。该命令有两个简单的规则:选出的文件名由{}表示,命令必须以换码分号(用 \ ;表示)来结束。假设在以root身份登录时创建了一个用户目录;那么所有文件被根所有而不归用户所有。可运行下述命令把/home/clf的所有文件和子目录拥有者变成clf:
find /home/clf –exec chown clf {} \;
-print
这个选项打印出所有文件的命字和位置
-atime n
找出在最近n天中访问过的任何文件
使用vi编辑文件
vi是Unix世界里极为普遍的文书编辑器,几乎可以说任何一台Unix机器都会提供这套软件,Linux当然也有。vi有两种工作模式——输入模式和命令模式。用户可以通过Esc键在这两种模式之间进行切换。输入模式是用来输入文字资料的,而命令模式则是用来下达一些编排文件、存档、以及离开 vi 等等的操作指令。当执行vi后,会先进入命令模式,此时输入的任何字符都被视为命令。
要进入vi可以直接在系统提示符下键入 vi filename,vi就可以自动载入所要编辑的文件或是打开一个新的文件。为了进入输入状态可以使用表3-3的命令:
表3 添加文本的方法
键击
作用
a
从游标所在位置后面添加新文本
A
从当前行的末尾添加文本
i
从游标所在位置前添加新文本
I
从当前行的行首插入新文本
o
在当前行的下面打开一行以添加文本
O
在当前行的上面打开一行以添加文本
配合键盘上的功能键,如:方向键、Insert 、Delete等等,就可以利用 vi 来处理文字资料了。
对文件进行更正与修改就可能要删除文本。使用vi,用户可以删除一个字符、一个字几个字或一整行。表3-4描述了这些删除命令。
表4 删除文本命令
键击
作用
x
删除游标所在字符
dd
删除游标所在的一行
r
修改游标所在字符,r后接着要修正的字符
R
进入取代状态,新增文本会覆盖原先文本,直到按[ESC]回到命令模式下为止
s
删除游标所在字符,并进入输入模式
S
删除游标所在的行,并进入输入模式
在编辑完文件之
---- 若果你係都要走嘅話,你就唔好再理我.你今日唔扯,就呢生呢世都唔好拋低我... |
|