文件和目录操作
文件和目录操作
这一篇是 Linux 命令学习的重点。文件操作是使用 Linux 最频繁的操作,掌握了这些命令,你就已经能应付大部分日常工作了。
理解 Linux 文件系统
单用户与多用户
- 单用户操作系统:一台计算机同一时间只能由一个用户使用。Windows XP 之前的版本都是单用户系统。
- 多用户操作系统:一台计算机同一时间可以由多个用户使用。Unix 和 Linux 的设计初衷就是多用户系统。
Linux 的目录结构
Linux 没有盘符的概念,只有一个根目录 /,所有文件都在它下面,形成一棵树。
用户目录(家目录) 位于 /home/user,表示方式有两种:
1 | /home/user |
~ 是家目录的简写,~edu 表示用户 edu 的家目录。
Linux 主要目录速查表
| 目录 | 作用 |
|---|---|
/ |
根目录,一般只存放目录,所有东西从这里开始 |
/bin、/usr/bin |
可执行二进制文件目录,如 ls、tar、mv、cat 等常用命令 |
/boot |
系统启动文件,如内核文件 /boot/vmlinuz |
/dev |
设备文件目录,访问这里的文件相当于访问设备 |
/etc |
系统配置文件目录 |
/home |
用户家目录,新增用户时家目录都放在这里 |
/lib |
系统函数库目录 |
/mnt、/media |
光盘等外设的默认挂载点 |
/opt |
额外安装软件的目录 |
/proc |
内存中的数据,如系统核心、网络状态,不占磁盘空间 |
/root |
系统管理员 root 的家目录 |
/sbin |
系统管理员使用的命令,一般用户只能查看 |
/tmp |
临时文件目录,任何人都可以访问 |
/usr |
应用程序存放目录 |
/var |
经常变化的文件,如日志 /var/log |
一切皆文件
Unix/Linux 的一个核心思想是「一切皆文件」。数据文件、程序文件、设备文件(LCD、触摸屏、鼠标)、网络文件(socket)等都被抽象为文件,用统一的方式管理。
Linux 中常用的文件类型有 5 种:
- 普通文件:存放数据、程序等信息,包括文本文件、数据文件、可执行程序等
- 目录文件:Linux 把目录也看成一种特殊的文件,构成文件系统的树型结构
- 设备文件:把每个设备映射成一个文件,存放在
/dev目录 - 管道文件:用于进程间通信
- 链接文件:类似于 Windows 下的快捷方式
查看目录内容:ls
ls 是 list 的简写,列出目录内容,是最常用的命令之一。
Linux 文件和目录的特点
- 文件名最长可以有 256 个字符
- 以
.开头的文件是隐藏文件,需要用-a参数才能显示 .代表当前目录,..代表上一级目录
ls 常用选项
| 参数 | 含义 |
|---|---|
-a |
显示所有文件,包括隐藏文件 |
-l |
以列表方式显示详细信息 |
-h |
配合 -l 以人性化方式显示文件大小 |
通配符
| 通配符 | 含义 |
|---|---|
* |
代表任意个数字符 |
? |
代表任意一个字符 |
[abc] |
匹配 a、b、c 中的任意一个 |
[a-f] |
匹配 a 到 f 范围内的任意一个字符 |
例如 ls *.txt 会列出所有以 .txt 结尾的文件。
切换目录:cd
cd 是 change directory 的简写,更改当前工作目录。
注意:Linux 所有的目录和文件名都是大小写敏感的。
| 命令 | 含义 |
|---|---|
cd |
切换到当前用户的主目录 |
cd ~ |
切换到当前用户的主目录 |
cd . |
保持在当前目录不变 |
cd .. |
切换到上级目录 |
cd - |
在最近两次工作目录之间来回切换 |
相对路径和绝对路径
- 相对路径:输入路径时最前面不是
/或~,表示相对当前目录的位置 - 绝对路径:输入路径时最前面是
/或~,表示从根目录或家目录开始的具体位置
创建和删除
touch 创建文件
- 如果文件不存在,创建一个空白文件
- 如果文件已存在,修改文件的末次修改日期
mkdir 创建目录
| 选项 | 含义 |
|---|---|
-p |
可以递归创建目录 |
新建目录的名称不能与当前目录中已有的目录或文件同名。
rm 删除
警告:使用
rm命令要小心,文件删除后不能恢复!
| 选项 | 含义 |
|---|---|
-f |
强制删除,忽略不存在的文件,无需提示 |
-r |
递归删除目录下的内容,删除文件夹时必须加此参数 |
复制和移动
| 命令 | 对应英文 | 作用 |
|---|---|---|
tree [目录名] |
tree | 以树状图列出文件目录结构 |
cp 源文件 目标文件 |
copy | 复制文件或目录 |
mv 源文件 目标文件 |
move | 移动文件或目录,也可用于重命名 |
cp 复制
| 选项 | 含义 |
|---|---|
-i |
覆盖文件前提示 |
-r |
递归复制目录下的所有子目录和文件 |
mv 移动/重命名
mv 既可以移动文件,也可以给文件或目录重命名。如果目标是一个已存在的目录,就是移动;如果目标是一个新名字,就是重命名。
查看文件内容
| 命令 | 对应英文 | 作用 |
|---|---|---|
cat 文件名 |
concatenate | 查看文件内容、创建文件、合并文件 |
more 文件名 |
more | 分屏显示文件内容 |
grep 搜索文本 文件名 |
grep | 搜索文本文件内容 |
cat
cat 会一次显示所有内容,适合查看内容较少的文本文件。
| 选项 | 含义 |
|---|---|
-b |
对非空输出行编号 |
-n |
对所有行编号 |
more / less
more 分屏显示文件内容,适合查看内容较多的文件。按空格翻下一页,按 q 退出。
less 功能更强,支持上下翻页:按 j 向下、k 向上,按 / 搜索。
grep 搜索
grep 是强大的文本搜索工具,允许对文本文件进行模式查找。
| 选项 | 含义 |
|---|---|
-n |
显示匹配行及行号 |
-v |
显示不包含匹配文本的所有行 |
-i |
忽略大小写 |
常用的模式查找:
| 参数 | 含义 |
|---|---|
^a |
行首,搜寻以 a 开头的行 |
ke$ |
行尾,搜寻以 ke 结束的行 |
其他常用操作
echo 输出文字
echo 会在终端中显示参数指定的文字,通常和重定向联合使用。
重定向 > 和 >>
Linux 允许将命令执行结果重定向到一个文件:
>表示输出,会覆盖文件原有内容>>表示追加,会将内容追加到已有文件末尾
例如 echo "hello" > test.txt 会把 hello 写入 test.txt。
管道 |
管道允许将一个命令的输出作为另一个命令的输入。可以理解为现实中的管子,一头塞东西进去,另一头取出来。
1 | ls -l | grep "txt" |
上面的命令会把 ls -l 的结果传给 grep,筛选出包含 txt 的行。常用的管道命令有 more(分屏显示)和 grep(查询指定文本)。
小结
这一篇我们学习了 Linux 的文件系统结构和文件操作命令。下一篇学习远程管理命令,包括关机重启、网络配置和 SSH 远程登录。
上一篇:终端命令入门
下一篇:远程管理与 SSH