{"id":18401644,"url":"https://github.com/linyimin0812/shell-learning","last_synced_at":"2026-04-30T13:34:34.738Z","repository":{"id":75351323,"uuid":"154427694","full_name":"linyimin0812/shell-learning","owner":"linyimin0812","description":"shell programming learning record","archived":false,"fork":false,"pushed_at":"2019-06-05T15:53:08.000Z","size":107,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-30T13:34:31.956Z","etag":null,"topics":["bash","shell"],"latest_commit_sha":null,"homepage":null,"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/linyimin0812.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":"2018-10-24T02:38:05.000Z","updated_at":"2019-06-05T15:53:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"ee37c828-db31-4638-90c6-40288ed497c2","html_url":"https://github.com/linyimin0812/shell-learning","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linyimin0812/shell-learning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyimin0812%2Fshell-learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyimin0812%2Fshell-learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyimin0812%2Fshell-learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyimin0812%2Fshell-learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linyimin0812","download_url":"https://codeload.github.com/linyimin0812/shell-learning/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linyimin0812%2Fshell-learning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32466333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bash","shell"],"created_at":"2024-11-06T02:39:27.457Z","updated_at":"2026-04-30T13:34:34.704Z","avatar_url":"https://github.com/linyimin0812.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# shell-learning\nshell programming learning record\n\n## Part 1 Introduction\n\n[Chapter 1 Introduction](docs/Part-1-Introduction/Chapter-1-Introduction.md)\n\n## Part 2 Basic\n\n### Docs\n\n[Chapter 2 Spaecial Character](docs/Part-2-Basic/Chapter-2-Special-Characters.md)\n\n[Chapter 3 Introduction to varialbes and parameters](docs/Part-2-Basic/Chapter-3-Introduction-to-Variables-and-Parameters.md)\n\n[Chapter 4 Quoting](docs/Part-2-Basic/Chapter-4-Quoting.md)\n\n[Chapter 5 Exit and Exit Status](docs/Part-2-Basic/Chapter-5-Exit-and-Exit-Status.md)\n\n[Chapter 6 Tests](docs/Part-2-Basic/Chapter-6-Tests.md)\n\n### Example Script\n\n[example 1: arithmetic-and-string-comparison](scripts/Part-2-Basic/arithmetic-and-string-comparison.sh)\n\n[example 2: code-blocks-Input-redirection](scripts/Part-2-Basic/code-blocks-Input-redirection.sh)\n\n[example 3: code-blocks-output-redirection](scripts/Part-2-Basic/code-blocks-output-redirection.sh)\n\n[example 4: echo-wired-variable](scripts/Part-2-Basic/echo-wired-variable.sh)\n\n[example 5: exit-and-exit-status](scripts/Part-2-Basic/exit-and-exit-status.sh)\n\n[example 6: file-test-operator](scripts/Part-2-Basic/file-test-operator.sh)\n\n[example 7: integer-or-string](scripts/Part-2-Basic/integer-or-string.sh)\n\n[example 8: negating-a-condition-using-!](scripts/Part-2-Basic/negating-a-condition-using-!.sh)\n\n[example 9: plain-variable-assignmnet](scripts/Part-2-Basic/plain-variable-assignmnet.sh)\n\n[example 10: positional-parameters](scripts/Part-2-Basic/positional-parameters.sh)\n\n[example 11: quotes-split](scripts/Part-2-Basic/quotes-split.sh)\n\n[example 12: testing-whether-a-string-is-null](scripts/Part-2-Basic/testing-whether-a-string-is-null.sh)\n\n[example 13: using-shift](scripts/Part-2-Basic/using-shift.sh)\n\n[example 14: variable-assignmnet-plain-fancy](scripts/Part-2-Basic/variable-assignmnet-plain-fancy.sh)\n\n[example 15: varible-assignment-substitution](scripts/Part-2-Basic/varible-assignment-substitution.sh)\n\n\n\n## Part 3 Beyond the basic\n\n### Docs\n\n[Chapter 7 Another Look at Variables](docs/Part-3-Beyond-the-Basic/Chapter-7-Another-Look-at-Variable.md)\n\n[Chapter 8 Manipulating Variables](docs/Part-3-Beyond-the-Basic/Chapter-8-Manipulating-Variables.md)\n\n[Chapter 9 Loops](docs/Part-3-Beyond-the-Basic/Chapter-9-Loops.md)\n\n[Chapter 10 Command Substitution](docs/Part-3-Beyond-the-Basic/Chapter-10-Command-Substitution.md)\n\n### Example Script\n\n[example 1: IFS-and-Whitespace](scripts/Part-3-Beyond-the-Basic/IFS-and-Whitespace.sh)\n\n[example 2: reply](scripts/Part-3-Beyond-the-Basic/reply.sh)\n\n[example 3: second](scripts/Part-3-Beyond-the-Basic/second.sh)\n\n[example 4: timeout](scripts/Part-3-Beyond-the-Basic/timeout.sh)\n\n[example 5: uid](scripts/Part-3-Beyond-the-Basic/am-i-root.sh)\n\n[example 6: $* and $@](scripts/Part-3-Beyond-the-Basic/inconsistent-internal-variables-behavior.sh)\n\n[example 7 substring extrction](scripts/Part-3-Beyond-the-Basic/substring-extraction.sh)\n\n[example 8 generating an 8-character random string](scripts/Part-3-Beyond-the-Basic/generating-an-8-character-random-string.sh)\n\n[example 9 change suffix name](scripts/Part-3-Beyond-the-Basic/change-suffix-name.sh)\n\n[example 10 substring replacement](scripts/Part-3-Beyond-the-Basic/change-suffix-name.sh)\n\n[example 11 default value](scripts/Part-3-Beyond-the-Basic/default-value.sh)\n\n[example 12 simple for loop](scripts/Part-3-Beyond-the-Basic/simple-for-loops.sh)\n\n[example 13 two parameters in each elements](scripts/Part-3-Beyond-the-Basic/two-parameters-in-each-elements.sh)\n\n[example 14 operating a file list contained in a variable](scripts/Part-3-Beyond-the-Basic/operating-a-file-list-contained-in-a-variable.sh)\n\n[example 15 operating on a p](scripts/Part-3-Beyond-the-Basic/operating-on-a-parameterized-file-list.sh)\n\n[Example 16 mssing list in a for loop](scripts/Part-3-Beyond-the-Basic/mssing-list-in-a-loop.sh)\n\n[Example 17 generating list with command substitution](scripts/Part-3-Beyond-the-Basic/generating-list-with-command-substitution.sh)\n\n[Example 18 effects of continue and break in a loop](scripts/Part-3-Beyond-the-Basic/break-and-continue-in-a-loop.sh)\n\n[Example 19 Using case](scripts/Part-3-Beyond-the-Basic/using-case.sh)\n\n[Example 20 Creating menus using select](scripts/Part-3-Beyond-the-Basic/creating-menus-using-select.sh)\n\n[Example 21 Generating a variable from a loop](scripts/Part-3-Beyond-the-Basic/generating-a-variable-from-a-loop.sh)\n\n## Part-4-Commands\n\n### Docs\n\n[Chapter-11-Commands](docs/Part-4-Commands/Chapter-11-Internal-Commands-and-Buildins.md)\n\n### scripts\n\n[Example 1 script spawns multiple instances of itself](scripts/Part-4-Commands/script-spawns-multiple-instances-of-itself.sh)\n\n[Example 2 printf in action](scripts/Part-4-Commands/printf-in-action.sh)\n\n[Example 3 variables assignment using read](scripts/Part-4-Commands/variable-assignment-using-read.sh)\n\n[Example 4 letting let do arthmetic](scripts/Part-4-Commands/letting-let-do-arithmetic.sh)\n\n[Example 5 let command return a surprising exit status](scripts/Part-4-Commands/let-command-return-a-surprising-exit-status.sh)\n\n[Example 6 Using set with positional parameters](scripts/Part-4-Commands/using-set-with-positional-parameters.sh)\n\n[Example 7 unsetting a variable](scripts/Part-4-Commands/unsetting-a-variable.sh)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinyimin0812%2Fshell-learning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinyimin0812%2Fshell-learning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinyimin0812%2Fshell-learning/lists"}