Linux学习——浅入文件管理(二)

发布时间:2026/10/29 10:21:02
Linux学习——浅入文件管理(二)

文件系统层次结构梳理

在Linux中,文件系统可以被看作是一颗颠倒的树,树根在顶部,下方为各级文件目录及子目录的分支。

根目录(/)整个文件系统的起点,所有其他目录均挂载在其下。例如,硬盘分区、USB设备等通过挂载到/mnt或media等子目录接入系统

其他重要目录如下

/boot开始启动过程所需的文件

/dev供系统用于访问硬件的特殊设备文件

/etc特定于系统的配置文件

/home供普通用户存储其个人数据和配置文件的主目录

/root管理超级用户root的主目录

/run主要用来存放系统运行时产生的数据

/tmp供临时文件使用的全局可写空间,10天内未访问,更改或者修改的文件将自动从该目录中删除。

/usr安装的软件,共享的库(包括文件)和只读程序数据。

/usr/bin用户命令

/usr/sbin系统管理命令

/usr/local本地自定义软件

文件目录相关操作

pwd显示当前目录的完整路径

cd用来更改shell的当前工作目录,若后面未跟参数,则切换至你的主目录

cd -可以进入到用户进入当前目录之前的上一个目录

cd .进入当前目录,省去了书写绝对路径的必要

cd..进入上一级目录,而不必知道上一级目录的确切名称

绝对路径为完整的路径名称,而相对路径为对当前目录下属目录的访问路径,相对路径不以/开头

如系统消息日志文件的绝对路径为/var/log/messages当我们在var目录中时我们要切换访问其下属目录即可直接输入cd log/messages即可。

ls命令用来显示文件的属性,常用的选项有- l(长列表模式),- a(包含隐藏文件在内的所有文件),- R(递归模式,包含所有子目录的内容)

touch可将文件的时间戳更新为当前的日期和时间,而不进行其他修改,此命令还可以创建空文件,touch命令加上不存在的文件名会导致创建该文件。

~可以作为一个参数与其他命令组合使用,以为了更好地与主目录进行交互。

命令行文件管理相关操作

创建目录操作:mkdir在你的当前目录下进行目录的创建

mkdir -p 父级目录名/子目录1/子目录2/子目录3

cp可用来复制文件,在当前目录或指定目录中创建新文件。它也可将多个文件复制到某一目录中,注意,如果目标文件已经存在,则会直接覆盖它。

cp -r可用来复制及其子目录

cp在复制多个文件时,最后一个参数必须为目录。默认情况下, cp 不复制目录,而会忽略它们。

如 $ cp thesis_chapter1 thesis_chapter2thesis projectx末尾的thesis和projectx为目录,thesis目录复制失败,但是thesis_chapter1 thesis_chapter2都复制成功进入了projectx目录下。

mv命令可将文件从一个位置移动到另一个位置,如果位置相同,则实际上是重命名。

删除文件和目录的相关操作

rm命令删除文件

rm -r递归删除

rm -rf强制递归删除

rmdir仅仅删除空目录

注意,rm没有取消删除的功能,也没有回收站,数据宝贵,请谨慎操作!

硬链接与软链接

有两种方法可以做到创建指向同一文件的多个名称,那就是硬链接和软连接

硬链接

新的硬链接与原始文件的一切属性和内容完全相同,并同步更新。

使用ln命令为现有文件创建新的硬链接

例 $ ln newfile.txt /tmp/newfile-hlink2.txt

这样就创建了一个对newfile-hlink2.txt的硬链接

只有两个文件都位于一个文件系统时,才可以使用硬链接

ls -l可以显示硬链接数量

ls -il filename可以查看文件的inode(索引节点编号),如果两个文件具有相同的inode,则表示它们二者硬链接彼此,同时,即使原始文件被删除,只要还存在一个硬链接,则该文件的内容依然可用,只有删除了最后一个硬链接,才表示该数据在存储中删除。

软链接

ln -s可以创建软链接,也称为符号链接,软链接不是常规文件,而是指向现有文件或者目录的特殊类型的文件。

其相比硬链接的有一定的优势:

1,可以链接位于不同文件系统上的两个文件

2,可以指向目录或者特殊文件,而不局限于常规文件

但是,当原始文件被删除后,软链接依然会指向该文件,指向缺失文件的软链接被称为“悬挂的软链接”。

二者的具体作用和关系可以见笔者的另一篇文章:你真的理解了硬链接和软链接吗?_symlink 是硬链接吗-CSDN博客

命令行扩展

常用扩展

波浪符扩展

~可以匹配当前用户的主目录

大括号符{}扩展

同时其可以嵌套使用,比如echo file{a{1,2},b}.txt

结果为filea1.txt filea2.txt fileb.txt

变量扩展

通过变量,可以从命令行或在shell 脚本内轻松访问和修改存储的数据

例 $ USERNAME=operator

$ echo $USERNAME

结果为

operator

命令替换

$(command)表示命令替换

例如 $ echo today is $(date +%A)

结果为

Today is Wednesday

‘command’也可以表示命令替换,但不推荐使用

防止参数被扩展

反斜杠(\) 是Bash shell 中的转义字符,可以防止紧随其后的字符被扩展

如果要保护较长的字符串,则使用单引号 (‘) 或双引号 (“) 来括起字符串, 它们的作用略有不同,单引号将阻止所有shell 扩展,双引号则阻止大部 分shell 扩展

双引号可以阻止通配和shell 扩展,但依然允许命令和变量替换

单引号则可以按字面解译所有的文本