【Linux】(基础篇三)—— 文件管理

文件管理

本文介绍linux系统的文件管理,包括如何组织、访问、修改和保护文件及目录结构,还有链接建立、归档压缩文件。

文件系统: Linux使用树状结构的文件系统,一切皆文件,包括硬件设备也被视为特殊文件。Windows中的文件在Linux系统中还是文件,如txt等类型文件;Windows中的文件夹在Linux系统中称为目录,目录和文件的管理方法类似,但有细微区别,下面会进行详解讲解。

路径

每个文件和目录都有一个唯一的路径,分为绝对路径和相对路径:

**绝对路径:**绝对路径是从根目录(表示为/)开始的完整路径,提供了一个文件或目录在文件系统中的确切位置,不依赖于当前工作目录。例如:

/home/user/documents/report.txt

这个路径指定了从根目录开始,进入home目录,再进入user目录,最后到达documents目录中的report.txt 文件。不论当前工作目录在哪里,这个路径都能准确无误地找到目标文件。

**相对路径:**相对路径则是相对于当前工作目录的路径。它不以根目录开始,而是使用特殊符号表示相对于当前位置的关系,如.表示当前目录,..表示上级目录。例如:

documents/report.txt

如果当前工作目录是/home/user,那么上述相对路径实际上指向的是/home/user/documents/report.txt 。但如果当前工作目录改变,同样的相对路径可能指向完全不同的文件。

类似于相对路径中…返回上一级目录的用法,Linux预留了一些符号作为某些系统目录的快捷方位入口,其具体符号和含义如下:

符号含义
~当前用户家目录
-上一个工作目录
上一级目录
/根目录

常用命令

查看目录和文件

查看目录和文件的命令语法如下:

ls [options] [directory] # 显示目录下的目录和文件

direcrory代标需要查看的目录,如果没有指定,默认查询当前所在目录

[options]选项如下:
-a 或 --all:显示包括以.开头的隐藏文件在内的所有文件和目录。
-l(小写的L):以长格式显示,提供文件或目录的详细信息,包括权限、所有者、文件大小、修改日期和时间等。
-h:与-l一起使用时,使文件大小以易于阅读的格式(如KB、MB)显示。
-t:按修改时间排序,最新的文件或目录排在前面。
-r:逆序排序,默认是按字母升序,使用-r后变为降序。
-R:递归列出目录内容,显示所有子目录下的内容。
-S:按文件大小排序。
-A:与-a相似,但不显示.(当前目录)和..(父目录)。
-d:仅列出目录本身的信息,而不列出其内容。
-i:显示文件的inode号。
# 最常用的ls -l 可以缩写为ll

tree # 以树的形式显示目录结构(ubuntu系统需要先安装命令sudo apt install tree)

pwd # 查看当前目录位置

切换工作目录

cd # change directory,用来切换当前的目录

创建文件和目录

mkdir 目录名 # 在当前工作目录下创建目录
touch 文件名 # 创建文件,多个参数用空格隔开,可以一次创建多个文件
-p  # 递归创建目录,例如mkdir -p ./a/b/c会在当前目录下递归创建文件夹a,b和c
gedit 文件名 # 编辑文件,可以同时修改多个文件(需要使用sudo apt install treegedit先安装命令,此命令使用并不多,我更加建议你使用后面的vim文件编辑器)

删除文件和目录

rm 文件/目录名 # rm为remove缩写,使用rm删除文件或目录删除后不可恢复,可以一次删除多个文件
rm -r 目录名 # 递归删除目录,如果目录不为空不能直接删除,需要递归删除
rm -i 文件/目录名 # 增加删除提示,ubuntu下删除默认没有提示
rm -f 文件/目录名 # 去掉提示强制删除,在腾讯/阿里云服务器中删除默认有提示

文件拷贝

cp 源文件路径 目标文件路径 # cp为单词copy的缩写,将文件从源路径拷贝到目标路径(源路径下依然存在)

cp指令的相关[options]-i  # 在目标文件路径下有同名文件时进行询问
-v  # 显示拷贝过程
-r  # 递归拷贝
-a  # 将文件权限属性等信息都进行拷贝

移动和重命名文件

mv 源文件路径 目标文件路径 # mv为单词move的缩写,将文件从源路径移动到目标路径(源路径下不存在),在写目标文件路径时使用新的名字即可以完成重命名

mv文件指令的相关[options]选项:
-i # 在目标文件路径下有同名文件时进行询问
-v # 显示移动过程
-f # 覆盖不提示,强制移动
mv # 移动目录时不需要递归操作

文件查看cat

cat 文件名 # 查看文件

cat命令相关[options]选项:
-n # 查看文件的时候,对每一行进行编号
-b # 非空行进行编号
-s # 连续2行以上的空行,只显示1行
cat 文件名1 文件名2 # 连接文件,把两个文件合并到一起显示

文件查看more

more 文件名 # 分屏(分页)查看文件内容

more指令相关选项:
+num # 从第num行开始查看文件
-p # 先清屏,再显示文件内容
-s # 连续2行以上的空行,只显示一行

分页查看时的快捷键:
回车 # 查看一行
空格 # 查看下一屏
F/ctrl + f # 下一屏
B/ctrl + B # 上一屏
q # 退出

查找文件

常用的查找文件分为按照名称和按照文件大小查找,两者具体命令如下:

  • 按照名称搜索 -name

    find /mydir -name myfile.txt:查找/mydir路径下的myfile.txt文件

    find /mydir -name ‘*.txt’ :可以使用正则进行匹配,此条语句以为查找/mydir目录下的所有的文本文件

  • 按照大小搜索 -size

    find /mydir -size +30M :查询/mydir下大于30M的文件

    Find /mydir -size -20M :查询/mydir下小于20M的文件

    find /mydir -size +15M -size -30M:查询/mydir下大于15M小于30M的文件

查找文本

使用grep命令可以在文件中查找指定内容的位置,其基本命令如下:

grep '搜索内容串' 文件名  # 在指定文件中返回搜索内容所在行

grep命令相关[options]选项如下:
    -i 忽略大小写
    -n 查看搜索结果的行号
    -v 取反,不包含'搜索内容串' 的结果
# 可以使用正则表达式进行匹配

数据流和管道

在Linux系统中,数据流(data stream)指的是程序或进程在执行过程中产生的输入(input)、输出(output)以及错误信息(error)的流动。Linux系统主要定义了三种标准的数据流,分别是:

  1. 标准输入(Standard Input)

    • 通常默认来自键盘,但也可以通过重定向或管道从其他来源接收数据。
    • 用于向程序提供数据,例如在使用cat命令从管道读取内容时。
  2. 标准输出(Standard Output)

    • 默认输出到终端屏幕,展示程序的正常输出结果。
    • 可以通过重定向(>>>)发送到文件,或通过管道(|)传递给另一个命令。
  3. 标准错误(Standard Error)

    • 默认也是输出到终端屏幕,但用于显示程序运行时的错误信息或警告,与正常的程序输出分开管理,便于区分。
    • 可以独立于标准输出重定向到文件或合并到标准输出中。

数据流重定向

  • 重定向 (>>>)
    • > 会覆盖目标文件的内容。
    • >> 会在目标文件的末尾追加内容。
    • 这些操作可以改变标准输出或标准错误的流向,例如 ls > files.txtls命令的输出保存到files.txt文件中。

管道 (|)

管道允许将一个命令的输出直接作为另一个命令的输入,例如 ls | grep txtls命令列出的包含“txt”的行筛选出来。

特殊文件

  • /dev/null:可以将任何不需要的输出重定向至此,相当于丢弃数据。

文件类型

在查看文件时,使用``ls -l` 命令可以查看到文件/目录的类型,在每行文件的第一列数据表示文件的类型:
请添加图片描述

Linux系统中的文件类型主要包括以下几种:

  1. 普通文件(Regular File):
    • 包含文本文件、二进制文件(如程序、库文件)、数据文件等。
    • 无特殊标识,在ls -l命令输出中以-表示。
  2. 目录文件(Directory):
    • 用于组织和存储其他文件和目录的容器。
    • ls -l命令输出中以d表示。
  3. 符号链接(Symbolic Link):
    • 指向另一个文件或目录的特殊文件,类似于Windows的快捷方式。
    • ls -l命令输出中以l表示。
  4. 设备文件:
    • 分为块设备文件(如硬盘、光驱)和字符设备文件(如键盘、打印机)。
    • 块设备文件以b表示,字符设备文件以c表示。
  5. 管道文件(Pipe/FIFO):
    • 用于进程间通信的特殊文件类型,遵循先进先出原则。
    • ls -l命令输出中以p表示。
  6. 套接字文件(Socket):
    • 另一种进程间通信方式,常用于网络通信或进程间非文件描述符的通信。
    • ls -l命令输出中以s表示。

这些文件类型可以通过ls -l命令查看文件详细信息时的第一个字符来区分。此外,Linux系统还使用inode和文件权限系统来进一步管理这些文件,允许对文件的访问、修改和执行权限进行精细控制。文件的实际类型和用途不仅取决于上述分类,也与其内容和系统如何使用它们有关。例如,文本文件和二进制文件在Linux系统层面没有本质区别,都是存储数字的文件,区别在于打开和解释这些数字的方式。

文件链接

链接文件分为软链接(符号链接)和硬链接

软链接(相当于Windows系统中的快捷方式):软链接不占用磁盘空间,源文件删除则软连接失效

ln -s 源文件 链接文件

硬链接:给一个文件起了多个名字,把所有名字都删掉才能删除这个文件,每一个名字对文件的修改都会同步生效

ln 源文件 链接文件

软链接 vs. 硬链接

软链接硬连接
跨文件系统×
不存在的目录/文件建立链接×
为目录建立链接×

建立链接后,使用ls -l命令进行查看时会有很清晰的链接指向

【示例】在当前用户家目录下面,给Downloads文件夹建立一个软链接,并使用ls -l命令查看链接的指向

ln -s Downloads newDown
ls -l

运行结果:

在这里插入图片描述

文件权限管理

ls -l显示的文件列表的第一列表示文件类型,第一个字母为-表示普通文件,d表示目录,l表示链接文件,具体的内容我已经在前节中讲解。

后面的字符控制文件的权限,每三个分为一组(包含-符号),第一组为文件的拥有者权限(u),第二组为文件所属组的权限(g),第三组为其他用户的权限(o)

在这里插入图片描述

各个字符的含义如下:

  • r:可读

  • w:可写

  • x:可执行 个权限对于文件和目录有着不同的意义:如果一个文件具有执行权限(即文件权限中有x),那么用户可以运行这个文件作为一个程序或脚本。这对于 shell 脚本、二进制可执行文件(如命令行工具)尤为重要;目录上的x权限允许用户通过cd命令进入该目录,用户能否在该目录下执行其他文件(前提是用户对该文件也有执行权限)以及能否创建、删除或重命名目录内的文件(这还需要w权限)。

  • -:没权限,如果用户没有w权限,就在w的位置上写-

使用字母修改用户的文件权限:

chmod 用户+权限 # 给用户追加权限
chmod 用户-权限	# 取消用户的权限
chmod 用户=权限	# 设置用户的权限
用户为 u、g、o、a(所有用户)
权限:r、w、x

使用数字修改用户权限:

r的权限数字为4,w为2,x为1

chmod u=rwx,g=rx,o=r filename 等价于 chmod u=7,g=5,o=4 filename
或 chmod 754 file
都表示文件所有者权限:读、写、可执行;同组用户:读、可执行;其他用户:读

归档和压缩文件

归档:把多个文件归档为一个大文件,类似于Windows下的打包压缩操作

tar -cvf 打包文件名.tar 文件1 文件2 # 多文件归档 
tar -cvf 打包文件名.tar 目录 # 目录归档 
tar -xvf 档案文件 # 解档

归档解档的相关[options]解释:
    -c 生成档案文件,创建打包文件
    -v 列出归档解档的过程
    -f 指定档案文件名称,后缀为.tar,必须放选项的最后
    -x 解档文件

压缩:在归档时多加一个选项-z(tar -zcvf),同时完成归档和压缩,压缩文件的后缀为.gzta,如果同时配合使用gzip,压缩后的文件后缀为.tar.gz(最常用的类型):

tar -zcvf 压缩文件名.tar.gz 目录/多个文件

解压缩:在解档时多加一个选项-z(tar -zxvf),同时完成解档和解压缩

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值