{"id":23090853,"url":"https://github.com/marob05/unixutils","last_synced_at":"2026-02-19T19:32:14.661Z","repository":{"id":261828853,"uuid":"885467042","full_name":"MaroB05/UNIXutils","owner":"MaroB05","description":"A series of projects where I implement Unix utilities in C from scratch. Additionally I explore various implementations (if possible)","archived":false,"fork":false,"pushed_at":"2025-03-24T12:10:16.000Z","size":2408,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T22:38:13.757Z","etag":null,"topics":["cprogramming-language","linux","unix","utilities"],"latest_commit_sha":null,"homepage":"","language":"C","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/MaroB05.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,"zenodo":null}},"created_at":"2024-11-08T16:33:03.000Z","updated_at":"2025-03-24T12:10:19.000Z","dependencies_parsed_at":"2024-11-08T17:39:38.567Z","dependency_job_id":"c3240e1e-d67e-4375-9726-f01846db04f0","html_url":"https://github.com/MaroB05/UNIXutils","commit_stats":{"total_commits":18,"total_committers":2,"mean_commits":9.0,"dds":0.05555555555555558,"last_synced_commit":"e228b48a7432ecb4a8ef833a78869d29decbf259"},"previous_names":["marob05/unixutils"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MaroB05/UNIXutils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaroB05%2FUNIXutils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaroB05%2FUNIXutils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaroB05%2FUNIXutils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaroB05%2FUNIXutils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaroB05","download_url":"https://codeload.github.com/MaroB05/UNIXutils/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaroB05%2FUNIXutils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29628797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cprogramming-language","linux","unix","utilities"],"created_at":"2024-12-16T21:16:20.858Z","updated_at":"2026-02-19T19:32:14.643Z","avatar_url":"https://github.com/MaroB05.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# myUNIX Utilities\n\nA collection of simple UNIX utilities implemented in C.\nThe goal of this series of mini projects is to explore the C Programming Language, hence we may explore multiple approaches to the same task.\n\n## Utilities\n\n### mcat\n\nA minimal implementation of the `cat` command, which reads and displays the contents of one or more files.\nMultiple implementations presented with performance enhancemenets.\n\n### mgrep\nA simple implementation of the `grep` command, which searches for a pattern in one or more files and displays the matching lines.\n\n### mzip \u0026 munzip\nA simple implementation of `zip` and `unzip` compression utilities, using the [Run-length Encoding](https://en.wikipedia.org/wiki/Run-length_encoding) Algorithm.\n\n### mcp\nImplementing Unix's cp allowing you to copy files.\n* Multiple implementations are presented:\n  - standard `read()` and `write()`\n  - `sendfile` system call.\n  - use `fallocate()` to pre-allocate file blocks on disk.\n\n### pwd\nImplementation of pwd for printing the current directory.\n\n### helperFunctions\n\nA library of helper functions which we develop as we go on, which is used by the above utilities, providing functionality for file I/O, string manipulation, and more.\n\n## Usage\n\n### mcat\n\n* Compile: `gcc ../helperFunctions/functions.c mcat.c -o mcat`\n* Run: `./mcat file1 file2 ...`\n* Multiple implementations are presented, with the best of them mcat4 which performs around 13% faster than standard unix cat.\n\n### mgrep\n\n* Compile: `gcc ../helperFunctions/functions.c grep.c -o mgrep`\n* Run: `./mgrep pattern file1 file2 ...`\n\n### mzip\n* Compile: `make compile`\n* Run: `./build/mzip.out file`\n\n### munzip\n* Compile: `make compile`\n* Run: `./build/munzip.out file`\n\n### mcp\n* Compile: `make compile`\n* Run: `./build/mcp.out src dist`\n\n## Note\nBenchmarks are done using a tool I have been developing called [`Bentest`](https://github.com/MaroB05/Bentest) for performance measurement\n\n## Contributing\nContributions are welcome! If you'd like to add a new utility or improve an existing one, please submit a pull request.\n\n## License\n\nThis project is licensed under the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarob05%2Funixutils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarob05%2Funixutils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarob05%2Funixutils/lists"}