命令行的魔法世界:Shell 编程基础入门指南


命令行的魔法世界:Shell 编程基础全景指南


0. 序章:为什么学 Shell?

在 Linux 世界,Shell 是一位永不疲倦的魔法助手。
只要你会念咒(写命令/脚本),它就能帮你:

  • 自动整理海量文件
  • 定时备份数据库
  • 在百台服务器间批量执行任务
  • 一键部署项目环境

没有 Shell,你的效率可能像手动搅拌水泥;有了 Shell,你直接开上了自动搅拌机。


1. Shell 是什么?

从技术角度,Shell 是 命令解释器

  • 交互模式:你敲一条命令,它立即执行
  • 脚本模式:你把命令写进文件,一次执行多个

常见 Shell:

  • Bash(Bourne Again Shell,Linux 默认)
  • Zsh(更炫的补全与主题)
  • Fish(易用性好)
  • POSIX sh(最兼容)

2. 你的第一行 Shell 咒语

echo "Hello World"

这是 Shell 世界的开门咒。
如果你写成脚本:

#!/bin/bash
echo "Hello World"
  • 第一行 #!/bin/bash魔法书封面,告诉系统用哪个解释器执行
  • chmod +x hello.sh 给它魔力(执行权限)
  • ./hello.sh 释放魔法

3. 变量:魔法背包

变量是魔法师的随身背包,里面放着任务需要的各种信息。

name="Gandalf"
echo "Hello, $name"

规则

  • 赋值时等号左右不能有空格
  • $变量名${变量名} 引用
  • 变量作用域默认是全局,函数里需用 local 限定

4. 数据类型:一切皆字符串

Bash 没有强类型,所有数据都是字符串。
即使是数字运算,也得用 $((表达式))

a=5
b=3
sum=$((a+b))
echo $sum

5. 条件判断:魔法门的选择

if [ $age -ge 18 ]; then
    echo "Adult"
else
    echo "Child"
fi
  • [ 条件 ] 等价于 test 条件

  • 字符串比较:

    • = 相等
    • != 不等
  • 数字比较:

    • -eq 等于
    • -ne 不等
    • -gt 大于
    • -lt 小于
    • -ge 大于等于
    • -le 小于等于
  • 文件测试:

    • -f file 文件存在且为普通文件
    • -d dir 目录存在
    • -e path 存在文件/目录
    • -s file 文件存在且非空

6. 循环:魔法的时间轮回

for 循环

for i in 1 2 3
do
    echo "Casting spell $i"
done

while 循环

count=1
while [ $count -le 3 ]
do
    echo "Magic $count"
    count=$((count+1))
done

7. 函数:封印咒语

greet() {
    echo "Hello, $1"
}

greet "Frodo"
  • $1 第一个参数
  • $# 参数数量
  • $@ 所有参数列表

8. 输入输出与管道:魔法的传送门

  • > 输出重定向到文件
  • >> 追加输出
  • < 从文件读取
  • | 管道,把一个命令的输出交给另一个命令

例子:

cat file.txt | grep "keyword" > result.txt

9. 脚本调试:看透魔法轨迹

  • bash -x script.sh 打印每行执行过程
  • 在脚本开头加 set -x 开启调试,set +x 关闭

10. 让魔法更强的实用技巧

  1. 命令替换
today=$(date +%Y-%m-%d)
echo "Today is $today"
  1. 批量处理
for file in *.log; do rm "$file"; done
  1. 安全脚本习惯

    • "$var" 包裹变量防止空格拆分
    • set -e 在出错时立即退出
    • set -u 禁止使用未定义变量

11. Shell 编程学习大纲

如果你想从小白到 Shell 高手,可以按这个路线走:

基础阶段

  • 什么是 Shell / 常见 Shell 种类
  • 运行命令 & 脚本文件
  • 变量与字符串操作
  • 基本算术与条件判断
  • 循环(for / while / until)

进阶阶段

  • 函数与参数处理
  • 输入输出重定向
  • 管道与过滤器(grep, awk, sed)
  • 文件测试与目录操作
  • 脚本调试与错误处理

高级阶段

  • 数组与关联数组
  • 正则表达式与文本处理
  • getopts 命令行参数解析
  • 子进程与后台任务
  • 信号处理(trap)

实战阶段

  • 日志分析脚本
  • 自动化部署脚本
  • 备份与恢复脚本
  • 系统监控与报警脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值