diff --git a/README.md b/README.md index 8ebb5811..b58199b0 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ 👉 把平时有用的手动操作做成脚本,这样可以便捷的使用。 ✨ -有自己用的好的脚本 或是 平时常用但没有写成脚本的功能,欢迎提供([提交Issue](https://github.com/oldratlee/useful-scripts/issues))和分享([Fork后提交代码](https://github.com/oldratlee/useful-scripts/fork))! 💖 +有自己用的好的脚本 或是 平时常用但没有写成脚本的功能,欢迎提供([提交Issue](https://github.com/oldratlee/useful-scripts/issues))和分享([Fork后提交代码](https://github.com/oldratlee/useful-scripts/fork))! 💖 本仓库的脚本(如`Java`相关脚本)在阿里等公司(如随身云,见[`awesome-scripts`仓库](https://github.com/Suishenyun/awesome-scripts)说明)的线上生产环境部署使用。 如果你的公司有部署使用,欢迎使用通过[提交Issue](https://github.com/oldratlee/useful-scripts/issues)告知,方便互相交流反馈~ 💘 @@ -29,7 +29,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/oldratlee/useful-scripts/m 更多下载&使用方式,参见[下载使用](docs/install.md)。 -📚 使用文档 +📚 用户使用文档 ---------------------- ### ☕ [`Java`相关脚本](docs/java.md) @@ -72,3 +72,111 @@ source <(curl -fsSL https://raw.githubusercontent.com/oldratlee/useful-scripts/m 目前`VCS`的脚本都是`svn`分支相关的操作。使用更现代的`Git`吧! 💥 因为不推荐使用`svn`,这里不再列出有哪些脚本了,如果你有兴趣可以点上面链接去看。 + +## Dev Guide + +为用户提供有用的功能当然是这个库的首要的价值体现和存在理由。 + +但作为一个**开源**项目,每个人都可以看到源码实现的,这个库或许能做得更多。 + +### 面向开发者的目标 + +- 期望体现`Shell/Bash`脚本生产环境级的严谨开发方式与最佳实践,进而有可能改善大家在生产环境中`Shell`脚本的质量状况。 +- 将`Shell/Bash`看作线上生产环境可使用的专业语言。 + +PS: + +- 虽然上面是自己期望的目标,但自己在`Shell`语言上一定会有很多理解和使用上的问题,这些实现脚本中也会很多需要的改进,可以一起学习、讨论与实践~ 💕 +- 这个库脚本的实现 也使用了`Python`。 + +#### 关于`Shell`脚本 + +命令行(`CLI`)几乎是每个程序员几乎每天都要使用的工具。相比图形界面工具(`GUI`),命令行有着自己不可替代的便利性和优越性。 + +命令行里写出来其实就是`Shell`脚本,可以说每个开发者会写`Shell`脚本(或多或少)。在生产环境的功能实现中,也常常会看到`Shell`脚本(虽然不如主流语言不那么常见)。 + +可能正因为上面所说的`Shell`脚本的便利性和大众性,`Shell`脚本的实现常常质量不高;包含生产环境的`Shell`脚本,不少是顺手实现的。 + +### 开发约定 + +这个库里,`Shell`脚本都使用`Bash 3+`。 + +原因是: + +- 个人系统学习过的是`Bash`,比较理解熟悉。 +- `Bash`目前还是`Shell`编程主流。 + PS: 虽然交互`Shell`个人已经使用`Zsh`,但严谨的`Shell`脚本开发时还是使用`Bash`。 + +### `Shell`学习与开发的相关资料 + +- 👷 **`Bash/Shell`最佳实践与安全编程** + - **_`Google Shell Style Guide`_** + - https://google.github.io/styleguide/shell.xml + - 中文版 https://zh-google-styleguide.readthedocs.io/en/latest/google-shell-styleguide/background/ + - 编写可靠shell脚本的八个建议 + https://www.xshell.net/shell/1577.html + - Bash Pitfalls: 编程易犯的错误 - 团子的小窝 + - http://kodango.com/bash-pitfalls-part-1 + - http://kodango.com/bash-pitfalls-part-2 + - http://kodango.com/bash-pitfalls-part-3 + - http://kodango.com/bash-pitfalls-part-4 + - Shell 编码风格 - 团子的小窝 + http://kodango.com/shell-script-style + - Bash 优良编程实践 + http://blog.jobbole.com/93447/ + - 不要自己去指定sh的方式去执行脚本 + https://github.com/oldratlee/useful-scripts/issues/57#issuecomment-326485965 + - Use the Unofficial Bash Strict Mode (Unless You Looove Debugging) + http://redsymbol.net/articles/unofficial-bash-strict-mode/ + - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts + https://github.com/koalaman/shellcheck +- 🎶 **Tips** + - 让你提升命令行效率的 Bash 快捷键 【完整版】 + https://linuxtoy.org/archives/bash-shortcuts.html + 补充:`ctrl + x, ctrl + e` 就地打开文本编辑器来编辑当前命令行,对于复杂命令行特别有用 + - 应该知道的Linux技巧 | | 酷 壳 - CoolShell + https://coolshell.cn/articles/8883.html + - 简洁的 Bash Programming 技巧 - 团子的小窝 + - http://kodango.com/simple-bash-programming-skills + - http://kodango.com/simple-bash-programming-skills-2 + - http://kodango.com/simple-bash-programming-skills-3 + - Bash 测试和比较函数 — `test`、`[`、`[[`、`((`、和 `if-then-else` 解密 + https://www.ibm.com/developerworks/cn/linux/l-bash-test.html + - Filenames and Pathnames in Shell (bash, dash, ash, ksh, and so on): How to do it Correctly + https://dwheeler.com/essays/filenames-in-shell.html + - 理解 IFS - 团子的小窝 + http://kodango.com/understand-ifs + - shell中的IFS详解 – 笑遍世界 + http://smilejay.com/2011/12/bash_ifs/ + - Bash脚本:怎样一行行地读文件(最好和最坏的方法) + http://blog.jobbole.com/72185/ + - Shell 脚本避免多次重复 source - 团子的小窝 + http://kodango.com/avoid-repeated-source-in-shell + - 一个奇怪的 echo 结果 - 团子的小窝 + http://kodango.com/a-strange-echo-result + - 浅谈 Shell 脚本配置文件格式 - 团子的小窝 + http://kodango.com/config-file-format-in-shell + - Bash function 还能这么玩 - 团子的小窝 + http://kodango.com/bash-functions + - Bash 获取当前函数名 - 团子的小窝 + http://kodango.com/get-function-name-in-bash + - Zsh和Bash,究竟有何不同 坑很深 + https://www.xshell.net/shell/bash_zsh.html +- 💎 **系统学习** + 看文章、了解Tips完全不能替代系统学习才能真正理解并专业开发! + - [Bash Pocket Reference](https://book.douban.com/subject/26738258/) + 力荐!说明简单直接结构体系的佳作,专业`Bash`编程必备!且更新到了新版的`Bash 4` + - [学习bash](https://book.douban.com/subject/1241361/) + 上面那本的展开版 + - Bash的官方手册(`man`的中文译文) + http://ahei.info/chinese-bash-man.htm + - Bash Reference Manual http://www.gnu.org/software/bash/manual/ + 官方文档,讲得全面且有深度,比如会全面地讲解不同转义的区别、命令的解析过程,这有助统一深入的方式认识Bash整个执行方式和过程。这些内容在其它书中往往不会讲(因为复杂难于深入浅出的讲解),但却一通百通的关键。 + - [命令行的艺术- github.com/jlevy/the-art-of-command-line](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md) + - wzb56/13_questions_of_shell: shell十三问--shell教程 https://github.com/wzb56/13_questions_of_shell + - 信息来自 https://github.com/KeKe-Li/book#linux + - alebcay/awesome-shell: A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php. + https://github.com/alebcay/awesome-shell + - 实用 Shell 文档 - 团子的小窝 + http://kodango.com/useful-documents-about-shell + - 更多参见个人整理的[书籍豆列 **_`Bash/Shell`_**](https://www.douban.com/doulist/1779379/)