第1章:Linux基础操作——文件系统、常用命令与Shell脚本
各位同学,咱们正式开始仿真环境搭建的第一课。说实话,很多做仿真的新手,一上来就急着装工具、跑模型,结果连个路径都找不对,文件删了恢复不了,脚本跑起来全是坑。我当年也吃过这个亏——记得第一次在服务器上误删了整个项目文件夹,差点被组长骂到怀疑人生。
所以,咱们先把Linux基础打牢。这章内容不多,但都是你以后每天都要用的东西。
1.1 Linux文件系统——你得知道文件都藏在哪
Linux的文件系统,说白了就是一棵倒着长的树。根目录是/,所有东西都从它开始。你想想看,Windows有C盘、D盘,Linux没有盘符的概念,一切皆文件。
我习惯把文件系统分成三块来记:
- 系统文件:
/bin、/etc、/usr——别乱动,动了系统可能崩 - 用户文件:
/home/你的用户名——这是你的地盘,随便折腾 - 临时文件:
/tmp——重启就清空,别放重要东西
重点记住:/home 是你的家目录,用 ~ 可以快速跳过去。比如 cd ~ 直接回家。
嗯,这里要注意:Linux是区分大小写的。Desktop 和 desktop 是两个完全不同的目录。我在项目中见过有人因为大小写写错,脚本跑了一整夜全白费。
1.2 常用命令——每天敲几百遍的那种
这些命令你以后每天都会用,我建议你练到肌肉记忆的程度。
1.2.1 ls —— 看看目录里有什么
ls # 列出当前目录的文件
ls -l # 详细列表(权限、大小、时间)
ls -a # 显示隐藏文件(以.开头的文件)
ls -lh # 人性化显示文件大小(K、M、G)
我个人习惯用 ls -lh,一眼就能看出哪个文件占地方。有一次排查磁盘满了的问题,就是靠这个命令发现了一个几百G的日志文件。
1.2.2 cd —— 在目录间跳来跳去
cd /home/user # 路径跳转
cd .. # 返回上一级目录
cd ~ # 回家
cd - # 回到上一个目录(这个超好用!)
避坑指南:我曾经在写自动化脚本时,忘了检查 cd 是否成功,结果后面的命令全跑到了错误的目录里。所以,重要脚本里一定要加 cd /目标路径 || exit 1。
1.2.3 mkdir —— 创建目录
mkdir my_folder # 创建单个目录
mkdir -p a/b/c/d # 递归创建多级目录
mkdir dir_{1..5} # 批量创建 dir_1 到 dir_5
-p 参数是我最常用的,省得一层层建目录。你想想看,要建个 project/src/utils,没有 -p 你得敲三次 mkdir。
1.2.4 rm —— 删除(小心!)
rm file.txt # 删除文件
rm -r my_folder # 递归删除目录
rm -rf my_folder # 强制删除(慎用!)
警告:rm -rf / 是自杀式命令,千万别试。我见过有人手滑在根目录执行了这个,整个服务器瞬间瘫痪。建议你养成习惯:删除前先 ls 确认一下路径。
1.2.5 vim —— 文本编辑器中的瑞士军刀
vim 的学习曲线确实陡,但一旦上手就回不去了。我刚开始用的时候也觉得很反人类,后来发现它真的快。
你只需要记住三个模式:
| 模式 | 怎么进 | 能干嘛 |
|---|---|---|
| 普通模式 | 启动时默认 | 移动光标、复制粘贴、删除 |
| 插入模式 | 按 i |
输入文字 |
| 命令模式 | 按 : |
保存退出、搜索替换 |
最常用的几个操作:
i # 进入插入模式(在光标前)
:w # 保存文件
:q # 退出
:wq # 保存并退出
:q! # 不保存强制退出
dd # 删除当前行
yy # 复制当前行
p # 粘贴
小技巧:如果你不小心卡在vim里不知道怎么退出,按 Esc 然后输入 :q! 回车,就能安全退出。别问我怎么知道的——每个新手都经历过这个。
1.3 Shell脚本基础——让机器替你干活
Shell脚本,说白了就是把一堆命令写进文件里,一次性执行。你想想看,每次搭建仿真环境都要敲十几条命令,多累啊。写成脚本,一键搞定。
1.3.1 第一个脚本
#!/bin/bash
# 这是我的第一个脚本
echo "Hello, 仿真世界!"
echo "当前目录是:"
pwd
保存为 hello.sh,然后:
chmod +x hello.sh # 给执行权限
./hello.sh # 运行脚本
注意第一行的 #!/bin/bash,这叫 shebang,告诉系统用哪个解释器来跑这个脚本。我见过有人漏了这行,结果脚本怎么都跑不起来。
1.3.2 变量——存东西用的
#!/bin/bash
name="仿真测试"
echo "欢迎来到 $name 课程"
echo "脚本名称: $0"
echo "第一个参数: $1"
变量名不要加空格,name = "xxx" 是错的,name="xxx" 才对。这个坑我踩过好几次。
1.3.3 条件判断——让脚本有脑子
#!/bin/bash
if [ -d "sim_results" ]; then
echo "仿真结果目录已存在"
else
echo "创建仿真结果目录"
mkdir sim_results
fi
常用的判断条件:
-d 文件:是否是目录-f 文件:是否是普通文件-e 文件:文件是否存在$a -eq $b:数字相等$a = $b:字符串相等
1.3.4 循环——重复的事情交给机器
#!/bin/bash
# 批量创建测试目录
for i in {1..5}; do
mkdir "test_case_$i"
echo "已创建 test_case_$i"
done
这个脚本我经常用来批量生成仿真用例目录。你想想看,手工建5个目录要半分钟,脚本跑完只要0.1秒。
1.4 本章知识体系
下面这张图帮你理清这章的核心脉络:
1.5 本章小结
这一章的内容,说白了就是三件事:
- 知道文件在哪——Linux文件系统的树形结构
- 会操作文件——ls、cd、mkdir、rm、vim 这五个命令
- 会写简单脚本——把命令串起来,让机器自动干活
这些基础打好了,后面装仿真工具、配环境变量、写自动化测试脚本,你才不会手忙脚乱。我见过太多人,工具装好了却不会配PATH,脚本写好了却不会给执行权限——这些细节,往往就是卡住你的地方。
嗯,这一章就到这。把上面的命令每个都敲三遍,别光看。下一章咱们开始装仿真工具,到时候你就知道这些基础有多重要了。