Linux utils that you might not know

@igor_sarcevic ·

I’ve used Linux as my primary operating system for well over ten years, yet I still stumble upon things that are completely unknown to me. For example, several days ago, I wanted to display a formated table in my terminal.

# I had a long comma separated list

id,name,count
31232,test-1,21
31,window,2
2121,update-attributes,432

# and I wanted to display it as a table

id     name               count
31232  test-1             21
31     window             2
2121   update-attributes  432

I know that in Ruby, I have an excellent library Terminal Table for generating nice terminal tables, however, parsing the input, mapping the values and writing a Ruby script just for this task seemed like a huge overhead. After googling around for a quick and easy solution, I’ve learned that there is a tool in my Linux environment — column — that does just that.

$ cat data.txt | column -t -s ','

id     name               count
31232  property-a         21
31     window             2
2121   update-attributes  432

Whoa! That was super simple. I was baffled by the fact that this program was part of the standard utilities set on Linux, and yet I’ve never used it. So I wondered what else is part of coreutils or util-linux packages that I don’t know about. I’ve found several interesting and usable tools.

For example, did you know that you have a built in calendar?

$ cal

      May 2017
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

$ cal -3

                            2017
       April                  May                   June
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1      1  2  3  4  5  6               1  2  3
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30
30

Or, did you know that you can factor numbers with the factor program?

$ factor 234123421341
234123421341: 3 67 1601 727541

$ factor $(date +%s) # factor current timestamp
1495329393: 3 19 47 558167

Or, that you can find out how many terabytes are in 4123412312312 bytes:

$ numfmt --to=iec 4123412312312
3.8T

Or that there is a hardcore version of rm that makes it much harder to retrieve deleted files:

$ shred a.txt

So many interesting things to learn! I encourage you to read through the documentation and update your knowledge on these wonderful tools that are installed out of box on our modern Linux distributions.

Happy hacking!