Let’s start out with something fun. My favorite Linux commands!

nc (or netcat)

This command is great for testing if a port is open on a server. The -t and -u flags indicate if the TCP or UDP protocol should be used. This example tests if port 80 is open to TCP connections on the google.com server.

$ nc -tzv google.com 80
Connection to google.com ( 80 port [tcp/http] succeeded!


I find the tree command very useful. It’s such a neat way to get an overview of a directory.

$ tree .
├── subdir1
│   └── file1.txt
├── subdir2
│   └── file2.txt
└── subdir3
    └── file3.txt

The tree command has a flag -L that allows you specify the max display depth of the directory tree.

$ tree -L 1 .
├── subdir1
├── subdir2
└── subdir3


shred is a great way to make sure that a file is “destroyed” when you delete it, making recovery much more difficult.

$ shred -u /path/to/file.txt
       shred - overwrite a file to hide its contents, and optionally delete it

       shred [OPTION]... FILE...

       Overwrite  the  specified FILE(s) repeatedly, in order to make it harder for even very ex‐pensive hardware probing to recover the data.

       -n, --iterations=N
              overwrite N times instead of the default (3)

       -u     deallocate and remove file after overwriting


If you ever find yourself hitting the up arrow and re-running commands, then watch might make your life a lot easier.

For instance, let’s say I want to see the current system timestamp.

$ watch date

This will execute the date command every 2 seconds (default interval is 2 seconds). The interval can be changed with -n <seconds>.

       watch - execute a program periodically, showing output fullscreen

       watch [options] command

       watch  runs  command  repeatedly, displaying its output and errors (the first screenfull).
       This allows you to watch the program output change over time.  By default, command is  run every 2 seconds and watch will run until interrupted.


       -n, --interval seconds
              Specify update interval.  The command will not allow quicker than 0.1 second inter‐ val,  in  which the smaller values are converted. Both '.' and ',' work for any lo‐ cales. The WATCH_INTERVAL environment can be used to persistently set a non-default interval (following the same rules and formatting).


Sometimes you just need to run a program or script once, but at a later time. The at command will do this. at will allow you to queue and schedule jobs.

Here’s an example. Let’s reboot a system at 4 in the morning.

$ at 4am
warning: commands will be executed using /bin/sh
at Mon Dec 20 04:00:00 2021
at> reboot


Technophile and outdoor enthusiast