{"id":19809670,"url":"https://github.com/zhangzhuang15/short-shell","last_synced_at":"2025-07-28T01:34:25.639Z","repository":{"id":122369931,"uuid":"446120365","full_name":"zhangzhuang15/short-shell","owner":"zhangzhuang15","description":"short but easy shell script  tutorial","archived":false,"fork":false,"pushed_at":"2023-11-21T13:52:43.000Z","size":15,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-28T18:25:43.958Z","etag":null,"topics":["chinese","demo","easy","example","shell","short","tutorial"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhangzhuang15.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-01-09T15:00:56.000Z","updated_at":"2022-02-02T05:45:29.000Z","dependencies_parsed_at":"2023-11-21T14:46:24.225Z","dependency_job_id":"b2555536-1a7e-4722-ba54-8a66f6a36bfb","html_url":"https://github.com/zhangzhuang15/short-shell","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/zhangzhuang15/short-shell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangzhuang15%2Fshort-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangzhuang15%2Fshort-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangzhuang15%2Fshort-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangzhuang15%2Fshort-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhangzhuang15","download_url":"https://codeload.github.com/zhangzhuang15/short-shell/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangzhuang15%2Fshort-shell/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267451082,"owners_count":24089293,"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","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["chinese","demo","easy","example","shell","short","tutorial"],"created_at":"2024-11-12T09:17:46.471Z","updated_at":"2025-07-28T01:34:25.616Z","avatar_url":"https://github.com/zhangzhuang15.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 介绍\n\n## 背景\n在之前的工作中，总是会碰到写一些shell脚本工具的情况，当时学习了shell的基本内容，做了零散的笔记，然后就搁置了。  \n\n最近想玩玩儿 `Makefile`，发现里边的写法基本就是shell脚本的套路，但是时间久了，提笔忘字，查阅之前的笔记，非常零散，需要思考好一阵子才能理解。于是就想整理整理，就形成了你所看到的这个小demo项目。\n\n\n\u0026nbsp;\n\n\n## 聚焦点\n* 介绍shell脚本基本用法，没有太难太复杂的内容\n* 只站在使用者的角度看shell脚本，不是对shell极其细致、全面的解析\n* 拒绝一切 shell 脚本的奇技淫巧\n* 追求简单、够用\n\n\n\u0026nbsp;\n\n\n## 如何使用\n1. 先阅读本文档，了解各个文件夹的用途；\n   \n2. 有的文件夹中，会有`README.md`，请按照它的提示开始学习；\n   \n3. 对于没有`README.md`的文件夹，可以直接看`shell_`  开头的shell脚本，跟着里面的注释做一些操作，进行探索；\n   \n4. 编写时，是用`zsh`运行的，请根据自己的PC配置，选择对应的shell脚本解释器，比如 `bash`；\n   \n5. 为了快速执行文件夹下的shell脚本，可以使用项目自带的`make`工具。\n   用法：在`Makefile`所在目录下执行`make run c=1` 。  \n   这将执行1-variable/shell_variable.sh文件。  \n   执行 `make  help`获取更多信息。\n  \n\n\u0026nbsp;\n\n\n## 项目结构\n每个文件夹聚焦一个知识点，具体对应关系如下：\n\n|   文件夹名称      |       知识点          |\n|:----:|:----|\n| 0-notes         |   如何使用注释         |\n| 1-variable      |   如何使用变量         |\n| 2-number        |   如何处理数字         |\n| 3-string        |   如何处理字符串       |\n| 4-array         |   如何使用数组         |\n| 5-if            |  如何使用 if 流程      |\n| 6-case          |  如何使用 case 流程    |\n| 7-for           |  如何使用 for循环      |\n| 8-while         |  如何使用 while循环    |\n| 9-until         |  如何使用 until循环    |\n| 10-function     |  如何使用 函数         |\n| 11-read         |  如何从标准输入接收数据  |\n| 12-include      |  如何引入其他 shell脚本 |\n| 13-command_line | 命令行中的参数如何接收   |\n\n对于第一次接触shell的朋友，可以按照顺序看起；\n\n\n\u0026nbsp;\n\n\n## 项目发展阶段\n\n### 2022.01.09\n* 完成主体骨架，内容简单，但基础知识点都照顾到了\n* 不涉及到shell中一些linux指令用法介绍，比如 `xargs` `sed`等\n\n\n\u0026nbsp;\n\n\n## 如何贡献\n* 首先，目前的内容仅是根据我个人的使用经验，并结合一些技术网站的资料整理得到，涉及到的情景有限，如果你在工作中使用了shell脚本，涉及到一些本项目没有提到的知识点、坑，欢迎补充。  \n\n* 如果你打算做一些贡献，请建立本地分支，分支命名为`shell_\u003cyour nicky name or something else\u003e`。\n\n* 对于已有的知识点做补充，请在相应的文件夹下，创建`example`子文件夹，在里面编写你的shell脚本。\n\n* 对于新的知识点做补充，请参考0-notes~13-command_line文件夹的命名格式创建新的文件夹，当然，标号要从14开始。  \n\n   * 请确保一个文件夹只交代一个知识点，并配有`README.md`以作说明。\n\n   * 编写的 shell 样例脚本尽量简单、明确，注释当中给出一些操作提示，方便读者可以动手参与其中，查看运行现象（PS：光看代码，相当无趣）。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangzhuang15%2Fshort-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhangzhuang15%2Fshort-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangzhuang15%2Fshort-shell/lists"}