1.3 文件与目录管理
1. 最常见的文件命令
| 命令 | 全称 | 主要作用 |
|---|---|---|
pwd | print working directory | 显示当前所在目录 |
ls | list | 列出当前目录下的文件和文件夹 |
cd | change directory | 切换目录 |
mkdir | make directory | 创建目录 |
cp | copy | 复制文件或目录 |
mv | move | 移动文件,或者给文件重命名 |
rm | remove | 删除文件或目录 |
说是命令,其实就是英文的首字母缩写。然后哪为了增加不同的功能我们需要添加不同的参数。
结合参数更常见的用法:
pwd # 显示当前所在目录
ls # 列出当前目录下的文件和文件夹
ls -l # 以详细格式显示文件信息
ls -a # 显示隐藏文件
ls -t # 按修改时间排序,新的排前面
ls -r # 反序显示
ls -R # 递归显示子目录内容
cd .. # 切换到上一级目录
cd - # 切换回上一次所在的目录
cd ~ # 切换到用户家目录
# 在 Linux 系统中 . 表示本目录 .. 表示上一级目录 ~ 表示 HOME 目录
cd / # 回到根目录
cd relative/path # 进入相对路径
cd /absolute/path # 进入绝对路径
mkdir test # 创建一个名为 test 的目录
mkdir -p project/run1/logs # 递归创建多级目录
cp input.in backup.in # 复制文件并另存为 backup.in
cp -r old_dir new_dir # 递归复制整个目录
mv file1 file2 # 将 file1 重命名为 file2
mv *.txt results/ # 将当前目录下所有 txt 文件移动到 results 目录这里的参数是可以叠加使用的,比如
ls -la相当于同时启用了-l和-a两个功能,即以长格式显示所有文件(包括隐藏文件)
如果你忘了某个命令怎么用,也不用硬背,最直接的办法就是先查帮助:
man ls # 查看 ls 的完整手册
ls --help # 查看命令的简要帮助
mkdir --help # 查看 mkdir 常用参数
cp -h # 有些命令也支持 -h,但不是所有命令都统一你可以先这样理解:
man:更完整,像正式说明书--help:更简短,适合先快速扫一眼-h:有些命令支持,但不是通用标准,不能默认所有命令都有
现在还有一个很实用的办法,就是直接问 LLM。比如:
cp 和 mv 有什么区别?ls -a 和 ls -l 分别是什么意思?rm -r 和 rmdir 有什么区别?
但要注意,LLM 适合帮你快速理解概念、解释参数、给出例子;真正执行前,尤其是删除、移动、覆盖文件这类操作,最好还是结合 man 或 --help 再确认一下。
2. 隐藏文件
Linux 里有一类文件和目录是以 . 开头的,例如:
.git.ssh.zshrc.DS_Store
这类文件通常不会被普通的 ls 直接显示。
最常见的查看方式是:
ls -a # 显示所有文件,包括隐藏文件
ls -la # 用详细格式显示所有文件,包括隐藏文件另外你会看到:
.:当前目录..:上一级目录
它们也会在 ls -a 里出现,但这两个不是普通隐藏文件。
3. 文件名、后缀和脚本
很多同学刚接触 Linux 时,会下意识地沿用 Windows 的习惯,觉得文件类型主要靠后缀区分,比如:
.txt是文本文件.sh是 shell 脚本.py是 Python 脚本
这样理解在日常使用里不算错,因为后缀确实能帮助人快速判断文件大概是干什么的。
但在 Linux 里,更准确的说法是:
- 文件名只是文件名
- 后缀更多是给人看的
- 系统并不是只靠后缀判断一个文件能不能执行
比如:
run.shscript.pyPOSCAROUTCAR
它们本质上都只是文件。
所谓“脚本”,通常也可以先理解成一种文本文件。里面写了一串命令,交给某个解释器去执行。
比如:
bash run.shpython test.py
真正决定怎么执行它的,通常是这些东西:
- 文件内容本身
- 你是用什么命令去执行它
- 文件开头有没有类似
#!/bin/bash、#!/usr/bin/env python这样的解释器声明 - 它有没有执行权限
所以这里先记一句最重要的话:
在 Linux 里,后缀主要是给人看的,不是系统判断文件类型和执行方式的唯一依据。
你后面看到没有后缀的输入文件、输出文件、配置文件时,就不会太困惑。
4. Tab 补全
是不是感觉敲命令很麻烦?前人早就想到了答案!自动补全。
在终端里输入一部分文件名、目录名或者命令后,按 Tab 键,shell 会尝试帮你自动补全。
默认的 shell 一般是 bash,zsh 的补全功能会更强大。
cd proj<Tab> # 自动补全目录名
cp INC<Tab> backup # 自动补全文件名
ssh gp<Tab> # 自动补全别名或命令
它的好处很直接:
- 少打字
- 少拼写错误
- 文件路径很长时更省事
但也要注意:补全出来的内容不一定就是你真正想操作的对象。
5. 对 rm 保持敬畏
rm 是最需要小心的命令之一。
rm file # 删除一个文件
rm -r dir # 递归删除目录
rm -rf dir # 强制递归删除目录,危险rm 没有回收站。删了就是真删,恢复成本很高。
所以这里给一个很实际的建议:
- 尽量不要形成无脑
rm -rf的习惯 - 删除前先
pwd - 再
ls - 再确认当前目录和目标路径
一个更稳的删除目录思路是:
- 先
cd进入目标目录 - 用
rm -r *删除内部内容 - 用
rm -r .*删除隐藏文件内容,如果有的话 - 确认目录已空
- 回到上一级后再
rmdir
这里的 rmdir 是 remove directory 的缩写,用来删除空目录。它和 rm -r 的区别在于:rmdir 只能删除已经清空的目录,所以更收敛一些,也更适合放在最后一步做确认性删除。
6. 磁盘空间怎么快速看
很多时候你会遇到这种情况:
- 目录越来越大,不知道是谁占了空间
- 任务突然写不进去文件
- 服务器提示磁盘快满了
这时最常用的就是:
du -sh . # 查看当前目录总大小
du -sh * # 查看各子目录大小
df -h # 查看磁盘空间使用情况可以先这样理解:
du:更关心“某个目录到底占了多大”df:更关心“整块磁盘还剩多少空间”
这里的参数:
-s:summary,只看汇总-h:human readable,用更适合人看的单位显示
所以:
du -sh .适合先看当前目录总大小du -sh *适合看哪个子目录最占空间df -h适合先判断是不是整块磁盘快满了
7. 软链接
软链接很像 Windows 里的快捷方式。
ln -s /home/user/file.txt /home/user/links/mylink # 创建软链接这里的:
ln:link,创建链接-s:symbolic,表示创建的是软链接
你可以先把它理解成:
- 不复制文件本体
- 只创建一个指向原文件的入口
它适合的场景包括:
- 给很长的路径做一个短入口
- 给常用目录建一个顺手的跳转点
- 不复制文件本体,只建立引用
所以对新手来说,最重要的不是背更多链接类型,而是先记住:
ln -s就是在 Linux 里创建“快捷方式”。