1. 目录与路径
1.1 相对路径与绝对路径
- 绝对路径:从根目录
/开始写,如/home/user/file.txt - 相对路径:从当前目录开始写,如
../docs/file.txt
1.2 特殊目录符号
| 符号 | 含义 |
|---|---|
. |
当前目录 |
.. |
上一级目录 |
- |
前一个工作目录 |
~ |
当前用户家目录 |
~account |
account用户的家目录 |
1.3 常用目录命令
| 命令 | 用途 | 常用选项 |
|---|---|---|
cd |
切换目录 | cd - 回到上一个目录 |
pwd |
显示当前目录 | pwd -P 显示真实路径(不含链接) |
mkdir |
创建目录 | -p 递归创建多级目录 |
rmdir |
删除空目录 | 只能删除空目录 |
1.4 执行文件路径变量 PATH
echo $PATH查看命令搜索路径- 系统按 PATH 顺序查找命令
- 添加临时路径:
PATH="$PATH":/my/path - 安全考虑:不建议将当前目录
.加入 PATH
2. 文件与目录管理
2.1 查看文件与目录:ls
常用选项:
| 选项 | 用途 |
|---|---|
-l |
详细列表(权限、大小、时间) |
-a |
显示所有文件(含隐藏文件) |
-d |
仅列出目录本身,不列出内容 |
-h |
人类可读大小(KB、MB) |
-t |
按时间排序 |
-r |
反向排序 |
-S |
按大小排序 |
--color |
彩色显示 |
2.2 复制:cp
常用选项:
| 选项 | 用途 |
|---|---|
-i |
覆盖前提示 |
-r |
递归复制目录 |
-p |
连同属性一起复制(权限、时间) |
-a |
相当于 -dr --preserve=all(归档模式) |
-d |
若源为链接,复制链接属性 |
-l |
创建硬链接而非复制 |
-s |
创建符号链接 |
2.3 删除:rm
常用选项:
| 选项 | 用途 |
|---|---|
-i |
删除前提示 |
-r |
递归删除目录 |
-f |
强制删除(不提示) |
对比不同选项的行为:
| 命令 | 文件存在 | 文件不存在 |
|---|---|---|
rm file |
删除文件 | 报错:No such file |
rm -i file |
提示确认 | 报错:No such file |
rm -f file |
静默删除 | 静默忽略 |
-f 的作用:
不提示确认
忽略不存在的文件(不报错)
常用于脚本中,确保命令不会因为文件不存在而中断
删除目录的选项对比:
rmdir:只能删除空目录rm -r:删除非空目录(递归)rm -rf:强制递归删除(小心使用!)
⚠️ 重要警告:
rm -rf是 Linux 中最危险的命令之一它不会询问,直接删除
一旦执行,很难恢复
安全使用原则:
永远不要以 root 执行
rm -rf /执行前先用
ls确认路径可以用
rm -ri替代,确保安全重要数据定期备份
2.4 移动/重命名:mv
常用选项:
| 选项 | 用途 |
|---|---|
-i |
覆盖前提示 |
-u |
源文件较新才移动 |
-f |
强制覆盖 |
2.5 获取路径:basename, dirname
basename /path/file:获取文件名(file)dirname /path/file:获取目录路径(/path)
3. 文件内容查阅
3.1 直接查看
| 命令 | 用途 | 特点 |
|---|---|---|
cat |
连接并显示 | 适合短文件 |
tac |
反向显示 | 最后一行先显示 |
nl |
显示行号 | 可自定义行号格式 |
cat 常用选项:
-n:显示行号-b:空白行不编号-A:显示特殊字符
nl 的其他选项:
-b a:所有行都编号(同 cat -n)-b t:仅非空行编号(默认)-n rz:行号补零(000001)
3.2 翻页查看
| 命令 | 用途 | 操作键 |
|---|---|---|
more |
一页一页翻动 | 空格翻页,q退出 |
less |
更强大的翻页 | 上下箭头,/搜索,q退出 |
less 常用操作:
上下箭头:逐行滚动空格键:下一页b键:上一页/关键词:向下搜索?关键词:向上搜索n:下一个搜索结果N:上一个搜索结果g:第一行G:最后一行q:退出
3.3 数据截取
| 命令 | 用途 | 示例 |
|---|---|---|
head |
显示头几行 | head -n 20 file |
tail |
显示尾几行 | tail -n 15 file |
tail -f |
动态跟踪 | tail -f /var/log/syslog |
3.4 非纯文本文件:od
| 选项 | 含义 |
|---|---|
-t oC |
八进制(每个字节) |
-t xC |
十六进制(每个字节) |
-t c |
ASCII 字符 |
-t d |
十进制 |
-t u |
无符号十进制 |
3.5 修改文件时间:touch
文件时间属性:
mtime:修改时间(内容改变)ctime:状态时间(权限、所有者改变)atime:访问时间(被读取)
touch 用途:
- 创建空文件:
touch newfile - 修改时间为当前:
touch file - 修改为指定时间:
touch -t 202501011200 file
4. 文件与目录的默认权限与隐藏权限
4.1 默认权限:umask
- 文件默认最大:666(rw-rw-rw-)
- 目录默认最大:777(rwxrwxrwx)
- 最终权限 = 最大权限 - umask
umask查看,umask 002设置
4.2 隐藏权限:chattr, lsattr
chattr 常用属性:
| 属性 | 用途 |
|---|---|
+i |
不可修改、删除、重命名 |
+a |
只能追加内容 |
+u |
删除时保留数据(可恢复) |
+s |
删除时彻底清除 |
rm -f强制选项也无效,因为+i属性是内核级别的保护,rm -f也无法绕过。
lsattr:查看隐藏权限
4.3 特殊权限:SUID, SGID, SBIT
已在第5章详细总结,此处略。
5. 命令与文件的搜寻
5.1 脚本文件名搜索:which
which:在 PATH 中搜索可执行文件which -a:显示所有匹配路径
5.2 文件文件名搜索
whereis: 在特定目录中搜索(/bin, /etc, /usr 等)
whereis ls:找到 ls 和相关文件whereis -b ls:只找二进制文件whereis -m ls:只找手册文件
locate: 从数据库搜索
locate passwd:搜索所有包含 passwd 的文件locate -i passwd:忽略大小写updatedb:更新数据库(需 root)
locate 特点: 速度快(从数据库查询)、可能不是实时(需更新数据库)
find: 实时搜索(功能最强大)
find 常用语法:
1 | find [路径] [条件] [动作] |
常用条件:
| 条件 | 用途 | 示例 |
|---|---|---|
-name |
按文件名 | find / -name "*.conf" |
-iname |
忽略大小写 | find . -iname "readme" |
-user |
按所有者 | find / -user root |
-group |
按所属组 | find / -group staff |
-type |
按类型 | find . -type f(文件)或 -type d(目录) |
-size |
按大小 | find / -size +10M(大于10M) |
-mtime |
按修改时间 | find . -mtime -7(7天内修改) |
-perm |
按权限 | find . -perm 644 |
-exec |
执行命令 | find . -name "*.tmp" -exec rm {} \; |
大小单位:
c:字节k:KBM:MBG:GB
比较符号:
-size +1M:大于 1MB-size -1M:小于 1MB-size 1M:正好 1MB
组合条件:
-a(and):同时满足,可省略(默认就是 and)-o(or):满足任一条件可以用括号
\( \)分组(需转义)
6. 本章重点命令速查
| 命令 | 用途 | 常用示例 |
|---|---|---|
cd |
切换目录 | cd ~, cd - |
pwd |
显示当前目录 | pwd -P |
mkdir |
创建目录 | mkdir -p a/b/c |
rmdir |
删除空目录 | rmdir dir |
ls |
列出文件 | ls -la, ls -lh, ls -lt |
cp |
复制 | cp -r source dest, cp -a |
rm |
删除 | rm -rf dir, rm -i file |
mv |
移动/重命名 | mv old new, mv file dir/ |
basename |
取文件名 | basename /a/b/c.txt |
dirname |
取目录名 | dirname /a/b/c.txt |
cat |
显示文件 | cat -n file |
tac |
反向显示 | tac file |
nl |
显示行号 | nl file |
more |
翻页查看 | more file |
less |
翻页查看 | less file |
head |
显示头部 | head -n 20 file |
tail |
显示尾部 | tail -f log, tail -n 30 |
od |
二进制查看 | od -t xC file |
touch |
修改时间/创建 | touch file, touch -t 202501011200 file |
which |
搜索可执行文件 | which ls |
whereis |
搜索文件 | whereis ls |
locate |
数据库搜索 | locate passwd |
find |
实时搜索 | find / -name "*.conf" |
7. 实用技巧
7.1 通配符
| 符号 | 含义 | 示例 |
|---|---|---|
* |
任意多个字符 | *.txt |
? |
任意一个字符 | file?.txt |
[abc] |
中括号内任一字符 | file[123].txt |
[a-z] |
范围 | file[a-z].txt |
[^abc] |
排除 | file[^0-9].txt |
7.2 输入/输出重定向
| 符号 | 用途 | 示例 |
|---|---|---|
> |
覆盖输出到文件 | ls > list.txt |
>> |
追加输出到文件 | echo "hi" >> file.txt |
< |
从文件输入 | cat < file.txt |
2> |
错误输出 | find / -name file 2> error.log |
| |
管道 | ls -la | grep ".txt" |