This is a port of GNU's coreutils (http://www.gnu.org/software/coreutils/) that aims to be a drop-in, cross-platform replacement.
It's currently under development.
Because it imports from github.com/EricLagerg/go-gnulib
, and I'm constantly
refactoring, parts could break from day-to-day.
I'd recommend running go get -u ...
before you file a bug report!
Pull requests are more than welcome.
Also, see https://www.github.com/EricLagerg/go-gnulib for a similar project.
15/100
Utility | Completeness | Cross Platform | Need Refactor |
---|---|---|---|
wc | 100% | Yes (Unix/Windows) | No |
uname | 100% | No | Gofmt |
cat | 100% | Yes (Unix/Windows) | No |
chown | 90% (-R has infinite recursion issues) | No | Yes (-R) |
whoami | 100% | Yes (Unix/Windows | No |
tty | 100% | Yes (Unix/Windows) | No |
xxd | 100% | Yes (Unix/Windows) | No |
sync | 100% | Yes (Unix/Windows) | No |
logname | 100% | No | No |
tsort | 100% | Yes (Unix/Windows) | No |
yes | 100% | Yes (Unix/Windows) | No |
env | 100% | Yes (Unix/Windows) | No |
true | 100% | Yes (Unix/Windows) | No |
false | 100% | Yes (Unix/Windows) | No |
uptime | 100% | Yes (Unix/Window) | No |
Side notes:
- Unix should include OS X unless otherwise specified.
- Gofmt means it needs its styling changes (e.g. variable names, formatting, etc.)
- Idiomatic means it needs to be changed to more idiomatic Go
- Windows coverage will increase when I get a Windows laptop
These utilities should be nearly identical to GNU's coreutils, and should have relatively the same speed.
For example, wc.go
counts chars in 550MB file in < 15sec, wc.c
in ~11sec
on (Intel core i3 2.66ghz running Debian 3.2.63-2+deb7u1 x86_64).
xxd.go
is actually much faster than the native xxd
implementation found
on most *nix machines.
It (as a whole) is licensed under the GPLv3 because it's mostly a transliteraiton of GNU's coreutils, which are licensed under the GPL.
However, all parts are licensed individually, as not all are under
the GPL (e.g., xxd
).
(Depends on platform and command...)
- go get github.com/ogier/pflag
- go get github.com/EricLagerg/go-gnulib/ttyname
- go get github.com/EricLagerg/go-gnulib/sysinfo
- go get github.com/EricLagerg/go-gnulib/posix
- go get github.com/EricLagerg/go-gnulib/general
- go get github.com/EricLagerg/go-gnulib/login
Copyright (C) 2014-2015 Eric Lagergren
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.