Hacker News new | past | comments | ask | show | jobs | submit login
GNU Coreutils Cheat Sheet (catonmat.net)
99 points by wyclif on Sept 4, 2012 | hide | past | favorite | 15 comments



I always feel compelled to mention joeyh's moreutils whenever a discussion of coreutils comes up. If there was a sequel to coreutils it would be moreutils.

    chronic: runs a command quietly unless it fails
    combine: combine the lines in two files using boolean operations
    ifdata: get network interface info without parsing ifconfig output
    ifne: run a program if the standard input is not empty
    isutf8: check if a file or standard input is utf-8
    lckdo: execute a program with a lock held
    mispipe: pipe two commands, returning the exit status of the first
    parallel: run multiple jobs at once
    pee: tee standard input to pipes
    sponge: soak up standard input and write to a file
    ts: timestamp standard input
    vidir: edit a directory in your text editor
    vipe: insert a text editor into a pipe
    zrun: automatically uncompress arguments to command

http://joeyh.name/code/moreutils/


Since several of these utilities you mentioned have to do with piping, I thought I'd mention a bash trick that a lot of people haven't heard of. You can take (almost) any command that takes a file name to read input from, and substitute that file name with:

    <(command_name)
This will run the named command, send its output to a fifo (named pipe), and substitute that fifo's file name in its place. This is useful if you have to feed output from more than one command into a program -- for example, "join" takes two files, only one of them can be standard input. But if you want, you can do something like this:

    join -j1 1 -j2 1 <(cat somefile |sort) <(cat otherfile |sort)
Or, if you want to see syntax highlighted diff output:

    vim <(diff -uN file1 file2)
And it is also nestable:

    vim <(diff -uN <(command_1) <(command_2))


A nice effort, but I personally don't find an alphabetical listing very helpful. As doggonematte points out, the coreutils manual has a nice hierarchical structure that makes it easy to find the command I want:

http://www.gnu.org/software/coreutils/manual/coreutils.html#...


   curl -s http://www.gnu.org/software/coreutils/manual/coreutils.html  
 | sed '/<li>.*-inv.*p>:.*[^>]<.a>/!d;s/.*#//;s/-inv.*:/:/;s/<.a>//'
 |sort
"A long, long time ago when I was <em>mastering</em> Linux..." [emphasis mine]

I am an amateur, and still learning, so what do I know? But I fail to see any evidence of "mastery" here.

And where's the cheat sheet for the binutils?

Are they not important?

Edit: Added more indentation to protect Kleene stars.


Very nice! Note if you put the | at the end of the line the whole command is copy and pasteable.

Also you could pipe to `column -t -s:` to align nicely

Also you can download the 57K index rather than the 1.3M manual to get the command list.

    curl -s http://www.gnu.org/software/coreutils/manual/html_node/index.html |
    sed '/<li>.*-inv.*p>:.*[^>]<.a>/!d;s/.*#//;s/-inv.*:/:/;s/<.a>//' |
    sort |
    column -t -s:


Try indenting the code two or three spaces, and then it should be formatted without parsing *'s and so on.


Sweet. Thanks. I was only indenting by one space.


GNO Coreutils Cheat Script (debian/ubuntu and other apt-based distros version):

    for pgm in $( dpkg -L coreutils | grep bin |
        sed 's,^.*\/,,' ); do 
        man $pgm 2>/dev/null | sed -ne '6p'; done


    whatis -s1 $(dpkg -L coreutils | grep "bin/" | sed 's,^.*\/,,')
Should work too (and be a lot faster).


Nice. I was trying to remember how to extract the summary lines by themselves. And yes, it's much faster (fewer execs, less manpage formatting and parsing).

Note that your solution skips chroot (man section 8). The fix:

    whatis -s1,8 $(dpkg -L coreutils | grep "bin/" | sed 's,^.*\/,,')


Cool! Here is an rpm variant with simplified sed:

    whatis -s1 $(rpm -ql coreutils | sed -n 's,.*/bin/,,p')


Here is a similar exposition with links to further info, on GNU and other platforms:

http://www.pixelbeat.org/docs/unix_commands/


the fact you can download this gnu cheatsheet as xlsx is some delicious irony


I posted a simple redesign of his cheatsheet in the comments, which the author deleted. Bummer. Reposting here:

http://nielsolson.us/dropbox/catonmat/gnu-coreutils-cheat-sh... http://nielsolson.us/dropbox/catonmat/gnu-coreutils-cheat-sh...

Edited the spreadsheet LibreOffice.


Update: Peteris asked me to repost. Done. Nice follow up.




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

Search: