What Linux distribution should I use?

When I was first interested in trying out Linux, the whole geek culture surrounding it seemed gargantuan, judgmental, and scary. It’s very hard to get a straight, simple answer out of these people. They’re tribal and prone to speak in exact phraseology with caveats and “It depends”.

Here is a bare-bones, one-liner guide to answer the question: I want to try Linux. What flavour of Linux should I try?

  • I just want the easy default. Use Ubuntu.
  • I want to get an old, crappy, cheap computer up and running. Use TeenPup or BrowserLinux.
  • My hard drive is kaput. I want to use Linux to view my old files and try to recover as much as I can. Use Damn Small Linux.
  • I want a focussed, serious environment in which to write computer programs. Use ArchBang.
  • I want to be a bad_ss hypergeek. There are a zillion weird, customisable options for you. Start your googling, you’ll be able to keep busy reading man pages for the next 71 years.

All of the above “distros” can be installed by: (1) downloading an .iso file, (2) burning the .iso file to CD, and (3) popping that CD into your computer before you turn it on.

That narrows your distro choice down. (If you still haven’t decided yet: choose Ubuntu.) Now all the web browser stuff (gmail, facebook) will be basically the same in Linux as in Windows. What will be different is that the command line (Run > cmd in Windows—your MS-DOS prompt) is much more extensive and besides Linux being free, the other reason to use it is to get access to these tools. [NB: If you own a Mac rather than Windows, there’s less reason to switch to Linux at least on this computer. But your Terminal will still run these same commands so even without switching you can do all of the below.]



Here are a few things to get used to with the Linux terminal (command-line) environment:

  • ls lists the files in the current directory, cd changes directories.
  • . means “this directory” and .. means “the parent directory”.
  • <tab> completes the word you’re typing, so you can avoid typoes.
  • <up> cycles through commands you’ve just typed in.
  • rm deletes things forever, so never use that. Make a del command as below and use that instead.
  • mv renames files as well as moving them to a different folder.
  • With rm and mv both it is very easy to accidentally delete something you don’t want to delete. The solution is to run the following command first thing you do in Linux:
    cat >> ~/.bash_aliases      <::ENTER key::>
    alias mv='mv -i'        <::ENTER key::>
    alias rm='rm -i'        <::ENTER key::>
    alias del='gvfs-trash'  <::ENTER key::>
    <:: Ctrl+D: hold in CTRL key, stroke D key, let go of CTRL key::>
  • A hyphen following a command (like mv -i) is a “flag”
  • /home/jamal is where your files are. ~ is short for /home/jamal.
  • /bin, /sbin, /usr/bin, /usr/sbin, /usr/share/bin, and even /etc/init.d/ssh can contain program files, like C:/Program Files/ or C:/progra~1/ did on Windows.
  • /var/log is where system logs are.
  • /var/www contains public files that a web server would show, to anyone who can connect through the internet to a communication socket to your computer.
  • sudo apt-get install MyLittlePony is how you install the program MyLittlePony.
  • Some common commands: ls, ls -oh, cd /home/jamal/pictures, cd .., man grep, history | grep, mv -i to rename or move a file, tar -xvf to “unzip” tar.gz archives, gedit or nano for a Linux equivalent of Windows Notepad, ssh new@sdf.org to log into a free remote Unix computer, scp and rsync -avz to transfer files from one computer to another, chmod u+x programname.perl to make progranmane.perl executable; ./programname.perl to execute it; df -h to see your available disk space, free -m to see how much RAM (=memory = “thinking space”) is available, wget http://www.gutenberg.org/cache/epub/16955/pg16955.txt > qu'ran or curl http://www.gutenberg.org/cache/epub/16955/pg16955.txt > qu'ran to download a copy of the Qu’ran.
  • The command -a -b filename -c setting -d style is really common. It is a different way of running programs than clicking on File > Options > Preferences like the familiar graphical menu interface. Technically this way wget --random-wait -r -p -e robots=off -U mozilla http://isomorphismes.tumblr.com means “Run the program called wget (it’s a program that downloads from the web). Turn on the random-wait option. Turn on the r option and the p option. (Run man wget, then type /-r and /-p to find out what they do.) The drop-down menu would normally have prompts or boxes for you to fill in on a File > Options > Preferences style menu interface. But here you first look up what -e and -U mean in man wget and then type in the options and what they should be set to, yourself. Finally the “argument” of the wget “function” is the web address you want to download. Incidentally, this command backs up my tumblr blog to your computer.
  • Try cd ~; ls | grep bash. It will not display the .bash_aliases file because it’s hidden. Now try ls -a | grep bash. It will display the .bash_aliases file. ls -a means “list all, even hidden files with a . in front of them”.
  • Google “Unix for Poets”. In about 20 pages it will show you how the command line can be used to process text. For example how to count which words were used most in your thesis or the Bible. Commands like cat, head, tail, grep, uniq -c, |, >, <, >>, less, fmt, cut, antiword, and tr to usefully transform plain text files.
  • You can learn git or bzr or hg and use it to keep track of changes in your thesis. Or learn sed and massively edit changes to a large document, all at once.
  • I also like tmux which allows me to manage “windows” within the terminal console.
  • Ctrl+D means “I’m done”. For example in writing over the ~/.bash_aliases file. Also for example if you want to log out of ssh new@sdf.org or an R session, hit Ctrl+D.
  • Ctrl+C means “Cancel that!” If something is happening that you want to stop immediately, with no politeness or “I’ll wait until you’re finished”. For example if you sudo apt-get install something and then realise you didn’t want to, hit Ctrl+C. Or if you’re playing some music with shell-fm or zomg and immediately need to quit!!! then you can force-quit with Ctrl+C.


Why would you want to switch from Windows to Linux in the first place?

  1. You want to learn to program. Programming “just works” in linux and there are a lot of annoying steps even before Step One in 
  2. You want to learn to sysadmin. Most servers run Linux (CentOS, SuSE, and Redhat are common). You may as well play around and learn on your own machine first.
  3. You don’t want to pay for your OS. It actually doesn’t take that much patience to get Ubuntu or Puppy up and running these days.

There are other reasons (like maybe you hate corporations) but I find the above the most compelling.


I’ll do another post about “Which programming language should I learn?” in a similar brief style.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s