文件系统

目录与路径

符号 含义
/ 根目录
/bin 可执行文件
/home 用户的主目录

特殊目录符号:

目录 释义
. 代表当前目录
.. 代表上层目录
- 代表上一个工作目录
~ 代表当前用户的主目录
~accountname 代表该name账户的主目录

PATH环境变量

当前工作目录下的命令和程序可以直接在bash中执行,其他目录下的命令和程序无法执行。而PATH中的目录下的命令和程序可以在任何目录下执行。当执行命令时,会先在当前目录中寻找,如果存在即执行命令,如果不存在,则会在PATH中寻找并执行第一个相匹配的命令。

1
2
3
4
5
# 显示环境变量中的内容,每个路径用:隔开
echo $PATH # $与PATH间没有空格

# 添加路径到PATH环境变量
export PATH=命令行路径:$PATH

目录管理

显示当前工作目录:

1
2
3
4
5
# pwd显示当前工作目录(print working directory)
pwd

# 用help查看pwd命令的帮助信息
help pwd

查看目录与文件:

1
2
3
4
5
6
7
8
9
10
11
# -l查看文件属性
ls -l

# -h以方便阅读的单位显示文件尺寸
ls -lh

# -S按照文件大小降序排列
ls -lS

# -R可以递归地显示所有路径
ls -R

常用目录操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 新建目录
mkdir 文件名

# 用-p创建多级目录
mkdir -p 路径

# 复制目录
cp -r 源路径 目标路径

# 移动目录
mv 源路径 目标路径

# 删除目录,加-r递归删除目录中的内容
rm -r 路径

文件管理

文件类型:

普通文件类型
Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
目录文件
就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]
块设备文件
块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
字符设备
字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
套接字文件
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型
管道文件
FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
链接文件
类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]

管道

管道是一系列将标准输入输出连接起来的进程

匿名管道: 用符号“|”表示,用来连接多个命令,将前一个命令的输出导入第二个命令作为输入

1
2
# 查看ls中包含某个关键词的文件
ls -l | grep 关键词

命名管道:

1
2
# 用mkfifo命令创建命名管道(FIFO)
mkfifo 管道文件名

新建文件

  • touch:文件存在时,修改文件访问时间为当前时间,否则创建该文件
  • 用文本编辑器创建文件
  • 重定向方式创建文件:1)“>”操作符:覆盖源文件中已有内容 2)“>>”操作符:将新内容追加到源文件内容的后面
命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

复制、移动、删除文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 使用cp命令复制文件
cp 文件名 新文件名

# 用cp命令创建快捷方式(符号链接)
cp -s 文件名 快捷方式名

# 使用cp命令-p选项复制文件的完整属性
cp -p 文件名 新文件名

# 使用mv命令移动文件
mv 文件名 指定路径

# 使用mv命令-i选项移动文件时会提示是否覆盖
mv -i 文件名 指定路径

# 使用 mv命令-b选项移动文件时会自动备份重名文件之后直接移动
mv -b 文件名 指定路径 # 备份

搜索文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 使用which命令搜索PATH环境变量中包含的命令的具体路径
which ls

# 使用locate命令查找文件路径,会显示含该关键词的所有文件
locate 关键词

# locate -c输出查找到的文件的个数
locate -c 关键词

# locate -l输出查找到的前n个文档
locate -l n 关键词

# find查找最近三天修改过的文件
find ~ -mtime -3

# find查找某路径下属于某用户的所有文件
find 路径 -user 用户名

# 根据文件名查找文件路径
find -name 文件名 # 需要输入完整文件名

# 查找当前目录下所有管道类型文件
find -type p

显示文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# cat拼接两个文件
cat 第一个文件 第二个文件 > 输出的文件 # 用重定向输出到指定文件,默认是输出到终端

# 当cat一个文件时,则会输出文件内容
cat 文件名

# cat -n显示文件行号
cat -n 文件名

# more命令
more 文件名

# head命令
head -n 5 文件名 # 输出文件前5行
more -c 100 文件名 # 输出文件前100个字符

# tail命令
tail -n 5 文件名 # 输出后5行
tail -c +115 文件名 # 输出115行至最后

# less命令
less 文件名

# grep命令可以实现关键词匹配
grep "关键词" 文件名

文件压缩与备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 使用gzip进行文件压缩
gzip 文件名

# gzip -c:将压缩的内容输出到屏幕上,源文件不变,可以通过重定向处理输出的内容

# 使用gzip解压缩
gzip -d 文件名

# bzip2 同gzip

# tar命令可以将多个文件合并为一个压缩包
-c:新建打包文件
-t:查看打包文件中包含哪些文件
-x:解包文件包
-j:通过bzip2的支持进行压缩/解压缩
-z:通过gzip的支持进行压缩/解压缩
-C:指定解包目标路径
-p:打包过程中保留源文件的属性和权限
-v:输出打包过程中正在处理的文件名

文件系统
http://example.com/2024/11/27/Notes/Linux学习/文件系统/
许可协议