文件与目录操作

ls

列出目录内容。

常用参数

参数说明
-a显示所有文件,包括隐藏文件(以 . 开头)
-l长格式列出(权限、所有者、大小、时间)
-h以人类可读格式显示文件大小(如 1K、2M)
-t按修改时间排序( newest first)
-r反向排序
-S按文件大小排序
-R递归列出子目录
-1每行显示一个文件

示例

# 长格式列出当前目录
ls -lh

# 按修改时间倒序
ls -lt

# 显示所有文件(含隐藏文件)
ls -la

# 按文件大小倒序
ls -lSh

# 递归列出所有子目录
ls -R

# 只看文件名,每行一个
ls -1

cp

复制文件或目录。

常用参数

参数说明
-r / -R递归复制目录及其内容
-i目标文件已存在时提示确认
-f强制覆盖,不提示
-p保留文件属性(权限、时间戳、所有者)
-v显示复制的文件名
-a归档模式,等同于 -rpd(递归 + 保留属性 + 保留链接)

示例

# 复制文件
cp file.txt backup.txt

# 复制目录
cp -r ./src ./src_backup

# 保留文件属性复制
cp -p file.txt /tmp/file.txt

# 复制并显示进度
cp -rv ./src ./dest

# 归档复制(备份常用)
cp -a ./project ./project_backup

du

查看文件和目录的磁盘使用量。

常用参数

参数说明
-h以人类可读格式显示(如 1K、2M)
-s只显示汇总大小(不逐个列出子目录)
-d <深度>指定显示的目录深度
-a显示所有文件(不仅是目录)
-c最后显示总计
--exclude=<模式>排除匹配的文件或目录

示例

# 查看当前目录总大小
du -sh .

# 查看各子目录大小
du -h --max-depth=1

# 查看指定目录总大小
du -sh /var/log

# 显示所有文件大小并汇总
du -ahc ./project

# 排除 node_modules
du -sh --exclude=node_modules .

rm

删除文件或目录。

常用参数

参数说明
-r / -R递归删除目录及其内容
-f强制删除,不提示确认
-i删除前逐个确认
-v显示删除的文件名
-d删除空目录

示例

# 删除文件
rm file.txt

# 删除目录及其内容
rm -r ./build

# 强制递归删除(不提示,谨慎使用)
rm -rf ./node_modules

# 删除前确认
rm -i *.log

# 删除空目录
rm -d empty_folder

mkdir

创建目录。

常用参数

参数说明
-p递归创建父目录(不存在则自动创建)
-v显示创建的目录名
-m <权限>创建时指定权限(如 755)

示例

# 创建单个目录
mkdir project

# 递归创建多级目录
mkdir -p a/b/c

# 创建并指定权限
mkdir -m 755 public

mv

移动或重命名文件和目录。

常用参数

参数说明
-i目标已存在时提示确认
-f强制覆盖,不提示
-v显示移动的文件名
-n不覆盖已有文件

示例

# 重命名文件
mv old.txt new.txt

# 移动文件到目录
mv file.txt ./backup/

# 移动并重命名
mv file.txt ./backup/file_2026.txt

# 不覆盖已有文件
mv -n file.txt ./dest/

# 批量移动 .log 文件
mv *.log ./logs/

find

查找文件或目录。

常用参数

参数说明
-name <模式>按文件名匹配(支持通配符)
-iname <模式>按文件名匹配(忽略大小写)
-type <类型>按类型:f 文件、d 目录、l 链接
-size <大小>按大小(如 +100M 大于 100M)
-mtime <天>按修改时间(如 -7 最近 7 天内)
-exec <命令> {} \;对每个结果执行命令
-maxdepth <深度>限制搜索深度

示例

# 按名称查找
find . -name "*.log"

# 查找大于 100M 的文件
find . -size +100M

# 查找最近 7 天修改的文件
find . -mtime -7

# 查找并删除 .tmp 文件
find . -name "*.tmp" -delete

# 查找后执行命令
find . -name "*.js" -exec wc -l {} +

# 限制搜索深度
find . -maxdepth 2 -type d

ln

创建链接(硬链接或符号链接)。

常用参数

参数说明
-s创建符号链接(软链接)
-f目标已存在时强制覆盖
-v显示创建的链接名

示例

# 创建软链接(最常用)
ln -s /usr/local/node/bin/node /usr/bin/node

# 创建硬链接
ln file.txt file_hardlink.txt

# 强制更新软链接
ln -sf /new/target /usr/bin/link_name

nano

轻量、易用的终端文本编辑器,适合新手和临时快速编辑。

常用操作:

  • 打开文件:nano 文件名
  • 保存:Ctrl+O(然后回车确认)。
  • 退出:Ctrl+X
  • 剪切整行:Ctrl+K
  • 粘贴:Ctrl+U
  • 搜索:Ctrl+W,输入要查找的文本,回车。
  • 替换:Ctrl+\(反斜杠),按提示输入搜索和替换内容。

示例:

# 打开并编辑文件
nano /etc/hosts

# 使用 sudo 编辑受限文件
sudo nano /etc/hosts

vim

功能强大的终端文本编辑器,有较陡的学习曲线,但支持高效编辑与丰富扩展。

模式简介:

  • 普通模式(Normal):默认模式,用于移动、删除、复制、粘贴等操作。
  • 插入模式(Insert):用于输入文本,按 i 进入,Esc 返回普通模式。
  • 可视模式(Visual):用于选择文本,按 v 进入。
  • 命令模式(Command-line):以 : 开头输入保存、退出、替换等命令。

常用命令(在普通模式下):

  • 移动:h 左,j 下,k 上,l 右;w 下一个词,b 上一个词,0 行首,$ 行末。
  • 插入:i 在光标前插入,a 在光标后插入,o 在下方新行插入。
  • 保存/退出::w 保存,:q 退出,:wq 保存并退出,:q! 强制退出不保存。
  • 删除:x 删除当前字符,dd 删除整行,d$ 删除到行末。
  • 复制/粘贴(Yank/Paste):yy 复制整行,p 在下方粘贴,P 在上方粘贴。
  • 撤销/重做:u 撤销,Ctrl+R 重做。
  • 搜索:/文本 向下查找,?文本 向上查找,n 下一个,N 上一个。
  • 替换(在命令模式)::%s/old/new/g 全文替换,:%s/old/new/gc 替换并交互确认。

示例:

# 打开文件
vim README.md

# 在普通模式下跳到文件末尾并进入插入模式
G
i

# 保存并退出
:wq

小贴士:

  • 学习 vimtutor 可以快速上手:在终端运行 vimtutor
  • 初学者可用 nano 完成快速编辑,逐步学习 vim 的高效用法。