专栏名称: SegmentFault思否
SegmentFault (www.sf.gg)开发者社区,是中国年轻开发者喜爱的极客社区,我们为开发者提供最纯粹的技术交流和分享平台。
目录
相关文章推荐
程序员的那些事  ·  清华大学:DeepSeek + ... ·  昨天  
程序员的那些事  ·  印度把 DeepSeek ... ·  昨天  
OSC开源社区  ·  宇树王兴兴早年创业分享引围观 ·  3 天前  
程序猿  ·  “我真的受够了Ubuntu!” ·  2 天前  
程序员的那些事  ·  成人玩偶 + ... ·  4 天前  
51好读  ›  专栏  ›  SegmentFault思否

一份 shell“圣经”收好

SegmentFault思否  · 公众号  · 程序员  · 2019-10-31 12:27

正文

本文授权转载

来源:公众号【编程珠玑】

ID:shouwangxiansheng

作者:守望先生




前言

不知道你是否在为突然想实现某个功能的小脚本而苦苦寻找答案,这里有一份“圣经”用来查看各种仅使用内置 bash 命令实现各种常用的功能和鲜为人知的用法。

为什么要写脚本?

无论是作为 Linux 应用开发还是运维,编写 shell 脚本都是一个最基本的技能,而使用 shell 能够简洁快速地解决很多问题,提高效率。

什么你还不会?那么建议你花点时间学一下,毕竟花不了你太多时间就可以让它给你干活。你也可以参考这里了解一下最基本的用法《 这些必备的shell知识你都会了吗?

为什么要使用内置 bash 来实现?


使用内置的 bash 命令可以避免一些依赖,不至于你的脚本迁移到另外一个系统还需要装一些依赖,另外一方面,使用这些内置命令常常也会更加高效。

这份“圣经”是怎样的?

实际上它是 github 上地一个星标项目,地址如下:
https://github.com/dylanaraps/pure-bash-bible

目前星标近 20k,它列出了一些常用的功能,有哪些呢,我们可以看看。

字符串

去掉字符串首尾的空格
去掉字符串中的空格并用空格分割
在字符串中使用正则表达式
分割字符串
字符串大小写转换
字符串反转
检查字符串中是否包含某个子串
检查字符串是否以某个子串结尾
……

数组

反转数组
去除数组中重复元素
随机排列数组元素
……

循环

以数值作为循环条件
以数值变量作为循环条件
以数组作为循环条件
遍历文件内容遍历文件和目录
……

文件处理

将文件内容读取到字符串中
将文件内容以行为单位读取到数组中
读取文件的前n行
读取文件的最后n行
创建空文件
……

文件路径

获取全路径中的目录名
获取全路径中的文件名

注意,这里仅仅是目录的一小部分,原项目中还有很多内容,包括一些内置变量的获取,系统信息的获取,一些常用语法,常见表达式,基本运算等等。

内容是什么样子的呢?

举个例子,如何去掉字符串首尾的元素,它给了一个 shell 函数:

trim_string() {
    # Usage: trim_string "   example   string    "
    : "${1#"${1%%[![:space:]]*}"}"
    : "${_%"${_##*[![:space:]]}"}"
    printf '%s\n' "$_"
}

那么在 shell 脚本中就可以这样调用:

trim_string "    Hello,  World    "
#会打印这个结果:Hello, World

而又例如在介绍循环的时候,告诉你一些常见的循环方式:

# Loop from 0-100 (no variable support).
for i in {0..100}; do
    printf '%s\n' "$i






请到「今天看啥」查看全文