Repository navigation
A new, comprehensive man(7) system, all commands documented #424
Replies: 3 comments 6 replies
|
Oh f**k! I adore this! I have wanted this so much for so long. I stopped thinking anything like this would ever happen when you said somewhere that w64devkit isn't really meant to be a development environment, just a toolchain. But that didn't stop me from using w64devkit and busybox-w32 as my only development environment for some years now. It was my introduction to actually using Unix. My IDE is my In the beginning, having no real documentation for busybox-w32 was a right struggle, but now I see it as having been a blessing in disguise. Finding documentation and making it usable in the shell was something I just had to eventually figure out, and it drove me to the source specification. The documents at Open Group has become like a second home to me. For a long time I just used my browser to click my way around to what I needed to read, but after a while, and for a long time afterwards, I have used a shell function like this instead of POSIX() {
local utility=${1:-contents}
local url="https://pubs.opengroup.org/onlinepubs/9799919799/utilities/$utility.html"
links "$url"
}It allowed me to type "POSIX sed" just like you would type "man sed", and it would take me to the heart and soul. I now have a thorough grasp and intuition not just of the functionality of the tools, but of what's POSIX and what's not when I see something—I know what's POSIX, I know what's busybox's particular flavor, and I know what's GNU-like. And that's really something, because it gives me the confidence to write very portable shell, and to know when I'm not and to choose which I want. Not to speak of the fantastic manual of the concepts of the shell's command language. How could something so dry be so easy to read?? As an aside, I don't know how many times I've looked up the parameter expansion table in the manual! As you can see above, I managed to get my hands on See? I don't think I would have gotten it this good if the usual After a while, I found that my side-loaded MSYS2 installation has two relevant packages:
This allowed me to finally get actual Oh, that reminds me. Before I found Open Group, other than grepping busybox-w32's repo, this was how I tried to learn: Parse busybox-w32's list of cmdlets, put them in an instantly searchable fuzzy picker, and show the chosen command's help() {
# BUG Doesn't properly add chosen command to history.
# Need history -a and/or history -r/-n for that.
# Those aren't in busybox's history cmdlet :(
local cmd=$(command help | tail -n +3 | tr -d '\t' | tr ' ' '\n' | fzy -l $(rows) -p "Command: " -q "$*")
if [ -n "$cmd" ]
then
echo "$cmd" >>"$HISTFILE" # workaround for adding to history bug, is unfortunately not loaded into memory by the shell (need history -r or something)
eval "$cmd --help"
fi
}(Eventually I found a workaround for the history. I had to write my own little C utility that uses Windows' Anyway, back to Open Group's POSIX specification. Recently, I went ahead and downloaded the specification, and did as I always do: Put it in the lovely minimalistic fuzzy picker fzy: POSIX() {
local path="$HOME/Downloads/susv5/susv5-html/utilities"
[ -f "$path/$1.html" ] && {
# links is cosmo, so need cosmo path -> remove "C:"
links "${path#*:}"/$1.html
return 0
}
local choice=$(find "$path" -type f -name '*.html' | sed 's,.*/,,; s,\.[^.]*$,,' | fzy -f -q "$1")
[ -z "$choice" ] && return 1
# links is cosmo, so need cosmo path -> remove "C:"
links "${path#*:}/$choice.html"
return 0
}Instant, full list of all POSIX utilities, fuzzy searchable—or just give the name at the command line and skip the list—takes me right into a colored, hyperlinked document. I have one of those for all of Anyway. That was my journey to documentation bliss. It started very bleak, but boy did it turn out well. I'm very excited for what you've done here. I'll be pouring over your documentation and learning how I can use it well, and probably integrate it into my already existing tricks. So happy about this; well done! |
|
Personally, I haven't read a manpage in years. Certainly today my preference would be to go to some AI first... I am a fan of tldr pages though. I think it's cool. https://tldr.sh. |
|
skeeto, I realized today part of why I'm so excited about this. I'm rather anti-AI, and I thought we had lost you a couple months ago, but after perusing your new If I understand correctly, your new tool But even more than all of that, it was really this thing you did with producing for-humans documentation. That really did a number on me, and I now realize why—because I realize why I hate AI coding. What you have done is instead of creating massive black boxes of vast and incomprehensible hyper-conceptualized burden, encumbrance, and obligation only manageable by doubling and tripling and quadrupling down on dependency on outsourced decision and thinking, is you have boiled it all down and made a complex beast simpler. It's the diametric opposite of what I see LLMs being used for, and this has actually blown my mind—sorry for having been so dumb. This feels so empowering and enlightening; you have turned the tide against complexity and unbounded, cancerous growth. I don't intend to single out for criticism, but Peter's response here perfectly encapsulates my issue (nothing personal against you Peter! I'm using your reply as a representation of something worse than your actual reply): Rejection upon seeing complexity fitted and simplified for human skulls; agency rejected for continued dependency. Why not just continue to use AI to navigate ever-growing complexity, and not have to stop growing the complexity since we can just keep using AI? Don't distill, don't grasp, don't own. Well, in this one weird swoop of producing these man pages you've shown and convinced me that it doesn't have to be like that. Bravo! N.B. All of this is dependent on the quality of the documentation, which I haven't started reading yet because I wanted to write this out first. And since I'm now done with that, Imma jump right into it! |
Uh oh!
There was an error while loading. Please reload this page.
23e000b through 1e7471f introduces a newly-written
nroff, enables themanapp in busybox-w32, patches busybox-w32lessto support ANSI escapes (for nice man page formatting), enables man page generation of upstream projects (GCC, etc.), and adds hundreds of newly-written man pages where none yet existed. In the next release you canman COMMANDfor any command in the kit.This is strictly sections 1 and a little 7. No runtime nor system interfaces have man pages, but I'm considering the options.
All reactions