Linux:这啥命令?这台服务器我说了算-文件系统大冒险——“我就改个文件,怎么还说我没权限?”
《Linux:从“这啥命令?”到“这台服务器我说了算”》
系列目标:少背概念,多敲命令;从“会用”走到“能排错、能上服务器”。
第二章:文件系统大冒险——“我就改个文件,怎么还说我没权限?”
上一章我们已经会 pwd、ls、cd,也碰过 cp、mv、rm。
这一章不再满足于“会敲”,而是要搞明白:文件到底在哪、命令到底改了谁、为什么有时候系统死活不让你动。
1. Linux 的世界,从 / 开始
Linux 没有 C:、D: 这种盘符概念。整个文件系统像一棵树,树根就是:
/
常见目录先混个脸熟:
/home 普通用户的家目录
/etc 系统配置文件
/var 日志、缓存等经常变化的数据
/usr 程序和共享资源
/tmp 临时文件
/root root 用户的家目录
你自己的家目录通常类似:
/home/alice
输入:
cd ~
pwd
~ 就代表当前用户的家目录。
2. 绝对路径和相对路径:导航别靠缘分
假设当前目录是:
/home/alice
进入 /etc:
cd /etc
这种从 / 开始写完整位置的叫绝对路径。
如果当前目录下有 linux-lab:
cd linux-lab
这种根据当前位置寻找目标的叫相对路径。
三个符号必须记住:
. 当前目录
.. 上一级目录
~ 家目录
例如:
cd ..
cd ./linux-lab
cd ~/linux-lab
路径写错时,Linux 不会猜你想去哪,它只会冷静地告诉你:
No such file or directory
3. 创建目录:一次建一层太客气了
普通创建:
mkdir project
一次创建多层目录:
mkdir -p project/src/main
-p 很实用:中间目录不存在时一起创建。
创建几个测试文件:
touch app.py config.txt README.md
ls -lah
如果文件名以 . 开头,它通常属于隐藏文件:
touch .env
ls -a
所谓“隐藏”,本质上只是 ls 默认假装没看见。
4. 复制、移动、删除:三兄弟一个比一个刺激
复制文件:
cp config.txt config.bak
复制目录需要 -r:
cp -r project project-backup
移动文件:
mv config.txt project/
mv 也能直接重命名:
mv README.md README-old.md
删除文件:
rm README-old.md
删除目录:
rm -r project-backup
新手建议先用:
rm -i 文件名
它会在删除前确认一次。
看到 rm -rf 时要格外谨慎。-r 是递归,-f 是强制,两者合体后属于“执行力拉满,后悔药欠费”。
5. 通配符:批量操作不用一个个点名
* 可以匹配任意多个字符:
ls *.txt
查看所有 .txt 文件。
? 匹配单个字符:
ls file?.txt
可能匹配:
file1.txt
fileA.txt
批量操作前,建议先用 ls 看看匹配结果:
ls *.log
确认没问题,再执行:
rm *.log
这个习惯能显著减少“删完才发现删多了”的人生剧情。
6. 文件找不到?让 find 出场
在当前目录查找名为 config.txt 的文件:
find . -name "config.txt"
查找所有 .log 文件:
find . -name "*.log"
按类型查找目录:
find . -type d
按类型查找普通文件:
find . -type f
所以以后别再对着几十层目录手动翻箱倒柜,Linux 已经给你配了搜查队。
7. ls -l 那一长串到底是什么?
执行:
ls -l
可能看到:
-rw-r--r-- 1 alice alice 120 Oct 28 10:20 notes.txt
先看最左边:
-rw-r--r--
第一个字符表示类型:
- 普通文件
d 目录
后面九位是权限,分成三组:
rw- r-- r--
用户 用户组 其他人
其中:
r = 读
w = 写
x = 执行
这就是为什么你有时“明明看得到文件,却改不了”——你可能有 r,但没有 w。
8. 修改权限:chmod
给脚本增加执行权限:
touch hello.sh
chmod +x hello.sh
ls -l hello.sh
也可以只给当前用户增加执行权限:
chmod u+x hello.sh
常见对象:
u 当前用户
g 用户组
o 其他人
a 所有人
例如:
chmod u+w notes.txt
chmod o-r secret.txt
不要一遇到权限问题就条件反射:
chmod 777 文件
777 基本等于“大家随便来”,解决问题很快,制造新问题也可能很快。
9. 本章实战:搭一个项目目录
执行:
cd ~/linux-lab
mkdir -p chapter02/project/{src,logs,backup}
cd chapter02/project
touch src/app.sh
touch logs/app.log logs/error.log
touch README.md
cp README.md backup/README.bak
chmod u+x src/app.sh
find . -name "*.log"
ls -l src/app.sh
然后先确认日志文件:
ls logs/*.log
确认无误后删除:
rm -i logs/*.log
如果你知道每条命令改动了哪个路径,这一章就算真正过关。
10. 本章速查表
| 命令 | 作用 |
|---|---|
mkdir -p |
创建多层目录 |
touch |
创建空文件 |
cp -r |
复制目录 |
mv |
移动或重命名 |
rm -i |
删除前确认 |
find |
查找文件 |
ls -l |
查看详细信息和权限 |
chmod |
修改权限 |
* |
匹配多个字符 |
? |
匹配单个字符 |
11. 小结
这一章你需要真正搞懂四件事:
- Linux 文件系统从
/开始; - 路径分绝对路径和相对路径;
cp、mv、rm操作前一定看清目标;- 文件能不能读、写、执行,由权限决定。
下一章,我们开始处理 Linux 最核心的身份问题:
《第三章:用户、用户组与 sudo——“凭什么它能改,我不能?”》
- 点赞
- 收藏
- 关注作者
评论(0)