I discovered The 15 Essential UNIX commands written almost 5 years ago by Pete Freitag.
In 2005 talking to journalists in *nix commands was a bit of a daunting. But nowadays they are more known: much more journalists and media guys run Linux servers or Macs with OS X.
First read Pete’s choice, then mine:
1. man – show manual for a command, example: man ls hit q to exit the man page.
2. cd – change directory, example: cd /etc/
3. ls – list directory, similar to dir on windows. example: ls /etc, use ls -l /etc to see more detail
4. cp – copy a file or directory, example: cp source dest if you want to copy a directory use the -R option for recursive: cp -R /source /dest
5. mv – move a file, example: mv source dest
6. rm – remove a file, example: rm somefile to remove a directory you may need the -R option, you can also use the -f option which tells it not to confirm each file: rm -Rf /dir
7. cat – concatenate, or output a file cat /var/log/messages
8. more – outputs one page of a file and pauses. example: more /var/log/messages press q to exit before getting to the bottom. You can also pipe to more | more from other commands, for example ls -l /etc | more
9. scp – secure copy, copies a file over SSH to another server. example: scp /local/file user@host.com:/path/to/save/file
10. tar – tape archiver, tar takes a bunch of files, and munges them into one .tar file, the files are often compressed with the gzip algorithm, and use the .tar.gz extension. to create a tar tar -cf archive.tar /directory, then to extract the archive to the current directory run tar -xf archive.tar to use gzip, just add a z to the options, to create a tar.gz: tar -czf archive.tar.gz /dir to extract it tar -xzf archive.tar.gz
11. grep – pattern matcher, grep takes a regular expression, or to match a simple string you can use fast grep, fgrep failure /var/log/messages, I’m usually just looking for a simple pattern so I tend to use fgrep more than regular grep.
12. find – lists files and directories recursively on a single line, I usually pipe grep into the mix when I use find, eg: find / | fgrep log
13. tail – prints the last few lines of a file, this is handy for checking log files tail /var/log/messages if you need see more lines, use the -n option, tail -n 50 /var/log/messages you can also use the -f option, which will continuously show you the end of the file as things are added to it (very handy for watching logs) tail -f /var/log/messages
14. head – same as tail, but shows the first few lines the file
15. vi – text editor, there are several text editors such as emacs, and nano, but vi is usually installed on any server so its a good one to learn. To edit a file type vi file to edit a line press Esc i then to save changes and exit use Esc wq, or to quit without saving use Esc q!. There are a million other commands, but that will enable you to edit files at a basic level.
I’m a vi guy
I use cd, ls (with some customization via .bashrc), cp, rm, scp, grep, tail — and of course vi. I’m a vi guy. Even on my MacBook, where I usually write in a registered TextMate text and code editor, sometimes it is easier to edit with vi. I use it in a very simple way, I don’t know most of its commands and functions (nobody does).
My adds:
w – displays information about the users currently on the machine, and their processes. Useful.
top – provides a dynamic real-time view of a running system. It can display system summary information as well as a list of tasks currently being managed by the Linux kernel. When you need to debug a server this command is essential.
ps – report a snapshot of the current processes. I use it with ax and some pipelines to quickly get precise info (like: ps ax | grep httpd | wc -l to see how many Apache processes are runing).
crontab – cron is a time-based job scheduler and crontab is the configuration file that specifies shell commands to run periodically on a given schedule. I run a bunch of scripts (PHP and bash, mostly) and crontab is *the* way to organize the scheduling and other aspects, like logging and mail-logging their outputs. Repetitive tasks, like pulling a RSS feed and do things with it, are performed by scripts orchestrated within crontab.

Hello, my name is Paulo Querido. I'm a 49 year old portuguese journalist and writer. Did almost everything in newspapers and wrote a lot about technology and networking. Now I prefer to code and teach. Join this conversation about new skills that improve journalism in a world totally full of data, as well as the effects of openness of information and governance around the world.