{"id":15748405,"url":"https://github.com/binaryphile/kaizen","last_synced_at":"2026-04-30T02:37:50.393Z","repository":{"id":143324966,"uuid":"91101964","full_name":"binaryphile/kaizen","owner":"binaryphile","description":"Lots of small bash improvements in pure bash","archived":false,"fork":false,"pushed_at":"2019-02-21T20:07:40.000Z","size":297,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-13T09:44:31.362Z","etag":null,"topics":["bash"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/binaryphile.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2017-05-12T14:53:53.000Z","updated_at":"2022-03-17T20:20:53.000Z","dependencies_parsed_at":"2023-05-14T21:30:13.337Z","dependency_job_id":null,"html_url":"https://github.com/binaryphile/kaizen","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/binaryphile/kaizen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fkaizen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fkaizen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fkaizen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fkaizen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binaryphile","download_url":"https://codeload.github.com/binaryphile/kaizen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryphile%2Fkaizen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32452742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"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":["bash"],"created_at":"2024-10-04T05:41:42.162Z","updated_at":"2026-04-30T02:37:50.377Z","avatar_url":"https://github.com/binaryphile.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"kaizen [![Build Status](https://travis-ci.org/binaryphile/kaizen.svg?branch=master)](https://travis-ci.org/binaryphile/kaizen)\n======\n\nIn the spirit of small, continuous improvements of its namesake, kaizen\nis a library of functions meant to be small improvements to working with\nbash.\n\nFeatures:\n\n-   readability - many cryptic bashisms are given simple names, for\n    example `given?` for `[[ -n ]]`\n\n**NOTE: This readme is mostly correct but out of date. I will update it\nas soon as possible. In the meantime, inspect the tests in `shpec/` for\nusage.**\n\nInstallation\n============\n\nFirst clone [concorde] and add it's `lib` directory to your path.\n\nThen clone this repository and add its `lib` directory to your path.\n\nUsage\n=====\n\nThis library is built on the functionality in `concorde`, so please\nconsult its documentation first.\n\nThe whole library:\n\n    source concorde.bash\n    $(require kaizen)\n\nJust the `given?` function:\n\n    source concorde.bash\n    $(bring given? from kaizen)\n\nKaizen API\n==========\n\n\"Accepts literals or variable names\" means that the arguments may be\nspecified normally, using string literals or expansions for example, or\nwith the bare name of a variable (as a normal string argument). If the\nreceiving function detects that the supplied argument is the name of a\ndefined variable, it will automatically expand the variable itself.\n\nArray and hash (associative array) literals may also be passed as\nstrings for those types of variables. Any literal that would work for\nthe right-hand-side of an assignment statement works (minus parentheses\nand identifier brackets) in that case, such as `'one=1 two=2'`\n(remember to use single- or double-quotes).\n\n-   append\\_to\\_file\n\n-   args?\n\n-   contains?\n\n-   **`directory?`** *`path`* - determines whether a path is an actual\n    directory\n\n    Accepts a literal or variable name\n\n    *Returns*: boolean true if `path` is a directory or symlink to a\n    directory\n\n    Has the same semantics as the `[[ -d ]]` test\n\n-   ends\\_with?\n\n-   **`executable?`** *`path`* - determines whether a path is executable\n\n    Accepts a literal or variable name\n\n    *Returns*: boolean true if `path` is a file or directory with the\n    executable permission, or a symlink to one\n\n    Has the same semantics as the `[[ -x ]]` test\n\n-   **`executable_file?`** *`path`* - determines whether a path is a\n    file and has the executable permission\n\n    Accepts a literal or variable name\n\n    *Returns*: boolean true if `path` is a file with the executable\n    permission, or a symlink to one\n\n    Equivalent to `file? path \u0026\u0026 executable? path`\n\n-   false?\n\n-   **`file?`** *`path`* - determines whether a path is a file\n\n    Accepts a literal or variable name\n\n    *Returns*: boolean true if `path` is a file permission, or a symlink\n    to one\n\n    Has the same semantics as the `[[ -f ]]` test\n\n-   **`given?`** *`variable_name`* - determines whether the named\n    variable is not empty\n\n    *Returns*: boolean false if `variable_name` is a blank string, if a\n    string variable, or has elements, if an array or associative array.\n    Also returns false if `variable_name` is not set.\n\n    Has the same semantics as the `[[ -n ]]` test\n\n-   glob?\n\n-   less\\_than?\n\n-   more\\_than?\n\n-   **`nonexecutable_file?`** *`path`* - determines whether a path is a\n    file and does not have the executable permission\n\n    Accepts a literal or variable name\n\n    *Returns*: boolean true if `path` is a file with the executable\n    permission, or a symlink to one\n\n    Equivalent to `file? path \u0026\u0026 executable? path`\n\n-   trim\\_from\\_last\n\n-   trim\\_from\\_last\n\n-   true?\n\n-   write\\_to\\_file\n\n  [concorde]: https://github.com/binaryphile/concorde\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryphile%2Fkaizen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinaryphile%2Fkaizen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryphile%2Fkaizen/lists"}