DEV Community

Cover image for 6 Unix tools you need to know about
Mithil Poojary
Mithil Poojary

Posted on • Edited on

6 Unix tools you need to know about

1. column

I, as a programmer, do not mind those nastily formatted tabular data, like...

Pid Name %CPU 1230 Firefox 15 600 Code 12 809 Terminal 1.2 
Enter fullscreen mode Exit fullscreen mode

But when I learnt about column, I was pretty fascinated by how easy it is to make it neat!

column <file_name> -t Pid Name %CPU 1230 Firefox 15 600 Code 12 809 Terminal 1.2 
Enter fullscreen mode Exit fullscreen mode

2. less

How many times did you feel disgusted by the mess you made on your terminal screen? Maybe you printed a huge file or did ps aux. I have been there.
A very neat solution is to use less. The text is displayed upon applying a filter for paging through text one screenful at a time.

You don't have any clutter on your terminal once you exit less.

3. sort

Imagine having a file with ID and Names like this.

16 Siri 20 Cortana 13 Mithil 9 Jarvis 
Enter fullscreen mode Exit fullscreen mode

A quick sort on the IDs would be super helpful right?

sort <file_name> -n 9 Jarvis 13 Mithil 16 Siri 20 Cortana 
Enter fullscreen mode Exit fullscreen mode

4. tr

I can't really think of a better situation to use this right now, but hey it works.
Say you have to replace the occurence of a character. tr (translate) does this for you.

echo "This is a sentence" | tr " " "\n" This is a sentence 
Enter fullscreen mode Exit fullscreen mode

5. head and tail

Head and tail themselves are pretty solid tools, but together they have their own use case.

Say you want the 11th line in a text file. You can do this by :

head <file_name> -n 11 | tail -n 1 
Enter fullscreen mode Exit fullscreen mode

That was all for this post. What are your preferred helpful Unix tools?

Photo by Karl Pawlowicz on Unsplash

Top comments (5)

Collapse
 
_garybell profile image
Gary Bell

I'm a huge fan of the (relatively) straight forward find command. When coupled with -exec, you can do some pretty creative things, fairly quickly.

I've used find historically for getting backup files which are more than 2 weeks old, and deleting them. It's a simple way of keeping backups from taking over hard drive space, without needing to do everything manually

Collapse
 
geekypandey profile image
Anurag Pandey

That coupling with exec takes it to another level. What are your other favourites?

Collapse
 
_garybell profile image
Gary Bell

Going to be boring and say grep. I think a lot of people have it as a go-to tool to filter the returned output of a command into something useful.

I don't spend a lot of time in the terminal using Linux/Unix specific commands. Most of my time on the terminal is spend using Git, and increasingly more often, redis-cli

Thread Thread
 
geekypandey profile image
Anurag Pandey

Yeah. git grep is super handy to find files with particular snippets of code.

I started with competitive programming recently and I used to save code as filename.py and then testcase_filename for the testcases. ls | grep -v testcase came in handy to code files and clear the noise.

Collapse
 
josephj11 profile image
Joe

I don't use tr very often, but it's very handy for getting rid of odd binary codes in text files and translating between upper and lower case. I have seen much fancier uses of it, but don't recall any at the moment.

Here's a quick way to show someone the format of a data file without revealing any sensitive data.

#!/bin/bash ## Obsfucate a text file ## 11/25/2013 ## Thanks to D. Joe on the WNYLUG list ## For sharing the format of a text file with sensitive data in it if [ -z "${1}" ] then IN="/dev/stdin" else if [ ! -r "${1}" ] then echo "Can't read [${1}]" exit 1 fi IN="${1}" fi if [ -z "${2}" ] then OUT="/dev/stdout" else OUT="${2}" fi tr 'a-z' 'A-Z' < "${IN}" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'AAAAAAAAAAAAAAAAAAAAAAAAAA' | tr '0123456789' '9999999999' > "${OUT}"