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
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.
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
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
Top comments (5)
I'm a huge fan of the (relatively) straight forward
findcommand. When coupled with
-exec, you can do some pretty creative things, fairly quickly.
findhistorically 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
git grepis 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 testcasecame 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.