====== 5. Learning More ====== ===== 5.1 The Man ===== Most of a unix system is documented in the online manual, called the man. If you want to know about a program, you look it up in the man. For example, if you want to learn more about the ls program, type ''man ls''. The man also has a simple search capability. The ''-k'' command line option tells the man to give you a list of entries that mention a particular keyword, which you also supply on the command line. If you want to get a list of the manual entries that menion networking, you would type ''man -k network''. The man is divided into sections. If you don't specify a section when you ask the man to lookup documentation for a program, the man takes a guess about what section you mean, & it usually assumes you mean the most general, high-level section available (section 1). You can specify a section as the second argument to man, before the keyword. For example, if I want to read about the select function in section 2 (the kernel API), I would type ''man 2 select''. Here are some things I recommend reading in the man to get started with unix. I give you the exact command to type, then an explanation of why I recommend that entry in the man. ''man man'' This tells you how to use the online manual. ''man 1 intro'' This tells you about the general section of the online manual. You should also try ''man 2 intro'' & all the other intros for sections 3 through 9. ''man mutt'' Tells you how to use mutt, the e-mail reader. ''man pine'' Tells you how to use pine, the e-mail reader. ''man sh'' Tells you how to use & program the shell. ''man 4 tcp'' Tells you how to program TCP sockets. I suggest it here as an example of the breadth of information that's available in the online manual. ==== 5.1.1 The man is for real ==== I tell newbies about the man all the time, but they usually don't try it. I don't know why they don't believe me. I started using unix in college in 1985. In a class, the professor gave everyone an account & told us to login after class & type ''man man''. He didn't tell us anything else, not even what ''man man'' would do. By exploring the manual on my own time for a couple of evenings, plus a couple of conversations with the unix gurus that worked in the lab, I was pretty good with unix. It was an excellent way to start using & programming unix. Maybe the newbies do believe me, but they're lazy. ===== 5.2 Gnu info ===== Besides the unix man, Gnu/Linux computers usually have some information in a hypertext system call info. To use info from the command line, just type ''info''. If you are a Gnu Emacs user, you can run emacs & type Meta-x info, & you'll be presented with the same data in the same format that info would. Info is an interactive hypertext system. It predates the Web by at least five years, methinks. Read & follow the instructions on the screen & you'll be alright. Info systems are not always maintained as well as the man, but most are pretty good, & some have a lot of excellent information. It is often well-written, too. It's an enjoyable read, & since you can page through the entire system one screen-full at a time by typing the Space bar, it's convenient to read. Though it's not for beginning users, I'll mention here that one of my favorite sections in info is the documentation for Autoconf. ===== 5.3 Books ===== I can't recommend any books on using unix. I learned it so long ago that I don't remember what books I used, or even if I used any books. Here are some interesting books about unix, though not exactly about using unix. I like Mike Gancarz's book, The Unix Philosophy, a lot. It talks about the reasons behind writing applications the unix way: with small programs piped together, & with flat, plain text data files. I have heard that Eric Raymond's book, The Art of UNIX Programming, is similar & also good, but I haven't read it myself.5.1 Even though we're talking about using unix, I think an understanding of how operating systems work is useful to know, & Andrew S. Tanenbaum's Modern Operating Systems is an excellent book. It includes a good section about unix. He points out that the defining characteristic about early unix was its 40 system calls. We've added more system calls, but the unix kernel still has a fairly small number of elegant, well-chosen system calls. That's an important part of what makes unix what it is. ===== 5.4 Folklore ===== One of the cool things about unix is that it has played an intimate part in the folklore of computing since the late 1970s. There are all sorts of interesting tales & personalities to explain or help you remember why something was done a particular way. The history is not hidden inside a corporation. It's out in the open, & lots of people know it. That's also one of the bad things about unix because it means you need to talk to people to learn what you need to learn next. Hopefully people will write downt he folklore & also link to it so that new unix users & programmers can find it. You can learn the folklore by talking (or typing) to an experienced unix user or programmer. A good place to read about it online is The Jargon File. [[tutorials:unix|back]]