跳转到主要内容

书籍

Bash 脚本教程(网道)

从零开始系统讲解 Bash:命令行基础、变量与各种扩展、条件判断和循环、函数、数组以及脚本调试。适合想在 Linux 或 macOS 上写 Shell 脚本的初学者,也可当作日常速查。

21 页更新于 20 小时前

开始阅读
CC BY-SA 3.0

目录21

  1. 01 简介 Bash 是 Unix 系统和 Linux 系统的一种 Shell(命令行环境),是目前绝大多数 Linux 发行版的默认 Shell。 Shell 的含义 学习 Bash,首先需要理解 Shell 是什么。She... 21 小时前
  2. 02 基本语法 本章介绍 Bash 的最基本语法。 echo 命令 由于后面的例子会大量用到 echo命令,这里先介绍这个命令。 echo命令的作用是在屏幕输出一行文本,可以将该命令的参数原样输出。 $ echo hello wo... 21 小时前
  3. 03 模式扩展 简介 Shell 接收到用户输入的命令以后,会根据空格将用户的输入,拆分成一个个词元(token)。然后,Shell 会扩展词元里面的特殊字符,扩展完成后才会调用相应的命令。 这种特殊字符的扩展,称为模式扩展(gl... 21 小时前
  4. 04 引号和转义 Bash 只有一种数据类型,就是字符串。不管用户输入什么数据,Bash 都视为字符串。因此,字符串相关的引号和转义,对 Bash 来说就非常重要。 转义 某些字符在 Bash 里面有特殊含义(比如 $、 &、 *)... 21 小时前
  5. 05 变量 简介 Bash 变量分成环境变量和自定义变量两类。 环境变量 环境变量是 Bash 环境自带的变量,进入 Shell 时已经定义好了,可以直接使用。它们通常是系统定义好的,也可以由用户从父 Shell 传入子 Sh... 21 小时前
  6. 06 字符串操作 本章介绍 Bash 字符串操作的语法。 字符串的长度 获取字符串长度的语法如下。 ${#varname} 下面是一个例子。 $ myPath=/home/cam/book/long.file.name $ echo... 21 小时前
  7. 07 算术运算 算术表达式 ((...))语法可以进行整数的算术运算。 $ ((foo = 5 + 5)) $ echo $foo 10 ((...))会自动忽略内部的空格,所以下面的写法都正确,得到同样的结果。 $ ((2+2)... 21 小时前
  8. 08 操作历史 简介 Bash 会保留用户的操作历史,即用户输入的每一条命令都会记录,默认是保存最近的500条命令。有了操作历史以后,就可以使用方向键的 ↑和 ↓,快速浏览上一条和下一条命令。 退出当前 Shell 的时候,Bas... 21 小时前
  9. 09 行操作 简介 Bash 内置了 Readline 库,具有这个库提供的很多“行操作”功能,比如命令的自动补全,可以大大加快操作速度。 这个库默认采用 Emacs 快捷键,也可以改成 Vi 快捷键。 $ set -o vi ... 21 小时前
  10. 10 目录堆栈 为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。 cd - Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录, cd -命令可以返回前一次的目录。 # 当前目录是 /path/t... 21 小时前
  11. 11 脚本入门 脚本(script)就是包含一系列命令的一个文本文件。Shell 读取这个文件,依次执行里面的所有命令,就好像这些命令直接输入到命令行一样。所有能够在命令行完成的任务,都能够用脚本完成。 脚本的好处是可以重复使用,... 21 小时前
  12. 12 read 命令 用法 有时,脚本需要在执行过程中,由用户提供一部分数据,这时可以使用 read命令。它将用户的输入存入一个变量,方便后面的代码使用。用户按下回车键,就表示输入结束。 read命令的格式如下。 read [-opti... 21 小时前
  13. 13 条件判断 本章介绍 Bash 脚本的条件判断语法。 if 结构 if是最常用的条件判断结构,只有符合给定条件时,才会执行指定的命令。它的语法如下。 if commands; then commands [elif com... 21 小时前
  14. 14 循环 Bash 提供三种循环语法 for、 while和 until。 while 循环 while循环有一个判断条件,只要符合条件,就不断循环执行指定的语句。 while condition; do command... 21 小时前
  15. 15 函数 本章介绍 Bash 函数的用法。 简介 函数(function)是可以重复使用的代码片段,有利于代码的复用。它与别名(alias)的区别是,别名只适合封装简单的单个命令,函数则可以封装复杂的多行命令。 函数总是在当... 21 小时前
  16. 16 数组 数组(array)是一个包含多个值的变量。成员的编号从0开始,数量没有上限,也没有要求成员被连续索引。 创建数组 数组可以采用逐个赋值的方法创建。 ARRAY[INDEX]=value 上面语法中, ARRAY是数... 21 小时前
  17. 17 set 命令,shopt 命令 set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本章介绍 set的基本用法,帮助你写出更安全的 Bash 脚本。 简介 我们知道,Bash 执行脚本时,会创建一个子 Shel... 21 小时前
  18. 18 脚本除错 本章介绍如何对 Shell 脚本除错。 常见错误 编写 Shell 脚本的时候,一定要考虑到命令失败的情况,否则很容易出错。 #! /bin/bash dir_name=/path/not/exist cd $di... 21 小时前
  19. 19 mktemp 命令,trap 命令 Bash 脚本有时需要创建临时文件或临时目录。常见的做法是,在 /tmp目录里面创建文件或目录,这样做有很多弊端,使用 mktemp命令是最安全的做法。 临时文件的安全问题 直接创建临时文件,尤其在 /tmp目录里... 21 小时前
  20. 20 启动环境 Session 用户每次使用 Shell,都会开启一个与 Shell 的 Session(对话)。 Session 有两种类型:登录 Session 和非登录 Session,也可以叫做 login shell 和... 21 小时前
  21. 21 命令提示符 用户进入 Bash 以后,Bash 会显示一个命令提示符,用来提示用户在该位置后面输入命令。 环境变量 PS1 命令提示符通常是美元符号 $,对于根用户则是井号 #。这个符号是环境变量 PS1决定的,执行下面的命令... 21 小时前