{"id":15200945,"url":"https://github.com/rustcoreutils/posixutils-rs","last_synced_at":"2026-03-10T16:18:44.029Z","repository":{"id":226808143,"uuid":"769694761","full_name":"rustcoreutils/posixutils-rs","owner":"rustcoreutils","description":"Core POSIX command line utilities in safe Rust","archived":false,"fork":false,"pushed_at":"2026-02-25T03:07:02.000Z","size":7341,"stargazers_count":422,"open_issues_count":4,"forks_count":31,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-25T07:53:15.749Z","etag":null,"topics":["coreutils","coreutils-programs","posix","posix-compatible","posix-compliance","posix-compliant","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/rustcoreutils.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-09T19:45:44.000Z","updated_at":"2026-02-25T06:58:47.000Z","dependencies_parsed_at":"2024-04-15T02:34:02.233Z","dependency_job_id":"41ff488a-84df-4d15-ace2-6ce6761b549d","html_url":"https://github.com/rustcoreutils/posixutils-rs","commit_stats":null,"previous_names":["rustcoreutils/posixutils-rs"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/rustcoreutils/posixutils-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustcoreutils%2Fposixutils-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustcoreutils%2Fposixutils-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustcoreutils%2Fposixutils-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustcoreutils%2Fposixutils-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustcoreutils","download_url":"https://codeload.github.com/rustcoreutils/posixutils-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustcoreutils%2Fposixutils-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30342165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:55:29.454Z","status":"ssl_error","status_checked_at":"2026-03-10T15:54:58.440Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["coreutils","coreutils-programs","posix","posix-compatible","posix-compliance","posix-compliant","rust","rust-lang"],"created_at":"2024-09-28T03:01:35.457Z","updated_at":"2026-03-10T16:18:44.020Z","avatar_url":"https://github.com/rustcoreutils.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\n# posixutils-rs\n\nThis is a suite of Rust-native core command line utilities (cp, mv,\nawk, make, vi, ...) using POSIX.2024 as the baseline specification.\n\n## Goals\n\nThe goal is to create clean, race-free userland utilities that are POSIX\ncompliant, maximizing compatibility with existing shell scripts while\nminimizing bloat.\n\nImplementation goals include clean, safe Rust code and maximal use of\nsmall Rust community crates.  This project's utilities should \"look like\nnormal Rust programs.\"\n\nCore POSIX specification: https://pubs.opengroup.org/onlinepubs/9699919799/   (Old, free edition.  POSIX.2024 was just released.)\n\n## WANTED:  Volunteers!\n\nContributions are welcome!  Developers and non-developers alike, please read [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n**Note:** This project accepts contributions via **GitHub Issues only** (not Pull Requests). See CONTRIBUTING.md for details on this policy.\n\n### Non-goals\n\nIt is _not_ a goal to be compatible with GNU utilities, which are\nsometimes viewed as bloated and overloaded with rarely-used options.\n\nPopular GNU options will be supported by virtue of the \"don't break\nscripts\" rule.  Unpopular options will not be implemented, to prevent\nbloat.\n\n## Similar projects\n\nA similar project from the author, written in C++, is\nhttps://github.com/jgarzik/posixutils\n\nA project with more narrow scope, with the aim of GNU coreutils compatibility, is uutils: https://github.com/uutils/coreutils\n\nBecause it is a FAQ, the major differences between this project and uutils are:\n1. Wider scope:  posixutils is far more ambitious than uutils from a breadth standpoint:  posixutils will include bc, m4, c99 compiler, a cron daemon etc.   uutils is far more limited in the scope of programs covered, mimicing GNU coreutils.\n2. More minimalist:  Each posixutils utility _implementation_ is intentionally more minimalist, intending to avoid the bloat of supporting rarely-used, non-POSIX features.  Our common denominator and baseline is the POSIX spec, then add non-POSIX features that users cannot live without.\n3. Transportable:  Each posixutils utility should look like normal Rust code, easily stand alone with little-or-no deps, and be used in another project.   This project is MIT-licensed, not GPL licensed, to aid in that transportability goal.\n\n## Utility status\n\n## Stage 6 - Audited\n\n(none)\n\n## Stage 5 - Fully Translated to 2+ languages\n\n(none)\n\n## Stage 4 - Code coverage\n\n(none)\n\n## Stage 3 - Test coverage\n\n - [x] admin (SCCS)\n - [x] ar (Development)\n - [x] asa\n - [x] at (cron cat.)\n - [x] awk\n - [x] basename\n - [x] bc\n - [x] c99 (Development)\n - [x] cal\n - [x] cflow (Development)\n - [x] cksum\n - [x] cmp\n - [x] comm\n - [x] compress (compress cat.)\n - [x] cp\n - [x] crontab (cron cat.)\n - [x] csplit\n - [x] ctags (Development)\n - [x] cut\n - [x] cxref (Development)\n - [x] delta (SCCS)\n - [x] diff\n - [x] df\n - [x] dirname\n - [x] du\n - [x] echo\n - [x] ed (Editors)\n - [x] ex (Editors)\n - [x] expand\n - [x] expr\n - [x] false\n - [x] file\n - [x] find\n - [x] fold\n - [x] fuser\n - [x] gencat (i18n)\n - [x] get (SCCS)\n - [x] getconf\n - [x] gettext (i18n)\n - [x] grep\n - [x] head\n - [x] iconv (i18n)\n - [x] join\n - [x] lex (Development)\n - [x] link\n - [x] locale (i18n)\n - [x] localedef (i18n)\n - [x] logger\n - [x] ls\n - [x] m4\n - [x] mailx\n - [x] man\n - [x] make\n - [x] mkdir\n - [x] more\n - [x] msgfmt (i18n)\n - [x] mv\n - [x] ngettext (i18n)\n - [x] nl\n - [x] nm (Development)\n - [x] od\n - [x] paste\n - [x] patch\n - [x] pax\n - [x] pr\n - [x] printf\n - [x] prs (SCCS)\n - [x] ps\n - [x] readlink\n - [x] realpath\n - [x] rm\n - [x] rmdel (SCCS)\n - [x] rmdir\n - [x] sact (SCCS)\n - [x] sccs (SCCS)\n - [x] sed\n - [x] sh\n - [x] sort\n - [x] split\n - [x] strings\n - [x] strip (Development)\n - [x] stty\n - [x] tabs\n - [x] talk (with talkd local daemon)\n - [x] tail\n - [x] test\n - [x] time\n - [x] timeout\n - [x] tput\n - [x] tr\n - [x] true\n - [x] tsort\n - [x] tty\n - [x] uname\n - [x] uncompress (compress cat.)\n - [x] uudecode (uue)\n - [x] uuencode (uue)\n - [x] unexpand\n - [x] unget (SCCS)\n - [x] uniq\n - [x] unlink\n - [x] uucp (UUCP)\n - [x] uustat (UUCP)\n - [x] uux (UUCP)\n - [x] val (SCCS)\n - [x] vi (Editors)\n - [x] wc\n - [x] what (SCCS)\n - [x] who\n - [x] write\n - [x] dd\n - [x] xargs\n - [x] id\n - [x] ipcs (IPC)\n - [x] kill\n - [x] lp\n - [x] xgettext (i18n)\n - [x] yacc (Development)\n - [x] zcat (compress cat.)\n\n## Stage 2 - Feature-complete and POSIX compliant\n\n - [x] batch (cron cat.)\n - [x] cat\n - [x] chgrp\n - [x] chmod\n - [x] chown\n - [x] date\n - [x] env\n - [x] ipcrm (IPC)\n - [x] ln\n - [x] logname\n - [x] mesg\n - [x] mkfifo\n - [x] newgrp\n - [x] nice\n - [x] nohup\n - [x] pathchk\n - [x] pwd\n - [x] renice\n - [x] sleep\n - [x] tee\n - [x] touch\n\n## Stage 1 - Rough draft\n\n(none)\n\n## Stage 0 - Not started\n\n(none)\n\n## Installation\n\nThese are \"core\" utilities of any operating system.  Production packaging in the future will be done on a per-distro basis in a distro-specific way.\n\nAs such, Dockerfiles, rpm and deb packaging are welcome, but currently considered a secondary priority to finishing, bugfixing and tuning the utilities.  Packaging contributions are welcome...  if done right.\n\nThe standard `cargo install` should work, for those interested in testing.  Care should be taken with PATH to point to the correct `cp` or `awk`, when mixing with standard system utilities on an already-shipped operating system.\n\n## Testing\n\nA few tests require additional setup such as a case-insensitive filesystem or the use of another command like [script](https://www.man7.org/linux/man-pages/man1/script.1.html). They are locked under the `posixutils_test_all` feature flag to exclude them from GitHub CI. These tests can be run by passing the feature flag to `cargo`:\n\n```sh\ncargo test --release --features posixutils_test_all\n```\n\nA further subset of `posixutils_test_all` tests are marked as `requires_root`. Running as root would override Unix permissions and thus give false failures on tests where such permissions are expected to be upheld so it is recommended to run these tests individually. There are currently 4 such tests:\n\n- test_cp_special_bits\n- test_mv_sticky_to_xpart\n- test_rm_fail_2eperm\n- test_rm_no_give_up\n\n```sh\nsudo -E cargo test --release --features posixutils_test_all,requires_root \u003ctest_name\u003e\n```\n\nIntegration tests may generate test data under `CARGO_TARGET_TMPDIR` (usually resolves to `target/tmp`) and `/dev/shm` (Linux only).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustcoreutils%2Fposixutils-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustcoreutils%2Fposixutils-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustcoreutils%2Fposixutils-rs/lists"}