Linux文件与目录常用操作


一、Linux文件与目录概要

1.目录树

根目录“/”注意几个特殊的目录:“.”表示当前目录,也可以便用“./”来表示。“…”表示上一层目录,也可以用“…/”来表示。“~”表示当前用户的主目录。

Windows系统中每个磁盘分区都有一个独立的根目录,有几个分区就有几个目录树,它们之间的关系是并列的,各分区采用盘符(如C、D、E)进行区分和标识,通过相应的盘符访问分区。每个分区的根目录用反斜杠()表示。

Linux操作系统使用单一的目录树结构, 整个系统只有一个根目录,各个分区被挂载到目录树的某个目录中,通过访问挂载点目录,即可实现对这些分区的访问。

2.命名规范

可以包含空格等特殊字符,但必须使用引号
不可以包含“/”字符
还应避免特殊符:*?><;&![ ] ’ " ` (){}。

3.目录配置标准——FHS

FHS规范在根目录(/)下面各个主要目录应该放什么样的文件。FHS定义了两层规范。第1层是根目录下面的各个目来应这放什么文件,第2层则针对/usr及/var两个目录子目录来定义,列如/var/log放置系统登录文件,/usr/share放置共享数据。

linux系统安装时就已创建了完整而固定的目录结构,并指定了目录的作用和存放的文件类型。常见的系统目录简介如下:

/bin:存放用于系统管理维护的常用实用命令文件。
/boot:存放用于系统启动的内核文件和引导装载程序文件。
/dev:存放设备文件。
/etc:存放系统配置文件,如网络配置、设备配置、X Window系统配置等。
/home: 各个用户的主目录,其中的子目录名称即为各用户名。
/lib:存放动态连接共享库(其作用类似于Windows里的.dll文件)。
/media:为光盘、软盘等设备提供的默认挂载点。
/mnt: 为某些设备提供的默认挂载点。
/root: root 用户主目录。不要将其与根目录混淆。
/proc系统自动产生的映时。查看该目录中的文件可获取有关系统硬件运行的信息。
/sbin: 存放系统管理员或者root用户使用的命令文件。
/usr: 存放应用程序和文件。
/var: 保存经常变化的内容,如系统日志、打印。

4.文件类型

使用ls -l命令以长格式列目录时,每行第1个字符代表文件类型。其中-表示普通文件,d表示目录文件,c表示字符设备文件,b表示块设备文件,l表示符号链接文件。

1.普通文件
也称为常规文件,内核对这些文件没有进行结构化,只是作为有序的字符序列把它提交给应用程序,由应用程序自己组织和解释这些数据。

2.目录文件
利用它可以构成文件系统的分层树形结构。目录文件也包括数据,但与普通文件不同的是内核对这些数据加以结构化,即它是由成对的“索引节点号/文件名”构成的列表。
将文件添加到一一个目录中时,该目录的大小会增大,以便容纳新文件名。当删除文件时,目录的尺寸并未减少,内核对该目录项做上特殊标记,以便下次添加一个文件时重新使用它。

3.设备文件
除了存放在文件索引节点中的信息外,它们不包含任何数据,系统利用它们来标识各个设备驱动器,内核使用它们与硬件设备通信。设备文件又可分为两种类型:字符设备文件和块设备文件。
Linux将设备文件置于/dev目录下,系统中的每个设备在该目录下有一个对应的设备文件,并有一些命名约定。例如串口COMI1的文件名为/dev/ttyS0, /dev/sda5对应第一个SCSI硬盘(或SATA硬盘)第5个逻辑分区,光驱表示为/dev/cdrom,软驱表示为/dev/fd0。Linux 还提供伪设备( 实际没有的)文件,如/dev/null、/dev/zero。

4.链接文件
存放的数据是文件系统中通向文件的路径。链接文件有两种,分别是符号链接(Symbolic Link )和硬链接(Hard Link)。
符号链接文件类似于Windows系统中的快捷方式,其内容是指向质文件的路径。原文件删除后,符号链接就失效了,删除符号链接文件并不影响原文件。
硬链接是对原文件建立的别名。建立硬链接文件后,即使删除原文件,硬链接也会保留原文件的所有信息。因为实质上原文件和硬链接是同一个文件,二者使用同一个索引节点,无法区分原文件和硬链接。

二、使用命令行进行目录操作

1.创建目录

如果在目录命名前没有加任何路径就在该录下创建;如果给出了一个存在的路径,将会在指定的路径下创建。语法格式如下:

mkdir 选项 目录名

使用以下命令在自己主目录之外的位置创建一个目录。

zxpCLinuxPC1:~$ sudo mkdir /usr/testl
[sudo] password for zxp:

在自己的主目录中创建目录,则不必用sudo命令。
另外-p表示要建立的目录的父目录尚未建立,将同时创建父目录。

2.删除目录

使用rmdir命令从目录中删除一个或多个空的子目录:

rmdir 选项 目录名

选项-p表示递归删除目录,当子目录被删除后父目录为空时,也同被删除。如果是非空目录,则保留下来。

3.改变工作目录

cd命令用来改变工作目录。当不带任何参数时,返回到用户的主目录。cd 目录名
pwd命令用于显示当前工作目录的绝对路径,没有任何选项或参数,语法格式如下:pwd

4.显示目录内容

Is命令列出指定目录的内容:ls 选项 目录或文件
默认情况下输出条目按字母顺序排列。如果没有给出参数,则将显示当前目录下所有子目录和文件的信息。其选项及其含义如下:

-a:显示所有的文件,包括以“.”开头的文件。
-c:按文件修改时间排序。
-i: 在输出的第1列显示文件的索引节点号。
-l:以长格式显示文件的详细信息。输出的信息分成多列,依次是文件类型与权限、链接数、 文件所有者、所属组、文件大小、建立或最近修改的时间、文件名。
-r:按逆序显示ls命令的输出结果。
-R:递归地显示指定目录的各个子目录中的文件。

至于目录的复制,删除和移动的用法请参见后面的命令行文件操作。

三、使用命令行进行文件操作

1.文件内容显示

cat命令连接文件并打印到标准输出设备上,常用来显示文件内容。语法格式如下:

cat 选项 文件名1 文件名2

该命令有两项功能。一是用来显示文件的内容。它依次读取由参数文件1所指明的文件将它们的内容输出到标准输出上。二是用来连接两个或多个文件,如cat fl f2>f3,将文件f1和f2的内容合并起来,然后通过输出重定向符>将它们的内容存入文件f3中。

less命令也用来分页显示文件内容,但功能比more更强大,其语法格式如下:less 选项 文件名
less的功能比more更灵活。例如,用<Pgup>、<Pgdn>键可以向前向后移动一页,用上下光标键可以前后移动一行。

2.文件内容查找

grep命令用来查看指定的文件中是否包含这些关键词。如果没有指定文件,它们就从标准输入中读取。在正常情况下,每个匹配的行被显示到标准输出上。如果要搜索的文件不止一个,则在每一行输出之前加上文件名。
可以使用选项对匹配方式进行控制,如选项-i表示忽略大小写,-x强制整行匹配,-w强
制关键字完全匹配,-e用于定义正则表达式。下面给出一个例子:

zxp@LinuxPC1:~$ grep -i 'home' /etc/passwd
syslog:x:100:103: : /home/syslog:/bin/ false
saned:x:108:116: : /home/ saned:/bin/false
zxp:x:1000:1000:zxp.,, :/home/ zxp:/bin/bash
zhang:x:1001:1001:zhang.,, :/home/ zhang: /bin/bash
laozi:x:1002:1002:laozi.. :/home/laozi: /bin/bash
test:x:1003:1003:test,,, :/home/test:/bin/bash
wang:x:1004:1004: :/home/wang:
lisi:x:1005:1005:.11 :/home/lisi:/bin/bash

还可以使用选项对查找结果输出进行控制,如选项-m定义多少次匹配后停止搜索,-n指定输出的同时打印行号,-H为每一匹配项打印文件名,-r在指定目录中进行递归查询。

3.文件内容比较

(1)comm命令对两个已经排好序的文件进行逐行比较,只显示它们共有的行。语法格式如下:

comm -123 文件1 文件2

选项-1表示不显示仅在文件1中存在的行,选项-2表示不显示仅在文件2中存在的行,选项-3表示不显示在comm命令输出中的第1列、第2列和第3列。
(2) diff命令逐行比较两个文件,列出它们的不同之处,并且提示为使两个文件一致需要修改哪些行。如果两个文件完全一样, 则该命令不显示任何输出。语法格式如下:

diff 选项 文件1 文件2

4.文件内容排序

sort命令用于对文本文件的各行进行排序。语法格式如下:

sort 选项 文件名列表

sort命令将逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上。如果不指定文件名或者使用“-”表示文件,则排序内容来自标准输入。

5.文件内容统计

wc命令用于统计出指定文件的字节数、字数、行数,并输出结果。语法格式如下:

wc 选项 文件名列表

如果没有给出文件名,则从标准输入读取数据。如果多个文件一起进行统计,则最后给
出所有指定文件的总统计数。
wc命令输出列的顺序和数目不受选项顺序和数目的影响,输出格式如下:

行数 字数 字节数 文件名

选项-c表示统计字节数,-l表示统计行数,-w 表示统计字数。

6.文件查找

find命令用于在目录结构中搜索满足查询条件的文件并执行指定操作。语法格式如:

find 路径... 匹配表达式

find命令从左向右分析各个参数,然后依次搜索目录。find将在“_”“(”“)”或者“!”前面的字符串视为待搜索的文件,在这些符号后面的字符串为参数选项。如果没有设置路径,那么find搜索当前目录;如果没有设置参数选项,那么find默认提供-print选项,即将匹配的文件输出到标准输出。

复杂的匹配表达式由下列成分组成:操作符、选项、测试表达式以及动作:

  • 选项-depth可以使find命令先匹配所有的文件,再在子目录中查找,-regextype用于选择要使用的正则表达式类型,-follow表示遇到符号链按文件就跟踪至全链接所指向的文件。
  • 测试表达式针对具体的一个文件进行匹配测试,返回true(真)或者 false (假)。例如,选项-name表示按照文件名查找文件,-user 表示按照文件所有者来查找文件,-type 指定查找某一类型的文件(b指块设备文件,d为目录,c为字符设备文件,l 为符号链接文件,f为普通文件)。
  • 动作则是对某文件进行某种动作, 返回true或者false。最常见的动作就是打印到屏幕( -print )。
  • 上述3部分又可以通过操作符(组合在一起形成更大更复杂的表达式。操作符按优先级排序,包括:括号“()”、 “非”运算符(!或-not)、 “与”运算符(-a或-and)、“或”运算符(-o或-or)、并列符号逗号(,)。未指定操作符时默认使用-and。

例如,查找当前目录下(波浪号~代表了用户的主日录$HOME )文件名后缀为txt的文件可执行以下命令:

zxp@LinuxPC1:~$ find ~ -name "*.txt" -print
/home/ zxp/ vmware-tools-distrib/doc/open source licenses. txt
/home/ zxp/ . config/libreoffice/4/user/uno_ packages/cache/1og.txt

find使用动作-exec可以对查找到的文件调用外部命令进行处理,注意语法格式比较特殊,外部命令之后需要“{} ;” 结尾,必须由一个“;” 结束,通常Shell都会对“;”进行处理,所以用“;”防止这种情况。注意后一个花括号“}” 和“/”之间有一个空格。

find 路径 匹配表达式 -exec 外部命令 {} \;

在下面的例子中使用grep命令。find 命令首先匹配所有文件名为“passwd*" 的文件,例如passwd, passwd.old, passwd.bak,然后执行grep命令看看在这些文件中是否存在一个名为“wang” 的用户。

zxp@LinuxPC1:~$ sudo find /etc -name "passwd*" -exec grep "wang" {} \;
wang:x:1004:1004::/home/wang:

7.文件(目录)复制、删除和移动

(1) cp命令将源文件或目录复制到目标文件或目录中。语法格式如下:

cp 选项 源文件或目录 目标文件或目录

如果参数中指定了两个以上的文件或目录,且最后一个是目录,则cp命令视最后一个为目的目录,将前面指定的的文件和目录复制到该目录下,如果最后不是已存在的目录,cp命令将给出错误信息。
(2)rm命令可以删除一个目录中的一个或多个文件和目录,也可以将某个目录及其下属的所有文件和子目录删除。该命令对于链接文件,只是删除整个链接文件,而原有文件保持不变。语法格式如下:

rm 选项 文件列表

(3) mv命令用来移动文件或目录,还可在移动的同时修改文件或目录名。语法格式如下:

mv 选项 源文件或目录 目标文件或目录

选项-i表示交互模式,当移动的目录已存在同名的目标文件时,用覆盖方式写文件,在写入之前给出提示。

选项-f在目标文件已存在时,不给出任何提示。

8.链接文件创建

建立符号链核文件的语法格式如下:

ln -s 目标(原文件或目录)  链接文件

建立硬链接文件的语法格式如下:

ln 目标(原文件) 链接文件

9.文件压缩与解压缩

(1)gzip命令用于对文件进行压缩和解压缩。 它用Lempel-Ziv 编码减少命名文件的大小,压缩的文件扩展名是.gz。

gzip 选项 压缩文件名/解压缩文件名

(2) unzip 命令用对win格式的压编文件进行解压缩

unzip 选项 压缩文件名

(3) tar命令用于对文件和目录进行打包

tar 选项 文件或目录名

参考书目《Ubuntu Linux 操作系统》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值