Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Enter a command to see help text for each arg (explainshell.com)
130 points by dr_mork on May 30, 2022 | hide | past | favorite | 28 comments


Some of the past discussions:

* https://news.ycombinator.com/item?id=24525999 63 points, Sept 2020, 12 comments

* https://news.ycombinator.com/item?id=19124480 329 points, Feb 2019, 52 comments

* https://news.ycombinator.com/item?id=6834791 1372 points, Dec 2013, 171 comments

* https://news.ycombinator.com/item?id=6296634 275 points, Aug 2013, 82 comments


Imagine if a programming language had at least two compilation targets from the start: machine code/byte code and prose.


The Lucene search library has something like this. Data is stored /retrieved via codecs. Most write binary data, but one codec actually writes out all data as text. It is, of course, too slow for production use, but it is great for figuring out what is going on under the covers.

https://blog.mikemccandless.com/2010/10/lucenes-simpletext-c...


ran into this one recently: https://en.wikipedia.org/wiki/Noweb

along with other related literate programming tools


This is a really neat idea! I wonder how close you could get the prose to actually explaining the codes purpose as opposed to just saying "this is a for loop"?


The purpose (intent) wouldn’t be explained, but it could be useful for tools which have oddball syntax and are only used sometimes (infrequent enough for you to forget).


Nominated:

  go build
  go doc -all


This is neat. Though when I ran a fairly simple ffmpeg command through here to try and make sense of it, it was only semi-useful. (Not a knock against this service, but just a testament to the complexity of ffmpeg lol)

> ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 2000k output.webm

https://explainshell.com/explain?cmd=+ffmpeg+-i+input.mp4+-c...

It doesn't seem to know what to do with combined flags in this case.


> (Not a knock against this service, but just a testament to the complexity of ffmpeg lol)

I found a modified a ffmpeg shell script no later than yesterday that finds all my movies files and generates one jpeg with 16 "tiles" thumbnails for each movie to try to make sense of the countless family "MOV40931.MOV" and whatnots and I've got to say: I agree with you.

My big moment of solitude was when I started to work on parallelizing my shell script only to realize that, of course, ffmpeg already makes good use of all the cores so there's no point in parallelizing the shell script.


> I found a modified a ffmpeg shell script no later than yesterday that finds all my movies files and generates one jpeg with 16 "tiles" thumbnails for each movie

I wrote a script called dovid I left on Pastebin that creates contact sheets (what you are describing) for every video file of any popular format in the directory executed and then combines them into a webpage or pdf. But it isn't an exceptional script because it just utilizes vcs[1] and convert (ImageMagick). At some point, I stopped using the script and just aliased this command (arbitrarily as 'peak') in my ~/.bash_profile

     alias peak='for i in *.mkv *.mpg *.wmv *.avi *.mov *.m4v *.mp4; do echo "$i"; /opt/local/bin/vcs -q -q -j -dt -ds -dp -u "0" -n 16 -c 4 -H 162 "$i"; done; echo ".......... converting jpgs to a pdf"; /opt/local/bin/convert *.jpg index.pdf; /bin/rm *.jpg'
Creates a pdf of contact sheets 4x4@162dpi, much neater than a directory filled with as many jpegs as videos. Obviously, this is dangerous and destructive if there are other jpeg files in that directory.

[1] http://p.outlyer.net/vcs (ffmpeg is a dependency)


Would you be willing to share that script, or the one you modified to make it?


The service is pretty neat. It's probably parsing the man pages somehow to create this. I wonder if it would be possible to utilize this parsed information to create type checking tools for shell scripts... Something which checks if correct count of arguments is given for command etc.


You can see how the parsing works in the source code (with a specific high level explanation of how this part works), as the site is an open source project.

https://github.com/idank/explainshell#how


This looks great! Is there a CLI utility that uses the site to do the same, perhaps?


I wrote a Linux CLI tool [0] that parses the man/help pages to extract option details. Works most of the time for me, but there are plenty of corner cases that don't work.

[0] https://github.com/learnbyexample/command_help


Some shells have this built in, like Fish and my own one ( https://murex.rocks ) too


Fish has it? Which one is it? I use fish but I didn't know that.


It’s on the front page: https://fishshell.com/

> Other shells support programmable completions, but only fish generates them automatically by parsing your installed man pages.

Fish isn’t the only one though. In fact I’m not even sure it was the first. But it’s definitely the most mainstream shell to support it.


Every couple of months I need this and can’t remember it’s name! So good to come across this again. Now on I’ll go through my hn comments.


HN let's you add a favorite too


I think this is supposed to be a fork bomb?

https://explainshell.com/explain?cmd=%3A%28%29%7B%20%3A%7C%3...

That's not clear at all from the explanation.


It seems to explain everything correctly though? Read through and it should make sense why it is a fork bomb .


Jetbrains IDEs provide a link to explainshell.com with the highlighted shell command. Have used it often. Very helpful.


> true(1)

Translates to

"Do nothing, successfuly"

This tickles my imposter syndrome


Old url, but it is awesome, thanks for remembers it me.

Is there a cli (offline) alternative?


Doesn't understand "curl www.google.com", lol.


Looks like a reasonable response based on the man page, although it could be better.

https://www.man7.org/linux/man-pages/man1/curl.1.html


It does... Obviously "www.google.com" is not in the manpage.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: