文件和目录操作

文件和目录操作

这一篇是 Linux 命令学习的重点。文件操作是使用 Linux 最频繁的操作,掌握了这些命令,你就已经能应付大部分日常工作了。

理解 Linux 文件系统

单用户与多用户

  • 单用户操作系统:一台计算机同一时间只能由一个用户使用。Windows XP 之前的版本都是单用户系统。
  • 多用户操作系统:一台计算机同一时间可以由多个用户使用。Unix 和 Linux 的设计初衷就是多用户系统。

Linux 的目录结构

Linux 没有盘符的概念,只有一个根目录 /,所有文件都在它下面,形成一棵树。

用户目录(家目录) 位于 /home/user,表示方式有两种:

1
2
/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