第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 本章知识体系

下面这张图帮你理清这章的核心脉络:

Linux基础操作 文件系统 / 根目录 /home 用户家目录 /tmp 临时文件 一切皆文件 常用命令 ls - 列出文件 cd - 切换目录 mkdir - 创建目录 rm - 删除文件 vim - 文本编辑 Shell脚本 变量定义 条件判断 if 循环 for chmod +x 执行 目标:能独立在Linux上创建、编辑、运行脚本 为后续仿真环境搭建打好基础

1.5 本章小结

这一章的内容,说白了就是三件事:

  1. 知道文件在哪——Linux文件系统的树形结构
  2. 会操作文件——ls、cd、mkdir、rm、vim 这五个命令
  3. 会写简单脚本——把命令串起来,让机器自动干活

这些基础打好了,后面装仿真工具、配环境变量、写自动化测试脚本,你才不会手忙脚乱。我见过太多人,工具装好了却不会配PATH,脚本写好了却不会给执行权限——这些细节,往往就是卡住你的地方。

嗯,这一章就到这。把上面的命令每个都敲三遍,别光看。下一章咱们开始装仿真工具,到时候你就知道这些基础有多重要了。

可可精品资料库