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