Linux02 文件和目录管理
Linux 文件和目录管理
一、查看文件和目录
1. ls [选项] 要显示列表的目录/文件
-a:显示所有档案及目录, 不隐藏任何以. 开始的项目
-l:以长格式显示目录下的内容列表。
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
-h:与-l 一起,以易于阅读的格式输出文件大小(例如23M)
用ls -l命令查看某一个目录会得到一个9个字段的列表,如下:
-rwxr-xr-x 1 xiesir users 4908 10月 19 16:22 hello
-rw-r--r-- 1 xiesir users 62 10月 19 16:22 hello.c
对应为:文件类型和权限、硬链接数、所有者名、所有组名、大小(byte)、最后修改时间、文件名等;
第1字段: 文件属性字段
文件属性字段总共由10~11个字母组成,第一个字母表示文件类型。
文件类型的缩写、翻译及别称
| 文件类型 | 缩写 | 英文 | 其他名称 | 显示颜色 |
| 普通文件 | - | Regular file | 白色(绿色表示可执行文件,红色表示压缩文件或者包文件) | |
| 目录文件 | d | Directory file | 蓝色 | |
| 块特殊文件 | b | Block special file | 块设备文件 | 黄色 |
| 字符设备文件 | c | Character special file | 字符设备文件 | 黄色 |
| 先进先出 | p | FIFO named pipe | 命名管道 | |
| 套接字文件 | s | Socket | 紫色 | |
| 符号链接 | l | Symbolic link | 软链接 | 浅蓝色 |
Linux系统对文件的权限分为读(Read), 写(Write), 可执行(Exeute),对于操作者又分为三种不同的身份:文件所有者,用户组,其他人。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。
| 文件权限 | 目录权限 | |
| 读(r) | 可以读取文件内容 | 具有读取目录结构列表的权限 |
| 写(w) | 可以编辑修改文件内容(但不能删除文件) | 具有更改目录结构列表的权限,包括新建、删除、重命名、移动该目录下的文件和目录 |
| 执行(x) | 文件可以被执行 | 表示用户可以进入该目录 |
第2字段
文件硬链接数或目录子目录数
第3字段:
文件拥有者
第4字段:
文件拥有者所在的组
第5字段:
文件大小(以字节为单位)
第6字段:
文件创建月份
第7字段:
文件创建日期
第8字段:
文件创建时间
第9字段:
文件名 (如果是一个符号链接,那么会有一个 “->” 箭头符号,后面根一个它指向的文件)
2. 查看文件类型
file [选项] [参数]
-z:尝试去解读压缩文件的内容。
3. 改变文件的所属组
chgrp [选项]... 用户组 文件...
4. 改变文件的所有者及所属组
chown [选项]... [所有者][:[组]] 文件...
--from=当前所有者:当前所属组
只当每个文件的所有者和组符合选项所指定时才更改所有者和组。
-R, 递归处理,将指定目录下的所有文件及子目录一并处理;
示例:
chown root:staff /u 将 /u 的属主更改为"root",同时将其属组更改为"staff"。
5. 改变文件权限
chmod(change mode)是一条在Unix系统中用于控制用户对文件的权限的命令和函数。只有文件所有者和超级用户可以修改文件或目录的权限。
chmod [选项]... 模式[,模式]... 文件...
-R, 递归处理,将指定目录下的所有文件及子目录一并处理;
模式为 '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.
八进制语法
chmod命令可以使用八进制数来指定权限。chmod的八进制语法的数字说明:
r 4
w 2
x 1
- 0
符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和permission(权限),每个项目的设置可以用逗号隔开。
who 用户类型 说明
u user 文件所有者
g group 文件所有者所在组
o others 所有其他用户
a all 所用用户, 相当于 ugo
operator的符号模式表:
Operator 说明
+ 为指定的用户类型增加权限
- 去除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置
permission的符号模式表:
模式 名字 说明
r 读 设置为可读权限
w 写 设置为可写权限
x 执行权限 设置为可执行权限
X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位
SUID仅在二进制程序的执行过程中有效,在执行过程中执行者将具有该程序所有者的权限,显示为红底。
例如:
-rwsr-xr-x 1 root root 45624 3月 15 2015 /bin/passwd
-rw-r--r-- 1 root root 1558 10月 10 10:38 /etc/passwd
SGID对二进制程序有效。执行者在执行的过程中将会获得该程序所属用户组的支持,显示为黄底。
例如:
-rwxr-sr-x 1 root locate 34452 12月 15 2014 /bin/locate
SGID也对目录有效。若用户在此目录下,则用户所创建的新文件的用户组与此目录的用户组相同。
SBIT为防删除位,显示为绿底。
drwxrwxrwt 12 root root 400 10月 22 07:22 tmp
对于目录,如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件。如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位。当用户在此目录下创建了文件或目录,仅自己与root才有权利删除文件。
系统规定,如果本来在该位上有x,则这些特殊标志显示为小写字母 (s, s, t)。否则,显示为大写字母 (S, S, T)。
6. 查找文件
(1) whereis [options] [-BMS <dir>... -f] <name>
从 /var/lib/mlocate 数据库中查找文件,该数据库每天自动更新一次。
-b 只搜索二进制文件
-m 只搜索 manuals 和 infos 文件
-s 只搜索源代码
(2) locate [OPTION]... [PATTERN]...
从 /var/lib/locatedb 数据库中查找文件,该数据库每天自动更新一次。
-i 忽略大小写
-r 正则表达式
(3) which [options] [--] COMMAND [...]
从 $PATH 中查找文件、显示命令路径
(4) type [-afptP] 名称 [名称 ...]
-t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;
-P:如果给出的指令为外部指令,则显示其绝对路径;
-a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
(5) find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
find命令用来在指定目录下查找文件。
find命令中通过使用exec或ok来执行shell命令。exec / ok 选项后面跟随着所要执行的命令或脚本,然后是一对{ },一个空格和一个\,最后是一个分号。
find . -type f -exec ls -l {} \;
在 /logs 目录中查找更改时间在30日以前的文件并删除它们:
find logs -type f -mtime +30 -exec rm {} \;
在下面的例子中,find 命令在当前目录中查找所有文件名以.log结尾、更改时间在15日以上的文件,并删除它们,只不过在删除之前先给出提示。
find . -name "*.log" -mtime +15 -ok rm {} \;
7. 打包压缩
压缩率 gz < bz2 < xz
(1) zip压缩解压缩
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
压缩一个文件或目录:
zip -r archive_name.zip directory_to_compress
解压一个zip文档:
unzip archive_name.zip
(2) 打包压缩
tar [选项...] [FILE]...
-r 追加文件至归档结尾
-u 仅追加比归档中副本更新的文件
-C 改变至目录 DIR
-c 创建一个新归档
-x 从归档中解出文件
-v详细地列出处理的文件
-f 使用归档文件或 ARCHIVE 设备
-j 通过 bzip2 过滤归档
-J 通过 xz 过滤归档
-z 通过 gzip 过滤归档
-Z 通过 compress 过滤归档
压缩tar.gz:tar -zcvf file_name.tar.gz dir_name
解压缩tar.gz:tar -zxvf file_name.tar.gz [-C /tmp/extract_here/]
压缩tar.bz2:tar -jcvf file_name.tar.bz2 dir_name
解压缩 tar.bz2:tar -jxvf file_name.tar.bz2 [-C /tmp/extract_here/]
压缩tar.xz:tar -Jcvf file_name.tar.xz dir_name
解压缩tar.xz:tar -Jxvf file_name.tar.xz [-C /tmp/extract_here/]
8. 打包归档文件及从包中提取文件
cpio [OPTION...] [目标目录]
-i 从包中提取文件 (运行 copy-in 模式)
-o 将数据 copy 输出到文件或装置上 (运行 copy-out 模式)
-p 运行 copy-pass 模式
-t 打印输入内容列表
-B 设置 I/O 块大小为 5120 字节
-c 用 "-H newc"来使用SVR4格式,用 "-H odc"来使用ASCII格式。
-F=[[用户@]主机:]文件名
用“文件名”来替代标准输入和输出。如果是非本地的文件,则用可选的“用户”和“主机”来指定用户名和主机名。
-v 详细列出已处理的文件
-d 需要时创建目录(应用于 copy-in 和 copy-pass 模式) 使用 cpio 所备份的数据内容不见得会在同一层目录中,因此我们必须要让 cpio 在还原时可以创建新目录!
备份: cpio -ocB > [file|device]
还原: cpio -icdu < [file|device]
察看: cpio -ict < [file|device]
找出 /boot 底下的所有文件,然后将他备份到/tmp/boot.cpio 去!
find /boot | cpio -ocvB > /tmp/boot.cpio
将刚刚的文件给他在 /root/ 目录下解开
cpio -idvc < /tmp/boot.cpio
文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容。
| 目录 | 描述 |
|---|---|
| / | 第一层次结构 的根、 整个文件系统层次结构的根目录。 |
| /bin/ | 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。 |
| /boot/ | 引导程序文件,例如:vmlinuz、kernel、initrd;时常是一个单独的分区 |
| /dev/ | 必要设备, 例如:, /dev/null. |
| /etc/ | 特定主机,系统范围内的配置文件。可编辑的文本配置(Editable Text Configuration) |
|
/opt/的配置文件 |
|
X Window系统(版本11)的配置文件 |
|
SGML的配置文件 |
|
XML的配置文件 |
| /home/ | 用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。 |
| /lib/ | /bin/ 和 /sbin/中二进制文件必要的库文件。 |
| /lost+found |
当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。 |
| /media/ | 可移除媒体(如CD-ROM)的挂载点。 |
| /mnt/ | 临时挂载的文件系统。 |
| /opt/ | 可选应用软件包。 |
| /proc/ | 虚拟文件系统,将内核与进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应Procfs格式挂载。 |
| /root/ | 超级用户的家目录 |
| /sbin/ | 必要的系统二进制文件,是root的可执行命令存放地,普通用户无权限执行这个目录下的命令, 例如: init、 ip、 mount。 |
| /srv/ | 站点的具体数据,由系统提供。 |
| /tmp/ | 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。 |
| /usr/ | 用于存储只读用户数据的第二层次; 包含绝大多数的(多)用户工具和应用程序。 |
|
非必要可执行文件 (在单用户模式中不需要);面向所有用户。 |
|
标准包含文件。 |
|
/usr/bin/和/usr/sbin/中二进制文件的库。 |
|
非必要的系统二进制文件,例如:大量网络服务的守护进程。 |
|
体系结构无关(共享)数据。 |
|
源代码,例如:内核源代码及其头文件。 |
|
X Window系统 版本 11, Release 6. |
|
本地数据的第三层次, 具体到本台主机。通常而言有进一步的子目录, 例如:bin/、lib/、share/. |
| /var/ | 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。 |
|
应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。 |
|
状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。 |
|
锁文件,一类跟踪当前使用中资源的文件。 |
|
日志文件,包含大量日志文件。 |
|
用户的电子邮箱。 |
|
自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替。 |
|
等待处理的任务的脱机文件,例如:打印队列和未读的邮件。 |
|
用户的邮箱(不鼓励的存储位置) |
|
在系统重启过程中可以保留的临时文件。 |
|
代替/var/run目录。 |
浙公网安备 33010602011771号