Linux的文件管理(原文)
- 1文件的目录管理
Linux的的系统沿用目录结构组织文件,所有目录和文件都在根目录下.FHS(文件系统层次标准)定义了在根目录下的主要目录以及每个目录应该存放的文件
FSH定义的目录结构
目录 | 用途 |
---|---|
/箱 | 常见的用户指令 |
/启动 | 内核和启动文件 |
的/ dev | 设备文件 |
/等等 | 系统和服务的配置文件 |
/家 | 系统默认的普通用户的家目录 |
/ lib目录 | 系统函数库目录 |
/的丢失+发现 | EXT3文件系统需要的目录,用于磁盘检查 |
到/ mnt | 系统加载文件系统时常用的挂载点 |
/选择 | 第三方软件安装目录 |
/ proc中 | 虚拟文件系统 |
/根 | 根用户的家目录 |
/ sbin目录 | 存放系统管理命令 |
/ tmp目录 | 临时文件的存放目录 |
在/ usr | 存放与用户直接相关的文件和目录 |
/媒体 | 系统用来挂载光驱等临时文件系统的挂载点 |
(1)从根目录开始的被称为绝对路径,绝对路径是以“/”开头的。例如/ usr / local / src
pwd查看当前所在的目录:
[root@localhost~]# pwd
/root
(2)相对于当前路径的上下层路径。比如,/ usr / local的上层路径是/ usr,可用../表示,其下层路径(下层目录是src)可用./src表示。
(3)特殊目录,如一个点(。)表示当前目录,两个点(...)表示当前目录的上层目录。在Linux下,所有以点开头的文件都是隐藏文件,可使用ls -la看到
- 2文件的相关操作
(1)创建文件:touch创建文件,若文件已存在,不会对当前同名文件造成影响,只会更新文件的创建时间属性删除文件:rm删除文件
(2)移动或重命名文件(目录):mv移动文件,若目标目录替代为目标文件可重命名文件.mv test.txt test.doc可修改文件名。
(3)查看文件:cat查看文件内容,加上-n参数可以显示每行的行数
(4)查看文件头:head查看文件头,默认显示前十行,可使用-n指定显示的行数
(5)查看文件尾:tail查看文件尾,默认显示前十行,可使用-n指定显示的行数,若文件动态变化,可使用-f参数动态看文件尾
(6)文件格式转:dos2unix文件格式转换,当把Windows下的文本文件移动到Linux下时,会由于系统之间文本文件的换行府不同而造成文件在Linux下的读写操作有问题,故使用此命令转换,加上需要转换的文件名即可
- 3目录的相关操作
(1)进入目录:cd进入目录
(2)创建目录:mkdir创建目录,mkdir -p //加上-p参数可一次性创建所有目录
(3)删除目录:rmdir删除目录,目录必须为空。rm -r可删除目录,但每个文件都要输入y以确认删除,可使用rm -rf强制删除目录及目录下所有文件
(4)文件和目录复制:cp文件复制相应的目录cp可将文件复制并重命名cp -r目录的复制
(5)文件时间戳:touch命令创建已经存在的文件时,可更新文件的时间戳。
- 4文件和目录的权限
(1)查看文件或者目录的权限:ls -al第一列是文件类别和权限,权限相应的是用户(u)组(g)其他(o),每组都是rwx的组合。文件类别如下:
第一个字符可能的值 | 含义 |
---|---|
d | 目录 |
- | 普通文件 |
升 | 链接文件 |
b | 块文件 |
C | 字符文件 |
小号 | 套接字文件 |
p | 管道文件 |
第二列表示连接数,除了目录文件之外,其他所有文件的连接数都是1,目录的连接数是该目录中包含其他目录的总个数2,第三列代表该文件的所有人,第四列代表该文件的所有者,第五列是该文件的大小,第六列是该文件的创建时间或者最近的修改时间。
(2)文件隐藏属性1'lsattr展示隐藏属性
[root@localhost ~]# lsattr anaconda-ks.cfg
---------------- anaconda-ks.cfg
结果中的第一列是13个小段横,其中每一个小段横都是一个属性,如果当前位置上设置了该属性就会显示相应的字符。
2'chattr + a设置文件的隐藏属性
[root@localhost ~]# chattr +a anaconda-ks.cfg
[root@localhost ~]# lsattr anaconda-ks.cfg
-----a---------- anaconda-ks.cfg
设置一个属性的文件只能在尾部增加数据,而不能被删除,即便是根用户,但是可以以尾部新增的方式(附加)继续向该文件写入内容。写入我属性的文件将无法写入,改名,删除,即便是根用户,常用于设置在系统或者关键服务中的配置文件
(3)改变文件权限chmod,以下示例适用于ugo(linux文件拥有着,用户,组,其他)
作用 | 含义 |
---|---|
给文件添加用户读权限 | chmod u + r filename |
给文件删除用户读权限 | chmod你的文件名 |
给文件添加用户写权限 | chmod u + w filename |
给文件删除用户写权限 | chmod uw filename |
给文件添加用户执行权限 | chmod u + x filename |
给文件删除用户执行权限 | chmod ux文件名 |
给文件设定用户拥有读写执行权限 | chmod u = rwx filename |
特别定义:r = 4,w = 2,x = 1,rwx表示为7,r--表示为5,那么chmod 754 somefile表示为文件拥有着的权限是读写执行(rwx) ,拥有组的权限是读执行器(RX),其他人的权限是(R--) 另外若参数的英文目录,可使用-R递归目录下的文件搭配chmod -R 754 somefile
(4)改变文件的拥有者CHOWN
chown username <file_name or dir_name>
chown :groupname <file_name or dir_name>
chown username:groupname <file_name or dir_name>
chown username:groupname <dir_name>
chown -R username:groupname <dir_name>
(5)改变文件的拥有组:
chgrp <group_name> <filename or dirname>
chgrp -R <group_name> dirname
(6)文件特殊属性SUID权限只能用于二进制文件,普通用户可使用root的身份来执行这个命令
chmod u+s filename
SGID若该文件的用户组被设置了S,该文件的用户组中所有的用户都将能以该文件的用户身份去运行这个命令
chmod g+s filename
粘权限只能用于目录的设置,任何用户都可以在该目录创建或者修改,但只有文件的创建者和根可以删除自己的文件,如/ TMP
chmod o+t dirname
(7)默认权限和umask
对于root,文件的默认权限是644,目录的默认权限是755
对于普通用户,文件的默认权限是664,目录的默认权限是775
1'umask翻译为遮罩,在Linux下,定义目录创建的默认权限的值是umask的遮罩777后的权限,定义文件创建的默认权限是umask的遮罩666后的权限
2' 在/ etc / profile的文件中第51行至55行设置了不同用户的遮罩值,UID大于99的用户的umask为002,否则为022。
3' 比如对于根,777表示为rwxrwxrwx,遮罩值是022,----瓦特 - W-,那么第五位和八位的瓦特被遮罩掉,权限变为rwxr-XR-X,即为755
(8)查看文件类型(目录也是文件,也可查看目录)
file <filename>
- 4查找文件
(1)一般查找用找到
<PATH> -name <FILENAME> 在某个路径下按照名字查找某个文件
找到常见参:
参数 | 含义 |
---|---|
-name filename | 查找文件名为文件名的文件 |
-perm | 根据文件权限查找 |
- 用户名 | 根据用户名查找 |
-mtime -n / + n | 查找Ñ天内/ N天前更改过的文件 |
-atime -n / + n | 查找Ñ天内/ N天前访问过的文件 |
-ctime -n / + n | 查找Ñ天内/ N天前创建的文件 |
- 更新的文件名 | 查找更改时间比文件名新的文件 |
-type b / d / c / p / l / f / s | 根据类型查找 |
-尺寸 | 根据文件大小查找 |
-深度 | ñ最大的查找目录深度 |
(2)数据库查找用locate
locate依赖于一个数据库文件,Linux系统默认每天会检索一下系统中的所有文件,然后将检索到的文件记录到数据库中,故比找到命令反馈更快
为获取最新数据,可在定位执行前执行updatedb的命令更新数据库,删除文件后需再次更新数据库。
(3)查找执行文件:
用于从系统的PATH变量所定义的目录中查找可执行文件的绝对路径的/ whereis 。
[root@localhost ~]# which passwd
/bin/passwd
whereis也能查到路径,但区别于其中,不但能查找其二进制文件,还能查找出相关的男子文件
[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
- 5文件压缩和打包
(1)文件压缩与解压表
压缩 | 解压 |
---|---|
gzip的 | gunzip解 |
bzip2的 | bzip2 -d |
tar -zcvf filename.tgz /目录 | tar -zxvf filename.tgz -C / tmp |
bzip2的 | bzip2 -d filename.bzp2 |
gzip的 | gunzip解 |