下载工作台
Linux 与 Shell 入门

终端、Shell 与文件系统

试读上半部分 · 解锁后可读全文

第 2 章 · 终端、Shell 与文件系统

本章目标:熟练使用 bash 导航与文件操作;理解 FHS 标准目录;掌握绝对/相对路径、通配符、Tab 补全、历史命令与 man;在 dev-workspace 搭建与 shop-demo 一致的目录骨架。

学时建议:4~5 小时(含 2.5 小时跟练)

前置:完成 linux-shell ch01;可登录 Linux 终端。


2.1 场景说明:在服务器上找配置文件

运维在 xiaozi-cloud 节点上排查 api-go-demo 无法启动:需快速定位 unit 文件环境变量日志目录。本章建立 「去哪找文件」 的肌肉记忆。

/  (根)
├── etc/      配置(nginx、systemd)
├── var/      可变数据(log、lib)
├── home/     用户家目录 → ~/dev-workspace
├── usr/      用户态程序
├── tmp/      临时(重启可能清空)
└── opt/      可选大型软件

2.2 Shell 与终端 emulator

概念说明
Terminal字符界面窗口(Windows Terminal、GNOME Terminal)
Shell命令解释器,默认 bash
Promptuser@host:~/dev-workspace$
$ vs #普通用户 vs root
echo $SHELL
bash --version
type cd
type ls

2.3 导航:pwd、cd、ls

pwd                    # 打印当前目录
cd ~/dev-workspace
cd ..                  # 上一级
cd -                   # 上一次目录
ls -la                 # 含隐藏文件与权限
ls -lh                 # 人类可读大小
ls -lt                 # 按时间排序
路径类型示例
绝对路径/home/alice/dev-workspace/shop-demo
相对路径shop-demo/cmd/api
家目录~/dev-workspace
当前目录./logs
父目录../linux-notes

2.4 FHS 与 Linux 部署路径对照

FHS 目录典型内容本课对照
/etc/nginx/反代配置linux-shell ch14
/etc/systemd/system/unit 文件api-go-demo 服务
/var/log/syslog、应用日志ch10
/home/<user>/dev-workspace源码git-collab
ls /etc | head
ls -ld /var/log /tmp /home

2.5 创建与复制:mkdir、touch、cp、mv、rm

shop-demo 骨架中练习(与 gin-web 布局类似):

cd ~/dev-workspace
mkdir -p shop-demo/{cmd/api,internal/handler,configs,scripts}
touch shop-demo/cmd/api/main.go
touch shop-demo/configs/app.env.example
cp shop-demo/configs/app.env.example shop-demo/configs/app.env.local
mv shop-demo/configs/app.env.local shop-demo/configs/.env.local

安全删除

rm -i shop-demo/scripts/unused.sh   # 交互确认
rm -rf shop-demo/tmp/               # 慎用 -rf
生产禁止 rm -rf /;教学目录外先 pwd 确认。

2.6 查看文件:cat、less、head、tail

echo 'package main' > shop-demo/cmd/api/main.go
cat shop-demo/cmd/api/main.go
head -n 5 /etc/passwd
tail -n 20 ~/dev-workspace/logs/linux-ch01.log 2>/dev/null || true
less /etc/services    # 按 q 退出

模拟 api-go-demo 日志:

mkdir -p ~/dev-workspace/logs
for i in $(seq 1 50); do echo "$(date -Iseconds) INFO request_id=$i slug=usb-c-cable"; done >> ~/dev-workspace/logs/api.log
tail -f ~/dev-workspace/logs/api.log   # Ctrl+C 退出
grep slug ~/dev-workspace/logs/api.log | head

2.7 通配符与路径展开

cd ~/dev-workspace/shop-demo
touch internal/handler/product.go internal/handler/order.go
ls internal/handler/*.go
ls internal/handler/[po]*.go
echo internal/handler/{product,order}.go
通配符含义
*任意长度
?单字符
[abc]字符集
{a,b}brace 展开

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。