{"id":20355931,"url":"https://github.com/hedzr/bash-framework","last_synced_at":"2025-06-17T04:06:37.727Z","repository":{"id":96617115,"uuid":"75447764","full_name":"hedzr/bash-framework","owner":"hedzr","description":"minimal starting of bash programming","archived":false,"fork":false,"pushed_at":"2019-08-26T01:22:18.000Z","size":28,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-04T17:41:05.714Z","etag":null,"topics":["aws-cn","bash","centos","devops","disc-info","ops","ps1","shell"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hedzr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-03T02:54:26.000Z","updated_at":"2019-08-31T13:48:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"8c10e1d8-77b3-481d-9a47-04e21deef33b","html_url":"https://github.com/hedzr/bash-framework","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/hedzr/bash-framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedzr%2Fbash-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedzr%2Fbash-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedzr%2Fbash-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedzr%2Fbash-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hedzr","download_url":"https://codeload.github.com/hedzr/bash-framework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hedzr%2Fbash-framework/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260288471,"owners_count":22986667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-cn","bash","centos","devops","disc-info","ops","ps1","shell"],"created_at":"2024-11-14T23:14:32.062Z","updated_at":"2025-06-17T04:06:37.701Z","avatar_url":"https://github.com/hedzr.png","language":"Shell","readme":"# Bash Framework\n\n`Bash Framwork` 是一个最小集合的Bash脚本编程框架，主要面向  `DevOps` 管理任务。\n因此，默认的函数集合中包含了像 `package-install`, `is_package_installed`, `if_ubuntu`, `if_centos`, `is_root` 这类辅助函数。\n\n## Installation\n\n通过如下的脚本可以将 `Bash Framwork` 部署到目标机上：\n\n```bash\ncurl -sSL https://hedzr.com/bash-framework/installer | sudo bash -s\n```\n\n默认的安装位置是 `/usr/local/bin/ops-fw/`，并包含一个引导性的脚本 `/usr/local/bin/bash-framework` / `ops`。\n\n当安装完成后应该重新登录到目标机的shell环境中，以便 `Bash Framwork` 基础环境自动加载。\n\n一旦安装成功，你可以通过 `bash-framework`/`ops` 来启动主控脚本，具体方法详见：\n\n```bash\nbash-framework -v\nbash-framework --help\nbash-framework help\nbash-framework usage\n```\n\n## 在此基础上开发你的脚本集合\n\n在目标机上已经有了 `Bash Framwork` 的基本源代码，你可以复制以下内容到你的工作目录中，然后进行自定义开发：\n\n```bash\nmkdir my-work \u0026\u0026 cd -\ncp -R /usr/local/bin/ops-fw/* ./\ncp /usr/local/bin/bash-framework ./my-ops\n```\n\n也可以直接 `git clone https://github.com/hedzr/bash-framework/` 后开始你的自定义工作。\n\n## Installer 做了些什么？\n\n1. 下载脚本包的全部文件到 `/usr/local/bin` 及其子目录 `ops-fw`\n2. 使能主文件 bash-framework 可执行\n3. 建立名为 `ops` 的符号链接，可以更便利地使用引导脚本 `bash-framework`\n4. 在当前用户的 `$HOME/.bashrc` 中追加 `bash-framwork` 环境，包括：\n   - PS1颜色\n   - 登录时信息 `ii` (由 `at-login` 载入)\n   - 基本环境配置，提供一组别名和函数以加速命令行操作 \n\n\n## 使用 `Bash Framwork`\n\n### 使用引导性命令 `ops`\n\n整个工具集的所有功能性命令，均通过 home 命令 `ops` 来引导。\n\n\u003e **DONE：ops指令具有自动补全机制，从输入“ops\u003cTAB\u003e\u003cTAB\u003e”开始渐进地获得帮助。**\n\n```bash\nops\nops help\nops version [-r]\nops upgrade\nops install|config|tune [...]\nops nginx|... install|tune \n\nops backup|restore foreman|dns|puppet|...\n  # NOTE: restore功能并未实现\n```\n\n#### nginx 功能\n\n```bash\nops install-nginx\nops tune-nginx\n或者：\nops nginx install|tune\n```\n\n#### consul 功能\n\n略\n\n### `bash-completion` 不生效？\n\n请确保安装了 `bash-completion` 软件包且为当前用户激活了该机制。\n\n一般地，多数发行版都已经预装了 `bash-completion` 软件包，你可以确认它，也可以（通常）再度安装：\n\n```bash\n# centos / redhat\nyum install -y --enablerepo=epel bash-completion\ndnf install bash-completion\n# ubuntu / debian\napt-get install bash-completion\napt install bash-completion            # Ubuntu 16\n```\n\n检查 `$HOME/.bashrc` 文件内容，确定以下内容是有效且未被注释的：\n\n```bash\nif [ -f /etc/bash_completion ] \u0026\u0026 ! shopt -oq posix; then\n   . /etc/bash_completion\nfi\n\n```\n\n不同系统可能略有出入，但一定会 `. /etc/bash_completion`。\n\n`/etc/bash_completion` 将会装载 `/etc/bash_completion.d/*`，包括 `/etc/bash_completion.d/ops_ac`，这是 `Bash Framework` 的引导命令 `ops` 的自动完成供给者。\n\n\n\n### 使用辅助性 helpers\n\n**辅助性命令的特点是无需任何前置引导。**\n\n**通常，可以在root身份下直接使用。**\n\n例如：\n\n```bash\n$ hostnames\nhostname: sw0ops00.ops.local\n    fqdn: sw0ops00.ops.local\nall-fqdn: sw0ops00.ops.local \n   short: sw0ops00\n  domain: ops.local\n   alias: sw0ops00\n```\n\n这些辅助性的helpers, 均可借助bash命令行自动完成机制简化你的输入，例如输入“if\u003cTAB\u003e\u003cTAB\u003e”试试。\n\n#### if_os, if_not_os, if_nix, if_mac, if_ubuntu, if_centos\n\nif[not_]os [linux|darwin|cygwin|...]\nif_nix [gnu|bsd|sun]\n\n#### if_aliyun, if_aws_cn, if_aws\n\n注意这三个测试目前只能在AWS CN中正确使用，尚未具体完成。\n\n#### ii\n\n快速的查看服务器关键性基本信息。\n\n```bash\n$ ii\n\n       You are logged on : sw0vvv00.ops.local\n Additionnal information :  Linux sw0vvv00.ops.local 4.4.35-33.55.amzn1.x86_64 #1 SMP Tue Dec 6 20:30:04 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\n            Current date :  2017年 02月 15日 星期三 01:12:12 UTC\n           Machine stats :  01:12:12 up 16:02,  1 user,  load average: 0.00, 0.00, 0.00\n        Local IP Address : *.*.16.10 / eth0\nuse: 'ip-wan' to query the public ip address of mine.\navaliable commands: disc-info, ports, ii, ip-wan, ip-lan, ip-gw, ip-mask, ip-subnet, ....\n```\n\n#### ports, disc-info, ip-wan, ip-lan, ip-gw, ip-mask, ip-subnet, hostnames, disc-info-all\n\n基本服务器信息查询命令\n\n#### more...\n\nis_root\nis_in_source\nif_launched_from_symlink\nis_bash\nis_bash_t2\nis_zsh\nis_interactive_shell\nis_not_interactive_shell\nis_ps1\nis_not_ps1\nis_stdin\nis_not_stdin\nis_package_installed\nis_packages_all_installed\nis_packages_any_installed\nis_package_lower\npackage-list    # 仅centos/yum可用\npackage-list-installed\ninstall_packages / install-packages / package-install\n\n\n## 适合于谁？\n\n`Bash Framework` 适合于要开发大量shell脚本的编程人员，我们提供了一个基本的命令组织结构，以及安装和分发模型，你可以在此基础上展开自己的业务逻辑开发，并在任一服务器上快速分发你的脚本集合。\n\n## 缘由\n\n`Bash Framework` 基于作者历年来经验进行了提炼，希望能帮助到 ops/devops 工具作者或者其他人。\n\n## LICENSE\n\nMIT\n\n## AUTHOR\n\nHedzr\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedzr%2Fbash-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhedzr%2Fbash-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedzr%2Fbash-framework/lists"}