All Projects → Gandalf- → coreutils

Gandalf- / coreutils

Licence: MIT license
Unix core utilities implemented in Haskell

Programming Languages

haskell
3896 projects
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to coreutils

lobase
Port of the OpenBSD userland to Linux.
Stars: ✭ 89 (+304.55%)
Mutual labels:  unix, coreutils
coreutils
Core utils re-implementation for UNIX/UNIX-like systems written in Rust
Stars: ✭ 96 (+336.36%)
Mutual labels:  unix, coreutils
BSDCoreUtils
BSD coreutils is a port of many utilities from BSD to Linux and macOS.
Stars: ✭ 30 (+36.36%)
Mutual labels:  unix, coreutils
torgo
A UNIX-like Non-GNU command line toolkit
Stars: ✭ 44 (+100%)
Mutual labels:  unix, coreutils
oneliners.txt
oneliners.txt
Stars: ✭ 64 (+190.91%)
Mutual labels:  unix
venomlinux.org
Source Based Linux Distribution
Stars: ✭ 17 (-22.73%)
Mutual labels:  unix
luadch
ADC Hub Server
Stars: ✭ 46 (+109.09%)
Mutual labels:  unix
rTerm
Fake UNIX terminal for personal pages
Stars: ✭ 19 (-13.64%)
Mutual labels:  unix
.config
⚙️ Bootstrappable user environment for macOS & Ubuntu
Stars: ✭ 31 (+40.91%)
Mutual labels:  unix
onionjuggler
Manage your Onion Services via CLI or TUI on Unix-like operating system with a POSIX compliant shell.
Stars: ✭ 31 (+40.91%)
Mutual labels:  unix
rust-font-loader
A font loading utility written in rust.
Stars: ✭ 44 (+100%)
Mutual labels:  unix
pidp11-2.11bsd
Using the historical unix 2.11 BSD operating system on the PiDP-11. With examples such as cool-retro-weatherstation.
Stars: ✭ 57 (+159.09%)
Mutual labels:  unix
xmlrpc-bruteforcer
An XMLRPC brute forcer targeting Wordpress written in Python 3. (DISCONTINUED)
Stars: ✭ 62 (+181.82%)
Mutual labels:  unix
BindToInterface
With this program you can bind applications to a specific network interface / network adapter. This is very useful if you have multiple (internet) connections and want your program to use a specific one.
Stars: ✭ 67 (+204.55%)
Mutual labels:  unix
smooth
The smooth Class Library
Stars: ✭ 23 (+4.55%)
Mutual labels:  unix
colocat
Fegeya Colocat, Colorized 'cat' implementation. Written in C++17.
Stars: ✭ 14 (-36.36%)
Mutual labels:  unix
AiliceOS
AiliceOS: Build an x86_64 and UEFI OS using Rust
Stars: ✭ 59 (+168.18%)
Mutual labels:  unix
File-LsColor
Colorize input filenames just like ls(1) does
Stars: ✭ 33 (+50%)
Mutual labels:  coreutils
bac-genomics-scripts
Collection of scripts for bacterial genomics
Stars: ✭ 39 (+77.27%)
Mutual labels:  unix
godzilla
a powerful go web framework
Stars: ✭ 22 (+0%)
Mutual labels:  unix

coreutils

Unix core utilities implemented in Haskell.

Goals are:

  • idiomatic implementations
  • fast, lazy IO
  • feature parity with GNU utils
  • fully tested
  • platform independent
Utility Idiomatic Complete Fast Lazy Tests
awk 40
basename - -
cat
cmp 50
cut 90 75 90
dirname - -
echo - - -
env - -
exit - -
false - -
head
ls 50 -
mkdir - -
nl
nologin - - -
pwd - - -
random - -
realpath - -
rev
seq 75
sleep - -
split
sponge -
sum
tac 90
tee
test
tr 75
true - -
uniq
wc
which - - -
whoami - - -
yes -
Symbol Meaning
Fully complete
- Not applicable
% % feature complete

Usage

This project compiles to a single executable which detects which utility to call depending on the name of the binary.

make release

or

stack install --flag coreutils:release

Platform Independent

With utils on your path, you can call any utility by name, using the name as the first argument.

I leaf@elm ~> utils echo hello | utils rev
olleh
C:\Users\leaf>utils echo hello | utils rev
olleh

This is the best option for trying things out without committing your entire shell to these implementations. The testing done is mostly thorough, but there's some crazy usage of the coreutils out in the wild; like cat - - - in build scripts. Who needs to read stdin three separate times? The standard Haskell IO libraries make some sane assumptions that things like this don't happen, so this project has balance ugly workarounds with idomatic behavior. Where reasonable, idomatic is preferred. Further, this project relies on the Haskell IO libraries for platform independence - where they decided to simplify (permissions, file types), this project does also.

Linux, FreeBSD, MacOS

If you do want to commit, symlink the utilities you'd like to expose to your $PATH variable. If ~/.local/bin/ has precedence over /bin/ and /usr/bin/, these are the versions your shell will use.

cd ~/.local/bin/
ln -s utils cat
ln -s utils sleep
ln -s utils rev
...
I leaf@elm ~> which which
/home/leaf/.local/bin/which

On Windows

Symlinking doesn't appear to change the name reported by System.Environment.getProgName, so you'll need to create copies of the binary with different names.

PS C:\> cd (Split-Path -Parent (Get-Command utils.exe).Path)
PS C:\Users\leaf\AppData\Roaming\local\bin> cp utils.exe which.exe
PS C:\Users\leaf\AppData\Roaming\local\bin> cd C:\
PS C:\> which calc.exe
C:\WINDOWS\system32\calc.exe
PS C:\> which which.exe
C:\Users\leaf\AppData\Roaming\local\bin\which.exe
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].