Learning the unix operating system pdf download






















The Window Menu maximizing windows : 2. Using the Titlebar menu, window mwm : 2. The Window Menu metacharacters : see wildcards mget command ftp : 4. The Window Menu minimizing windows : 2. Using the Titlebar mkdir command : 4. Working with a Mouse Move menu item mwm : 2. The Window Menu moving between directories : 3. Renaming and Moving Files windows and icons : 2.

Moving Windows and Icons mput command ftp : 4. Files on Other Operating Systems multitasking : 6. Multitasking mv command : 4. Renaming and Moving Files mwm window manager : 2. Working with Windows window menu : 2. File and Directory Names wildcards for : 4. File and Directory Wildcards networked filesystem : 3. The Directory Tree networks, copying files across : 4. The Unresponsive Terminal noclobber variable : 5. Standard Input and Standard Output overwriting files : 5. Changing Your Password passwords changing : 3.

Changing Your Password logging in and : 1. Logging In pasting in xterm window : 2. Customizing Your Account pathnames : 3. The Directory Tree absolute : 3.

Absolute Pathnames relative : 3. Relative Pathnames period : see dot permissions : 3. Directory Access Permissions file : 3. Customizing Your Account under Linux : 3. More Protection Under Linux pg command 3. Pipes and Filters pointer shape, mouse : 2. Pointer Shape pointing the mouse : 2. Pointing, Clicking, and Dragging port contenders : 1. Printing Files cancelling jobs : 4. Running a Command in the Background processes, background : 6. Multitasking cancelling : 6. Checking on a Process.

Customizing Your Account programming : 7. Programming programs directly executable vs. Running Programs prompt : see shell prompt ps command : 6. File and Directory Wildcards queue, printer 4. Viewing the Printer Queue quit command ftp : 4. Reading Your Mail files : 3. Standard Input and Standard Output relative pathnames : 3.

Relative Pathnames remote files : 4. Remote Logins removing : see deleting resizing windows : 2. Resizing Windows resources for further reading : A. The Window Menu rm command : 4. The Directory Tree root menu : 2. The Root Menu root window : 2. The Unresponsive Terminal searching for files : 4. Finding Files within files : 5. Sending Mail session, unresponsive hung : 1.

The Unresponsive Terminal setterm command : 3. Customizing Your Account sharing files : 3. Protecting and Sharing Files shell aliases : 7. Shell Aliases and Functions shell prompt 1. Logging In 1. The Shell Prompt shell setup files : 3. Customizing Your Account shells : 1. Programming references for further reading : A. Shells shortcuts, keyboard : 2. Absolute Pathnames for root directory 3. Absolute Pathnames sort program : 5. Standard Input and Standard Output standard output : 5. Standard Input and Standard Output stopped jobs : 1.

Problem checklist stty command : 3. Customizing Your Account subdirectories : see directories suspend character : 6. Running a Command in the Background suspending jobs : 1. The Unresponsive Terminal symbols, reference for : B. Connecting from another operating system on X xterm windows for 2. The xterm Window 2. Using a Mouse with xterm Windows terminal, unresponsive hung : 1.

The Unresponsive Terminal text appending to files : 5. Methods of Creating Files handling in xterm windows : 2. Using a Mouse with xterm Windows inserting into files : 5. Putting Text in a File printing format : 4. Printing Files processing, references for : A.

Text Processing and Programming searching files for : 5. Working with Windows tree, directory 3. Files in the Directory Tree troubleshooting background processing : 6. Problem checklist command line : 1. Correcting a Mistake copying files : 4. Problem checklist deleting files and directories : 4. Problem checklist hung unresponsive terminal : 1. The Unresponsive Terminal logging in : 1. Problem checklist logging out : 1. Problem checklist overwriting files by mistake : 5.

Problem checklist X root menu : 2. Files on Other Operating Systems command reference : B. Commands and Their Meanings documentation on : 7. The xterm Window xterm windows on : 2. Using a Mouse with xterm Windows usernames, mailing to : 3. Sending Mail users, who command for 1. Pipes and Filters vi editor : 4. Methods of Creating Files virtual consoles : 2. File and Directory Wildcards window managers 2.

Introduction to Windowing 2. Starting the Window Manager 2. Working with Windows window systems : 2. Introduction to Windowing focus in : 2. Setting Focus mouse and : 2. Working with a Mouse windows focus : 2. Using the Titlebar managing : 2. Working with Windows menus for mwm : 2.

The Root Menu titlebar : 2. Introduction to Windowing xterm see xterm windows : 2. Starting X working directory 3. Your Working Directory 3. Changing Your Working Directory write permission : 3. Introduction to Windowing clients of : 2. Other X Clients getting input focus : 2.

Setting Focus quitting : 2. Quitting references for further reading : A. The X Window System root menu : 2. The Root Menu starting : 2. Starting X xdm display manager : 2. Ready to Run X with xdm xcalc program : 2. The xterm Window xdm display manager : 2. Ready to Run X with xdm xinit command : 2.

The xterm Window mouse and : 2. Most modern UNIX versions support one or more window systems. A window system is a package of programs that let a terminal handle many sessions at once. Along with the keyboard, window systems use a mouse or another device such as a trackball to move a pointer across the screen.

The pointer can select parts of the screen, move them, help you copy and paste text, work with menus of commands, and more. Figure 2. Here's a special note for Linux users. Most Linux systems support window systems. But they also have a surprisingly handy substitute: virtual consoles. If you're using the terminal that's directly connected to a personal computer running Linux, you can access up to eight separate screens on the same display. To use virtual consoles, hold down the left [ALT] key and press one of the function keys [F1] through [F8].

Each of those function keys will bring up a separate UNIX session with its own shell prompt. Use each one for whatever you want - just remember to log out from each virtual console when you're done!

This introduction should also help you use non-X window systems. The appearance of windows, the way menus work, and other features are controlled by a program called the window manager. Three common window managers are mwm, fvwm, and twm. There are plenty of other window managers - including fvwm95, which simulates a Windows 95 desktop on UNIX.

This chapter explains mwm and uses it in examples. The details of using other window managers, and the ways they appear on the display, are somewhat different - but this chapter should help you use them, too.

Using Window Systems 1. That's called a "hung" or "frozen" terminal or session. A session can be hung for several reasons. One of the most common is that the connection between your terminal and the computer gets too busy and your terminal has to wait its turn.

Other users or computers are probably sharing the same connection. In that case, your session will start by itself in a few moments. You should not try to "un-hang" the session by entering extra commands because those commands will all take effect after the connection resumes. If the system doesn't respond for quite a while and how long that is depends on your individual situation; ask your system administrator for advice , the following solutions will usually work.

Try these in the order shown until the system responds. You may have typed a command but forgotten to press [RETURN] to tell the shell that you're done typing and it should now interpret the command.

If this doesn't work, you may need to log out and log back in or turn your terminal off and on again. This suspends a program that may be running and gives you another shell prompt. Now you can enter the jobs command to find the program's name, then restart the program with fg or terminate it with kill. Unless a program is run in the background, as described in Chapter 6, the shell will wait for it to finish before giving a new prompt.

A longrunning program may thus appear to hang the terminal. If this doesn't work the first time, try it once more; doing it more than twice usually won't help. Note that some systems will automatically issue [CTRL-S] if they need to pause output; this character may not have been typed from the keyboard. This key stops the screen display from scrolling upward.

If your keyboard has a [NO SCROLL] key that can be toggled on and off by pressing it over and over, keep track of how many times you've pressed it as you try to free yourself. If it doesn't seem to help, be sure you've pressed it an even number of times; this leaves the key in the same state it was when you started. Check the physical connection from the terminal to the system. Some programs like mail expect text from the user. A program may be waiting for an end-ofinput character from you to tell it that you've finished entering text.

If you're using a window system, close terminate the window you're using and open a new one. Otherwise, turn your terminal off, wait ten seconds or so, then turn it on again this may also log you out. If none of these works, you should then ask a local system expert for help and watch carefully.

Previous: 1. Using Window Systems 2. Some UNIX commands have commands of their own. For examples, look at the more, mail, and pg commands in Chapter 3. Text editors like vi and emacs also have their own commands. Once you start the command, it prints its own prompt and understands its own set of commands not UNIX commands. For instance, if you enter mail, you'll see a new prompt from the mail program.

You'll enter mail commands to handle mail messages. When you enter the special command q to quit the mail program, mail will stop prompting you. Then you'll get another shell prompt; you can enter UNIX commands again.

They can also be more complex: you may need to type more than the command name. A UNIX command may or may not have arguments. An argument can be an option or a filename. Options modify the way in which a command works. Options are often single letters prefixed with a dash - and set off by any number of spaces or tabs.

Multiple options in one command line can be set off individually like -a -b , or, in some cases, you can combine them after a single dash like -ab. Some commands, including those on Linux systems, also have options made from complete words or phrases, like --delete or --confirm-delete.

When you enter a command, you can use this option style, the single-letter options which all start with a single dash , or both. The argument filename is the name of a file that you want to use.

If you don't enter a filename correctly, you may get the response "filename: no such file or directory" or "filename: cannot open.

You must type spaces between commands, options, and filenames. Options come before filenames. Commands entered this way are executed one after another by the shell. UNIX has a lot of commands! Don't try to memorize all of them. In fact, you'll probably need to know just a few commands and their options. As time goes on, you'll learn these commands and the best way to use them for your job.

We cover some useful UNIX commands in later chapters. Let's look at a sample UNIX command. The ls command displays a list of files. It can be used with or without options and arguments. The -l option a dash and a lowercase letter "l" modifies the normal output of the ls command and lists files in the long format. You can also get information about a particular file by using its name as the second argument. For instance, ls has the -a all option for listing hidden files.

If you enter ls-al, the shell will say "ls-al: command not found. Remember that almost all UNIX commands are typed in lowercase. Get today's date. List logged-in users. Obtain more information about users. Find out who is at your terminal. Enter who am i;date Mistype a command. Enter woh In this session, you've tried several simple commands and seen the results on the screen.

Think of this account as your office - it's your place in the UNIX environment. Other users may also be at work on the same system. At many sites, there will be a whole network of UNIX computers. So in addition to knowing your account name, you may also need to know the hostname name of the computer that has your account.

Each user communicates with the computer from a terminal or a window. You may have a terminal that's already connected to the computer. Next, you start a session by logging in to your UNIX account. Logging in does two things: it identifies which user is in a session, and it tells the computer that you're ready to start working. When you've finished working, you log out - and, if necessary, disconnect from the UNIX computer. Otherwise, browse through the next few sections and find the one that applies to you.

We can't cover every user's situation exactly. If none of these suggestions helps you enough, ask another UNIX user or your system administrator. Some common programs are procomm, qmodem, kermit, minicom, and telnet. There are lots of others. If you start the program and get a UNIX "login:" prompt, you're ready to log in. But if your screen stays blank or you get another message that you don't understand, check with another user or your system administrator for help.

Like a telephone switchboard, this connects your terminal to one of a number of computers. Enter your computer's hostname or code number at the prompt - or choose from the menu of hosts.

Before you can start work, you must connect your terminal or window to the UNIX computer see the previous sections. Then log in to UNIX and identify yourself. To log in, enter your username usually your name or initials and a private password. The password does not appear on the screen as you enter it. Although this example doesn't show it, you may be asked for your terminal type, accounting or chargeback information, and so on.

The last line to appear is the UNIX shell prompt. When you reach this point, you're logged in to your account and can start using UNIX commands. Instead of a shell prompt, you may get a menu of choices "email," "news," and so on. If one of the choices is something like "shell prompt" or "command prompt," select it.

Then you'll be able to follow the descriptions and examples in this book. The messages that appear when you log in differ from system to system and day to day. The shell prompt also differs. Let's summarize logging in, step by step: 1. If needed, connect your terminal or window to the UNIX system. Type in your username in lowercase letters at the prompt. The system should prompt you to enter your password. If passwords aren't used on your system, you can skip the next step.

If you were assigned a password, type it at the prompt. The system verifies your account name and password, and, if they're correct, logs you in to your account. Wait a minute, since the system may just be slow.

If you still don't get anything, ask other users if they're having the same problem. The system says "login incorrect". Try logging in again, taking care to enter the correct name and password. Be sure to type your username at the "login:" prompt and your password at the "password:" prompt. Backspacing may not work while entering either of these; if you make a mistake, use [RETURN] to get a new "login:" prompt and try again.

Also make sure to use the exact combination of upper- and lowercase letters your password contains. If you still fail after trying to log in a few more times, check with your system administrator to make sure you're using the right username and password for your account.

You probably entered your username in uppercase letters. Type exit and log in again. For instance, you might have a workstation on your desk but need to do some work on the main computer in another building. Or you might be a professor doing research with a computer at another university. Your UNIX system can probably connect to another computer to let you work as if you were sitting at the other computer.

To do this, you first log in to your local computer. Then you start a program on your local computer that connects to the remote computer. Some typical programs are telnet and rlogin for connecting over a computer network as well as cu and tip for connecting through telephone lines using a modem.

You use the remote system until you're done; when you log off the remote computer, the remote-login program quits, and then returns you to your local computer.

Nelson wanted to connect to the remote computer named biolab. Next, she'd use the telnet program to reach the remote computer. This reminds her when she's logged in remotely.

The shell interprets the commands you enter, runs the program you've asked for, and generally coordinates what happens between you and the UNIX operating system. Common shells include Bourne sh , Korn ksh , and C csh shells, as well as bash and tcsh. For a beginner, the differences between most shells are slight. If you plan to do a lot of work with UNIX, though, ask your system administrator which shell your account uses; you should learn more about your shell and its set of special commands.

The prompt can be customized, though, so your own shell prompt may be different. Each command line includes the name of a UNIX program. The first word that you type at a shell prompt is always a UNIX command program name.

Like most things in UNIX, command names are case-sensitive; if the command name is lowercase and most are , you must type it in lowercase. Some simple command lines have just one word: the command name. Pressing the [RETURN] key tells the shell that you have finished entering text and that it can start executing the command. It lists each logged-on user's username, terminal number, and login time.

The who command can also tell you who is logged in at the terminal you're using. The command line is who am i. This command line consists of the command who and arguments am i.

I'm logged on to the computer named "cactus. I logged in at on the morning of November 6. I started my login from another computer named "rose.

Sometimes you'll get an error even if it appears that you typed the command correctly. This can be caused by typing control characters that are invisible on the screen. Once the prompt returns, reenter your command. Most modern shells let you recall previous commands and edit command lines. If you'll be doing a lot of work at the shell prompt, it's worth learning these handy techniques. They take more time to learn than we can spend here, though.

Ask other users for help or read a reference book for your shell see Appendix A. We'll concentrate on simple methods that work with all shells. The erase character differs from system to system and from account to account, and can be customized.

The key labeled [DEL] may be used as the interrupt character instead of the erase character. This key is used to interrupt or cancel a command, and can be used in many but not all cases when you want to quit what you're doing. You should not end a session by just turning off your terminal!

To log out, enter the command exit. In many cases, the command logout will also work. If you're using a window system, the window will probably close. If you have additional windows open, you'll need to log out or close them, too. You may also need to terminate the window system itself. See Chapter 2.

If you were connected to a remote computer, the system prompt from your local computer should reappear on your screen.

That is, you're still logged in to your local computer. Repeat the process if you want to log out from the local computer.

After you've logged out, you can turn off your terminal or leave it on for the next user. However, you may have these problems later, as you start doing more advanced work.

You get another shell prompt or the system says ": not login shell. The system says "There are stopped jobs. One or more of the programs you ran during your session has not ended, but is stopped paused. Enter fg to bring each stopped job into the foreground, then quit the program normally. See Chapter 6, Multitasking. Valerie Quercia reviewed the revised Chapter 2. Gigi Estabrook was the update editor for the fourth edition, and Nancy Wolfe Kotary was the production editor and copyedited the new edition.

Getting Started 1. Commands We introduce each main concept, then break it down into task-oriented sections. Each section shows the best command to use for a task, explains what it does, and the syntax the way to put the command line together.

The syntax is given like this: rm filename Commands appear in boldface type in this example, rm. You should type the command exactly as it appears in the example.

The variable parts here, filename will appear in italic type; you must supply your own value. To enter this command, you would type rm followed by a space and the name of the file that you want to remove, then press the [RETURN] key. Examples Examples show what should happen as you enter a command. Some examples assume that you've created certain files. If you haven't, you may not get the results shown.

We use typewriter-style characters for examples. Items you type to try the example are boldface. System messages and responses are normal text. Problem Checklist We've included a problem checklist in some sections. You may skip these parts and go back to them if you have a problem. Exercises Many sections have exercises to reinforce the text you've read.

Follow the exercises, but don't be afraid to experiment on your own. The exercises have two columns: the left-hand column tells you what to do and the right-hand column tells you how to do it. The left-hand column tells you what will happen. After you try the commands, you'll have a better idea of the ones you want to learn more about. You can then look them up in your system's UNIX documentation or use one of the other references listed in Appendix A. A Note to Our Readers We update each book periodically.

This allows us to incorporate changes suggested to us by our readers. We'd like new users to benefit from your experience as well as ours. Although most of the tips in this book work on all UNIX systems - old and new - there have been changes since that justify a fourth edition. Linux has some unique features that even beginners will appreciate.

We've also made changes suggested by our readers. Instead of overwhelming you with a lot of details, we want you to be comfortable in the UNIX environment as soon as possible. So we cover the most useful features of a command instead of describing all its options in detail. Appendix A, Reading List , lists other references. Although advanced features differ among systems, you should be able to use this introductory handbook on any type of system.

UNIX can be used the way it was originally designed, on typewriter-like terminals. Most versions of UNIX can also work with window systems, which allow each user to have more than one "terminal" on a single display.

Chapter 2, Using Window Systems , shows the basics of a window system. All other chapters are for every UNIX user - with or without a window system.

It controls both the hardware things you can touch - such as keyboards, displays, and disk drives and the software application programs that you run, such as a word processor. Some computers have a single-user OS, which means only one person can use the computer at a time.

But almost any computer can do a lot more if it has a multiuser, multitasking operating system like UNIX. These powerful OSes let many people use the computer at the same time and let each user run several jobs at once.

UNIX was invented almost 30 years ago for scientific and professional users who wanted a very powerful and flexible OS. It's been significantly developed since then. Because UNIX was designed for experts, it can be a bit overwhelming at first. But after you get the basics from this book!

You can get many others for free on the Internet. You can thus do much more at a much lower cost. Not only are the applications often free, but some versions of UNIX itself are also free. Like the free applications, these free versions of UNIX are usually of excellent quality. They're maintained by volunteer programmers who want a powerful OS and are frustrated by the slow, bug-ridden development of OSes at big companies.

UNIX runs on almost any kind of hardware. After you learn UNIX on one system, you'll know how to use it on any other system. Multitasking Contents: Running a Command in the Background Checking on a Process Cancelling a Process Suppose you are running a command that will take a long time to process. On a single-task system like MS-DOS, you would enter the command and wait for the system prompt to return, telling you that you could enter a new command. In UNIX, however, there is a way to enter new commands in the "foreground" while one or more commands are still running in the "background.

When you enter a command as a background process, the shell prompt reappears immediately so that you can enter a new command.

The original command will still be running in the background, but you can use the system to do other things during that time.

Depending on your system and your shell, you may even be able to log off and let the background process run to completion. It's a good example because text formatting usually takes a while, so users often do it in the background. See your UNIX documentation for details on nroff. The PID is useful when you want to check the status of a background process or, if you need to, cancel it.

You don't need to remember the PID, because there are UNIX commands explained in later sections of this chapter to check on the processes you have running. In some shells, a status line will be printed on your screen when the background process finishes.

In the C shell, you can put an entire sequence of commands separated by semicolons into the background by putting an ampersand at the end of the entire command line.

The program will pause and you'll get a new shell prompt. You can then do anything else you like, including putting the suspended program into the background using the bg command. The fg command will bring a background process to the foreground. For example, you might start sort running on a big file, and, after a minute, want to send email.

You stop sort, then put it in the background. The shell prints a message, then another shell prompt. You send mail while sort runs. Previous: 5.

A username that identifies you and lets you control access to your files and receive messages from other users. A customizable environment that you can tailor to your preferences. A file can hold anything: text a report you're writing, a to-do list , a program, digitally encoded pictures or sound, and so on. All of those are just sequences of raw data until they are interpreted by the right program. In UNIX, files are organized into directories.

A directory is actually a special kind of file where the system stores information about other files. A directory can be thought of as a place, so that files are said to be contained in directories and you are said to work inside a directory. This home directory, a unique place in the UNIX filesystem, contains the files you use almost every time you log in. In your home directory, you can make your own files. As you'll see in a minute, you can also store your own directories within your home directory.

Like folders in a file cabinet, this is a good way to organize your files. At the start of every session, your home directory is your working directory. You may change to another directory, in which case the directory you move to becomes your working directory. Unless you tell UNIX otherwise, all commands that you enter apply to the files in your working directory.

In the same way, when you create files, they're created in your working directory. The root contains several directories. Figure 3. These are fairly standard directories and usually contain specific kinds of system files. For instance, bin contains many UNIX commands. In our example, the parent directory of users one level above is root. It also has two subdirectories one level below , john and carol. On a UNIX system, each directory has one parent directory and may have one or more subdirectories.

Some systems have another directory above the root. To specify a file or directory location, you write its pathname. A pathname is like the address of the directory or file in the UNIX filesystem. We'll look at pathnames in a moment. On a basic UNIX system, all files in the filesystem are stored on disks connected to your computer.

It isn't always easy to use the files on someone else's computer or for someone on another computer to use your files. Networked filesystems make a remote computer's files appear as if they're part of your computer's directory tree.

For instance, your computer in Los Angeles might have a directory named boston. When you look in that subdirectory, you'll see some or all of the directory tree from your company's computer in Boston. Your system administrator can tell you if your computer has any networked filesystems.

An absolute pathname tells you the path of directories you must travel to get from the root to the directory or file you want. It locates just one directory.

A relative pathname gives the location relative to your working directory. Unless you use an absolute pathname starting with a slash , UNIX assumes that you're using a relative pathname. Like absolute pathnames, relative pathnames can go through more than one directory level by naming the directories along the path.

For example, if you're currently in the users directory see Figure 3. Notice that neither of the pathnames in the previous paragraph starts with a slash. That's what makes them relative pathnames! These pathnames start at the working directory, not the root directory. Look again at Figure 3. UNIX would say "No such file or directory. Please think about that before you read more.

It's very important and it's one of the most common beginner's mistakes. Here's the answer. It says to look in the root directory for a subdirectory named carol.

But there is no subdirectory named carol one level directly below the root, so the pathname is wrong. As you saw above, you can also go down the tree by using subdirectory names. If your working directory in the figure is work, there are two pathnames for the play subdirectory of carol. You can also go up one level with ".. Absolute and relative pathnames are totally interchangeable. UNIX commands simply follow whatever path you specify to wherever it leads.

If you use an absolute pathname, the path starts from the root. If you use a relative pathname, the path starts from your working directory. Choose whichever is easier at the moment. The pwd command takes no arguments. The cd command has the form: cd pathname The argument is an absolute or a relative pathname whichever is easier for the directory you want to change to. Note that you can only change to another directory.

You cannot cd to a filename. And, of course, a directory can hold files. The four files are shown along with the work subdirectory. The ls command lists the entries in the directory tree. This isn't surprising because you haven't made any files in your working directory. If you have no files, nothing is displayed; you'll simply get a new shell prompt. The output depends on what's in your directory. If yours does, you can change the display to columns with the -x option.

As mentioned earlier,.. There may also be other files, like. Any entry whose name begins with a dot is hidden - it will be listed only if you use ls -a.

To get more information about each file, add the -l option. That's a lowercase letter "L" for long. This option can be used alone, or in combination with -a, as shown in Figure 3. There are other less common types that we don't explain here. Access modes Specifies three types of users yourself, your group, all others who are allowed to read r , write w , or execute x your files. Links The number of files and directories linked to this one. Owner The person who created or owns the file.

Group The group that owns the file. If your version of UNIX doesn't show this column, add the -g option to see it. Size in bytes The size of the file. Modification date The date when the file was last modified. Name The name of the file or directory. Notice especially the columns that list the owner and group of the files, and the access modes also called permissions.

The person who creates a file is its owner; if you've created any files or the system administrator did it for you , this column should show your username. You also belong to a group, to which you were assigned by the system administrator. Files you create will either be marked with the name of your group or, in some cases, the group that owns the directory. The permissions control who can read, write modify , or execute the file if it's a program.

The permissions have ten characters. New eBooks. Search Engine. If you are new to UNIX, this concise introduction will tell you just what you need to get started and no more. Why wade through a page book when you can begin working productively in a matter of minutes? This book is the most effective introduction to UNIX in print. The fourth edition covers the highlights of the Linux operating system. And it now includes a quick-reference card.

Classic description of the internal algorithms and the structures that form the basis of the UNIX operating system and their relationship to programmer interface. The leading selling UNIX internals book on the market



0コメント

  • 1000 / 1000