Sync usage with man page.
[netbsd-mini2440.git] / share / doc / usd / 01.begin / u2
blob5e432252f453c7f0de2535dc193c9c883c345323
1 .\"     $NetBSD$
2 .\"
3 .\" Copyright (C) Caldera International Inc.  2001-2002.
4 .\" All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code and documentation must retain the above
10 .\"    copyright notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. All advertising materials mentioning features or use of this software
15 .\"    must display the following acknowledgement:
16 .\"     This product includes software developed or owned by Caldera
17 .\"     International, Inc.
18 .\" 4. Neither the name of Caldera International, Inc. nor the names of other
19 .\"    contributors may be used to endorse or promote products derived from
20 .\"    this software without specific prior written permission.
21 .\"
22 .\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
23 .\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
24 .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25 .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26 .\" IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT,
27 .\" INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28 .\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29 .\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31 .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32 .\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 .\" POSSIBILITY OF SUCH DAMAGE.
34 .\"
35 .\"     @(#)u2  8.1 (Berkeley) 6/8/93
36 .\"
37 .SH
38 II.  DAY-TO-DAY USE
39 .SH
40 Creating Files \(em The Editor
41 .PP
42 If you have to type a paper or a letter or a program,
43 how do you get the information stored in the machine?
44 Most of these tasks are done with
45 the
46 .UC UNIX
47 ``text editor''
48 .UL ed .
49 Since
50 .UL ed
51 is thoroughly documented in 
52 .UL ed (1) 
53 and explained in
54 .ul
55 A Tutorial Introduction to the UNIX Text Editor,
56 we won't spend any time here describing how to use it.
57 All we want it for right now is to make some
58 .ul
59 files.
60 (A file is just a collection of information stored in the machine,
61 a simplistic but adequate definition.)
62 .PP
63 To create a file 
64 called
65 .UL junk
66 with some text in it, do the following:
67 .P1
68 .ta .65i
69 ed junk \fR(invokes the text editor)\f3
70 a       \fR(command to ``ed'', to add text)\f3
71 .ft I
72 now type in
73 whatever text you want ...
74 .ft 3
75 \&.     \fR(signals the end of adding text)\f3
76 .P2
77 The ``\f3.\fR'' that signals the end of adding text must be
78 at the beginning of a line by itself.
79 Don't forget it,
80 for until it is typed,
81 no other
82 .UL ed
83 commands will be recognized \(em
84 everything you type will be treated as text to be added.
85 .PP
86 At this point you can do various editing operations
87 on the text you typed in, such as correcting spelling mistakes,
88 rearranging paragraphs and the like.
89 Finally, you must write the information you have typed
90 into a file with the editor command
91 .UL w :
92 .P1
94 .P2
95 .UL ed
96 will respond with the number of characters it wrote
97 into the file 
98 .UL junk .
99 .PP
100 Until the
101 .UL w
102 command,
103 nothing is stored permanently,
104 so if you hang up and go home
105 the information is lost.\(dg
107 \(dg This is not strictly true \(em
108 if you hang up while editing, the data you were
109 working on is saved in a file called
110 .UL ed.hup ,
111 which you can continue with at your next session.
113 But after
114 .UL w
115 the information is there permanently;
116 you can re-access it any time by typing
118 ed junk
120 Type a
121 .UL q
122 command
123 to quit the editor.
124 (If you try to quit without writing,
125 .UL ed
126 will print a
127 .UL ?
128 to remind you.
129 A second
130 .UL q
131 gets you out regardless.)
133 Now create a second file called 
134 .UL temp
135 in the same manner.
136 You should now have two files,
137 .UL junk
139 .UL temp .
141 What files are out there?
144 .UL ls
145 (for ``list'') command lists the names
146 (not contents)
147 of any of the files that
148 .UC UNIX
149 knows about.
150 If you type
154 the response will be
156 junk
157 temp
159 which are indeed the two files just created.
160 The names are sorted into alphabetical order automatically,
161 but other variations are possible.
162 For example,
163 the command
165 ls -t
167 causes the files to be listed in the order in which they were last changed,
168 most recent first.
170 .UL \-l
171 option gives a ``long'' listing:
173 ls -l
175 will produce something like
177 -rw-rw-rw-  1 bwk  users 41 Jul 22 2:56 junk
178 -rw-rw-rw-  1 bwk  users 78 Jul 22 2:57 temp
180 The date and time are of the last change to the file.
181 The 41 and 78 are the number of characters
182 (which should agree with the numbers you got from
183 .UL ed ).
184 .UL bwk
185 is the owner of the file, that is, the person
186 who created it.
187 .UL users
188 is the name of the file's group.
190 .UL \-rw\-rw\-rw\- 
191 tells who has permission to read and write the file,
192 in this case everyone.
194 Options can be combined:
195 .UL ls\ \-lt
196 gives the same thing as
197 .UL ls\ \-l ,
198 but sorted into time order.
199 You can also name the files you're interested in,
200 and 
201 .UL ls
202 will list the information about them only.
203 More details can be found in 
204 .UL ls (1).
206 The use of optional arguments that begin with a minus sign,
207 like
208 .UL \-t
210 .UL \-lt ,
211 is a common convention for
212 .UC UNIX
213 programs.
214 In general, if a program accepts such optional arguments,
215 they precede any filename arguments.
216 It is also vital that you separate the various arguments with spaces:
217 .UL ls\-l
218 is not the same as
219 .UL ls\ \ \-l .
221 Printing Files
223 Now that you've got a file of text,
224 how do you print it so people can look at it?
225 There are a host of programs that do that,
226 probably more than are needed.
228 One simple thing is to use the editor,
229 since printing is often done just before making changes anyway.
230 You can say
232 ed junk
233 1,$p
235 .UL ed
236 will reply with the count of the characters in 
237 .UL junk
238 and then print all the lines in the file.
239 After you learn how to use the editor,
240 you can be selective about the parts you print.
242 There are times when it's not feasible to use the editor for printing.
243 For example, there is a limit on how big a file
244 .UL ed
245 can handle
246 (several thousand lines).
247 Secondly, 
249 will only print one file at a time,
250 and sometimes you want to print several, one after another.
251 So here are a couple of alternatives.
253 First is
254 .UL cat ,
255 the simplest of all the printing programs.
256 .UL cat
257 simply prints on the terminal the contents of all the files
258 named in a list.
259 Thus
261 cat junk
263 prints one file, and
265 cat junk temp
267 prints two.
268 The files are simply concatenated (hence the name
269 .UL cat '') ``
270 onto the terminal.
272 .UL pr
273 produces formatted printouts of files.
274 As with 
275 .UL cat ,
276 .UL pr
277 prints all the files named in a list.
278 The difference is that it produces 
279 headings with date, time, page number and file name
280 at the top of each page,
282 extra lines to skip over the fold in the paper.
283 Thus,
285 pr junk temp
287 will print
288 .UL junk
289 neatly,
290 then skip to the top of a new page and print
291 .UL temp
292 neatly.
294 .UL pr
295 can also produce multi-column output:
297 pr -3 junk 
299 prints
300 .UL junk
301 in 3-column format.
302 You can use any reasonable number in place of ``3''
303 and 
304 .UL pr
305 will do its best.
306 .UL pr
307 has other capabilities as well;
309 .UL pr (1).
311 It should be noted that
312 .UL pr
316 a formatting program in the sense of shuffling lines around
317 and justifying margins.
318 The true formatters are
319 .UL nroff
321 .UL troff ,
322 which we will get to in the section on document preparation.
324 There are also programs that print files
325 on a high-speed printer.
326 Look in your manual under
327 .UL lpr .
329 Shuffling Files About
331 Now that you have some files in the file system
332 and some experience in printing them,
333 you can try bigger things.
334 For example,
335 you can move a file from one place to another
336 (which amounts to giving it a new name),
337 like this:
339 mv junk precious
341 This means that what used to be ``junk'' is now ``precious''.
342 If you do an
343 .UL ls
344 command now,
345 you will get
347 precious
348 temp
350 Beware that if you move a file to another one
351 that already exists,
352 the already existing contents are lost forever.
354 If you want
355 to make a
357 copy
358 of a file (that is, to have two versions of something),
359 you can use the 
360 .UL cp
361 command:
363 cp precious temp1
365 makes a duplicate copy of 
366 .UL precious
368 .UL temp1 .
370 Finally, when you get tired of creating and moving
371 files,
372 there is a command to remove files from the file system,
373 called
374 .UL rm .
376 rm temp temp1
378 will remove both of the files named.
380 You will get a warning message if one of the named files wasn't there,
381 but otherwise
382 .UL rm ,
383 like most
384 .UC UNIX
385 commands,
386 does its work silently.
387 There is no prompting or chatter,
388 and error messages are occasionally curt.
389 This terseness is sometimes disconcerting
390 to new\%comers,
391 but experienced users find it desirable.
393 What's in a Filename
395 So far we have used filenames without ever saying what's
396 a legal name,
397 so it's time for a couple of rules.
398 First, filenames are limited to 14 characters,
399 which is enough to be descriptive.\(dg
401 \(dg In  4.2 BSD the limit was extended to 255 characters.
403 Second, although you can use almost any character
404 in a filename,
405 common sense says you should stick to ones that are visible,
406 and that you should probably avoid characters that might be used
407 with other meanings.
408 We have already seen, for example,
409 that in the
410 .UL ls
411 command,
412 .UL ls\ \-t
413 means to list in time order.
414 So if you had a file whose name
416 .UL \-t ,
417 you would have a tough time listing it by name.
418 Besides the minus sign, there are other characters which
419 have special meaning.
420 To avoid pitfalls,
421 you would do well to 
422 use only letters, numbers and the period
423 until you're familiar with the situation.
425 On to some more positive suggestions.
426 Suppose you're typing a large document
427 like a book.
428 Logically this divides into many small pieces,
429 like chapters and perhaps sections.
430 Physically it must be divided too,
431 for 
432 .UL ed
433 will not handle really big files.
434 Thus you should type the document as a number of files.
435 You might have a separate file for each chapter,
436 called
438 chap1
439 chap2
440 .ft R
441 etc...
443 Or, if each chapter were broken into several files, you might have
445 chap1.1
446 chap1.2
447 chap1.3
448 \&...
449 chap2.1
450 chap2.2
451 \&...
453 You can now tell at a glance where a particular file fits into the whole.
455 There are advantages to a systematic naming convention which are not obvious
456 to the novice
457 .UC UNIX 
458 user.
459 What if you wanted to print the whole book?
460 You could say
462 pr chap1.1 chap1.2 chap1.3 ......
464 but you would get tired pretty fast, and would probably even make mistakes.
465 Fortunately, there is a shortcut.
466 You can say
468 pr chap*
471 .UL *
472 means ``anything at all,''
473 so this translates into ``print all files
474 whose names begin with 
475 .UL chap '',
476 listed in alphabetical order.
478 This shorthand notation
479 is not a property of the
480 .UL pr
481 command, by the way.
482 It is system-wide, a service of the program
483 that interprets commands
484 (the ``shell,''
485 .UL sh (1)).
486 Using that fact, you can see how to list the names of the files in the book:
488 ls chap*
490 produces
492 chap1.1
493 chap1.2
494 chap1.3
495 \&...
498 .UL *
499 is not limited to the last position in a filename \(em
500 it can be anywhere
501 and can occur several times.
502 Thus
504 rm *junk* *temp*
506 removes all files that contain
507 .UL junk
509 .UL temp
510 as any part of their name.
511 As a special case,
512 .UL *
513 by itself matches every filename,
516 pr *
518 prints all your files
519 (alphabetical order),
522 rm *
524 removes
526 all files.
527 (You had better be
528 .IT  very 
529 sure that's what you wanted to say!)
532 .UL *
533 is not 
534 the only pattern-matching feature available.
535 Suppose you want to print only chapters 1 through 4 and 9.
536 Then you can say
538 pr chap[12349]*
541 .UL [...]
542 means to match any of the characters inside the brackets.
543 A range of consecutive letters or digits can be abbreviated,
544 so you can also do this 
545 with
547 pr chap[1-49]*
549 Letters can also be used within brackets:
550 .UL [a\-z]
551 matches any character in the range
552 .UL a
553 through
554 .UL z .
557 .UL ?
558 pattern matches any single character,
561 ls ?
563 lists all files which have single-character names,
566 ls -l chap?.1
568 lists information about the first file of each chapter
569 .UL chap1.1 \&, (
570 .UL chap2.1 ,
571 etc.).
573 Of these niceties,
574 .UL *
575 is certainly the most useful,
576 and you should get used to it.
577 The others are frills, but worth knowing.
579 If you should ever have to turn off the special meaning
581 .UL * ,
582 .UL ? ,
583 etc.,
584 enclose the entire argument in single quotes,
585 as in
587 ls \(fm?\(fm
589 We'll see some more examples of this shortly.
591 What's in a Filename, Continued
593 When you first made that file called
594 .UL junk ,
595 how did 
596 the system
597 know that there wasn't another
598 .UL junk
599 somewhere else,
600 especially since the person in the next office is also
601 reading this tutorial?
602 The answer is that generally each user 
603 has a private
604 .IT directory ,
605 which contains only the files that belong to him.
606 When you log in, you are ``in'' your directory.
607 Unless you take special action,
608 when you create a new file,
609 it is made in the directory that you are currently in;
610 this is most often your own directory,
611 and thus the file is unrelated to any other file of the same name
612 that might exist in someone else's directory.
614 The set of all files
615 is organized into a (usually big) tree,
616 with your files located several branches into the tree.
617 It is possible for you to ``walk'' around this tree,
618 and to find any file in the system, by starting at the root
619 of the tree and walking along the proper set of branches.
620 Conversely, you can start where you are and walk toward the root.
622 Let's try the latter first.
623 The basic tools is the command
624 .UL pwd
625 (``print working directory''),
626 which prints the name of the directory you are currently in.
628 Although the details will vary according to the system you are on,
629 if you give the
630 command
631 .UL pwd ,
632 it will print something like
634 /usr/your\(hyname
636 This says that you are currently in the directory
637 .UL your-name ,
638 which is in turn in the directory
639 .UL /usr ,
640 which is in turn in the root directory
641 called by convention just
642 .UL / .
643 (Even if it's not called
644 .UL /usr
645 on your system,
646 you will get something analogous.
647 Make the corresponding mental adjustment and read on.)
649 If you now type
651 ls /usr/your\(hyname
653 you should get exactly the same list of file names
654 as you get from a plain
655 .UL ls  :
656 with no arguments,
657 .UL ls
658 lists the contents of the current directory;
659 given the name of a directory,
660 it lists the contents of that directory.
662 Next, try
664 ls /usr
666 This should print a long series of names,
667 among which is your own login name
668 .UL your-name .
669 On many systems, 
670 .UL usr
671 is a directory that contains the directories
672 of all the normal users of the system,
673 like you.
675 The next step is to try
677 ls /
679 You should get a response something like this
680 (although again the details may be different):
689 This is a collection of the basic directories of files
690 that
691 the system
692 knows about;
693 we are at the root of the tree.
695 Now try
697 cat /usr/your\(hyname/junk
700 .UL junk
701 is still around in your directory).
702 The name
704 /usr/your\(hyname/junk
706 is called the
707 .UL pathname
708 of the file that
709 you normally think of as ``junk''.
710 ``Pathname'' has an obvious meaning:
711 it represents the full name of the path you have to follow from the root
712 through the tree of directories to get to a particular file.
713 It is a universal rule in
715 .UC UNIX
716 system
717 that anywhere you can use an ordinary filename,
718 you can use a pathname.
720 Here is a picture which may make this clearer:
721 .P1 1
722 .ft R
723 .if t .vs 9p
724 .if t .tr /\(sl
725 .if t .tr ||
726 .ce 100
727 (root)
728 / | \e
729 /  |  \e
730 /   |   \e
731   bin    etc    usr    dev   tmp 
732 / | \e   / | \e   / | \e   / | \e   / | \e
733 /  |  \e
734 /   |   \e
735 adam  eve   mary
736 /        /   \e        \e
737              /     \e       junk
738 junk temp
739 .ce 0
741 .tr //
744 Notice that Mary's
745 .UL junk
746 is unrelated to Eve's.
748 This isn't too exciting if all the files of interest are in your own
749 directory, but if you work with someone else
750 or on several projects concurrently,
751 it becomes handy indeed.
752 For example, your friends can print your book by saying
754 pr /usr/your\(hyname/chap*
756 Similarly, you can find out what files your neighbor has
757 by saying
759 ls /usr/neighbor\(hyname
761 or make your own copy of one of his files by
763 cp /usr/your\(hyneighbor/his\(hyfile yourfile
766 If your neighbor doesn't want you poking around in his files,
767 or vice versa,
768 privacy can be arranged.
769 Each file and directory has read-write-execute permissions for the owner,
770 a group, and everyone else,
771 which can be set
772 to control access.
774 .UL ls (1)
776 .UL chmod (1)
777 for details.
778 As a matter of observed fact,
779 most users most of the time find openness of more
780 benefit than privacy.
782 As a final experiment with pathnames, try
784 ls /bin /usr/bin
786 Do some of the names look familiar?
787 When you run a program, by typing its name after the prompt character,
788 the system simply looks for a file of that name.
789 It normally looks first in your directory
790 (where it typically doesn't find it),
791 then in
792 .UL /bin
793 and finally in
794 .UL /usr/bin .
795 There is nothing magic about commands like
796 .UL cat
798 .UL ls ,
799 except that they have been collected into a couple of places to be easy to find and administer.
801 What if you work regularly with someone else on common information
802 in his directory?
803 You could just log in as your friend each time you want to,
804 but you can also say
805 ``I want to work on his files instead of my own''.
806 This is done by changing the directory that you are
807 currently in:
809 cd /usr/your\(hyfriend
811 (On some systems,
812 .UL cd
813 is spelled
814 .UL chdir .)
815 Now when you use a filename in something like
816 .UL cat
818 .UL pr ,
819 it refers to the file in your friend's directory.
820 Changing directories doesn't affect any permissions associated
821 with a file \(em
822 if you couldn't access a file from your own directory,
823 changing to another directory won't alter that fact.
824 Of course,
825 if you forget what directory you're in, type
829 to find out.
831 It is usually convenient to arrange your own files
832 so that all the files related to one thing are in a directory separate
833 from other projects.
834 For example, when you write your book, you might want to keep all the text
835 in a directory called
836 .UL book .
837 So make one with
839 mkdir book
841 then go to it with
843 cd book
845 then start typing chapters.
846 The book is now found in (presumably)
848 /usr/your\(hyname/book
850 To remove the directory
851 .UL book ,
852 type
854 rm book/*
855 rmdir book
857 The first command removes all files from the directory;
858 the second
859 removes the empty directory.
861 You can go up one level in the tree of files 
862 by saying
864 cd ..
866 .UL .. '' ``
867 is the name of the parent of whatever directory you are currently in.
868 For completeness,
869 .UL . '' ``
870 is an alternate name
871 for the directory you are in.
873 Using Files instead of the Terminal
875 Most of the commands we have seen so far produce output
876 on the terminal;
877 some, like the editor, also take their input from the terminal.
878 It is universal in
879 .UC UNIX
880 systems
881 that the terminal can be replaced by a file
882 for either or both of input and output.
883 As one example,
887 makes a list of files on your terminal.
888 But if you say
890 ls >filelist
892 a list of your files will be placed in the file
893 .UL filelist
894 (which
895 will be created if it doesn't already exist,
896 or overwritten if it does).
897 The symbol
898 .UL >
899 means ``put the output on the following file,
900 rather than on the terminal.''
901 Nothing is produced on the terminal.
902 As another example, you could combine
903 several files into one by capturing the output of
904 .UL cat
905 in a file:
907 cat f1 f2 f3 >temp
910 The symbol
911 .UL >>
912 operates very much like
913 .UL >
914 does,
915 except that it means
916 ``add to the end of.''
917 That is,
919 cat f1 f2 f3 >>temp
921 means to concatenate
922 .UL f1 ,
923 .UL f2 
925 .UL f3
926 to the end of whatever is already in
927 .UL temp ,
928 instead of overwriting the existing contents.
929 As with
930 .UL > ,
931 if 
932 .UL temp
933 doesn't exist, it will be created for you.
935 In a similar way, the symbol
936 .UL <
937 means to take the input
938 for a program from the following file,
939 instead of from the terminal.
940 Thus, you could make up a script of commonly used editing commands
941 and put them into a file called
942 .UL script .
943 Then you can run the script on a file by saying
945 ed file <script
947 As another example, you can use
948 .UL ed
949 to prepare a letter in file
950 .UL let ,
951 then send it to several people with
953 mail adam eve mary joe <let
956 Pipes
958 One of the novel contributions of
960 .UC UNIX
961 system
962 is the idea of a
964 pipe.
965 A pipe is simply a way to connect the output of one program
966 to the input of another program,
967 so the two run as a sequence of processes \(em
968 a pipeline.
970 For example,
972 pr f g h
974 will print the files
975 .UL f ,
976 .UL g ,
978 .UL h ,
979 beginning each on a new page.
980 Suppose you want
981 them run together instead.
982 You could say
984 cat f g h >temp
985 pr <temp
986 rm temp
988 but this is more work than necessary.
989 Clearly what we want is to take the output of
990 .UL cat
992 connect it to the input of
993 .UL pr .
994 So let us use a pipe:
996 cat f g h | pr
998 The vertical bar 
999 .UL |
1000 means to
1001 take the output from
1002 .UL cat ,
1003 which would normally have gone to the terminal,
1004 and put it into
1005 .UL pr
1006 to be neatly formatted.
1008 There are many other examples of pipes.
1009 For example,
1011 ls | pr -3
1013 prints a list of your files in three columns.
1014 The program
1015 .UL wc
1016 counts the number of lines, words and characters in
1017 its input, and as we saw earlier,
1018 .UL who
1019 prints a list of currently-logged on people,
1020 one per line.
1021 Thus
1023 who | wc
1025 tells how many people are logged on.
1026 And of course
1028 ls | wc
1030 counts your files.
1032 Any program
1033 that reads from the terminal
1034 can read from a pipe instead;
1035 any program that writes on the terminal can drive
1036 a pipe.
1037 You can have as many elements in a pipeline as you wish.
1039 Many
1040 .UC UNIX
1041 programs are written so that they will take their input from one or more files
1042 if file arguments are given;
1043 if no arguments are given they will read from the terminal,
1044 and thus can be used in pipelines.
1045 .UL pr
1046 is one example:
1048 pr -3 a b c
1050 prints files
1051 .UL a ,
1052 .UL b
1054 .UL c
1055 in order in three columns.
1056 But in
1058 cat a b c | pr -3
1060 .UL pr
1061 prints the information coming down the pipeline,
1062 still in
1063 three columns.
1065 The Shell
1067 We have already mentioned once or twice the mysterious
1068 ``shell,''
1069 which is in fact
1070 .UL sh (1).
1071 The shell is the program that interprets what you type as
1072 commands and arguments.
1073 It also looks after translating
1074 .UL * ,
1075 etc.,
1076 into lists of filenames,
1078 .UL < ,
1079 .UL > ,
1081 .UL |
1082 into changes of input and output streams.
1084 The shell has other capabilities too.
1085 For example, you can run two programs with one command line
1086 by separating the commands with a semicolon;
1087 the shell recognizes the semicolon and
1088 breaks the line into two commands.
1089 Thus
1091 date; who
1093 does both commands before returning with a prompt character.
1095 You can also have more than one program running
1097 simultaneously
1098 if you wish.
1099 For example, if you are doing something time-consuming,
1100 like the editor script
1101 of an earlier section,
1102 and you don't want to wait around for the results before starting something else,
1103 you can say
1105 ed file <script &
1107 The ampersand at the end of a command line
1108 says ``start this command running,
1109 then take further commands from the terminal immediately,''
1110 that is,
1111 don't wait for it to complete.
1112 Thus the script will begin,
1113 but you can do something else at the same time.
1114 Of course, to keep the output from interfering
1115 with what you're doing on the terminal,
1116 it would be better to say
1118 ed file <script >script.out &
1120 which saves the output lines in a file
1121 called
1122 .UL script.out .
1124 When you initiate a command with
1125 .UL & ,
1126 the system
1127 replies with a number
1128 called the process number,
1129 which identifies the command in case you later want
1130 to stop it.
1131 If you do, you can say
1133 kill process\(hynumber
1135 If you forget the process number,
1136 the command
1137 .UL ps
1138 will tell you about everything you have running.
1139 (If you are desperate,
1140 .UL kill\ 0
1141 will kill all your processes.)
1142 And if you're curious about other people,
1143 .UL ps\ a
1144 will tell you about
1147 programs that are currently running.
1149 You can say
1150 .P1 1
1151 (command\(hy1; command\(hy2; command\(hy3) &
1153 to start three commands in the background,
1154 or you can start a background pipeline with
1156 command\(hy1 | command\(hy2 &
1159 Just as you can tell the editor
1160 or some similar program to take its input
1161 from a file instead of from the terminal,
1162 you can tell the shell to read a file
1163 to get commands.
1164 (Why not? The shell, after all, is just a program,
1165 albeit a clever one.)
1166 For instance, suppose you want to set tabs on
1167 your terminal, and find out the date
1168 and who's on the system every time you log in.
1169 Then you can put the three necessary commands
1170 .UL tabs , (
1171 .UL date ,
1172 .UL who )
1173 into a file, let's call it
1174 .UL startup ,
1175 and then run it with
1177 sh startup
1179 This says to run the shell with the file
1180 .UL startup
1181 as input.
1182 The effect is as if you had typed 
1183 the contents of
1184 .UL startup
1185 on the terminal.
1187 If this is to be a regular thing,
1188 you can eliminate the 
1189 need to type
1190 .UL sh :
1191 simply type, once only, the command
1193 chmod +x startup
1195 and thereafter you need only say
1197 startup
1199 to run the sequence of commands.
1201 .UL chmod (1)
1202 command marks the file executable;
1203 the shell recognizes this and runs it as a sequence of commands.
1205 If you want 
1206 .UL startup
1207 to run automatically every time you log in,
1208 create a file in your login directory called
1209 .UL .profile ,
1210 and place in it the line
1211 .UL startup .
1212 When the shell first gains control when you log in,
1213 it looks for the 
1214 .UL .profile
1215 file and does whatever commands it finds in it.\(dg
1217 \(dg The c shell instead reads a file called 
1218 .UL .login
1221 We'll get back to the shell in the section
1222 on programming.