Frequently, there are some things we need to do, tweak system settings, execute some processes, however even on Ubuntu, sometimes there isn't a GUI to perform such tasks, which is why we come to places like Ubuntu forum, askubuntu or even search on Google.

Then someone provides us a terminal command that allows us to do whatever we need at that moment to solve a certain problem. So I see that learning the language behind Linux can be extremely useful. But all I've been doing so far is to execute the commands, sometimes I don't even understand what I'm doing while executing them, I am just following instructions from someone else.

I would like to understand more about Linux in general and Ubuntu in particular, I don't want to master Linux or run everything on terminal, I like Ubuntu just fine for modern PC's, user-centric and graphical, but I just would like to know the basics and at least to be able to understand what a certain command is going to do on the system.

What is the best way to do this?

  1. Linux in a nutshell is said to be a good book for Linux commands. You can see that book. (I admit that I did not completely read the book, but seems to me good for commands, See below comment from an actual reader)

  2. An online directory of useful Linux commands can also help you a lot

  3. I found the book Ubuntu Linux Bible extremely helpful and a friendly introduction to Ubuntu. It is by "William von Hagen".

  4. You can browse the Linux manual pages in a web-browser by installing man2html.

    sudo apt-get install man2html
  5. You can browse the GNU info pages by typing info following the command name in a terminal. The Graphical Way to do the same thing requires info2www package. Install it with sudo apt-get install info2www.
    (These are more helpful, and I highly recommend these to understand the Linux Commands, such as sed, grep and others)

| improve this answer | |
  • I liked the directory of useful commands, while I may not have time to learn it, I can just go straight and get a useful command whenever I need it. Thanks! – Neptunno Jun 16 '12 at 3:08
  • 2
    Also, if you remember the first one or two letters of a command (or if you can guess well), pressing tab 2 or 3 times will autocomplete with all possible matches. The first tab won't show anything if there are duplicate matches, the second might ask you if you want all matches - but don't let it frighten you, it gives them a page at a time, and you can always cancel, and then you can see the list. Type in a partial directory or filename, press tab, and it will autocomplete that. – Marty Fried Jun 16 '12 at 3:16
  • I'm starting to enjoy playing with terminal. Now it doesn't seem so complicated as before. Thanks for this tips ;) – Neptunno Jun 16 '12 at 15:35

Read about bash, which is the commandline shell. If you ever used MS-DOS, it's similar. Most of the commands you use are fairly straight-forward: it starts with a command followed by a space. The command can be either an internal bash command, or an external program/command. If it's external, it needs to be where bash can find it, either in the path or specified.

After the command, there are often options, that are command-specific. After the options, there may be filenames required. Keep in mind that spaces separate items in this list, so if a filename has a space, it need to be "escaped", like this: name\ with\ spaces. Each space has a backslash in front of it to make it a character rather than a delimiter. Usually, you can also put double quotes around the name, instead.

If it's a bash command, you can find out more in a few ways:

Enter man name_of_command, where name_of_command is the program name. Use spaces to page through the text, 'b' to page backwards, and 'q' to quit.

Enter name_of_command --help to get an abbreviated list of options

You can get a lot of information by entering "man man", and also "man bash". But some simpler tutorials are helpful to get you started.

So, next time you see a command, try entering the first word after the "man" command, or enter the first word, followed by --help to get a feeling for what the parameters are.

After learning the bash command line, you will be more able to experiment with some more advanced topics. There are lots of linux tutorials on the web.

| improve this answer | |
  • I had no idea that terminal had this helpful information. Also, nice intro to terminal use. Thank you very much! – Neptunno Jun 16 '12 at 3:11
  • 1
    The terminal has an amazing amount of useful features, and after you start learning them, it makes using the terminal fun. You can search for previous commands with Ctrl-R, recall commands by pressing the up arrow repeatedly, recall the previous command, or parts of it, in the middle of the next command - like, if you forget to use sudo, then you can type "sudo !!", and it will recall the entire command. Lots of options like that using the '!' (often called bang, as in Crunch Bang = #!). Once you get to where you can understand what "man bash" is saying, you can learn a lot. – Marty Fried Jun 16 '12 at 3:21
  • Indeed, before I had no idea on where to start learning terminal commands, now I see that with those features all it takes is some exploration. – Neptunno Jun 16 '12 at 15:39

I Always think the best way is trying it, but with command line it is sometimes hard to get started.

Some things that got me started-

One was using a terminal that has graphical portions for navigation, one I recommend (although it is not maintained) is Hotwire shell.

Install via the software center

Also consider making a text file that you can jot down commands and locations, until you know them by heart anyway.

Another thing that got me started was the Linux Pocket Guide , It has basic terms and file structure, and terminal commands. http://www.amazon.com/Linux-Pocket-Guide-Daniel-Barrett/dp/0596006284

And remember, CAPS count on Linux, so if you name a folder FoLdEr , you need to type it that way to get to it.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.