loading...
Cover image for 6 Unix tools you need to know about

6 Unix tools you need to know about

mithil467 profile image Mithil Poojary Updated on ・2 min read

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

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

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

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

sort <file_name> -n

9   Jarvis
13  Mithil
16  Siri
20  Cortana

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

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

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

Photo by Karl Pawlowicz on Unsplash

Posted on by:

mithil467 profile

Mithil Poojary

@mithil467

Game Dev - Unity | Web Dev - Express, Flask | Competitive Programmer | C++, QT | Python | Node.js | Open Source heartpulse

Discussion

pic
Editor guide
 

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

 

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

 

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

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.

 

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}"