基础文件操作命令
1.cp : 复制文件 / 目录
基本格式:cp <参数> <源路径> <目的路径>
功能:==复制==文件或目录到指定位置
常用参数:
-r:递归复制目录(必须加,否则无法复制目录)-i:覆盖前提示(避免误操作)-v:显示复制过程(可视化操作)
实例:
cp file.txt /home/user/ # 复制file.txt到/home/user目录
cp -r docs/ /backup/ # 递归复制docs目录到/backup路径下
cp -iv *.txt /tmp/ # 复制所有txt文件到/tmp,覆盖前提示并显示过程
2.ls : 列出目录内容
基本格式:ls <参数> <路径>
功能:查看当前目录或指定目录的文件 / 目录
常用参数
-a:显示所有文件(包括隐藏文件,以.开头的文件)-l:以长格式显示(权限、所有者、大小、修改时间等)-h:与-l配合,以人类可读格式显示大小(如 K、M、G)-t:按修改时间排序(最新的在前)-r:反向排序(如配合-t, oldest 在前)
示例:
ls -a # 显示所有文件(包括.和..)
ls -lh # 长格式显示,大小以K/M/G显示
ls -ltr /etc/ # 按修改时间反向排序显示/etc目录内容
注:
ll是ls -l的别名(大部分系统默认配置),更简洁地显示详细信息。
3.cd : 切换目录
功能:切换当前工作目录
特殊路径符号:
.:当前目录(如cp ./file.txt ../复制当前目录的 file.txt 到上一级)..:上一级目录/:系统根目录(所有目录的起点)~:当前用户的主目录(如/home/用户名)-:上一次所在的目录(快速切换回上一个工作目录)
示例:
cd / #切换到系统根目录
cd ~ #(波浪号 tilde) #切换到用户主目录
cd ~/Downloads # 切换到用户主目录下的Downloads
cd usr 切换到该目录下usr目录
cd ../ #切换到上一层目录
cd ../../var/log# 切换上两级目录
cd - #(减号) 切换到上一个所在目录(如已经从A到B,执行此命令后回到A)
4.mkdir : 创建新目录
功能:创建新目录
常用参数:
-p:递归创建多级目录(父目录不存在时自动创建)-v:显示创建过程
示例:
mkdir notes # 创建notes目录
mkdir -p data/logs # 同时创建data和其子目录logs(如果不存在)
mkdir -v docs/{txt,pdf} # 一次性创建docs下的txt和pdf子目录(花括号展开)
5.touch : 创建文件 / 更新时间戳
功能:
- 创建==空文件==(如果文件不存在)
- 更新已有文件的访问时间和修改时间(不改变内容)
示例:
touch readme.txt # 创建空文件readme.txt
touch file1.txt file2.txt # 同时创建多个空文件
touch -d "2025-01-01" old.txt # 修改old.txt的时间戳为2023年1月1日
6.rm : 删除文件 / 目录
功能:删除文件或目录(注意:Linux 中删除通常不可恢复,谨慎操作)
常用参数:
-r:==递归==删除目录(必须加,否则无法删除目录)-f:强制删除(不提示,即使文件只读)-i:删除前提示(比默认更安全)-v:显示删除过程
示例:
rm temp.txt # 删除文件temp.txt(默认可能提示)
rm -rf old_dir/ # 强制递归删除old_dir目录及所有内容(慎用!)
rm -i *.log # 删除所有log文件,每个都提示确认
7.mv : 移动 / 重命名文件 / 目录
功能:
- 移动文件 / 目录到指定位置
- 重命名文件 / 目录(==源和目标在同一目录时==)
常用参数:
-i:覆盖前提示-v:显示移动过程
示例:
mv report.txt /home/user/docs/ # 移动report.txt到docs目录
mv oldname.txt newname.txt # 重命名文件(同一目录)
mv -i file.txt /tmp/ # 移动到/tmp,若存在则提示是否覆盖
8.pwd : 显示当前工作目录
功能:打印当前所在目录的绝对路径(从根目录/开始的完整路径)
示例:
pwd # 输出如:/home/user/projects
9.tail : 实时输出文件的最后的内容
功能:显示文件的最后几行,默认 10 行
常用参数:
-n <数字>:指定显示的行数(如-n 20显示最后 20 行)-f:实时跟踪文件更新(常用于查看日志,按Ctrl+C退出)
示例:
tail /var/log/syslog # 显示syslog的最后10行
tail -n 5 error.log # 显示error.log的最后5行
tail -100f access.log # 实时跟踪access.log的新增100行内容(如网站访问日志)
10.cat : 查看/合并文件内容
功能:
- 查看文件全部内容(适合小文件)
- 合并多个文件内容到新文件 常用参数:
-n:显示行号-b:只给非空行显示行号
示例:
cat README.md # 查看README.md的全部内容
cat -n script.sh # 查看script.sh并显示行号
cat part1.txt part2.txt > all.txt # 合并part1和part2到all.txt
11.find : 查找文件 / 目录
功能:在指定目录下按条件查找文件或目录
基本格式: find <查找路径> <条件>
常用条件:
-name <文件名>:按名称查找(支持通配符*)-type f/d:查找文件(f)或目录(d)-size <大小>:按大小查找(如+10M大于 10MB,-1k小于 1KB)-mtime <天数>:按修改时间查找(如-77 天内修改的)
示例:
find /home -name "*.pdf" # 在/home下查找所有pdf文件
find /var/log -type f -mtime -1 # 在/var/log下查找1天内修改的文件
find . -size +1G # 在当前目录查找大于1GB的文件
12.grep :文本搜索
功能:在文件或命令输出中搜索匹配指定模式的内容
常用参数:
-i:忽略大小写-n:显示匹配行的行号-r:递归搜索目录下的所有文件-v:反向匹配(显示不包含模式的行)
示例:
grep "error" /var/log/syslog # 在syslog中搜索包含"error"的行
grep -in "warning" *.log # 在所有log文件中忽略大小写搜索"warning"并显示行号
grep -r "config" /etc/ # 递归搜索/etc目录下所有包含"config"的文件内容
13.head : 显示文件头部
功能:显示文件的前几行,默认 10 行
常用参数:
-n <数字>:指定显示的行数
示例:
head /etc/passwd # 显示passwd的前10行
head -n 3 README.md # 显示README.md的前3行
14.which : 查找命令路径
功能:显示系统中可执行命令的绝对路径(基于PATH环境变量)
示例:
which python3 # 输出如:/usr/bin/python3
which ls # 输出如:/bin/ls
15.ln : 创建链接
功能:创建文件 / 目录的链接(类似 Windows 的快捷方式,但更灵活)
两种链接类型:
- 硬链接(默认):与原文件共享 inode,删除原文件不影响硬链接(不能跨文件系统,不能链接目录)
- ** 软链接(符号链接,==-s==参数)** :类似快捷方式,指向原文件路径,删除原文件后软链接失效(可跨文件系统,可链接目录)
示例:
ln file.txt link.txt # 创建file.txt的硬链接link.txt
ln -s /home/user/docs doc_link # 创建docs目录的软链接doc_link
16.clear : 清除屏幕
clear #清空终端屏幕(快捷键`Ctrl+L`效果相同)
17.data : 显示/设置系统时间
功能:显示当前系统时间(date "+%Y-%m-%d %H:%M:%S" 格式化输出)
date #输出如Tue May 24 09:29:43 CST 2025
date '+%c' #输出如Tue 24 May 2025 09:30:03 AM CST
# date '+%D' //显示完整的时间 05/24/25
# date '+%x' //显示数字日期 05/24/2025
# date '+%T' //显示日期,年份用四位数表示
# date '+%X' //显示24小时的格式 09:31:31 AM
18.history : 显示命令历史
基本格式:history [选项] [参数]
功能:显示命令历史记录(!n 重复执行第 n 条命令,!! 重复执行上一条命令)
history #查看完整历史记录
history 10 # 显示最近10条命令
history -c #清除所有历史记录
history -d 100 # 删除特定历史记录(例如删除第100条)
- 快速执行历史命令
!n # 执行历史记录中第n条命令
!! # 执行上一条命令
!1024 # 执行历史记录中编号为1024的命令
!string # 执行最近一条以string开头的命令
!vim # 执行最近一条以vim开头的命令
-
搜索历史命令 使用
Ctrl+R可以反向搜索历史命令,输入部分关键词即可找到匹配的命令。 -
历史命令替换 将上一条命令中的old替换为new后执行
格式:^ old ^ new
$ cat file1.txt
$ ^file1^file2 # 将上一条命令中的file1替换为file2,相当于执行 cat file2.txt
- 显示命令时间戳
在 ~/.bashrc 中添加以下配置可以显示命令执行时间:
export HISTTIMEFORMAT="%F %T "
然后执行:
source ~/.bashrc
之后 history 命令会显示每条命令的执行时间。
19.--help : 显示帮助
功能:查看命令帮助(如 cp --help)
20.man : 查看命令手册
功能:查看命令手册,"manual" 单词的缩写
基本格式:man [选项] [节号] 命令/主题
常见的选项:
-f:显示与指定关键字相关的手册页面。-k:搜索手册页中与关键字匹配的条目。-a:显示所有匹配的手册页面。-w:仅显示手册页的位置,而不显示其内容。
常见的节号包括:
- 1:用户命令
- 2:系统调用
- 3:C库函数
- 4:设备和特殊文件
- 5:文件格式和约定
- 6:游戏和演示
- 7:杂项
- 8:系统管理命令
示例:
man ls #查看 ls 命令的手册页面(按`q`退出)
man 3 printf #查看 C 语言标准库函数 printf 的手册页面
man -k keyword #搜索包含特定关键字的手册页面条目,可以使用 -k 选项
21.type : 查看命令类型
type 命令用于判断一个 “命令” 的类型(如内置命令、外部可执行文件、别名等),帮助用户理解命令的执行机制。
核心功能:
识别命令的来源类型,常见类型包括:
- alias:命令别名(如
ll通常是ls -l的别名)。 - builtin:Shell 内置命令(由 Bash/Zsh 等 Shell 直接提供,无需调用外部文件)。
- file:外部可执行文件(存放在
/bin、/usr/bin等目录下的独立程序)。 - function:Shell 函数(用户或系统定义的自定义函数)。
常用语法:type [选项] 命令名
关键选项:
-a:显示所有可能的命令类型(若一个命令同时是别名和外部文件,会全部列出)。-t:仅输出命令类型(简洁模式,只返回alias/builtin/file/function中的一种)。
实例:
# 查看 "ll" 是什么类型(通常是别名)
type ll
# 输出:ll is aliased to `ls -l --color=auto'
# 查看 "cd" 是什么类型(Shell 内置命令)
type cd
# 输出:cd is a shell builtin
# 查看 "ls" 的所有可能类型
type -a ls
# 输出:
# ls is aliased to `ls --color=auto'
# ls is /usr/bin/ls
# 仅输出 "pwd" 的类型
type -t pwd
# 输出:builtin
22.file : 识别文件类型
file 命令通过分析文件的头部内容(而非文件名后缀),判断文件的真实类型(如文本、二进制、压缩包、图片等),避免被虚假后缀误导。
核心功能:
- 识别普通文件(文本、二进制可执行文件、脚本等)。
- 识别特殊文件(目录、设备文件、管道等)。
- 识别压缩包、图片、音频、视频等多媒体文件。
常用语法:file [选项] 文件名/目录名
关键选项:
-b:简化输出(不显示文件名,只显示文件类型描述)。-L:跟随符号链接(若目标是软链接,分析链接指向的真实文件)。-z:查看压缩包内文件类型(对 zip、gzip 等压缩包,尝试分析内部文件类型)。
实例:
# 识别文本文件(即使后缀是 .txt,也会确认类型)
file test.txt
# 输出:test.txt: ASCII text
# 识别二进制可执行文件
file /bin/ls
# 输出:/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked...
# 简化输出(只看类型)
file -b image.png
# 输出:PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
# 跟随软链接分析真实文件
ln -s test.txt link.txt # 创建软链接
file link.txt # 不跟随:link.txt: symbolic link to `test.txt'
file -L link.txt # 跟随:link.txt: ASCII text
# 查看压缩包内文件类型
file -z archive.zip
# 输出:archive.zip: Zip archive data, at least v2.0 to extract, contains:
# archive.zip/notes.txt: ASCII text
# archive.zip/photo.jpg: JPEG image data, JFIF standard 1.01
23.less :分页查看文件内容
less 是一款增强型分页查看工具,用于浏览大文件(避免一次性加载全部内容导致内存占用过高),支持前后滚动、搜索、跳转等功能,比 more 更灵活。
核心优势:
- 支持向前 / 向后滚动(
more仅支持向前滚动)。 - 支持搜索功能(正向、反向搜索)。
- 不加载整个文件,打开大文件速度快。
- 支持直接跳转到文件开头 / 结尾。
常用语法:
less [选项] 文件名 或通过管道接收其他命令的输出(如查看日志) 命令 | less
关键选项:
-N:显示行号(方便定位内容)。-S:禁止换行(长行内容不自动换行,横向滚动查看)。-i:搜索时忽略大小写(默认区分大小写)。
常用交互操作(进入 less 后使用)
| 操作键 | 功能描述 |
|---|---|
Enter | 向下滚动 1 行 |
Space | 向下滚动 1 屏 |
b | 向上滚动 1 屏 |
↑/↓ | 上下滚动 1 行 |
Home/End | 跳转到文件开头 / 结尾 |
/关键词 | 正向搜索(按 n 找下一个,N 找上一个) |
?关键词 | 反向搜索(按 n 找上一个,N 找下一个) |
q | 退出 less |
v | 用系统默认编辑器打开当前文件 |
实例:
# 显示行号查看大日志文件
less -N /var/log/syslog
# 查看长文本时禁止换行
less -S long_text.txt
# 管道接收 ls 输出并分页查看
ls -l /usr/bin | less -N
24.more : 基础分页查看工具
more 是 Linux 中最基础的分页查看工具,功能比 less 简单,仅支持向前滚动,适合快速浏览小型文本文件。
核心特点:
- 仅支持向下滚动,不支持向上滚动(如需回退,需结合管道
| less)。 - 自动识别终端大小,按屏显示内容。
- 支持简单的交互操作。
常用语法
more [选项] 文件名 或通过管道接收输出 命令 | more
关键选项:
-num:指定每页显示的行数(如more -20 test.txt表示每页 20 行)。-d:显示提示信息(底部显示--More--(20%) [Press space to continue, 'q' to quit])。
常用交互操作(进入 more 后使用)
| 操作键 | 功能描述 |
|---|---|
Enter | 向下滚动 1 行 |
Space | 向下滚动 1 屏 |
f | 向下滚动 1 屏(同 Space) |
b | 向上滚动 1 屏(部分版本支持) |
q | 退出 more |
/关键词 | 正向搜索(找到后从该位置开始显示) |
实例
# 每页显示15行查看文件
more -15 notes.txt
# 显示提示信息查看日志
more -d /var/log/auth.log
# 分页查看目录列表
ls -l /etc | more
25.cal :显示日历
cal 命令用于显示当前或指定年份 / 月份的日历,支持简洁或详细格式输出。
常用语法:
cal [选项] [月份] [年份] #说明:月份(1-12)、年份(4位,如2024)可选;若不指定,默认显示当前月日历
关键选项:
-y:显示全年日历(当前年份的 12 个月日历)。-3:显示前后三个月日历(当前月、上月、下月)。-j:显示年内天数(将每月的日期显示为当年的第几天,如 1 月 1 日是 1,12 月 31 日是 365/366)。-m:以周一为每周第一天(默认以周日为第一天)。
实例:
# 显示当前月日历
cal
# 输出:
# 九月 2024
# 日 一 二 三 四 五 六
# 1 2 3 4 5 6
# 7 8 9 10 11 12 13
# 14 15 16 17 18 19 20
# 21 22 23 24 25 26 27
# 28 29 30
# 显示2024年全年日历
cal -y 2024
# 显示2024年10月日历(指定月和年)
cal 10 2024
# 显示前后三个月日历
cal -3
# 以周一为第一天,显示年内天数
cal -m -j
26.wc : 统计文件内容信息
wc(Word Count)命令用于统计文件的行数、单词数、字节数,也可通过管道统计其他命令输出的内容。
核心统计维度:
- 行数(-l) :统计文件中的换行符数量(空文件行数为 0)。
- 单词数(-w) :统计以空格 / 制表符 / 换行符分隔的 “单词” 数量(连续非空白字符视为一个单词)。
- 字节数(-c) :统计文件的总字节数(与文件大小一致,受编码影响,如中文在 UTF-8 中占 3 字节)。
- 字符数(-m) :统计文本字符数(含中文等多字节字符,需文件编码支持)。
常用语法:
wc [选项] 文件名 # 或通过管道统计输出 命令 | wc [选项]
关键选项:
| 选项 | 功能描述 |
|---|---|
-l | 仅统计行数 |
-w | 仅统计单词数 |
-c | 仅统计字节数 |
-m | 仅统计字符数 |
-L | 统计最长行的长度(字节数) |
实例:
# 统计 test.txt 的完整信息(默认输出:行数 单词数 字节数 文件名)
wc test.txt
# 输出:5 12 85 test.txt
# 仅统计行数
wc -l test.txt
# 输出:5 test.txt
# 统计最长行的长度
wc -L test.txt
# 输出:28 test.txt
# 统计当前目录下的文件数量(ls 输出的行数即文件数)
ls | wc -l
# 统计 UTF-8 编码文件的字符数(含中文)
wc -m chinese.txt
# 输出:20 chinese.txt (若文件含10个中文,每个占1字符)