学习笔记-文件与目录管理

4 文件与目录管理

4.1 Linux文件与目录概述

4.1.1 Linux目录结构

Linux目录树

Linux使用树形目录结构来分级、分层组织管理文件,最上层是根目录,用“/”表示。在Linux中,所有的文件与目录都由根目录/开始,然后再一个一个地分支下来,一般将这种目录配置方式称为目录树(directory tree)。目录树的主要特性如下:

  • 目录树的起始点为根目录(/);
  • 每一个目录不仅能使用本地分区的文件系统,也可以使用网络上的文件系统;
  • 每一个文件再目录树中的文件名(包含完整路径)都是独一无二的;

文件与目录的命令规范

在Linux中,文件和目录的命名由字母、数字和其他符号组成,应遵循以下规范。

  • 目录和文件名长度可以达到255个字符。
  • 包含完整路径名称及目录(/)的完整文件名为4096个字符
  • 严格区分大小写
  • 可以包含空格等特殊字符,但必须使用引号;不可以包含“/”字符。还应避免特殊字符:*?><;&![]|\’"`(){}
  • 同类文件应使用同样的后缀或扩展名

4.1.2 Linux目录配置标准——FHS

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

4.1.3 Linux文件类型

普通文件

普通文件也称为常规文件,包含各种长度的字符串。内核对这些文件没有进行结果化,只是作为有序的字符序列把它提交给应用程序,由应用程序自己组织和解释这些数据。它包括文本文件、数据文件和可执行的二进制程序等。

目录文件

目录文件是一种特殊文件,利用它可以构成文件系统的分层树形结构。目录文件也包含数据,但与普通文件不同的是内核对这些数据加以结构化,即它是由成对的“索引节点号/文件名”构成的列表。索引节点号是检索索引节点表的下标,索引节点中存有文件的状态信息。文件名是给一个文件分配的文本形式的字符串,用来标识该文件。在一个指定的目录中,任何两项都不能有同样的名字。

设备文件

设备文件是一种特殊文件,除了存放在文件索引节点中的信息外,它们不包含任何数据。系统利用它们来标识各个设备驱动器,内核使用他们与硬件设备通信。设备文件又可分为两种类型:字符设备文件和块设备文件。

链接文件

这是一种特殊文件,提供对其他文件的参照。它们存放的数据是文件系统中通向文件的路径。当使用链接文件时,内核自动地访问所指向的文件路径。例如,当需要在不同的目录中使用相同文件时,可以在一个目录中存放该文件,在另一个目录中创建一个指向该文件(目标)的链接,然后通过这个链接来访问该文件,这就避免了重复占用磁盘空间,而且也便于同步管理。

4.2 Ubuntu目录操作

4.2.1 使用文件管理器进行文件操作

4.2.2 使用命令行进行目录操作

创建目录

格式:mkdir [选项] 目录名

linx@ubuntu:~$ sudo mkdir /usr/test1
[sudo] linx 的密码:
#-p表示建立的目录的父目录尚未建立,将同时创建父目录
linx@ubuntu:~$ sudo mkdir -p /usr/test2/test1

删除目录

格式:rmdir [选项] 目录名

linx@ubuntu:~$ sudo rmdir /usr/test1
#-p表示递归删除目录,当子目录被删除后父目录为空时,也一同被删除。如果非空目录,则保留下载。
linx@ubuntu:~$ sudo rmdir -p /usr/test2/test1

改变工作目录

格式:cd [目录]

linx@ubuntu:~$ cd /usr/
linx@ubuntu:/usr$ 

#使用pwd可以查看当前目录
linx@ubuntu:/usr$ pwd
/usr

显示目录内容

格式:ls [选项] [目录或文件]

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

4.3 Ubuntu文件操作

4.3.1 使用文件管理器进行文件操作

4.3.2 使用命令行进行文件操作

文件内容显示

  1. cat命令

格式:cat [选项] [文件名1] [文件名2]

#显示文件内容
linx@ubuntu:~$ cat example1.lst
#合并example1.lst和example2.lst文件内容
linx@ubuntu:~$ cat example1.lst example2.lst
#合并example1.lst和example2.lst文件内容存入example3.lst
linx@ubuntu:~$ cat example1.lst example3.lst > example3.lst

2)more命令

格式:more [选项] [文件名]

#如果文件太长,用cat命令只能看到最后一页,而用more命令时可以逐页显示。
linx@ubuntu:~$ more example1.lst

3)less命令

格式:less [选项] [文件名]

#less的功能比more更灵活。可以使用Pgup和Pgdn键来上下翻页,可以使用上下光标键可以向前移动一行或向后移动一行。
linx@ubuntu:~$ less example1.lst

4)head命令

格式:head [选项] [文件名]

#-n(n为行数值)指定从文件开头的显示行数,默认显示为10行
linx@ubuntu:~$ head -5 example1.lst
#-c,后面跟参数指定从文件开头显示字节数
linx@ubuntu:~$ head -c 50 example1.lst
#b为512字节
linx@ubuntu:~$ head -c b example1.lst
#kB为1000字节
linx@ubuntu:~$ head -c kB example1.lst
#K为1024字节
linx@ubuntu:~$ head -c K example1.lst
  1. tail命令

格式:tail [选项] [文件名]

#-n(n为行数值)指定从文件末尾的显示行数,默认显示为10行
linx@ubuntu:~$ tail -5 example1.lst
#-c,后面跟参数指定从文件末尾显示字节数
linx@ubuntu:~$ tail -c 50 example1.lst
#b为512字节
linx@ubuntu:~$ tail -c b example1.lst
#kB为1000字节
linx@ubuntu:~$ tail -c kB example1.lst
#K为1024字节
linx@ubuntu:~$ tail -c K example1.lst

6)od命令

格式:od [选项] [文件名]

#将指定文件以八进制形式转存到标准输出
linx@ubuntu:~$ od example1.lst

文件内容查找

grep命令

格式: grep [选项]… 模式 [文件名]…

-i表示忽略大小写,-x强制整行匹配,-w强制关键字完全匹配,-e用于定义正则表达式。

-m 定义多少次匹配后停止搜索,-n指定输出的同时打印行号,-H为每一匹配项打印文件名,-r在指定目录中进行递归查询

linx@ubuntu:~$ grep -i 'home' /etc/passwd
linx@ubuntu:~$ grep -i -n 'home' /etc/passwd

文件内容比较

1)comm命令

格式:comm [-123] 文件1 文件2

#对两个已经排好序的文件进行逐行比较,只显示它们共有的行。
linx@ubuntu:~$ comm e1.lst e2.lst 
apple
	carrot
	cookies
		gold
iron
		orange
silver
steel
#选项-1表示不显示仅在文件1中存在的行
linx@ubuntu:~$ comm -1 e1.lst e2.lst 
carrot
cookies
	gold
	orange
#选项-2表示不显示仅在文件2中存在的行
linx@ubuntu:~$ comm -2 e1.lst e2.lst 
apple
	gold
iron
	orange
silver
steel
#选项3表示不显示在comm命令输出的第1列、第2列和第3列
linx@ubuntu:~$ comm -3 e1.lst e2.lst 
apple
	carrot
	cookies
iron
silver
steel

2)diff命令

格式:diff [选项] 文件1 文件2

#命令逐行比较两个文件,列出它们的不同之处,并且提示为使两个文件一致需要修改那些行。
#文件1
linx@ubuntu:~$ cat e1.lst 
carrot
cookies
gold
iron
orange
silver
steel
water
zoo
#文件2
linx@ubuntu:~$ cat e2.lst 
carrot
cookies
gold
orange
zoo
water
#1c1,2,将文件1的第1行修改成文件2的第1行、第2行
#3d3,将文件1的第3行删除和文件2的第3行一样
#5,7d4,将文件1的第5行、第6行、第7行删除和文件2的第4行一样
#8a6,将文件1的第8行添加文件2的第6行
linx@ubuntu:~$ diff e1.lst e2.lst 
1c1,2
< apple
---
> carrot
> cookies
3d3
< iron
5,7d4
< silver
< steel
< water
8a6
> water

文件内容排序

格式:sort [选项] 文件名列表

#排序前
linx@ubuntu:~$ cat e2.lst 
carrot
cookies
gold
orange
zoo
water
#排序后
linx@ubuntu:~$ sort e2.lst 
carrot
cookies
gold
orange
water
zoo

文件内容统计

格式:wc [选项] 文件名列表

linx@ubuntu:~$ wc e2.lst 
 6  6 37 e2.lst
 #行数	字数	字节数	文件名
 
 #-c统计字节数
linx@ubuntu:~$ wc -c e2.lst 
37 e2.lst
#-l统计行数
linx@ubuntu:~$ wc -l e2.lst 
6 e2.lst
#-w统计字数
linx@ubuntu:~$ wc -w e2.lst 
6 e2.lst

文件查找

格式:find [路径…] [表达式]

#-depth可以使find命令先匹配所有的文件,再在子目录中查找
#-regextype用于选择要使用的正则表达式类型
#-follow表示遇到符号链接文件就跟踪至链接所指向的文件。
#-name表示按照文件名查找文件
linx@ubuntu:~$ find ~ -name "*.txt" -print
#-user表示按照文件所有者来查找文件
#-type指定查找某一类的文件

格式:find [路径…] [匹配表达式] -exec {} ;

#外部命令之后需要“{} \;”结尾,必须由一个“;”结束
linx@ubuntu:~$ sudo find /etc/ -name "passwd*" -exec grep "zhangsan" {} \;
[sudo] linx 的密码: 
zhangsan:x:1001:1001:zhangsan,,,:/home/zhangsan:/bin/bash
zhangsan:x:1001:1001:zhangsan,,,:/home/zhangsan:/bin/bash

locate命令

#安装语句
linx@ubuntu:~$ sudo apt install mlocate

格式:locate [选项]… [模式]…

#-d指定locate命令所使用的数据库。
#-c表示只列出查找到的条目数量
linx@ubuntu:~$ locate -c chgpasswd
5
#-A表示列出匹配的所有条目。
#-w表示匹配整个路径。

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

1)cp命令

格式: cp [选项] 源文件或目录 目录文件或目录

#将文件e1.lst和e2.lst复制到/home/linx/text文件夹下
linx@ubuntu:~$ cp e1.lst e2.lst /home/linx/text/

3)rm命令

格式:rm [选项] 文件列表

linx@ubuntu:~$ rm  /home/linx/text/e1.lst /home/linx/text/e2.lst 

3)mv命令

格式:mv [选项] 源文件或目录 目录文件或目录

linx@ubuntu:~$ mv e1.lst e2.lst /home/linx/text/
#-i表示交互模式,覆盖时给出提示。
#-f表示覆盖时,不给出提示。

链接文件创建

格式:ln -s 目标(源文件或目录) 链接文件

硬链接文件的语法格式: ln 目标(源文件) 链接文件

文件压缩与解压缩

1)gzip命令

格式: gzip [选项] 压缩文件名/解压缩文件名

#被压缩的文件扩展名是.gz
linx@ubuntu:~$ gzip /home/linx/text/e2.lst
#解压压缩文件
linx@ubuntu:~$ gzip -d /home/linx/text/e2.lst.gz
#压缩压缩文件保留源文件
linx@ubuntu:~$ gzip -c /home/linx/text/e1.lst > /home/linx/text/e1.lst.gz

2)unzip命令

格式:unzip [选项] 压缩文件名

#对WinZip文件进行解压缩
linx@ubuntu:~$ unzip /home/linx/text/e2.zip

3)tar命令

格式:tar [选项] 文件或目录名

4.4 文件管理和目录权限

4.4.1 文件访问者身份与文件访问权限

文件访问者身份

  • 所有者:每个文件都有它的所有者,又称属主。默认情况下,文件的创建者即为其所有者。所有者对文件具有所有权,是一种特别权限。
  • 所属组 :指文件所有者所属的组(简称属组),可为该组指定访问权限。默认情况下,文件的创建者的主要组即为该文件的所属组。
  • 其他用户:指文件所有者的所属组,以及root之外的所有用户。通常其他用户对于文件总是拥有最低的权限,甚至没有任何权限。

文件访问权限

  • 读:读取文件内容或者查看目录。
  • 写:修改文件内容或者创建、删除文件。
  • 执行:执行文件或者允许使用cd命令进入目录。

查看文件属性

linx@ubuntu:~$ ls -l
drwxr-xr-x 	2 		linx 		linx     4096 	3月  21 01:27 	公共的
#[文件权限]	[链接]	[所有者]	[所属组]	[容量]	[修改日期]	[文件名]

4.4.2 变更文件访问者身份

变更所有者

chown命令

格式:chown [选项] [新所有者] 文件列表

linx@ubuntu:~$ sudo chown zhangsan news
#-R进行递归变更,即目录连同其子目录下的所有文件的所有者都变更
linx@ubuntu:~$ sudo chown -R zhangsan news
#可以使用chown	[选项]	[新所有者]:[新的所属组]	文件列表变更所有者和所属组
linx@ubuntu:~$ sudo chown zhangsan:zhangsan text

变更所有组

chgrp命令

格式:chgrp [选项] [新的所属组] 文件列表

linx@ubuntu:~$ sudo chgrp zhangsan news
#-R也可以连同子目录中的文件一起变更所属组。

4.4.3 设置文件访问权限

文件权限用字符表示

#+表示增加某种权限,g(属组)、o(用户)、r(读)、w(写)
linx@ubuntu:~$ sudo chmod g+w,o+r /home/zhangsan/myfile 
#-表示撤销某种权限,go(所属组和其他用户)、r(写)
linx@ubuntu:~$ sudo chmod go-r /home/zhangsan/myfile 
#=表示指定某种权限(同时也会取消其他权限)a(全部用户(包括3种用户))、r(读)、x(执行)
linx@ubuntu:~$ sudo chmod a=rx /home/zhangsan/myfile 

文件权限用数字表示

读(r)(4)、写(w)(2)、执行(x)(1)

644=[4+2+0]、[4+0+0]、[4+0+0]=rw-r–r--

linx@ubuntu:~$ chmod 644 file

4.4.4 设置默认的文件访问权限

linx@ubuntu:~$ umask
0002
#创建目录的最大权限为777,减去umask,775 rwxrwxr-x
linx@ubuntu:~$ mkdir example
linx@ubuntu:~$ ls -l | grep "example"
drwxrwxr-x 2 linx     linx         4096 3月  29 03:41 example
#创建文件的最大权限为666,减去umask,664 rw-rw-w--
linx@ubuntu:~$ >example2
linx@ubuntu:~$ ls -l | grep "example2"
-rw-rw-r-- 1 linx     linx            0 3月  29 03:44 example2

4.4.5 在图形界面中管理文件和文件夹访问权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
B站上的韩顺平老师的《Linux学习笔记》系列课程非常值得推荐。通过这个课程,我学到了很多关于Linux操作系统的知识和技能。 首先,韩老师在课程中详细介绍了Linux的基本概念和特点。我清楚地了解到Linux是一个开源的操作系统,具有稳定性、安全性和可定制性强的特点。这让我对Linux有了更深入的理解,也更有信心去学习和使用它。 其次,韩老师从基础开始,逐步讲解了Linux的安装和配置。他用简单明了的语言和实际操作的示范,帮助我了解了如何在虚拟机上安装Linux系统,并设置网络、用户账户、文件系统等。这为我后续的学习和实践打下了坚实的基础。 此外,韩老师还讲解了Linux的常用命令和工具。他详细介绍了常用的文件目录操作命令,比如cd、ls、mkdir、cp等。同时,他还讲解了grep、sed、awk等强大的文本处理工具的使用方法。这些内容帮助我更加高效地进行文件管理和数据处理。 最后,韩老师还介绍了Linux的网络管理和安全防护。他讲解了如何配置网络连接、使用ssh远程登录以及设置防火墙等内容。这些知识对我了解网络和保护系统安全非常有帮助。 总的来说,韩顺平老师的《Linux学习笔记》课程非常实用,对于初学者来说是入门学习Linux的好选择。他通过深入浅出的讲解和丰富的实操示范,让我可以轻松地学习到Linux的基本知识和操作技巧。我相信通过学习这个课程,我会在Linux领域有更进一步的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值