1.3 文件与目录

1. 最常见的文件命令

命令全称主要作用
pwdprint working directory显示当前所在目录
lslist列出当前目录下的文件和文件夹
cdchange directory切换目录
mkdirmake directory创建目录
cpcopy复制文件或目录
mvmove移动文件,或者给文件重命名
rmremove删除文件或目录

说是命令,其实就是英文的首字母缩写。然后哪为了增加不同的功能我们需要添加不同的参数。

结合参数更常见的用法:

bash
pwd                        # 显示当前所在目录
ls                         # 列出当前目录下的文件和文件夹
ls -l                      # 以详细格式显示文件信息
ls -a                      # 显示隐藏文件
ls -t                      # 按修改时间排序,新的排前面
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 两个功能,即以长格式显示所有文件(包括隐藏文件)

如果你忘了某个命令怎么用,也不用硬背,最直接的办法就是先查帮助:

bash
man ls        # 查看 ls 的完整手册
ls --help     # 查看命令的简要帮助
mkdir --help  # 查看 mkdir 常用参数
cp -h         # 有些命令也支持 -h,但不是所有命令都统一

其中:

  • man:更完整,像正式说明书
  • --help:更简短,适合先快速扫一眼
  • -h:有些命令支持,但不是通用标准,不能默认所有命令都有

现在还有一个很实用的办法,就是直接问 LLM。比如:

  • ls -a ls -l 分别是什么意思?
  • rm -r rmdir 有什么区别?

但要注意,LLM 适合帮你快速理解概念、解释参数、给出例子;真正执行前,尤其是删除、移动、覆盖文件这类操作,请再三确认。

2. 隐藏文件

Linux 里有一类文件和目录是以 . 开头的,例如:

  • .git
  • .ssh
  • .zshrc
  • .DS_Store

这类文件通常不会被普通的 ls 直接显示。

最常见的查看方式是:

bash
ls -a   # 显示所有文件,包括隐藏文件
ls -la  # 用详细格式显示所有文件,包括隐藏文件

另外你会看到:

  • .:当前目录
  • ..:上一级目录

它们也会在 ls -a 里出现,但这两个不是普通隐藏文件。

3. Tab 补全

是不是感觉敲命令很麻烦?前人早就想到了答案!自动补全。

在终端里输入一部分文件名、目录名或者命令后,按 Tab 键,shell 会尝试帮你自动补全。 默认的 shell 一般是 bash,zsh 的补全功能会更强大。

bash
cd proj<Tab>          # 自动补全目录名
cp INC<Tab> backup    # 自动补全文件名
ssh gp<Tab>           # 自动补全别名或命令

它的好处很直接:

  • 少打字
  • 少拼写错误
  • 文件路径很长时更省事

但也要注意:补全出来的内容不一定就是你真正想操作的对象,一定反复确认。

4. 对 rm 保持敬畏

rm 是最需要小心的命令之一。

bash
rm file    # 删除一个文件
rm -r dir  # 递归删除目录
rm -rf dir # 强制递归删除目录,危险

rm 没有回收站。删了就是真删,恢复成本很高。

所以

  • 尽量不要形成无脑 rm -rf 的习惯
  • 删除前先 pwd,再 ls
  • 再确认当前目录和目标路径

一个更稳的删除目录思路是:

  1. cd 进入目标目录
  2. rm -r * 删除内部内容
  3. rm -r .* 删除隐藏文件内容,如果有的话
  4. 确认目录已空
  5. 回到上一级后再 rmdir

这里的 rmdir 是 remove directory 的缩写,用来删除空目录。它和 rm -r 的区别在于:rmdir 只能删除已经清空的目录,所以更收敛一些,也更适合放在最后一步做确认性删除。

5. 磁盘空间怎么快速看

有些时候你会遇到这种情况:

  • 目录越来越大,不知道是谁占了空间
  • 任务突然写不进去文件
  • 服务器提示磁盘快满了

这时最常用的就是:

bash
du -sh . # 查看当前目录总大小
du -sh * # 查看各子目录大小
df -h    # 查看磁盘空间使用情况
  • -s:summary,只看汇总
  • -h:human readable,用更适合人看的单位显示

6. 软链接

软链接很像 Windows 里的快捷方式。

bash
ln -s /home/user/file.txt /home/user/links/mylink # 创建软链接

这里的:

  • ln:link,创建链接
  • -s:symbolic,表示创建的是软链接

它适合的场景包括:

  • 给很长的路径做一个短入口
  • 给常用目录建一个顺手的跳转点
  • 不复制文件本体,只建立引用