购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 文件管理类命令

2.1.1 cat

cat:将文件列表中的文件连接到标准输出。如果没有指定文件,或者指定文件为“-”,则从标准输入读取。

操作方法:cat [选项]... [文件]...

选项如下:

2.1.2 chattr

chattr:修改文件在Linux文件系统中的特有属性。符号模式有+-=[aAcCdDeijs StTu]几种格式。

操作符 '+'用来在文件已有属性的基础上增加选定的属性;'-'用来去掉文件上的选定的属性;而'='用来指定该文件的唯一属性。

字符“ASacdisu”用作文件新属性的选项:不更新atime(A),同步更新(S),只能添加(a),压缩(c),不可变(i),不可转移(d),删除保护(s)以及不可删除(u)。

操作方法:chattr [ -RVf ] [ -v 版本 ] [ -p project ] [ mode ] files...

选项如下:

2.1.3 chgrp

chgrp:修改每个文件的所属组为指定的组。使用参数 --reference 时,修改每个文件的所属组为参考文件的所属组。

操作方法:chgrp [选项列表]... 组 文件...

chgrp [选项列表]... --reference=参考文件 文件...

选项如下:

2.1.4 chmod

chmod:使用chmod命令改变指定文件访问权限有两种方式:一种是用符号标记所进行更改,另一种方式是采用8 进制数指定新的访问权限。使用下面的语法格式来使用符号改变方式:

`[ugoa...][[+-=][rwxXstugo...]...][,...]'.

在这种格式下,所带参数是一个用逗号分隔的字符列表。每个符号方式的改变命令以零或者字'ugoa'开始;'ugoa'控制哪些用户对该文件访问权限将被改变:文件的所有者(u),与文件所有者同组的用户(g),其他组的用户(o),所有用户(a)。因此,a在这里等同于ugo。如果没有带参数,则表示缺省,与设置为a,运行效果相同,在umask中设置的位将不会受影响。

操作符'+'使得用户选择的权限被追加到每个指定文件,(操作给指定文件添加所选权限);操作符'-'使得这些权限被撤销;'='使得指定文件只具有这些权限。

字符串'rwxXstugo'给用户选择新的属性:(r)读权限、(w)写权限、(x)执行权(或对目录的访问权),(X)只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性,(s)同时设定用户或组ID,(t)粘滞位(保存程序的文本到交换设备上),(u)目标文件属主,(g)目标文件属主所在的组,(o)其他用户。(因此,'chmod g-sfile'撤销sgid位,'chmod ug+s file'同时设置了suid和sgid位,'chmod o+s file' 则没有进行任何设置)。

POSIX并没有粘滞位的描述。它最初是指在交换设备上保留程序文本。现在,如果设置了目录的粘滞位,那么只有文件和目录的所有者可以删除该目录下的文件。(一般使用于类似/tmp这样有基本写权限的目录)数字模式是1 到4 个八进制数,每个数由位权为4,2,1 的3 位叠加而得. 被省略掉的数字缺省设置为零. 第一位为4 时为suid,2 时为sgid,1 时为粘滞位,第二位设置文件所有者的权限:可读(4),可写(2),可执行(1);第三位设置了文件所在组其他用户的权限,值如上;第四位设置了其他组用户的权限,值同上。

由于chmod的系统调用不支持,chomd命令不能改变符号链接的权限。同时,由于每个符号连接都可在命令行中列出,chmod改变了所指文件的属性。相反,chmod在递归目录遍历时忽略所碰到的符号连接。

操作方法:chmod [options] mode file...

选项如下:

2.1.5 chown

chown:修改每个由第一个非选项参数声明的给定 file(文件)用户和/或组的所有权。如下:如果只给出了用户名(或者数字用户标识),那么该用户即成为每个指定文件的所有者,而该文件的组别并不改变。如果用户名后面紧跟着冒号和组名(或者是数字组标识),并且它们之间没有空格,那么文件的组所有权也随之改变。

操作方法:chown [options] user [:group] file...

选项如下:

2.1.6 cksum

cksum:显示每个文件的 CRC 校验和字节计数。

操作方法:cksum [文件列表]

cksum [选项]

选项如下:

2.1.7 cp

cp:从指定的来源文件复制到目标处,或者将多个源文件复制到目标目录中。

操作方法:cp [选项]... [-T] 来源 目标

cp [选项]... 来源... 目录

cp [选项]... -t 目录 来源...

选项如下:

2.1.8 cut

cut:在每个文件FILE的各行中,把提取的片断显示在标准输出。

操作方法:../src/cut [OPTION]... [FILE]...

选项如下:

2.1.9 diff

diff:在最简单的情况是,diff比较两个文件的内容(源文件和目标文件)。文件名可以是由标准输入设备读入的文本。作为特别的情况是,diff比较一份标准输入的它自己的拷贝如果源文件是一个目录和目标文件不是(目录),diff会比较在源文件(目录)里的文件名中和目标文件同名的(文件),反过来也一样。如果源文件和目标文件都是目录,diff比较两个目录中相应的文件,依照字母次序排序;这个比较是不会递归的,除非给出-r或者—recursive。diff不把一个目录的内容视为它是一个文件来比较。被指定的文件不能是标准的输入,因为标准的输入是无名的并且“有一样的名字的文件”的观点不适用。diff的选项由-开始,所以正常的源文件(名)和目标文件(名)不可以用-开头。然而,可以被它视为保留的即使作为文件名的开头(they begin with -.)。

操作方法:diff [选项] 源文件 目标文件

选项如下:

2.1.10 file

file:输出的类型一般会包含以下词中的一个:text(文件中仅有 ASCII 字符,可以用 ASCII 终端读此文件,以保证内容的可靠性),executable(文件中保存的是程序编译后的结果,一些UNIX内核或其他内核能理解这类文件),data 表示所有其他类型文件(data 一般为二进制文件或者不可打印的文件)。但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,却不属于这一类。如果要修改/usr/share/magic 或者程序本身,preservethesekeywords。当文件为"text"类型时,认为此文件为可读文件,不要像在Berkeley环境中那样做,需把"shellco mmandstext "改为 "shellscript "。

文件系统检查是建立在对 stat(2)系统调用结果的分析上的,程序会分析文件是否为空,或者是否是某种特殊文件。对于所有可在现有系统上使用的文件类型(比如套接口文件,动态链接文件,命名管道文件(FIFOs)等),只要它在系统头文件 sys/stat.h 中已经定义过,就可以被检查到。

幻数检查用来检查文件中是否有特殊固定格式的数据。规范的例子如二进制可执行文件(编译后的程序)a.out ,该文件格式在标准include目录下的 a.out.h 文件中定义,也可能在 exec.h 中定义,这些文件在文件开始部分附近的一个特殊位置保存有一个“幻数”,通过幻数告诉UNIX 操作系统此文件是二进制可执行文件,以及其中包含的其他类型。幻数的概念已经扩展到数据文件,任何在文件固定位置有与文件类型相关的不变标识符的文件都可以这样表示,这些文件中的信息可以从幻数文件/usr/share/magic 中读取。

如果文件为 ASCII 文件,file 会试图检查它的语言,语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看 names.h)例如,关键字 .br 指出此文件很可能是 troff(1)输入文件,而关键字 struct 指出此文件是C程序。语言检查不如前两组检查可靠,所以放在最后执行,它也用来检查一些混合文件(例如 tar(1)存档文件)并确定文件是"ascii text "类型还是"data "类型。

操作方法:file[-bcnsvzL][ -f 命名文件][-m 幻数文件]file ...

选项如下:

2.1.11 find

find:递归地在层次目录中处理文件。

操作方法:find [path...] [expression]

选项如下:

2.1.12 ln

ln:在Unix世界里有两个'link'(连接)概念,一般称之为硬连接和软连接。一个硬连接仅仅是一个文件名。(一个文件可以有好几个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。文件名的个数是由ls(1)来确定的。所有的文件名都处于同一个状态,也就没有什么“源名字”之说。通常文件系统里的一个文件的所有名字包含着一样的数据信息,不过这样也不是必需的。)一个软连接(或符号连接)是一个包含了路径信息的小小的指定文件。因此,软连接可以指向不同文件系统里的文件(比如由NFS装载的不同机器文件系统上的文件),甚至可以指向一个不一定确实存在的文件。在软连接文件被访问【系统调用open(2)或stat(2)】的时候,操作系统用该文件所包含的路径替换该文件的访问介入点,从而实现对所指文件的访问。【用命令rm(1)和unlink(2)可以删除连接,但不是删除该文件所指向的文件。系统指定调用lstat(2)和readlink(2)来读取连接文件与其所指文件的状态。到底是对软连接文件操作,还是对被指向文件操作,由于不同操作系统间存在不同的系统调用,而存在着差异。】ln 在文件间产生连接。缺省时,产生硬连接,有-s选项,则产生符号(软)连接。

如果仅仅只给出一个文件名,那么ln将在当前目录里产生这个文件的连接,也就是说,以该文件(的最后一个)名称等同的名字在当前目录里产生一个连接(GNU范围内);如果最后一个参数是一个已存在的目录名,ln将在那个目录里给每一个源文件用以与源文件相同的文件名产生连接,(不同情况见以下--no-dereference的描述);如果只给出两个文件名,ln将产生源文件的连接;如果最后一个参数不是一个目录名或多于两个文件名,则报错。

缺省时,ln不删除已存在的文件或符号连接。(因此,它可以被用来锁定目标文件,即当dest已经不存在时,选项-f可以强制执行。)

在已存在的实现中,只有超级用户才能建立目录的硬连接。POSIX禁止系统调用link(2)和ln建立目录的硬连接(但是允许在不同的文件系统间建立硬连接)。

操作方法:ln [options] source [dest]

ln [options] source...directory

选项如下:

2.1.13 lsattr

lsattr:显示文件在Linux第二扩展文件系统上的特有属性。

操作方法:lsattr[-RVadv][files...]

选项如下:

2.1.14 mktemp

mktemp:用于让shell 脚本程序使用可靠的临时文件。多数 shell 程序的传统做法是程序名加上 PID 做后缀,产生的文件名就是临时文件名。这种命名策略容易预测,产生的竞争条件易于遭到攻击。使用相同命名策略的另一个方法是建立临时目录,这种做法相对安全一些。它可以保证临时文件不被破坏,但是容易遭到简单的拒绝服务攻击。

所以建议改用mktemp。

操作方法:mktemp [-q] [-u] template

选项如下:

2.1.15 more

more:用于屏幕阅读的文件阅览过滤器。

操作方法:more [选项] 文件...

选项如下:

2.1.16 mv

mv:改“源文件”名到“目标文件”名,或移动“源文件”(可以不只一个)到一个“目录”。

操作方法:mv [选项]... 源文件 目标文件

mv [选项]... 源文件... 目录

mv [选项]... --target-directory=DIRECTORY SOURCE...

选项如下:

2.1.17 paste

paste:从列表中的所有文件,连续依次读取一行,合并成新行,中间用 TAB 隔开,写到标准输出。如果没有指定文件,或者指定文件为“-”,则从标准输入读取。

操作方法:paste [选项]... [文件列表]...

选项如下:

2.1.18 rm

rm:移除文件或者目录。

操作方法:rm [选项]... 文件列表...

选项如下:

2.1.19 scp

scp:安全复制(远程文件复制程序)。

操作方法:scp [-pqrvBC1246] [-F ssh_config] [-S program] [-P port] [-c cipher] [-i identity_file][-llimit][-ossh_option] [[user@]host1:]file1[...][[user@]host2:]file2

选项如下:

2.1.20 split

split:分割文件。

操作方法:../src/split [OPTION] [INPUT [PREFIX]]

选项如下:

2.1.21 tee

tee:把标准输入的数据复制到文件列表中的每一个文件,同时送往标准输出。

操作方法:tee [选项]... [文件列表]...

选项如下:

2.1.22 touch

touch:将每个文件的访问时间和修改时间更新为当前时间。除非提供了 -c 或 -h 参数,否则程序会在文件不存在时创建一个空文件。如果文件列表参数中有连字符“-”,它将被touch 特别处理,并更改与标准输出相关联的文件的相应时间信息。

操作方法:touch [选项]... 文件列表...

选项如下:

2.1.23 命令使用

例2.1:对于文本文件,需要查看文件内容,可以使用cat命令查看,通过配合不同的选项达到不同的显示效果。

新建test.bak文件内容如下:

当只需要查看文件时,同时查看行号和TAB字符如图2.1 所示。

图2.1 cat

使用laattr查看test.bak文件,并使用chattr给test.bak文件添加a属性后,文件只可增加数据不可修改,如图2.2 所示。

图2.2 chattr

为了方便文件继续演示,使用chattr将test.bak文件去掉a属性后,如图2.3 所示。

图2.3 chattr

使用chgrp命令修改文件所属组,但修改的文件所属组必须是用户已加入的用户组,先查看用户所在组,然后修改test.bak文件所属组,如图2.4 所示。

图2.4 chgrp

文件通过chmod命令修改文件权限,首先我们查看test.bak文件原权限,然后给本用户可读可写可执行的test.bak权限,给同组用户可读权限,如图2.5 所示。

图2.5 chmod

使用chown修改文件的所属用户和所属组,如图2.6 所示。

图2.6 chown

使用sksum查看test.bak文件的CRC值,如图2.7 所示。

图2.7 sksum

使用cp命令复制test.bak文件为test.bak2,如图2.8 所示。

图2.8 cp

使用cut分割显示test.bak文件,如图2.9 所示。

图2.9 cut

使用diff对比两个文件,如图2.10 所示。

图2.10 diff

使用file查看文件类型,如图2.11 所示。

图2.11 file

使用find命令查找文件,如图2.12 所示。

图2.12 find

使用ln建立连接,如图2.13 所示。

图2.13 ln

使用mktemp建立暂存文件,如图2.14 所示。

图2.14 mktemp

使用more显示文件,如图2.15 所示。

图2.15 more

使用mv移动文件,如图2.16 所示。

图2.16 mv

使用paste合并文件内容,如图2.17 所示。

图2.17 paste

使用rm 删除test.bakp文件,如图2.18 所示。

图2.18 rm

使用scp远程复制文件,如图2.19 所示。

图2.19 scp

使用split分割文件,如图2.20 所示。

图2.20 split

使用tee将标准输入写入到文件中,如图2.21 所示。

图2.21 tee

使用touch修改文件的时间属性,如无文件则创建文件,如图2.22 所示。

图2.22 touch 6vD4ktGEg/krsMz7S8C29OMs9q+naVb20Id8vkyjWCFLnT60nfWsgV/awtmgCXQh

点击中间区域
呼出菜单
上一章
目录
下一章
×