系统基础-文件管理

文件和目录管理

FHS

FHS,文件系统层次标准。多数Linux版本采用这种文件组织形式,类似于 Windows 操作系统中C盘的文件目录,采用树形结构组织文件。

FHS,定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理和矛盾处理。

根目录

在 Linux 中,根目录使用“ROOT”或者“/”表示。

ls /
image

FHS 定义的目录结构

目录 目录的用途
/bin 常见的用户指令
/boot 内核和启动文件
/dev 设备文件
/etc 系统和服务的配置文件
/home 系统默认的普通用户的家目录
/lib 系统函数库目录
/lost+found ext3 文件系统需要的目录,用于磁盘检查
/mnt 系统加载文件系统时常用的挂载点
/opt 第三方软件安装目录
/proc 虚拟文件系统
/root root 用户的家目录
/sbin 存放系统管理指令
/tmp 临时文件的存放目录
/usr 存放与用户直接相关的文件和目录
/media 系统用来挂载光驱等临时文件系统的挂载点

绝对路径和相对路径

绝对路径

绝对路径一定是以“/”开头的

pwd     // 查看当前路径
image

特殊目录

在每个目录下,都会固定存在两个特殊目录,分别是一个点(.)和两个点(..)的目录。前者表示的是当前目录,后者表示的是上层目录。

在Linux下,所有以点开头的文件都是"隐藏文件",对于这类文件,只是用命令ls-l是看不到的,必须要使用ls-la才可以看到。

image

相对路径

顾名思义,“相对路径”的关键在于当前在什么路径下。假设当前目录在/usr/local下,那么它的上层目录(/usr目录)可以用../表示,而/usr/local的下层目录(src)则可以用./src表示。

cd ..

文件的相关操作

Linux 遵循一切皆文件的规则。

创建文件

touch
image

如果文件存在,则更改文件的修改时间属性。

image

删除文件

rm FileName
image

移动或重命名文件

移动文件

mv FileName

重命名文件

mv OldFileName NewFileName
image

Linux 下的目录也是一种“文件”,所以这里将的 mv 命令也用样适用于对目录的操作。

查看文件

cat FileName
image

查看文件头

有时候文件非常大,使用 cat 命令显示出来的内容太多,而我们可能并不像查看全部内容,只是想看看文件开始部分的内容,这时候可以使用 head 命令了,后面跟上需要查看的文件名就可以了。默认显示10行

head FileName
image

也可以使用 -n 参数指定显示的行数

查看文件尾

tail FileName

和 head 命令正好相反,默认同样是10行。

但是 tail 还有个更实用的功能,就是可以动态地查看文件尾。这对查看一些不断改变的文件来说是非常有用的。比如系统中会有很多日志文件,这些文件是会随时变化的。

要查看这些动态地文件可以使用 -f 参数。

目录的相关炒作

与其他操作系统一样,Linux 也有目录的概念,目录的作用在于存放其他的目录和文件。

进入目录

cd DirName

创建目录

mkdir DirName

使用 -p 参数可以一次性创建所有目录

删除目录

rm

删除非空目录,加上参数 -f

递归删除目录,加上参数 -r

通常使用 rm -rf 来删除目录,但是有安全风险。

文件和目录的复制

cp FileName|DirName

第三个参数为重命名

cp FileName|DirName [newName]

文件和目录的权限

查看文件或目录的权限

ls -al

这条命令中 -l 表示列出每个文件的详细信息,-a 表示同时列出隐藏文件!

image

第一列便是文件的类别和权限。

其中第一个字符的取值范围如下:

第一个字符 含义
d 目录
- 普通文件
l 链接文件
b 块文件
c 字符文件
s socket 文件
p 管道文件

第二列代表连接数,除了目录文件之外,其他所有文件的连接数都是1,目录文件的连接数是该目录中包含其他目录的总个数+2,也就是说,如果目录A中的包含目录B和C,则目录A的连接数为4。

第三列代表该文件的所有人。

第四列代表该文件的所有组。

第五列代表文件的大小。

第六列代该文件的创建时间或最近的修改时间。

第七列是文件名。

文件的隐藏属性

Linux 下的文件还有一些隐藏属性,必须使用如下命令查看:

lsattr
image

结果中第一列是13个小短横,其中每一个下横线都是一个属性,如果当前位置上设置了该属性就会显示相对应的字符。

如果要设置文件的隐藏属性,需要使用如下命令:

chattr
常用属性 含义
a 文件只能在尾部增加数据而不能被删除
i 文件将无法写入、改名、删除,即便是root用户也不行
image

改变文件权限

Linux下每个文件都定义了文件拥有者(user)、拥有组(group)、其他人(others)的权限,使用 u、g、o 来分别表示拥有者、拥有组、其他人,而对应的具体权限则使用 rwx 的组合来定义,增加权限使用 + 号,删除权限使用 - 号,详细权限使用 = 号。

作用 命令
某文件添加用户读权限 chmod u+r FileName
给某文件删除用户读权限 chmod u-r FileName
给某文件添加用户写权限 chmod u+w FileName
给某文件删除用户写权限 chmod u-w FileName
给某文件添加用户执行权限 chmod u+x FileName
给某文件删除用户执行权限 chmod u-x FileName
给某文件设定用户拥有读写执行权限 chmod u=rwx FileName
image

如果要给用户组或其他人添加或删除相关权限,只需要将上面的u相应地更换成 g 或 o 即可。

但是这一方式只能给文件拥有者、文件拥有组或者其他所有人设置权限,如果想同时设置所有人的权限就需要使用数字表示法了。

定义 r=4,w=2,x=1,如果权限是 rwx,则数字表示7,如果权限是 r-x,则数字表示为5.

image

如果是修改一个目录,且该目录下所有的目录文件都递归修改权限,则加上参数 -R 。

更改文件的拥有者

chown UserName FileName
image

如果需要修改的不是一个文件而是一个目录,以及该目录下所有的文件、子目录、子目录下的所有文件和目录,则需要使用 -R 参数,递归设置。

更改文件的拥有组

chgrp Group FileName
image

同样,使用 -R 参数递归设置

文件的特殊属性

image

如截图所示,权限中多了一个特殊的 “s”。这表示为 SUID 权限,这个权限只能用于二进制文件。

给一个二进制文件添加 SUID 权限的命令:

chmod u+s FileName

如果某个二进制文件的用户组被设置了 s 权限,则该文件的用户组中所有的用户都能以该文件的用户身份去运行这个命令,一般来说SGID 命令在系统中用的很少,给一个二进制文件添加 SGID 权限的命令:

chmod g+s FileName

Sticky 权限只能用于设置在目录上,设置了这种权限的目录,任何用户都可以在该目录中创建或修改文件,但是只有该文件的创建者和 root 可以删除自己的文件。

chmod o+t DirName
image

默认权限和umask

对于 root 用户,文件的默认权限是 644 ,目录的默认权限是 755 ;对于普通用户,文件的默认权限是 664,目录的默认权限是775.

那么这个值是如何计算出来的呢?

是通过遮罩(umask)来实现的。首先看一下 /etc/profile 文件中,通过第51行道55行的一段代码设置了不同用户的遮罩值。

image

从上面的代码中可以看出,UID大于99的用户设置了umask为002,否则为022。所以umask值对于root用户是022,对于普通用户是002,这就造成了上面我们看到的root用户和普通用户创建出来的文件和目录默认权限是不一样的。

如何使用遮罩计算权限?

777 用字符串表示为:rwxrwxrwx,如果遮罩值为022,用字符串表示为 ----w--w-,那么前者第五位和第八位的w被遮罩掉,权限变作rwxr-xr-x,用数字表示就是755。

不能通过同位相减的方法计算遮罩后的值,比如说777-022同位相减得到755,666-022同位相减得到644,这种看似正确的结果其实只是一种巧合,并不是了解遮罩的正确方式。假设有个文件的权限为666,在遮罩值为011的情况下,采用该方法计算得到的权限值为655,但实际上正确的权限值为666。

查看文件类型

file PATH -name FileName
image
image

数据库查找

与 find 不同,locate 命令依赖于一个数据库文件,Linux系统默认每天会检索一下系统中的所有文件,然后将检索到的文件记录到数据库中。在运行 lcoate 命令的时候可直接到数据库中查找记录并打印到屏幕上,所以使用 locate 命令要比 find 命令反馈更为迅速。

在执行这个命令之前一般需要执行 updatedb 命令(这不是必须的,因为系统每天会自动检索并更新数据库信息,但有时候会因为文件发了变化而系统还没有再次更新而无法找到实际上存在的文件。所以需要主动运行该命令,以创建新的文件列表数据库),以及时更新数据库记录。

image

查找执行文件

which 用于从系统的PATH变量所定义的目录中查找可执行的绝对路径。

image

使用 whereis 也能查到其路径,但是和 which 不同的是,它不但能找出其二进制文件,还能找出相关的 man 文件。

文件压缩和打包

gizp/gunzip

gzip/gunzip 是用来压缩和解压缩单个文件的工具,使用方法比较简单。

gzip FileName
gunzip FileName
image

tar

tar 不但可以打包文件,还可以将整个目录中的全部文件整合成一个包,整合包的同时还能使用 gzip 的功能进行压缩,比如说把整个 /boot 目录整合并压缩成一个文件。

一般来说,整合后的包习惯使用 .tar 作为其后缀名,使用 gzip 压缩后的文件则使用 .gz 作为其后缀名。因为 tar 有同时整合和压缩的功能,所以可使用 .tar.gz 作为后缀名,或者简写为 .tgz。

tar -zcvf boot.tgz /boot

这里 -z 的含义是使用 gzip 压缩,-c 是创建压缩文件,-v 是显示当前被压缩的文件,-f 是指使用文件名

解压命令如下:

tar -zxvf boot.tgz -C DirName

后面可以使用 -C 来指定压缩后文件的存放目录

bzip2

使用 bzip2 压缩文件时,默认会产生以 .bz2 扩展名结尾的文件,这里使用 -z 参数进行压缩,使用 -d 参数进行解压缩。

image

cpio

该命令一般是不单独使用的,需要和find命令一同使用。当由find按照条件找出需要备份的文件列表后,可通过管道的方式传递给 cpio 进行备份,生成 /tmp/conf.cpio 文件,然后再将生成的 /tmp/conf.cpio 文件中包含的文件列表完全还原回去。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,271评论 9 467
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,168评论 2 33
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,734评论 0 10
  • 人们往往会说一件事如果没有好的计划,那么做起来,或者完成是否,就会受挫,但是却忽略了最重要的是是否有能力去完成,这...
    Xudongyao阅读 125评论 0 0
  • 概念:沉没成本 人们在决定是否做一件事情的时候,不仅仅是看这件事情未来对他是不是有好处,同时也会注意自己是不是在过...
    洋_葱头阅读 374评论 5 5