BSD 4_3 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Mon, 25 Apr 1983 18:30:47 +0000 (10:30 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Mon, 25 Apr 1983 18:30:47 +0000 (10:30 -0800)
Work on file usr/lib/learn/files/Init
Work on file usr/lib/learn/files/L0
Work on file usr/src/usr.lib/learn/files/L0
Work on file usr/src/usr.lib/learn/files/L0.1c
Work on file usr/lib/learn/files/L0.01a
Work on file usr/lib/learn/files/L0.1b
Work on file usr/lib/learn/files/L0.1c
Work on file usr/src/usr.lib/learn/files/L0.1b
Work on file usr/src/usr.lib/learn/files/L0.01a
Work on file usr/src/usr.lib/learn/files/L1.1a
Work on file usr/lib/learn/files/L10.1a
Work on file usr/src/usr.lib/learn/files/L1.2b
Work on file usr/lib/learn/files/L0.1d
Work on file usr/lib/learn/files/L1.2b
Work on file usr/lib/learn/files/L1.1a
Work on file usr/src/usr.lib/learn/files/L10.1a
Work on file usr/src/usr.lib/learn/files/L0.1d
Work on file usr/src/usr.lib/learn/files/L1.2a
Work on file usr/lib/learn/files/L1.2a
Work on file usr/src/usr.lib/learn/files/L10.3b
Work on file usr/src/usr.lib/learn/files/L10.3c
Work on file usr/src/usr.lib/learn/files/L10.3a
Work on file usr/lib/learn/files/L10.2b
Work on file usr/lib/learn/files/L10.3a
Work on file usr/lib/learn/files/L10.3c
Work on file usr/src/usr.lib/learn/files/L10.2b
Work on file usr/lib/learn/files/L10.3b
Work on file usr/lib/learn/files/L10.2a
Work on file usr/src/usr.lib/learn/files/L10.2a
Work on file usr/lib/learn/files/L11.2b
Work on file usr/lib/learn/files/L10.3d
Work on file usr/src/usr.lib/learn/files/L11.2b
Work on file usr/lib/learn/files/L11.1a
Work on file usr/src/usr.lib/learn/files/L11.1a
Work on file usr/src/usr.lib/learn/files/L10.3d
Work on file usr/lib/learn/files/L11.2a
Work on file usr/src/usr.lib/learn/files/L11.2a
Work on file usr/src/usr.lib/learn/files/L12.2a
Work on file usr/lib/learn/files/L11.3b
Work on file usr/lib/learn/files/L12.1a
Work on file usr/src/usr.lib/learn/files/L11.3a
Work on file usr/lib/learn/files/L12.2a
Work on file usr/lib/learn/files/L11.3c
Work on file usr/src/usr.lib/learn/files/L11.3c
Work on file usr/lib/learn/files/L11.3a
Work on file usr/src/usr.lib/learn/files/L11.3b
Work on file usr/src/usr.lib/learn/files/L12.1a
Work on file usr/src/usr.lib/learn/files/L12.3a
Work on file usr/lib/learn/files/L12.3a
Work on file usr/lib/learn/files/L12.2c
Work on file usr/src/usr.lib/learn/files/L12.3c
Work on file usr/src/usr.lib/learn/files/L12.2b
Work on file usr/lib/learn/files/L12.3b
Work on file usr/lib/learn/files/L12.3c
Work on file usr/lib/learn/files/L12.2b
Work on file usr/src/usr.lib/learn/files/L12.3b
Work on file usr/src/usr.lib/learn/files/L12.2c
Work on file usr/src/usr.lib/learn/files/L13.1a
Work on file usr/lib/learn/files/L13.1b
Work on file usr/lib/learn/files/L13.1c
Work on file usr/src/usr.lib/learn/files/L13.1b
Work on file usr/src/usr.lib/learn/files/L13.1c
Work on file usr/lib/learn/files/L13.1a
Work on file usr/src/usr.lib/learn/files/L13.1d
Work on file usr/lib/learn/files/L13.1f
Work on file usr/src/usr.lib/learn/files/L13.1f
Work on file usr/lib/learn/files/L13.1d
Work on file usr/lib/learn/files/L13.1g
Work on file usr/src/usr.lib/learn/files/L13.1e
Work on file usr/src/usr.lib/learn/files/L13.1g
Work on file usr/lib/learn/files/L13.1e
Work on file usr/src/usr.lib/learn/files/L3.2a
Work on file usr/src/usr.lib/learn/files/L2.2a
Work on file usr/lib/learn/files/L3.1a
Work on file usr/lib/learn/files/L2.2b
Work on file usr/src/usr.lib/learn/files/L3.1a
Work on file usr/src/usr.lib/learn/files/L2.2b
Work on file usr/lib/learn/files/L2.2a
Work on file usr/lib/learn/files/L3.2a
Work on file usr/src/usr.lib/learn/files/L2.1a
Work on file usr/lib/learn/files/L2.1a
Work on file usr/lib/learn/files/L4.2a
Work on file usr/lib/learn/files/L4.1a
Work on file usr/src/usr.lib/learn/files/L3.2b
Work on file usr/src/usr.lib/learn/files/L3.3a
Work on file usr/lib/learn/files/L3.3a
Work on file usr/src/usr.lib/learn/files/L3.3b
Work on file usr/src/usr.lib/learn/files/L4.2a
Work on file usr/lib/learn/files/L3.3b
Work on file usr/lib/learn/files/L3.2b
Work on file usr/src/usr.lib/learn/files/L4.1a
Work on file usr/src/usr.lib/learn/files/L4.3a
Work on file usr/lib/learn/files/L4.3c
Work on file usr/lib/learn/files/L4.2b
Work on file usr/src/usr.lib/learn/files/L4.2b
Work on file usr/lib/learn/files/L4.3b
Work on file usr/src/usr.lib/learn/files/L4.3c
Work on file usr/src/usr.lib/learn/files/L4.3b
Work on file usr/lib/learn/files/L4.3a
Work on file usr/src/usr.lib/learn/files/L5.1e
Work on file usr/src/usr.lib/learn/files/L5.1d
Work on file usr/lib/learn/files/L5.1c
Work on file usr/lib/learn/files/L5.1d
Work on file usr/src/usr.lib/learn/files/L5.1a
Work on file usr/lib/learn/files/L5.1b
Work on file usr/src/usr.lib/learn/files/L5.1c
Work on file usr/lib/learn/files/L5.1a
Work on file usr/src/usr.lib/learn/files/L5.1b
Work on file usr/lib/learn/files/L5.1e
Work on file usr/src/usr.lib/learn/files/L6.1b
Work on file usr/lib/learn/files/L6.1b
Work on file usr/lib/learn/files/L6.1a
Work on file usr/src/usr.lib/learn/files/L6.1a
Work on file usr/src/usr.lib/learn/files/L6.1c
Work on file usr/lib/learn/files/L6.1d
Work on file usr/lib/learn/files/L6.1c
Work on file usr/src/usr.lib/learn/files/L6.1d
Work on file usr/lib/learn/files/L6.2b
Work on file usr/lib/learn/files/L7.1a
Work on file usr/lib/learn/files/L6.1e
Work on file usr/src/usr.lib/learn/files/L6.2b
Work on file usr/src/usr.lib/learn/files/L6.2a
Work on file usr/src/usr.lib/learn/files/L7.1a
Work on file usr/lib/learn/files/L6.2a
Work on file usr/src/usr.lib/learn/files/L6.1e
Work on file usr/lib/learn/files/L7.3b
Work on file usr/lib/learn/files/L7.3a
Work on file usr/src/usr.lib/learn/files/L7.3a
Work on file usr/lib/learn/files/L7.2a
Work on file usr/lib/learn/files/L7.2b
Work on file usr/src/usr.lib/learn/files/L7.2b
Work on file usr/src/usr.lib/learn/files/L7.2a
Work on file usr/src/usr.lib/learn/files/L7.3b
Work on file usr/src/usr.lib/learn/files/L7.3c
Work on file usr/lib/learn/files/L7.3c
Work on file usr/src/usr.lib/learn/files/L8.2c
Work on file usr/lib/learn/files/L8.2c
Work on file usr/src/usr.lib/learn/files/L8.2b
Work on file usr/lib/learn/files/L8.1a
Work on file usr/src/usr.lib/learn/files/L8.2a
Work on file usr/src/usr.lib/learn/files/L8.1a
Work on file usr/lib/learn/files/L8.2b
Work on file usr/lib/learn/files/L8.2a
Work on file usr/src/usr.lib/learn/files/L9.2b
Work on file usr/lib/learn/files/L9.2b
Work on file usr/lib/learn/files/L9.2a
Work on file usr/src/usr.lib/learn/files/L9.2a
Work on file usr/src/usr.lib/learn/files/L9.2c
Work on file usr/lib/learn/files/L9.1a
Work on file usr/src/usr.lib/learn/files/L9.1a
Work on file usr/lib/learn/files/L9.2c

Synthesized-from: CSRG/cd1/4.3

151 files changed:
usr/lib/learn/files/Init [new file with mode: 0644]
usr/lib/learn/files/L0 [new file with mode: 0644]
usr/lib/learn/files/L0.01a [new file with mode: 0644]
usr/lib/learn/files/L0.1b [new file with mode: 0644]
usr/lib/learn/files/L0.1c [new file with mode: 0644]
usr/lib/learn/files/L0.1d [new file with mode: 0644]
usr/lib/learn/files/L1.1a [new file with mode: 0644]
usr/lib/learn/files/L1.2a [new file with mode: 0644]
usr/lib/learn/files/L1.2b [new file with mode: 0644]
usr/lib/learn/files/L10.1a [new file with mode: 0644]
usr/lib/learn/files/L10.2a [new file with mode: 0644]
usr/lib/learn/files/L10.2b [new file with mode: 0644]
usr/lib/learn/files/L10.3a [new file with mode: 0644]
usr/lib/learn/files/L10.3b [new file with mode: 0644]
usr/lib/learn/files/L10.3c [new file with mode: 0644]
usr/lib/learn/files/L10.3d [new file with mode: 0644]
usr/lib/learn/files/L11.1a [new file with mode: 0644]
usr/lib/learn/files/L11.2a [new file with mode: 0644]
usr/lib/learn/files/L11.2b [new file with mode: 0644]
usr/lib/learn/files/L11.3a [new file with mode: 0644]
usr/lib/learn/files/L11.3b [new file with mode: 0644]
usr/lib/learn/files/L11.3c [new file with mode: 0644]
usr/lib/learn/files/L12.1a [new file with mode: 0644]
usr/lib/learn/files/L12.2a [new file with mode: 0644]
usr/lib/learn/files/L12.2b [new file with mode: 0644]
usr/lib/learn/files/L12.2c [new file with mode: 0644]
usr/lib/learn/files/L12.3a [new file with mode: 0644]
usr/lib/learn/files/L12.3b [new file with mode: 0644]
usr/lib/learn/files/L12.3c [new file with mode: 0644]
usr/lib/learn/files/L13.1a [new file with mode: 0644]
usr/lib/learn/files/L13.1b [new file with mode: 0644]
usr/lib/learn/files/L13.1c [new file with mode: 0644]
usr/lib/learn/files/L13.1d [new file with mode: 0644]
usr/lib/learn/files/L13.1e [new file with mode: 0644]
usr/lib/learn/files/L13.1f [new file with mode: 0644]
usr/lib/learn/files/L13.1g [new file with mode: 0644]
usr/lib/learn/files/L2.1a [new file with mode: 0644]
usr/lib/learn/files/L2.2a [new file with mode: 0644]
usr/lib/learn/files/L2.2b [new file with mode: 0644]
usr/lib/learn/files/L3.1a [new file with mode: 0644]
usr/lib/learn/files/L3.2a [new file with mode: 0644]
usr/lib/learn/files/L3.2b [new file with mode: 0644]
usr/lib/learn/files/L3.3a [new file with mode: 0644]
usr/lib/learn/files/L3.3b [new file with mode: 0644]
usr/lib/learn/files/L4.1a [new file with mode: 0644]
usr/lib/learn/files/L4.2a [new file with mode: 0644]
usr/lib/learn/files/L4.2b [new file with mode: 0644]
usr/lib/learn/files/L4.3a [new file with mode: 0644]
usr/lib/learn/files/L4.3b [new file with mode: 0644]
usr/lib/learn/files/L4.3c [new file with mode: 0644]
usr/lib/learn/files/L5.1a [new file with mode: 0644]
usr/lib/learn/files/L5.1b [new file with mode: 0644]
usr/lib/learn/files/L5.1c [new file with mode: 0644]
usr/lib/learn/files/L5.1d [new file with mode: 0644]
usr/lib/learn/files/L5.1e [new file with mode: 0644]
usr/lib/learn/files/L6.1a [new file with mode: 0644]
usr/lib/learn/files/L6.1b [new file with mode: 0644]
usr/lib/learn/files/L6.1c [new file with mode: 0644]
usr/lib/learn/files/L6.1d [new file with mode: 0644]
usr/lib/learn/files/L6.1e [new file with mode: 0644]
usr/lib/learn/files/L6.2a [new file with mode: 0644]
usr/lib/learn/files/L6.2b [new file with mode: 0644]
usr/lib/learn/files/L7.1a [new file with mode: 0644]
usr/lib/learn/files/L7.2a [new file with mode: 0644]
usr/lib/learn/files/L7.2b [new file with mode: 0644]
usr/lib/learn/files/L7.3a [new file with mode: 0644]
usr/lib/learn/files/L7.3b [new file with mode: 0644]
usr/lib/learn/files/L7.3c [new file with mode: 0644]
usr/lib/learn/files/L8.1a [new file with mode: 0644]
usr/lib/learn/files/L8.2a [new file with mode: 0644]
usr/lib/learn/files/L8.2b [new file with mode: 0644]
usr/lib/learn/files/L8.2c [new file with mode: 0644]
usr/lib/learn/files/L9.1a [new file with mode: 0644]
usr/lib/learn/files/L9.2a [new file with mode: 0644]
usr/lib/learn/files/L9.2b [new file with mode: 0644]
usr/lib/learn/files/L9.2c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L0 [new file with mode: 0644]
usr/src/usr.lib/learn/files/L0.01a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L0.1b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L0.1c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L0.1d [new file with mode: 0644]
usr/src/usr.lib/learn/files/L1.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L1.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L1.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.3a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.3b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.3c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L10.3d [new file with mode: 0644]
usr/src/usr.lib/learn/files/L11.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L11.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L11.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L11.3a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L11.3b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L11.3c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.2c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.3a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.3b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L12.3c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1d [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1e [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1f [new file with mode: 0644]
usr/src/usr.lib/learn/files/L13.1g [new file with mode: 0644]
usr/src/usr.lib/learn/files/L2.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L2.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L2.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L3.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L3.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L3.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L3.3a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L3.3b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L4.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L4.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L4.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L4.3a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L4.3b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L4.3c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L5.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L5.1b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L5.1c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L5.1d [new file with mode: 0644]
usr/src/usr.lib/learn/files/L5.1e [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.1b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.1c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.1d [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.1e [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L6.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L7.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L7.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L7.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L7.3a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L7.3b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L7.3c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L8.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L8.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L8.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L8.2c [new file with mode: 0644]
usr/src/usr.lib/learn/files/L9.1a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L9.2a [new file with mode: 0644]
usr/src/usr.lib/learn/files/L9.2b [new file with mode: 0644]
usr/src/usr.lib/learn/files/L9.2c [new file with mode: 0644]

diff --git a/usr/lib/learn/files/Init b/usr/lib/learn/files/Init
new file mode 100644 (file)
index 0000000..79923f1
--- /dev/null
@@ -0,0 +1,2 @@
+#
+stty erase \b kill @ start ^Q stop ^S
diff --git a/usr/lib/learn/files/L0 b/usr/lib/learn/files/L0
new file mode 100644 (file)
index 0000000..ad3ace1
--- /dev/null
@@ -0,0 +1,2 @@
+#next
+0.01a 10
diff --git a/usr/lib/learn/files/L0.01a b/usr/lib/learn/files/L0.01a
new file mode 100644 (file)
index 0000000..858d698
--- /dev/null
@@ -0,0 +1,29 @@
+#print
+This course will help you learn about basic file handling commands.
+First you should understand how to give an answer that learn requests.
+
+The most important thing to remember is that whenever you type a
+command to UNIX or a response to "learn", you must press the
+RETURN key or the system won't see your typing.
+
+Sometimes learn asks you to come up with the right answer,
+and then enter "answer", followed immediately by a space and the
+single word which answers the question (and then RETURN).
+This means that you would enter "answer WORD", where instead of
+typing WORD you would type the word that is the correct answer.
+
+For example, if the answer to a question were "bug", you would enter
+
+answer bug
+
+Type that in now, and don't forget to hit RETURN at the end of
+the line.  Don't use any quotation marks in your response.
+#copyin
+#user
+#uncopyin
+#match bug
+#bad answerbug
+Leave a space between "answer" and "bug".
+#log
+#next
+0.1a 5
diff --git a/usr/lib/learn/files/L0.1b b/usr/lib/learn/files/L0.1b
new file mode 100644 (file)
index 0000000..f2f7a30
--- /dev/null
@@ -0,0 +1,28 @@
+#print
+You should also understand a few simple commands.
+When UNIX types a "%" at you, you can type a command.
+For example, if you type "date" the computer will tell
+you the current date and time. If you see "%" and type "who",
+UNIX will tell you who is logged on at present.  There are
+many other commands, too.  You must type a RETURN at the
+end of each command line.
+
+Try the "date" command now: find out what
+date it is, and after the computer has responded, type "ready".
+And don't forget the RETURN!
+#copyin
+#user
+#uncopyin
+grep date .copy >/dev/null
+#bad day
+You were supposed to type "date" (without quotes).
+The computer is very intolerant of spelling errors.
+Try again.
+#bad "date"
+Don't type those quote marks. Try again.
+#bad time
+The time command does not tell you the wall-clock time.
+Try date next time.
+#log
+#next
+0.1c 5
diff --git a/usr/lib/learn/files/L0.1c b/usr/lib/learn/files/L0.1c
new file mode 100644 (file)
index 0000000..938f51e
--- /dev/null
@@ -0,0 +1,27 @@
+#print
+The computer keeps track of information in "files."
+A file might contain a letter to a friend,
+or a memo (or part of it) that you are typing,
+or any number of other things.
+You can list the names of your files
+by typing the command "ls".
+Try "ls" now; then type "ready".
+Remember that each command must go on a separate line
+and each line must be ended with RETURN.
+#create letter
+Dear John:
+I'm terribly sorry...
+#create memo
+This is a memo.
+#create memo1
+Another memo.
+#copyin
+#user
+#uncopyin
+grep '^ls' .copy >/dev/null
+#bad "ls"
+Don't type the quotes, please. Try again.
+#log
+#next
+0.1d 10
diff --git a/usr/lib/learn/files/L0.1d b/usr/lib/learn/files/L0.1d
new file mode 100644 (file)
index 0000000..a9e48d3
--- /dev/null
@@ -0,0 +1,30 @@
+#print
+File names are essentially arbitrary,
+although usually one names files sensibly:
+the files that make up a memo
+might be called "memo1", "memo2", etc.
+
+The contents of a file are also entirely up to you:
+for example, a file named "memo" could contain
+
+   Analysis of Irregular Statistics
+        John B. Pencilpusher
+
+  Bell Laboratories, Murray Hill, NJ
+    ....
+
+To get at the information in a file,
+you have to use the file name,
+which in this case is "memo". 
+
+Is there a difference between the name of a file
+and the contents of a file?
+Type "yes" or "no".
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+1.1a    10
+1.2a    5
diff --git a/usr/lib/learn/files/L1.1a b/usr/lib/learn/files/L1.1a
new file mode 100644 (file)
index 0000000..26a5d9a
--- /dev/null
@@ -0,0 +1,12 @@
+#print
+The "ls" command will list the names of the files
+in your directory.  Is there a file named "junk"
+present?  Find out and then type "yes" or "no".
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+2.1a 10
+2.2a 5
diff --git a/usr/lib/learn/files/L1.2a b/usr/lib/learn/files/L1.2a
new file mode 100644 (file)
index 0000000..93d258f
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+Use the "ls" command to determine if there is a file
+named for a state in the current directory.
+Find out and type "yes" or "no".
+(Don't use the list you got earlier - I've changed things.)
+#create texas
+dallas, houston, etc.
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+2.1a  10
+2.2a  5
diff --git a/usr/lib/learn/files/L1.2b b/usr/lib/learn/files/L1.2b
new file mode 100644 (file)
index 0000000..248afcd
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+You can use the "ls" command to find out how
+many files you have in your directory.
+How many files are there in the current
+directory now?  Make another list - the list of files
+that you made before is no longer right because I added
+some files to the directory.  When you find out
+how many files there are in this directory, type
+"answer N" where N is the number of files.
+#create a1
+file a1
+#create a2
+file a2
+#create X1
+file a1
+#copyin
+#user
+#uncopyin
+ls | %s/../bin/lcount >X1
+tail -1 .copy >X2
+#cmp X1 X2
+#log
+#next
+2.1a 10
+2.2a 5
diff --git a/usr/lib/learn/files/L10.1a b/usr/lib/learn/files/L10.1a
new file mode 100644 (file)
index 0000000..1b33df6
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+When you are done with something, you will want to know
+how to get rid of the file it is on.  The command
+for that is "rm" (remove).  For example
+  rm junk
+throws away the file named "junk".  Once it
+is gone, it is really gone - there is no way
+to "undo" a remove command.  Hence this command
+should be used with caution.
+In this directory there is one file named
+for a baseball player.  Remove it.
+Then type "ready".
+#create kernighan
+#create yastrzemski
+#user
+if (!(! -r yastrzemski && -r kernighan)) exit(1)
+#log
+#next
+11.1a 10
+11.2a 5
+11.3a 2
diff --git a/usr/lib/learn/files/L10.2a b/usr/lib/learn/files/L10.2a
new file mode 100644 (file)
index 0000000..e76c627
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+The way to get rid of a file you are finished with
+is with the "rm" (remove) command.  For example,
+  rm junk
+will get rid of the file named "junk".
+In this directory there is a file named "harry" -
+remove it.
+Then type "ready".
+#create harry
+#user
+test ! -r harry
+#log
+#next
+10.2b 5
+10.3a 2
diff --git a/usr/lib/learn/files/L10.2b b/usr/lib/learn/files/L10.2b
new file mode 100644 (file)
index 0000000..3e5bd34
--- /dev/null
@@ -0,0 +1,18 @@
+#print
+You can remove several files at once with the "rm" command.
+And you can use the familiar "*" and "?" characters
+to abbreviate several file names.  BUT BE CAREFUL -
+"rm" is irreversible, and it is all too easy to type something
+like "rm *" and get rid of all your files.
+In this directory are two files named 
+"part1" and "part2".
+Remove both; then type "ready".
+#create part1
+#create part2
+#user
+test ! -r part1 || test ! -r part2
+#log
+#next
+11.1a 10
+11.2a 5
+11.3a 2
diff --git a/usr/lib/learn/files/L10.3a b/usr/lib/learn/files/L10.3a
new file mode 100644 (file)
index 0000000..b443cad
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+When you are done with something, you will want to
+get rid of the file containing it.  The command for that
+is "rm" (remove).  For example
+  rm junk
+throws away the file named "junk".  Try that -
+there's a file named "junk" in this directory, as you can
+verify by doing an "ls".  Try another "ls" after the "rm junk";
+then type "ready".
+#create junk
+#user
+test ! -r junk
+#log
+#next
+10.3b 2
diff --git a/usr/lib/learn/files/L10.3b b/usr/lib/learn/files/L10.3b
new file mode 100644 (file)
index 0000000..516b558
--- /dev/null
@@ -0,0 +1,12 @@
+#print
+Often you will use "ls" with "rm"
+to first find the name of a file, and then remove it.
+This directory contains one file whose name begins with "g".
+Find out what it is and remove it.
+Then type "ready".
+#create george
+#user
+test ! -r george
+#log
+#next
+10.3c 2
diff --git a/usr/lib/learn/files/L10.3c b/usr/lib/learn/files/L10.3c
new file mode 100644 (file)
index 0000000..2282ccf
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+You can remove several files at once with the
+"rm" command; for example,
+  rm tom dick harry
+will remove the files "tom", "dick", and "harry".
+There are two files in this directory named
+for birds: get rid of both.
+Then type "ready".
+#create eagle
+#create bluejay
+#user
+test ! -r eagle || test ! -r bluejay
+#log
+#next
+10.3d 2
diff --git a/usr/lib/learn/files/L10.3d b/usr/lib/learn/files/L10.3d
new file mode 100644 (file)
index 0000000..4b68bea
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+You can also use "*" and "?" with
+the "rm" command.  BUT BE VERY CAREFUL
+since, for example, "rm *" will throw away
+ALL the files in a directory.
+In this directory are some files named
+chunk1, chunk2, chunk3 and chunk4.
+Get rid of them.  Then type "ready".
+#create X1
+#
+ls >X2
+#create chunk1
+#create chunk2
+#create chunk3
+#create chunk4
+#user
+ls >X1
+#cmp X1 X2
+#log
+#next
+11.1a 10
+11.2a 5
+11.3a 2
diff --git a/usr/lib/learn/files/L11.1a b/usr/lib/learn/files/L11.1a
new file mode 100644 (file)
index 0000000..47e4e53
--- /dev/null
@@ -0,0 +1,42 @@
+#print
+To create a second copy of a file, the easiest
+way is to use the "cp" (copy) command.
+If you tell the computer
+  cp x y
+a copy of file "x" is made and named "y".
+Note that this is similar to "mv" in that a new
+file named "y" appears, but the difference is
+that the old file is not removed.
+(If there was already a file named "y", though, the
+old contents are lost; be careful.)
+
+In this directory there is a file which has
+a five letter name whose first four letters
+are "part".
+Print it out; it will tell you to copy
+it and what to call the copy.
+Do that and then type "ready".
+#create X1
+#create george
+#create part00
+this is not the right file and you shouldn't
+have printed it.  Use
+ part?
+not
+ part*
+in this example.
+#create part3
+This is the file "part3".  I hope you
+used a command like
+  ls part?
+or
+  cat part?
+to find it.
+Make a copy of this file on file "george".
+#user
+#cmp george part3
+#log
+#next
+12.1a 10
+12.2a 5
+12.3a 2
diff --git a/usr/lib/learn/files/L11.2a b/usr/lib/learn/files/L11.2a
new file mode 100644 (file)
index 0000000..7c397e7
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+To make a new copy of a file, the easiest
+way is to use the "cp" command.
+If you type 
+  cp x y
+a copy of file "x" is made and named "y".
+This directory contains a file named "george";
+make a copy named  "steve".
+Then type "ready".
+#create george
+this is file george
+#user
+#cmp steve george
+#log
+#next
+11.2b 5
diff --git a/usr/lib/learn/files/L11.2b b/usr/lib/learn/files/L11.2b
new file mode 100644 (file)
index 0000000..f4154e9
--- /dev/null
@@ -0,0 +1,26 @@
+#print
+Contrast 
+ cp old new
+with 
+ mv old new
+as commands; both cause "new" to appear,
+but "cp" does not remove "old".
+Both, by the way, destroy anything
+that happened to be around named "new".
+There is a file in this directory
+whose name ends in "x".  Use "ls"
+with the "*x" construction to find its name;
+then copy it to file "new", and type "ready".
+#create new
+old new
+#create pix
+new new
+#create xip
+nothing
+#user
+#cmp pix new
+#log
+#next
+12.1a 10
+12.2a 5
+12.3a 2
diff --git a/usr/lib/learn/files/L11.3a b/usr/lib/learn/files/L11.3a
new file mode 100644 (file)
index 0000000..e019f83
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+To make a copy of a file, you can use the
+"cp" (copy) command.  For example
+ cp old new
+will make a copy of file "old", named "new".
+This directory contains a file named "old";
+try the "cp" command to make a file named "new".
+Print the file to check on the copy.
+When done, type "ready".
+#create old
+The Brooklyn Museum is at 188 Eastern Parkway,
+Brooklyn, NY 11238.
+#user
+#cmp old new
+#log
+#next
+11.3b 2
diff --git a/usr/lib/learn/files/L11.3b b/usr/lib/learn/files/L11.3b
new file mode 100644 (file)
index 0000000..9b3b47b
--- /dev/null
@@ -0,0 +1,13 @@
+#print
+Now there is a file named "good"
+in this directory.  Make a copy named "better",
+then type ready.
+#create good
+This file has 
+three lines
+in it.
+#user
+#cmp good better
+#log
+#next
+11.3c 2
diff --git a/usr/lib/learn/files/L11.3c b/usr/lib/learn/files/L11.3c
new file mode 100644 (file)
index 0000000..a76c551
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+This is a little trickier.  The directions
+for this step are in a file whose
+name begins with "p".  Print that file;
+it will tell you what to do.  Then type "ready".
+#create delaware
+narrowsburg
+port jervis
+delaware water gap
+easton
+trenton
+philadelphia
+#create pub
+Make a copy of the file "delaware" which is
+named "hudson".
+#user
+#cmp delaware hudson
+#log
+#next
+12.1a 10
+12.2a 5
+12.3a 2
diff --git a/usr/lib/learn/files/L12.1a b/usr/lib/learn/files/L12.1a
new file mode 100644 (file)
index 0000000..394b97b
--- /dev/null
@@ -0,0 +1,42 @@
+#print
+Another very useful command is the command
+ diff x y
+which compares two files.  It will not print
+any output if the two files are the same, but
+if the files are different it will print
+out the lines that are changed in the two files,
+indicating the lines from the first file (x) by a leading "<"
+and the lines from the second file (y) by a leading ">".
+There are two files in this directory named "old" and "new".
+Why don't you first print both files, and then
+try using "diff" to compare them?  Suppose the files
+were hundreds of lines long, and you needed to know
+the single difference - do you see how valuable "diff" can be?
+As evidence that you did at least half of this,
+type "answer word" where "word" is the word added to the
+second file.
+#create new
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated to the 
+proposition that all
+men are created equal.
+#create old
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated the 
+proposition that all
+men are created equal.
+#copyin
+#user
+#uncopyin
+#match to
+#log
+#next
+13.01a
diff --git a/usr/lib/learn/files/L12.2a b/usr/lib/learn/files/L12.2a
new file mode 100644 (file)
index 0000000..79ee4e1
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+To compare two files, you can use the command
+"diff" (differences); the line
+  diff xx yy
+will compare the files xx and yy and tell you about
+any differences between them.  If the files are the same,
+the command says nothing.  Are the files
+"tom" and "dick" the same in this directory?
+Find out (print them if you feel insecure)
+and reply "yes" or "no".
+#create dick
+This stuff is not only in
+file tom but also
+in file dick
+#create tom
+This stuff is not only in
+file tom but also
+in file dick
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+12.2b 5
diff --git a/usr/lib/learn/files/L12.2b b/usr/lib/learn/files/L12.2b
new file mode 100644 (file)
index 0000000..bb462a8
--- /dev/null
@@ -0,0 +1,27 @@
+#print
+Now are the files "dick" and "harry" the same?
+Again reply "yes" or "no".
+If there are differences between files, "diff" prints
+the lines that are different, indicating those
+from the first file by "<" and those from
+the second file by ">".
+#create dick
+new york
+bridgeport
+new haven
+new london
+providence
+boston
+#create harry
+new york
+bridgeport
+new haven
+providence
+boston
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+12.2c 5
diff --git a/usr/lib/learn/files/L12.2c b/usr/lib/learn/files/L12.2c
new file mode 100644 (file)
index 0000000..6ab1461
--- /dev/null
@@ -0,0 +1,29 @@
+#print
+This directory contains two files named "old" and "new";
+What word is in one file but not the other?  Find
+out.  Reply "answer WORD" where WORD is that word.
+#create new
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated to the 
+proposition that all
+men are created equal.
+#create old
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated the 
+proposition that all
+men are created equal.
+#copyin
+#user
+#uncopyin
+#match to
+#log
+#next
+13.01a
diff --git a/usr/lib/learn/files/L12.3a b/usr/lib/learn/files/L12.3a
new file mode 100644 (file)
index 0000000..4ebd592
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+A very useful command is the command
+  diff x y
+which compares the two files x and y and tells
+you any differences between the files.  If the files
+are the same, it says nothing.  To test that,
+copy file "george" onto file "harry";
+then say
+  diff george harry
+to verify that the files are the same.
+#create george
+london bridge
+is falling down.
+#copyin
+#user
+#uncopyin
+#match diff george harry
+#match diff harry george
+#log
+#next
+12.3b 2
diff --git a/usr/lib/learn/files/L12.3b b/usr/lib/learn/files/L12.3b
new file mode 100644 (file)
index 0000000..536b593
--- /dev/null
@@ -0,0 +1,18 @@
+#print
+Are the files "memo1" and "memo2" the same?
+If they are different, "diff" will print the
+lines that are not the same.
+Reply "yes" or "no".
+#create memo1
+A quick brown fox jumps over the lazy dog.
+We were away a year ago.
+#create memo2
+A quick brown fox jumps over the lazy dog.
+We were away a year ago.
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+12.3c 2
diff --git a/usr/lib/learn/files/L12.3c b/usr/lib/learn/files/L12.3c
new file mode 100644 (file)
index 0000000..e8afede
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+Are the files "old" and "new" in this directory the same?
+Again, if they are not, "diff" will print out the differences
+marking the lines in the first file named by "<" and the
+lines in the second file by ">".  Check the results of
+diff by printing the files.  Then type "yes" or "no".
+#create new
+This file has three
+lines of text in
+it to read.
+and this has one more.
+#create old
+This file has three
+lines of text in
+it to read.
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+12.2c 5
diff --git a/usr/lib/learn/files/L13.1a b/usr/lib/learn/files/L13.1a
new file mode 100644 (file)
index 0000000..ea434af
--- /dev/null
@@ -0,0 +1,14 @@
+#print
+Let's do a quick review of the things covered
+in the files course. To begin, how many files
+are there in the current directory? Type "answer N",
+where N is the number that you found.
+#create X1
+#create X2
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+13.1b 5
diff --git a/usr/lib/learn/files/L13.1b b/usr/lib/learn/files/L13.1b
new file mode 100644 (file)
index 0000000..1161cc9
--- /dev/null
@@ -0,0 +1,19 @@
+#print
+There is a file in this directory whose name begins
+with 'z'. Do what it tells you to, then type "ready".
+#create X1
+#create X2
+#create zip
+Rename the file named "mary" to "joe".
+#create joe
+I am a file
+#
+rm -f mary
+ls >X1
+mv joe mary
+#user
+ls >X2
+#cmp X1 X2
+#log
+#next
+13.1c 5
diff --git a/usr/lib/learn/files/L13.1c b/usr/lib/learn/files/L13.1c
new file mode 100644 (file)
index 0000000..8a5edf3
--- /dev/null
@@ -0,0 +1,24 @@
+#print
+There are two files in this directory whose names begin with
+the letter 'r'. On what line do they differ?
+Type "answer N", where N is the line number where they
+first are different.
+#create ref
+This is a very short file
+which contains several lines
+some one of which will be changed
+in the other version, and your
+job is to find out which.
+#create refnew
+This is a very short file
+which contains several lines
+some  one of which will be changed
+in the other version, and your
+job is to find out which.
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+13.1d
diff --git a/usr/lib/learn/files/L13.1d b/usr/lib/learn/files/L13.1d
new file mode 100644 (file)
index 0000000..dd55663
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+There are several files in this directory whose names
+begin with "easy". Remove them, then type "ready".
+#create X1
+#create X2
+#
+ls >X2
+#create easy1
+#create easyer
+#create easyrider
+#create easyenough
+#user
+ls >X1
+#cmp X1 X2
+#log
+#next
+13.1e
diff --git a/usr/lib/learn/files/L13.1e b/usr/lib/learn/files/L13.1e
new file mode 100644 (file)
index 0000000..03b9b4c
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+This one is tougher than the last one. There are
+several files in this directory whose names
+begin with "hard". Remove them, then type "ready".
+#create X1
+#create X2
+#
+ls >X2
+cp X1 "hard\b 1"
+cp X1 "hard\b er"
+#user
+ls >X1
+#cmp X1 X2
+#log
+#next
+13.1f
diff --git a/usr/lib/learn/files/L13.1f b/usr/lib/learn/files/L13.1f
new file mode 100644 (file)
index 0000000..d164bc9
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+Suppose you have two files named "dick" and "jane", and you
+want to interchange them, so that "dick" contains whatever
+was originally in "jane", and "jane" contains what was in "dick".
+Will this sequence of commands do the job?
+
+mv dick jane
+mv jane dick
+
+There are two files named "john" and "mary"
+in this directory, if you wish to experiment.
+When you have decided, type yes or no.
+#create john
+this is originally file john
+#create mary
+this is originally file mary
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+13.1g
diff --git a/usr/lib/learn/files/L13.1g b/usr/lib/learn/files/L13.1g
new file mode 100644 (file)
index 0000000..8432927
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+Suppose that we really do want to interchange the contents
+of the files "dick" and "jane". One way to do it is
+to move the contents of "dick" into some temporary file,
+then move "jane" onto "dick" (which of course clobbers
+the old contents of "dick", but we saved them already),
+then finally to move the temporary copy of "dick" to
+"jane". There are two files named "dick" and "jane" in this
+directory. Interchange their contents, then type "ready".
+#create Ref
+short file for dick
+#create dick
+short file for dick
+#create jane
+another file for jane
+#create Ref1
+another file for jane
+#user
+cmp -s jane Ref || cmp -s dick Ref1
+#log
diff --git a/usr/lib/learn/files/L2.1a b/usr/lib/learn/files/L2.1a
new file mode 100644 (file)
index 0000000..3d6a7a3
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+The "mv" command changes the names of files.
+For example, "mv bob bill" changes the name
+of file "bob" to be "bill".  If there was already
+a file named "bill", the old version is destroyed.
+
+There is a file in
+the current directory whose name begins with
+the letter "g", like "grant" or "grover".
+Find out what the file name really is, and
+then change that file to have the name "john".
+Then type "ready".
+#create george
+this should become john
+#user
+test -r john
+#log
+#next
+3.1a 10
+3.2a 5
+3.3a 2
diff --git a/usr/lib/learn/files/L2.2a b/usr/lib/learn/files/L2.2a
new file mode 100644 (file)
index 0000000..b522ee0
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+The "mv" command changes the names of files.
+For example, "mv thomas james" changes the
+name of the file "thomas" to be "james".
+
+There is a file in the current directory named
+"thomas".  Change that file to have the
+name "james".  Then type "ready".
+(The "mv" command, by the way, is like many
+UNIX commands in that it is silent unless there is an error.)
+#create thomas
+xx
+#user
+test -r james
+#log
+#next
+2.2b 5
diff --git a/usr/lib/learn/files/L2.2b b/usr/lib/learn/files/L2.2b
new file mode 100644 (file)
index 0000000..958b5e9
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+Now your directory contains a file with a name
+that starts with "a" (like "adam", "arthur", etc.).
+Find out what it is using the "ls" command
+and change its name to "martin".
+Then type "ready".
+By the way, if there was already a file around
+named "martin", the old version is clobbered
+by the new one.
+#create andrew
+stuff
+#user
+test -r martin
+#fail
+Do you remember that the "ls" command will
+tell you the names of the files in the current
+directory? Thus you can use "ls" to tell you
+what your file names are; and then you can use
+"mv" to change the name of the file
+beginning with "a" to "martin".
+#log
+#next
+3.1a 10
+3.2a 5
+3.3a 2
diff --git a/usr/lib/learn/files/L3.1a b/usr/lib/learn/files/L3.1a
new file mode 100644 (file)
index 0000000..dfaabea
--- /dev/null
@@ -0,0 +1,34 @@
+#print
+The "cat" command prints the contents of one or more files.
+In fact, it is named "cat" as an abbreviation
+for "concatenate".  To print the files named "dog"
+and "mouse" in succession, you could type either
+  cat dog
+  cat mouse
+or just
+  cat dog mouse
+If you print them with one command,
+the contents are printed in sequence with nothing
+between them.
+
+How many lines are there in all the files
+whose names begin with "b"?  Find out, then type
+"answer N" where N is the total number of lines.
+#create ben
+the file ben has
+a total of three
+short lines.
+#create bernie
+this file has
+two lines.
+#create bruce
+only one line here.
+#copyin
+#user
+#uncopyin
+#match 6
+#log
+#next
+4.1a  10
+4.2a    5
+4.3a    2
diff --git a/usr/lib/learn/files/L3.2a b/usr/lib/learn/files/L3.2a
new file mode 100644 (file)
index 0000000..593f8cc
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+The command "cat" will print files.  For example, you
+can print the file named "food" by typing "cat food".
+Your current directory has a file named "sam" and a
+file named "steve".  Which is longer?  Find out and
+type "answer sam" or "answer steve", giving the name
+of the longer file.
+#create sam
+this is the file sam.  it contains
+only two lines of text.
+#create steve
+this file is named steve.  it is a
+file which contains five lines of text.
+this is of course a very short file
+by any ordinary standards, although
+on UNIX most files are rather short.
+#copyin
+#user
+#uncopyin
+#match steve
+#log
+#next
+3.2b 5
diff --git a/usr/lib/learn/files/L3.2b b/usr/lib/learn/files/L3.2b
new file mode 100644 (file)
index 0000000..e99f3ba
--- /dev/null
@@ -0,0 +1,32 @@
+#print
+The "cat" command can also print several files
+at once.  In fact, it is named "cat" as an abbreviation
+for "concatenate".  To print the files named "dog"
+and "mouse" in succession, you could either
+type:
+  cat dog
+  cat mouse
+or just
+  cat dog mouse
+If you print them with one command,
+the files are listed in sequence with nothing
+between them.
+
+This directory contains two files
+named "chester" and "charley".  What is the
+longest word in either file?  Type "answer WORD"
+where WORD is the longest word you find.
+#create charley
+most of this file is short but at one place
+there is a surprisingly long word.
+#create chester
+and of the but here now stop go
+#copyin
+#user
+#uncopyin
+#match surprisingly
+#log
+#next
+4.1a  10
+4.2a    5
+4.3a    2
diff --git a/usr/lib/learn/files/L3.3a b/usr/lib/learn/files/L3.3a
new file mode 100644 (file)
index 0000000..1b082b2
--- /dev/null
@@ -0,0 +1,18 @@
+#print
+A file can be printed on your terminal
+by using the "cat" command.  Just say
+"cat file" where "file" is the file name.
+For example, there is a file named
+"food" in this directory.  List it
+by saying "cat food"; then type "ready".
+#create food
+  this is the file
+  named food.
+#copyout
+#user
+#uncopyout
+tail -2 .ocopy >X1
+#cmp X1 food
+#log
+#next
+3.3b  2
diff --git a/usr/lib/learn/files/L3.3b b/usr/lib/learn/files/L3.3b
new file mode 100644 (file)
index 0000000..525d4d2
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+Of course, you can print any file with "cat".
+In particular, it is common to first use
+"ls" to find the name of a file and then "cat"
+to print it.  Note the difference between
+"ls", which tells you the name of the files,
+and "cat", which tells you the contents.
+
+One file in the current directory is named for
+a President.  Print the file, then type "ready".
+#create roosevelt
+  this file is named roosevelt
+  and contains three lines of
+  text.
+#copyout
+#user
+#uncopyout
+cp .ocopy X2
+tail -3 .ocopy >X1
+#cmp X1 roosevelt
+#log
+#next
+3.2b 2
diff --git a/usr/lib/learn/files/L4.1a b/usr/lib/learn/files/L4.1a
new file mode 100644 (file)
index 0000000..f41b79c
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+The "ls" command may be given with one
+or more file names.  In that case,
+it will tell which of the files exist.
+How many of the files "doug", "dave", and
+"dennis" exist in this directory?  Find out
+and then type "answer N" where N is the number
+you found.
+#create dennis
+#create doug
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+5.1a  10
diff --git a/usr/lib/learn/files/L4.2a b/usr/lib/learn/files/L4.2a
new file mode 100644 (file)
index 0000000..596ff43
--- /dev/null
@@ -0,0 +1,19 @@
+#print
+If a file name is given with the "ls" command,
+it tells you whether that file exists.
+The file name is listed if the file exists;
+if it doesn't, a complaint is typed.
+For example,
+  ls george
+will type "george" if the file exists,
+and "george not found" if it is missing.
+
+Is there a file named "alexander" in the
+current directory?  Find out, then type "yes" or "no".
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+4.2b 10
diff --git a/usr/lib/learn/files/L4.2b b/usr/lib/learn/files/L4.2b
new file mode 100644 (file)
index 0000000..a6c11f2
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+You can inquire about several files at once
+with the "ls" command.  If you type, for example,
+   ls fee fi fo fum
+you will be told which of the four files "fee", "fi", "fo",
+and "fum" exist.  In the current directory only one
+of the files "grover", "gerald", or "george" exists.
+Find out which one; then rename it "grant".
+Type "ready" when you are done.
+#create gerald
+file
+#create garbage
+garbage it is.
+#user
+#create X1
+file
+#
+cmp -s X1 grant || test ! -r gerald
+#log
+#next
+5.1a  10
diff --git a/usr/lib/learn/files/L4.3a b/usr/lib/learn/files/L4.3a
new file mode 100644 (file)
index 0000000..2255916
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+You can use the "ls" command to ask whether
+a single file exists without listing the entire
+directory.  For example, "ls george" will list
+"george" if there is a file with that name, and
+complain if there is not one.  This directory
+contains a file named "arthur" but no file named
+"alan".  You can verify that by typing the
+ordinary "ls" command.  Then try typing "ls arthur"
+to see what happens, and follow that by "ls alan".
+Then type "ready".
+#create arthur
+xxx
+#copyin
+#user
+#uncopyin
+grep 'ls arthur' .copy >/dev/null || grep 'ls alan' .copy >/dev/null
+#log
+#next
+4.3b 0
diff --git a/usr/lib/learn/files/L4.3b b/usr/lib/learn/files/L4.3b
new file mode 100644 (file)
index 0000000..3aec872
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+With the "ls" command, you can inquire about several
+specific files at once.  For example, in the previous
+case, you could type
+
+ls arthur alan
+
+and be told about both files.
+
+Which one of the files "bruce" and "ben" exists?
+Type "answer NAME", where NAME is the one you find.
+#create bruce
+bruce
+#copyin
+#user
+#uncopyin
+#match bruce
+#log
+#next
+4.3c 2
diff --git a/usr/lib/learn/files/L4.3c b/usr/lib/learn/files/L4.3c
new file mode 100644 (file)
index 0000000..11b9ade
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+Your directory contains only one of the following
+files: "richard", "robert", "ralph", "roger".  Find out
+which one exists, and print the contents of that file
+on your terminal (remember the "cat" command?).
+Then type "ready".
+#create robert
+this is the contents of file
+robert which you had to print.
+#copyin
+#user
+#uncopyin
+grep 'cat rob' .copy >/dev/null
+#log
+#next
+5.1a  10
diff --git a/usr/lib/learn/files/L5.1a b/usr/lib/learn/files/L5.1a
new file mode 100644 (file)
index 0000000..6e206f4
--- /dev/null
@@ -0,0 +1,34 @@
+#print
+Most UNIX commands, like "ls" and "cat", let you
+specify any number of file names after the command.
+To make this as easy as possible, there are some
+ways to abbreviate file names.  This is usually
+faster and more accurate than typing out the list in full.
+
+For example, when the character "?" is used in a file name,
+it will represent any character that might be
+in a file name.  That is, the name "a?" is
+an abbreviation for the files "a1", "a2", "aa",
+and so forth.  You can say
+  ls a?
+and if there are any file names beginning with
+"a" that are exactly two letters long, the computer
+will tell you their names.  Try that here.
+First list all the file names with "ls"; then type
+  ls a?
+to get all the two letter names beginning with "a".
+Then type "ready".
+#create a1
+#create a12
+#create abcdef
+#create ax
+#create aa
+#copyin
+#user
+#uncopyin
+grep '^ls a?$' .copy >/dev/null
+#log
+#next
+5.1b 0
+5.1c 5
+5.1e 10
diff --git a/usr/lib/learn/files/L5.1b b/usr/lib/learn/files/L5.1b
new file mode 100644 (file)
index 0000000..7f4b44c
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+Will the name
+  xyz
+be selected by the pattern
+  x?
+in an "ls" command?
+Type "yes" or "no".  If you
+have trouble, there is such a file
+in the current directory,
+so you can find out by trial and error.
+(For example, you might do an ordinary "ls"
+and then try "ls x?" and compare the results.)
+#create xyz
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+5.1c 0
diff --git a/usr/lib/learn/files/L5.1c b/usr/lib/learn/files/L5.1c
new file mode 100644 (file)
index 0000000..39b8895
--- /dev/null
@@ -0,0 +1,26 @@
+#print
+The "?" may appear anywhere in the name.
+For example you can type
+  a?bc
+to match the list of names
+  axbc, aybc, a3bc
+and so forth.
+But the number of characters must always agree.
+How many of the following file names
+are matched by "x?xx"?
+  x1xx, y1xx, x1xxa, xxx
+Type "answer N" where N is the number of matching names.
+You can experiment in the current directory to
+check your answer before typing it.
+#create x1xx
+#create x1xxa
+#create y1xx
+#create xxx
+#copyin
+#user
+#uncopyin
+#match 1
+#log
+#next
+5.1d 0
+5.1e 5
diff --git a/usr/lib/learn/files/L5.1d b/usr/lib/learn/files/L5.1d
new file mode 100644 (file)
index 0000000..38ebe84
--- /dev/null
@@ -0,0 +1,14 @@
+#print
+Will the name
+  ?xx
+match "axx"?  Again, you may
+experiment before typing your
+answer.
+#create axx
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+5.1e 0
diff --git a/usr/lib/learn/files/L5.1e b/usr/lib/learn/files/L5.1e
new file mode 100644 (file)
index 0000000..03c4142
--- /dev/null
@@ -0,0 +1,29 @@
+#print
+Not only may the ? appear anywhere in a name,
+but there may be several ? characters in it.
+For example,
+  g??rge
+will match "george" and "goerge", among others.
+And "a??" will match "abc" or "a11" (but NOT "ax").
+Look at the files in the current directory and decide
+how many names the pattern
+   a?b?c
+will select.  Again, you can try this out
+by comparing an ordinary "ls" with "ls a?b?c"
+to see what happens.  When you figure
+out how many names are selected,
+type "answer N" where N is the number of file names.
+#create a0b0c
+#create a0bc
+#create a0x0c
+#create a1bxc
+#create aabbc
+#create azbzcz
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+6.1a 5
+6.2a 2
diff --git a/usr/lib/learn/files/L6.1a b/usr/lib/learn/files/L6.1a
new file mode 100644 (file)
index 0000000..0eead33
--- /dev/null
@@ -0,0 +1,33 @@
+#print
+Since the "?" character only matches single characters,
+it isn't useful for such questions as "how many files
+have names beginning with g?"  There is another character,
+  *
+which can be used in patterns for file names, and which matches
+any number of characters of any sort.  Thus
+   g*
+matches anything beginning with g.
+And
+   *x
+matches anything ending in x.  
+There is one file in this directory whose name ends
+in "memo".  Find out that file name
+and print the contents of the file.  Then type "ready".
+#create mymemo
+This is the 7-line file "mymemo";  you should
+have typed "ls *memo", which would print
+"mymemo", and then typed the
+command "cat mymemo".
+Or just plain "cat *memo" would have worked.
+But whatever you did, you got it right
+and now you can type "ready".
+#copyout
+#user
+#uncopyout
+tail -7 .ocopy >X2
+#cmp mymemo X2
+#log
+#next
+6.1b 0
+6.1c 5
+6.1e 10
diff --git a/usr/lib/learn/files/L6.1b b/usr/lib/learn/files/L6.1b
new file mode 100644 (file)
index 0000000..f7f0d01
--- /dev/null
@@ -0,0 +1,14 @@
+#print
+Will the file name "abcd"
+be matched by "a*d"?  Again,
+if you are not sure, you can experiment
+in this directory with commands like
+"ls" and "ls a*d".
+#create abcd
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+6.1c
diff --git a/usr/lib/learn/files/L6.1c b/usr/lib/learn/files/L6.1c
new file mode 100644 (file)
index 0000000..cfddd23
--- /dev/null
@@ -0,0 +1,13 @@
+#print
+There is one file in this directory whose name begins
+with "g".  Rename it so the "g" at the beginning
+of the name is replaced by "h".
+Then type ready.
+#create g23
+g23, of course
+#user
+test -r h23 || test ! -r g23
+#log
+#next
+6.1d 0
+6.1e 5
diff --git a/usr/lib/learn/files/L6.1d b/usr/lib/learn/files/L6.1d
new file mode 100644 (file)
index 0000000..dcf8678
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+What does "*b*" match?  Clearly, any file
+with a "b" anywhere in its name.  Similarly,
+how many files in this directory have
+"se" somewhere in their name?
+Type "answer N" when you figure it out.
+#create arise
+#create reset
+#create set
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+6.1e
diff --git a/usr/lib/learn/files/L6.1e b/usr/lib/learn/files/L6.1e
new file mode 100644 (file)
index 0000000..cc640d4
--- /dev/null
@@ -0,0 +1,19 @@
+#print
+There is exactly one file name which matches both
+   ab*
+and
+    a?d
+in the current directory.  What is it?
+Type "answer NAME" where NAME is its name.
+#create abc
+#create abd
+#create add
+#copyin
+#user
+#uncopyin
+#match abd
+#log
+#next
+7.1a 10
+7.2a 5
+7.3a 2
diff --git a/usr/lib/learn/files/L6.2a b/usr/lib/learn/files/L6.2a
new file mode 100644 (file)
index 0000000..b94e7b5
--- /dev/null
@@ -0,0 +1,34 @@
+#print
+Since the '?' character only matches single
+characters in file names, it is not useful for
+questions like "how many files have names which
+begin with the letter g?"  There is another character
+  *
+which can be used in patterns for file names
+and matches any number of any kind of characters.
+So
+  g*
+selects all file names beginning with g, and
+  *x
+selects all file names which end in x.  Try
+  ls *x
+How many files match?
+Compare with an ordinary
+  ls
+if you like.  Type "answer N" eventually where
+N is the number of files whose names end in "x".
+#create abcx
+#create abcxdef
+#create memox
+#create memoy
+#create memoz
+#create x
+#create x53x
+#copyin
+#user
+#uncopyin
+#match 4
+#log
+#next
+6.2b 8
+6.1a 1
diff --git a/usr/lib/learn/files/L6.2b b/usr/lib/learn/files/L6.2b
new file mode 100644 (file)
index 0000000..faaf442
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+There is one file in this directory whose name ends
+in "memo".  Find out that file name and print
+the contents of the file.  Then type "ready".
+#create mymemo
+This is the 7-line file "mymemo";  you should
+have typed "ls *memo", which would print
+"mymemo", and then typed the
+command "cat mymemo".
+Or just plain "cat *memo" would have worked.
+But whatever you did, you got it right
+and now you can type "ready".
+#copyout
+#user
+#uncopyout
+tail -7 .ocopy >X2
+#cmp mymemo X2
+#log
+#next
+6.1b 0
+6.1c 5
+6.1e 10
diff --git a/usr/lib/learn/files/L7.1a b/usr/lib/learn/files/L7.1a
new file mode 100644 (file)
index 0000000..871f82f
--- /dev/null
@@ -0,0 +1,38 @@
+#print
+Sometimes ? is too flexible, and you
+only want to allow a few characters.  For example,
+you might want to abbreviate
+  ls memo.ab memo.ac
+without picking up "memo.ad", memo.ae", etc.
+You can match one of a set of particular characters by 
+putting them in brackets "[]" in the list you use with "ls".
+For example,
+  [bc]
+matches either b or c but no other letters,
+so "ls memo.a[bc]" is the abbreviation for
+"ls memo.ab memo.ac".
+You can have as many characters as needed between [ and ].
+
+Type the "ls" command that recognizes
+  a1cat
+  a2cat
+  a3cat
+and no other files.  Then type "ready".
+#create a1bat
+#create a1cat
+#create a2cat
+#create a3cat
+#create a4cat
+#create acat
+#copyin
+#user
+#uncopyin
+#match ls a[123]cat
+#match ls a[1-3]cat
+#match ls a1cat a2cat a3cat
+You were supposed to use a[123]cat.
+Imagine doing it your way with 10 files.
+#log
+#next
+8.1a 10
+8.2a 5
diff --git a/usr/lib/learn/files/L7.2a b/usr/lib/learn/files/L7.2a
new file mode 100644 (file)
index 0000000..5f51b4b
--- /dev/null
@@ -0,0 +1,30 @@
+#print
+Sometimes ? is too flexible, and you
+only want to allow a few characters.  For example,
+you might want to abbreviate
+  ls memo.ab memo.ac
+without picking up "memo.ad", "memo.ae", and so forth.
+You can match one of a set of particular characters by 
+putting them in brackets "[]" in the list you use with "ls".
+For example,
+  [bc]
+matches either b or c but no other letters.  Thus
+  ls memo.a[bc]
+will list exactly "memo.ab" and "memo.ac" if present.
+
+How many of the files
+  xya, xyb, xyc, xyd
+exist in this directory?
+Type "answer N" where N is the number.
+#create xyb
+#create xyc
+#create xye
+#create xyf
+#create xy1
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+7.2b 10
diff --git a/usr/lib/learn/files/L7.2b b/usr/lib/learn/files/L7.2b
new file mode 100644 (file)
index 0000000..a86c7f8
--- /dev/null
@@ -0,0 +1,32 @@
+#print
+You can put any number of characters between [..]
+characters, as in
+  [abcdef]
+which matches any of the six letters from a to f;
+and you can put something like that anywhere in a pattern
+for a file name.  For example,
+  ls [abcd]x
+matches any of
+ ax, bx, cx, dx
+You can also combine this with other operators such as
+* or ?.  For example,
+  ls [ab]?
+matches all two-letter names beginning with a or b.
+How would you ask for all names, of any length, ending
+in 1 2 or 3?
+You can experiment in this directory; eventually,
+type the "ls" command you decide on followed by "ready".
+#create a1
+#create a12
+#create a1a
+#create a2
+#create a23
+#create aa1
+#create abc1
+#copyin
+#user
+#uncopyin
+#match ls *[123]
+#log
+#next
+8.1a 10
diff --git a/usr/lib/learn/files/L7.3a b/usr/lib/learn/files/L7.3a
new file mode 100644 (file)
index 0000000..f757a51
--- /dev/null
@@ -0,0 +1,28 @@
+#print
+Sometimes ? is too flexible, and you
+only want to allow a few characters.  For example,
+you might want to abbreviate
+  ls memo.ab memo.ac
+without picking up "memo.ad", "!"memo.ae", and so forth.
+You can match one of a set of particular characters by 
+putting them in brackets "[]" in the list you use with "ls".
+For example,
+  [bc]
+matches either b or c but no other letters.
+Thus the command
+  ls memo.a[bc]
+would match "memo.ab", "memo.ac", and nothing else.
+Try that command in this directory: type a plain
+"ls" first, and then "ls memo.a[bc]".
+How many files does "ls memo.a[bc]" match?
+Type "answer N" where N is the number.
+#create memo.ab
+#create memo.abc
+#create memo.bc
+#copyin
+#user
+#uncopyin
+#match 1
+#log
+#next
+7.3b 2
diff --git a/usr/lib/learn/files/L7.3b b/usr/lib/learn/files/L7.3b
new file mode 100644 (file)
index 0000000..1d3b107
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+You can use the [] characters anywhere you want
+in a file name.  For example,
+ ls a[bc]d
+would match abd or acd, right?
+What is the command that finds out how
+many files are named "ax" or "bx"?
+Type that command, then "ready".
+#create ax
+#create bx
+#copyin
+#user
+#uncopyin
+#match ls [ab]x
+#log
+#next
+7.3c 2
diff --git a/usr/lib/learn/files/L7.3c b/usr/lib/learn/files/L7.3c
new file mode 100644 (file)
index 0000000..8b87957
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+You can put any number of characters between the
+brackets.  For example,
+  ab[123456789]
+could match up to 9 names, of the sort
+  ab1, ab2, ab3, ab4, ab5, ...
+How many of the following names exist in this
+directory?
+  p1end, p2end, p3end, p4end, p5end
+Check with a ordinary "ls".  Type "answer N" when you
+know.
+#once #create p1end
+#once #create p3endx
+#once #create p4end
+#once #create p6end
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+8.1a 10
+8.2a 5
diff --git a/usr/lib/learn/files/L8.1a b/usr/lib/learn/files/L8.1a
new file mode 100644 (file)
index 0000000..2228490
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+Sometimes you want to request one of a limited
+range of characters.  This is possible with an
+expression like
+  [a-d]
+which matches a, b, c, or d.  Thus, to take
+some combinations
+  ab[c-f]
+matches
+  abc, abd, abe, abf
+Try typing "ls a[0-9]"
+and see how many files it matches.  Type that
+number in the form "answer N".
+#create a0
+#create a1
+#create a5
+#create ax
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+9.1a 10
+9.2a 4
diff --git a/usr/lib/learn/files/L8.2a b/usr/lib/learn/files/L8.2a
new file mode 100644 (file)
index 0000000..6b59b79
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+Will the command
+  ls georg[a-f]
+match the name
+  george
+Type yes or no.
+Experiment first if you want.
+#create george
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+8.2b 5
+9.1a 10
diff --git a/usr/lib/learn/files/L8.2b b/usr/lib/learn/files/L8.2b
new file mode 100644 (file)
index 0000000..8fd3ef8
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+The command
+ ls [aeiou]*.c
+will match all but one of the following names.
+  e.c
+  alpha.c
+  edward
+  u23.c
+Which one?  Type "answer NAME" where NAME
+is the file that doesn't match.  You can experiment
+first, as usual.
+#create alpha.c
+#create e.c
+#create edward
+#create u23.c
+#copyin
+#user
+#uncopyin
+#match edward
+#log
+#next
+8.2c 5
+9.1a 10
diff --git a/usr/lib/learn/files/L8.2c b/usr/lib/learn/files/L8.2c
new file mode 100644 (file)
index 0000000..9a87646
--- /dev/null
@@ -0,0 +1,27 @@
+#print
+As an example more complicated than you will
+probably ever need, consider
+  ?[a-c]*
+which matches what?  Well the first character
+can be anything; the second must be a, b, or c; and
+nothing matters thereafter.    So it matches
+ aaa
+ abc
+ xa
+ 3c25
+but not
+ a
+ ghi
+and so forth.
+Will it match
+ %a25
+Try some experiments, then type yes or no.
+#create %a25
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+9.1a 10
+9.2a 4
diff --git a/usr/lib/learn/files/L9.1a b/usr/lib/learn/files/L9.1a
new file mode 100644 (file)
index 0000000..2da6ae3
--- /dev/null
@@ -0,0 +1,36 @@
+#print
+The patterns for selecting file names that have been discussed
+can be used with other commands than "ls".  For example,
+they can be used with the "cat" command to print files.
+It is common for a memo stored in several
+files to use files named "part1", "part2", etc.
+so that commands like
+  cat part*
+will print everything.
+In this directory there are several
+short files named "sec0", "sec1", "sec3",
+and so forth.
+There are various names of animals in the files;
+find out the largest animal named in the files
+and type "answer NAME" where NAME is that animal.
+#create sec0
+dog mouse cat 
+#create sec1
+rabbit weasel
+pig hamster
+#create sec2
+this file doesn't happen
+to have any animal names in it.
+#create sec3
+fox elephant sheep
+duck  rat
+#create sec4
+groundhog bobcat
+mole  beaver
+#copyin 
+#user
+#uncopyin
+#match elephant
+#log
+#next
+10.1a 10
diff --git a/usr/lib/learn/files/L9.2a b/usr/lib/learn/files/L9.2a
new file mode 100644 (file)
index 0000000..eac03df
--- /dev/null
@@ -0,0 +1,30 @@
+#print
+You can use patterns for file names with commands
+other than "ls".  For example, you can use them with
+the "cat" command to print files.
+This directory has three files named
+  parta
+  partb
+  partc
+You can use
+  cat part?
+to print all of them.  Try that; then
+type "ready".
+#create parta
+This is file parta;
+it has two lines.
+#create partb
+File partb here - has only one line.
+#create partc
+And now in file partc, which has
+the enormous total of
+three lines.
+#create partxxx
+You shouldn't have printed this one.
+#copyin
+#user
+#uncopyin
+grep 'cat part?' .copy >/dev/null
+#log
+#next
+9.2b 5
diff --git a/usr/lib/learn/files/L9.2b b/usr/lib/learn/files/L9.2b
new file mode 100644 (file)
index 0000000..64b9b09
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+You can also use the "*" operator.  For example,
+print the contents of all the files in this
+directory whose names begin with the letter 'p'.
+Use just one "cat" command.
+Then type "ready".
+#create p1
+There are only two such files.  This is the first
+one and it is two lines long.
+#create ppx
+
+This is the second file.  Its first line
+is blank, and then there are three lines of
+text of which this is the last.
+#copyin
+#user
+#uncopyin
+grep 'cat p\*' .copy >/dev/null
+#log
+#next
+10.1a 10
+9.2c 5
diff --git a/usr/lib/learn/files/L9.2c b/usr/lib/learn/files/L9.2c
new file mode 100644 (file)
index 0000000..ed1c330
--- /dev/null
@@ -0,0 +1,26 @@
+#print
+And as an example of the [] operators again,
+print all the files in this directory whose
+names begin with either 'a' or 'c'.
+That will tell you to type either 'yes'
+or 'no' - do what it says.
+#create a1
+Type
+#create a2
+y
+#create b
+n
+o
+#create cxx
+e
+#create cz23
+s
+(on one line, please)
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+10.1a 10
+10.3a 2
diff --git a/usr/src/usr.lib/learn/files/L0 b/usr/src/usr.lib/learn/files/L0
new file mode 100644 (file)
index 0000000..ad3ace1
--- /dev/null
@@ -0,0 +1,2 @@
+#next
+0.01a 10
diff --git a/usr/src/usr.lib/learn/files/L0.01a b/usr/src/usr.lib/learn/files/L0.01a
new file mode 100644 (file)
index 0000000..858d698
--- /dev/null
@@ -0,0 +1,29 @@
+#print
+This course will help you learn about basic file handling commands.
+First you should understand how to give an answer that learn requests.
+
+The most important thing to remember is that whenever you type a
+command to UNIX or a response to "learn", you must press the
+RETURN key or the system won't see your typing.
+
+Sometimes learn asks you to come up with the right answer,
+and then enter "answer", followed immediately by a space and the
+single word which answers the question (and then RETURN).
+This means that you would enter "answer WORD", where instead of
+typing WORD you would type the word that is the correct answer.
+
+For example, if the answer to a question were "bug", you would enter
+
+answer bug
+
+Type that in now, and don't forget to hit RETURN at the end of
+the line.  Don't use any quotation marks in your response.
+#copyin
+#user
+#uncopyin
+#match bug
+#bad answerbug
+Leave a space between "answer" and "bug".
+#log
+#next
+0.1a 5
diff --git a/usr/src/usr.lib/learn/files/L0.1b b/usr/src/usr.lib/learn/files/L0.1b
new file mode 100644 (file)
index 0000000..f2f7a30
--- /dev/null
@@ -0,0 +1,28 @@
+#print
+You should also understand a few simple commands.
+When UNIX types a "%" at you, you can type a command.
+For example, if you type "date" the computer will tell
+you the current date and time. If you see "%" and type "who",
+UNIX will tell you who is logged on at present.  There are
+many other commands, too.  You must type a RETURN at the
+end of each command line.
+
+Try the "date" command now: find out what
+date it is, and after the computer has responded, type "ready".
+And don't forget the RETURN!
+#copyin
+#user
+#uncopyin
+grep date .copy >/dev/null
+#bad day
+You were supposed to type "date" (without quotes).
+The computer is very intolerant of spelling errors.
+Try again.
+#bad "date"
+Don't type those quote marks. Try again.
+#bad time
+The time command does not tell you the wall-clock time.
+Try date next time.
+#log
+#next
+0.1c 5
diff --git a/usr/src/usr.lib/learn/files/L0.1c b/usr/src/usr.lib/learn/files/L0.1c
new file mode 100644 (file)
index 0000000..938f51e
--- /dev/null
@@ -0,0 +1,27 @@
+#print
+The computer keeps track of information in "files."
+A file might contain a letter to a friend,
+or a memo (or part of it) that you are typing,
+or any number of other things.
+You can list the names of your files
+by typing the command "ls".
+Try "ls" now; then type "ready".
+Remember that each command must go on a separate line
+and each line must be ended with RETURN.
+#create letter
+Dear John:
+I'm terribly sorry...
+#create memo
+This is a memo.
+#create memo1
+Another memo.
+#copyin
+#user
+#uncopyin
+grep '^ls' .copy >/dev/null
+#bad "ls"
+Don't type the quotes, please. Try again.
+#log
+#next
+0.1d 10
diff --git a/usr/src/usr.lib/learn/files/L0.1d b/usr/src/usr.lib/learn/files/L0.1d
new file mode 100644 (file)
index 0000000..a9e48d3
--- /dev/null
@@ -0,0 +1,30 @@
+#print
+File names are essentially arbitrary,
+although usually one names files sensibly:
+the files that make up a memo
+might be called "memo1", "memo2", etc.
+
+The contents of a file are also entirely up to you:
+for example, a file named "memo" could contain
+
+   Analysis of Irregular Statistics
+        John B. Pencilpusher
+
+  Bell Laboratories, Murray Hill, NJ
+    ....
+
+To get at the information in a file,
+you have to use the file name,
+which in this case is "memo". 
+
+Is there a difference between the name of a file
+and the contents of a file?
+Type "yes" or "no".
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+1.1a    10
+1.2a    5
diff --git a/usr/src/usr.lib/learn/files/L1.1a b/usr/src/usr.lib/learn/files/L1.1a
new file mode 100644 (file)
index 0000000..26a5d9a
--- /dev/null
@@ -0,0 +1,12 @@
+#print
+The "ls" command will list the names of the files
+in your directory.  Is there a file named "junk"
+present?  Find out and then type "yes" or "no".
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+2.1a 10
+2.2a 5
diff --git a/usr/src/usr.lib/learn/files/L1.2a b/usr/src/usr.lib/learn/files/L1.2a
new file mode 100644 (file)
index 0000000..93d258f
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+Use the "ls" command to determine if there is a file
+named for a state in the current directory.
+Find out and type "yes" or "no".
+(Don't use the list you got earlier - I've changed things.)
+#create texas
+dallas, houston, etc.
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+2.1a  10
+2.2a  5
diff --git a/usr/src/usr.lib/learn/files/L1.2b b/usr/src/usr.lib/learn/files/L1.2b
new file mode 100644 (file)
index 0000000..248afcd
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+You can use the "ls" command to find out how
+many files you have in your directory.
+How many files are there in the current
+directory now?  Make another list - the list of files
+that you made before is no longer right because I added
+some files to the directory.  When you find out
+how many files there are in this directory, type
+"answer N" where N is the number of files.
+#create a1
+file a1
+#create a2
+file a2
+#create X1
+file a1
+#copyin
+#user
+#uncopyin
+ls | %s/../bin/lcount >X1
+tail -1 .copy >X2
+#cmp X1 X2
+#log
+#next
+2.1a 10
+2.2a 5
diff --git a/usr/src/usr.lib/learn/files/L10.1a b/usr/src/usr.lib/learn/files/L10.1a
new file mode 100644 (file)
index 0000000..1b33df6
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+When you are done with something, you will want to know
+how to get rid of the file it is on.  The command
+for that is "rm" (remove).  For example
+  rm junk
+throws away the file named "junk".  Once it
+is gone, it is really gone - there is no way
+to "undo" a remove command.  Hence this command
+should be used with caution.
+In this directory there is one file named
+for a baseball player.  Remove it.
+Then type "ready".
+#create kernighan
+#create yastrzemski
+#user
+if (!(! -r yastrzemski && -r kernighan)) exit(1)
+#log
+#next
+11.1a 10
+11.2a 5
+11.3a 2
diff --git a/usr/src/usr.lib/learn/files/L10.2a b/usr/src/usr.lib/learn/files/L10.2a
new file mode 100644 (file)
index 0000000..e76c627
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+The way to get rid of a file you are finished with
+is with the "rm" (remove) command.  For example,
+  rm junk
+will get rid of the file named "junk".
+In this directory there is a file named "harry" -
+remove it.
+Then type "ready".
+#create harry
+#user
+test ! -r harry
+#log
+#next
+10.2b 5
+10.3a 2
diff --git a/usr/src/usr.lib/learn/files/L10.2b b/usr/src/usr.lib/learn/files/L10.2b
new file mode 100644 (file)
index 0000000..3e5bd34
--- /dev/null
@@ -0,0 +1,18 @@
+#print
+You can remove several files at once with the "rm" command.
+And you can use the familiar "*" and "?" characters
+to abbreviate several file names.  BUT BE CAREFUL -
+"rm" is irreversible, and it is all too easy to type something
+like "rm *" and get rid of all your files.
+In this directory are two files named 
+"part1" and "part2".
+Remove both; then type "ready".
+#create part1
+#create part2
+#user
+test ! -r part1 || test ! -r part2
+#log
+#next
+11.1a 10
+11.2a 5
+11.3a 2
diff --git a/usr/src/usr.lib/learn/files/L10.3a b/usr/src/usr.lib/learn/files/L10.3a
new file mode 100644 (file)
index 0000000..b443cad
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+When you are done with something, you will want to
+get rid of the file containing it.  The command for that
+is "rm" (remove).  For example
+  rm junk
+throws away the file named "junk".  Try that -
+there's a file named "junk" in this directory, as you can
+verify by doing an "ls".  Try another "ls" after the "rm junk";
+then type "ready".
+#create junk
+#user
+test ! -r junk
+#log
+#next
+10.3b 2
diff --git a/usr/src/usr.lib/learn/files/L10.3b b/usr/src/usr.lib/learn/files/L10.3b
new file mode 100644 (file)
index 0000000..516b558
--- /dev/null
@@ -0,0 +1,12 @@
+#print
+Often you will use "ls" with "rm"
+to first find the name of a file, and then remove it.
+This directory contains one file whose name begins with "g".
+Find out what it is and remove it.
+Then type "ready".
+#create george
+#user
+test ! -r george
+#log
+#next
+10.3c 2
diff --git a/usr/src/usr.lib/learn/files/L10.3c b/usr/src/usr.lib/learn/files/L10.3c
new file mode 100644 (file)
index 0000000..2282ccf
--- /dev/null
@@ -0,0 +1,15 @@
+#print
+You can remove several files at once with the
+"rm" command; for example,
+  rm tom dick harry
+will remove the files "tom", "dick", and "harry".
+There are two files in this directory named
+for birds: get rid of both.
+Then type "ready".
+#create eagle
+#create bluejay
+#user
+test ! -r eagle || test ! -r bluejay
+#log
+#next
+10.3d 2
diff --git a/usr/src/usr.lib/learn/files/L10.3d b/usr/src/usr.lib/learn/files/L10.3d
new file mode 100644 (file)
index 0000000..4b68bea
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+You can also use "*" and "?" with
+the "rm" command.  BUT BE VERY CAREFUL
+since, for example, "rm *" will throw away
+ALL the files in a directory.
+In this directory are some files named
+chunk1, chunk2, chunk3 and chunk4.
+Get rid of them.  Then type "ready".
+#create X1
+#
+ls >X2
+#create chunk1
+#create chunk2
+#create chunk3
+#create chunk4
+#user
+ls >X1
+#cmp X1 X2
+#log
+#next
+11.1a 10
+11.2a 5
+11.3a 2
diff --git a/usr/src/usr.lib/learn/files/L11.1a b/usr/src/usr.lib/learn/files/L11.1a
new file mode 100644 (file)
index 0000000..47e4e53
--- /dev/null
@@ -0,0 +1,42 @@
+#print
+To create a second copy of a file, the easiest
+way is to use the "cp" (copy) command.
+If you tell the computer
+  cp x y
+a copy of file "x" is made and named "y".
+Note that this is similar to "mv" in that a new
+file named "y" appears, but the difference is
+that the old file is not removed.
+(If there was already a file named "y", though, the
+old contents are lost; be careful.)
+
+In this directory there is a file which has
+a five letter name whose first four letters
+are "part".
+Print it out; it will tell you to copy
+it and what to call the copy.
+Do that and then type "ready".
+#create X1
+#create george
+#create part00
+this is not the right file and you shouldn't
+have printed it.  Use
+ part?
+not
+ part*
+in this example.
+#create part3
+This is the file "part3".  I hope you
+used a command like
+  ls part?
+or
+  cat part?
+to find it.
+Make a copy of this file on file "george".
+#user
+#cmp george part3
+#log
+#next
+12.1a 10
+12.2a 5
+12.3a 2
diff --git a/usr/src/usr.lib/learn/files/L11.2a b/usr/src/usr.lib/learn/files/L11.2a
new file mode 100644 (file)
index 0000000..7c397e7
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+To make a new copy of a file, the easiest
+way is to use the "cp" command.
+If you type 
+  cp x y
+a copy of file "x" is made and named "y".
+This directory contains a file named "george";
+make a copy named  "steve".
+Then type "ready".
+#create george
+this is file george
+#user
+#cmp steve george
+#log
+#next
+11.2b 5
diff --git a/usr/src/usr.lib/learn/files/L11.2b b/usr/src/usr.lib/learn/files/L11.2b
new file mode 100644 (file)
index 0000000..f4154e9
--- /dev/null
@@ -0,0 +1,26 @@
+#print
+Contrast 
+ cp old new
+with 
+ mv old new
+as commands; both cause "new" to appear,
+but "cp" does not remove "old".
+Both, by the way, destroy anything
+that happened to be around named "new".
+There is a file in this directory
+whose name ends in "x".  Use "ls"
+with the "*x" construction to find its name;
+then copy it to file "new", and type "ready".
+#create new
+old new
+#create pix
+new new
+#create xip
+nothing
+#user
+#cmp pix new
+#log
+#next
+12.1a 10
+12.2a 5
+12.3a 2
diff --git a/usr/src/usr.lib/learn/files/L11.3a b/usr/src/usr.lib/learn/files/L11.3a
new file mode 100644 (file)
index 0000000..e019f83
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+To make a copy of a file, you can use the
+"cp" (copy) command.  For example
+ cp old new
+will make a copy of file "old", named "new".
+This directory contains a file named "old";
+try the "cp" command to make a file named "new".
+Print the file to check on the copy.
+When done, type "ready".
+#create old
+The Brooklyn Museum is at 188 Eastern Parkway,
+Brooklyn, NY 11238.
+#user
+#cmp old new
+#log
+#next
+11.3b 2
diff --git a/usr/src/usr.lib/learn/files/L11.3b b/usr/src/usr.lib/learn/files/L11.3b
new file mode 100644 (file)
index 0000000..9b3b47b
--- /dev/null
@@ -0,0 +1,13 @@
+#print
+Now there is a file named "good"
+in this directory.  Make a copy named "better",
+then type ready.
+#create good
+This file has 
+three lines
+in it.
+#user
+#cmp good better
+#log
+#next
+11.3c 2
diff --git a/usr/src/usr.lib/learn/files/L11.3c b/usr/src/usr.lib/learn/files/L11.3c
new file mode 100644 (file)
index 0000000..a76c551
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+This is a little trickier.  The directions
+for this step are in a file whose
+name begins with "p".  Print that file;
+it will tell you what to do.  Then type "ready".
+#create delaware
+narrowsburg
+port jervis
+delaware water gap
+easton
+trenton
+philadelphia
+#create pub
+Make a copy of the file "delaware" which is
+named "hudson".
+#user
+#cmp delaware hudson
+#log
+#next
+12.1a 10
+12.2a 5
+12.3a 2
diff --git a/usr/src/usr.lib/learn/files/L12.1a b/usr/src/usr.lib/learn/files/L12.1a
new file mode 100644 (file)
index 0000000..394b97b
--- /dev/null
@@ -0,0 +1,42 @@
+#print
+Another very useful command is the command
+ diff x y
+which compares two files.  It will not print
+any output if the two files are the same, but
+if the files are different it will print
+out the lines that are changed in the two files,
+indicating the lines from the first file (x) by a leading "<"
+and the lines from the second file (y) by a leading ">".
+There are two files in this directory named "old" and "new".
+Why don't you first print both files, and then
+try using "diff" to compare them?  Suppose the files
+were hundreds of lines long, and you needed to know
+the single difference - do you see how valuable "diff" can be?
+As evidence that you did at least half of this,
+type "answer word" where "word" is the word added to the
+second file.
+#create new
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated to the 
+proposition that all
+men are created equal.
+#create old
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated the 
+proposition that all
+men are created equal.
+#copyin
+#user
+#uncopyin
+#match to
+#log
+#next
+13.01a
diff --git a/usr/src/usr.lib/learn/files/L12.2a b/usr/src/usr.lib/learn/files/L12.2a
new file mode 100644 (file)
index 0000000..79ee4e1
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+To compare two files, you can use the command
+"diff" (differences); the line
+  diff xx yy
+will compare the files xx and yy and tell you about
+any differences between them.  If the files are the same,
+the command says nothing.  Are the files
+"tom" and "dick" the same in this directory?
+Find out (print them if you feel insecure)
+and reply "yes" or "no".
+#create dick
+This stuff is not only in
+file tom but also
+in file dick
+#create tom
+This stuff is not only in
+file tom but also
+in file dick
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+12.2b 5
diff --git a/usr/src/usr.lib/learn/files/L12.2b b/usr/src/usr.lib/learn/files/L12.2b
new file mode 100644 (file)
index 0000000..bb462a8
--- /dev/null
@@ -0,0 +1,27 @@
+#print
+Now are the files "dick" and "harry" the same?
+Again reply "yes" or "no".
+If there are differences between files, "diff" prints
+the lines that are different, indicating those
+from the first file by "<" and those from
+the second file by ">".
+#create dick
+new york
+bridgeport
+new haven
+new london
+providence
+boston
+#create harry
+new york
+bridgeport
+new haven
+providence
+boston
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+12.2c 5
diff --git a/usr/src/usr.lib/learn/files/L12.2c b/usr/src/usr.lib/learn/files/L12.2c
new file mode 100644 (file)
index 0000000..6ab1461
--- /dev/null
@@ -0,0 +1,29 @@
+#print
+This directory contains two files named "old" and "new";
+What word is in one file but not the other?  Find
+out.  Reply "answer WORD" where WORD is that word.
+#create new
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated to the 
+proposition that all
+men are created equal.
+#create old
+Four score and seven
+years ago our fathers
+brought forth on this
+continent a new nation,
+conceived in liberty
+and dedicated the 
+proposition that all
+men are created equal.
+#copyin
+#user
+#uncopyin
+#match to
+#log
+#next
+13.01a
diff --git a/usr/src/usr.lib/learn/files/L12.3a b/usr/src/usr.lib/learn/files/L12.3a
new file mode 100644 (file)
index 0000000..4ebd592
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+A very useful command is the command
+  diff x y
+which compares the two files x and y and tells
+you any differences between the files.  If the files
+are the same, it says nothing.  To test that,
+copy file "george" onto file "harry";
+then say
+  diff george harry
+to verify that the files are the same.
+#create george
+london bridge
+is falling down.
+#copyin
+#user
+#uncopyin
+#match diff george harry
+#match diff harry george
+#log
+#next
+12.3b 2
diff --git a/usr/src/usr.lib/learn/files/L12.3b b/usr/src/usr.lib/learn/files/L12.3b
new file mode 100644 (file)
index 0000000..536b593
--- /dev/null
@@ -0,0 +1,18 @@
+#print
+Are the files "memo1" and "memo2" the same?
+If they are different, "diff" will print the
+lines that are not the same.
+Reply "yes" or "no".
+#create memo1
+A quick brown fox jumps over the lazy dog.
+We were away a year ago.
+#create memo2
+A quick brown fox jumps over the lazy dog.
+We were away a year ago.
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+12.3c 2
diff --git a/usr/src/usr.lib/learn/files/L12.3c b/usr/src/usr.lib/learn/files/L12.3c
new file mode 100644 (file)
index 0000000..e8afede
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+Are the files "old" and "new" in this directory the same?
+Again, if they are not, "diff" will print out the differences
+marking the lines in the first file named by "<" and the
+lines in the second file by ">".  Check the results of
+diff by printing the files.  Then type "yes" or "no".
+#create new
+This file has three
+lines of text in
+it to read.
+and this has one more.
+#create old
+This file has three
+lines of text in
+it to read.
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+12.2c 5
diff --git a/usr/src/usr.lib/learn/files/L13.1a b/usr/src/usr.lib/learn/files/L13.1a
new file mode 100644 (file)
index 0000000..ea434af
--- /dev/null
@@ -0,0 +1,14 @@
+#print
+Let's do a quick review of the things covered
+in the files course. To begin, how many files
+are there in the current directory? Type "answer N",
+where N is the number that you found.
+#create X1
+#create X2
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+13.1b 5
diff --git a/usr/src/usr.lib/learn/files/L13.1b b/usr/src/usr.lib/learn/files/L13.1b
new file mode 100644 (file)
index 0000000..1161cc9
--- /dev/null
@@ -0,0 +1,19 @@
+#print
+There is a file in this directory whose name begins
+with 'z'. Do what it tells you to, then type "ready".
+#create X1
+#create X2
+#create zip
+Rename the file named "mary" to "joe".
+#create joe
+I am a file
+#
+rm -f mary
+ls >X1
+mv joe mary
+#user
+ls >X2
+#cmp X1 X2
+#log
+#next
+13.1c 5
diff --git a/usr/src/usr.lib/learn/files/L13.1c b/usr/src/usr.lib/learn/files/L13.1c
new file mode 100644 (file)
index 0000000..8a5edf3
--- /dev/null
@@ -0,0 +1,24 @@
+#print
+There are two files in this directory whose names begin with
+the letter 'r'. On what line do they differ?
+Type "answer N", where N is the line number where they
+first are different.
+#create ref
+This is a very short file
+which contains several lines
+some one of which will be changed
+in the other version, and your
+job is to find out which.
+#create refnew
+This is a very short file
+which contains several lines
+some  one of which will be changed
+in the other version, and your
+job is to find out which.
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+13.1d
diff --git a/usr/src/usr.lib/learn/files/L13.1d b/usr/src/usr.lib/learn/files/L13.1d
new file mode 100644 (file)
index 0000000..dd55663
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+There are several files in this directory whose names
+begin with "easy". Remove them, then type "ready".
+#create X1
+#create X2
+#
+ls >X2
+#create easy1
+#create easyer
+#create easyrider
+#create easyenough
+#user
+ls >X1
+#cmp X1 X2
+#log
+#next
+13.1e
diff --git a/usr/src/usr.lib/learn/files/L13.1e b/usr/src/usr.lib/learn/files/L13.1e
new file mode 100644 (file)
index 0000000..03b9b4c
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+This one is tougher than the last one. There are
+several files in this directory whose names
+begin with "hard". Remove them, then type "ready".
+#create X1
+#create X2
+#
+ls >X2
+cp X1 "hard\b 1"
+cp X1 "hard\b er"
+#user
+ls >X1
+#cmp X1 X2
+#log
+#next
+13.1f
diff --git a/usr/src/usr.lib/learn/files/L13.1f b/usr/src/usr.lib/learn/files/L13.1f
new file mode 100644 (file)
index 0000000..d164bc9
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+Suppose you have two files named "dick" and "jane", and you
+want to interchange them, so that "dick" contains whatever
+was originally in "jane", and "jane" contains what was in "dick".
+Will this sequence of commands do the job?
+
+mv dick jane
+mv jane dick
+
+There are two files named "john" and "mary"
+in this directory, if you wish to experiment.
+When you have decided, type yes or no.
+#create john
+this is originally file john
+#create mary
+this is originally file mary
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+13.1g
diff --git a/usr/src/usr.lib/learn/files/L13.1g b/usr/src/usr.lib/learn/files/L13.1g
new file mode 100644 (file)
index 0000000..8432927
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+Suppose that we really do want to interchange the contents
+of the files "dick" and "jane". One way to do it is
+to move the contents of "dick" into some temporary file,
+then move "jane" onto "dick" (which of course clobbers
+the old contents of "dick", but we saved them already),
+then finally to move the temporary copy of "dick" to
+"jane". There are two files named "dick" and "jane" in this
+directory. Interchange their contents, then type "ready".
+#create Ref
+short file for dick
+#create dick
+short file for dick
+#create jane
+another file for jane
+#create Ref1
+another file for jane
+#user
+cmp -s jane Ref || cmp -s dick Ref1
+#log
diff --git a/usr/src/usr.lib/learn/files/L2.1a b/usr/src/usr.lib/learn/files/L2.1a
new file mode 100644 (file)
index 0000000..3d6a7a3
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+The "mv" command changes the names of files.
+For example, "mv bob bill" changes the name
+of file "bob" to be "bill".  If there was already
+a file named "bill", the old version is destroyed.
+
+There is a file in
+the current directory whose name begins with
+the letter "g", like "grant" or "grover".
+Find out what the file name really is, and
+then change that file to have the name "john".
+Then type "ready".
+#create george
+this should become john
+#user
+test -r john
+#log
+#next
+3.1a 10
+3.2a 5
+3.3a 2
diff --git a/usr/src/usr.lib/learn/files/L2.2a b/usr/src/usr.lib/learn/files/L2.2a
new file mode 100644 (file)
index 0000000..b522ee0
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+The "mv" command changes the names of files.
+For example, "mv thomas james" changes the
+name of the file "thomas" to be "james".
+
+There is a file in the current directory named
+"thomas".  Change that file to have the
+name "james".  Then type "ready".
+(The "mv" command, by the way, is like many
+UNIX commands in that it is silent unless there is an error.)
+#create thomas
+xx
+#user
+test -r james
+#log
+#next
+2.2b 5
diff --git a/usr/src/usr.lib/learn/files/L2.2b b/usr/src/usr.lib/learn/files/L2.2b
new file mode 100644 (file)
index 0000000..958b5e9
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+Now your directory contains a file with a name
+that starts with "a" (like "adam", "arthur", etc.).
+Find out what it is using the "ls" command
+and change its name to "martin".
+Then type "ready".
+By the way, if there was already a file around
+named "martin", the old version is clobbered
+by the new one.
+#create andrew
+stuff
+#user
+test -r martin
+#fail
+Do you remember that the "ls" command will
+tell you the names of the files in the current
+directory? Thus you can use "ls" to tell you
+what your file names are; and then you can use
+"mv" to change the name of the file
+beginning with "a" to "martin".
+#log
+#next
+3.1a 10
+3.2a 5
+3.3a 2
diff --git a/usr/src/usr.lib/learn/files/L3.1a b/usr/src/usr.lib/learn/files/L3.1a
new file mode 100644 (file)
index 0000000..dfaabea
--- /dev/null
@@ -0,0 +1,34 @@
+#print
+The "cat" command prints the contents of one or more files.
+In fact, it is named "cat" as an abbreviation
+for "concatenate".  To print the files named "dog"
+and "mouse" in succession, you could type either
+  cat dog
+  cat mouse
+or just
+  cat dog mouse
+If you print them with one command,
+the contents are printed in sequence with nothing
+between them.
+
+How many lines are there in all the files
+whose names begin with "b"?  Find out, then type
+"answer N" where N is the total number of lines.
+#create ben
+the file ben has
+a total of three
+short lines.
+#create bernie
+this file has
+two lines.
+#create bruce
+only one line here.
+#copyin
+#user
+#uncopyin
+#match 6
+#log
+#next
+4.1a  10
+4.2a    5
+4.3a    2
diff --git a/usr/src/usr.lib/learn/files/L3.2a b/usr/src/usr.lib/learn/files/L3.2a
new file mode 100644 (file)
index 0000000..593f8cc
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+The command "cat" will print files.  For example, you
+can print the file named "food" by typing "cat food".
+Your current directory has a file named "sam" and a
+file named "steve".  Which is longer?  Find out and
+type "answer sam" or "answer steve", giving the name
+of the longer file.
+#create sam
+this is the file sam.  it contains
+only two lines of text.
+#create steve
+this file is named steve.  it is a
+file which contains five lines of text.
+this is of course a very short file
+by any ordinary standards, although
+on UNIX most files are rather short.
+#copyin
+#user
+#uncopyin
+#match steve
+#log
+#next
+3.2b 5
diff --git a/usr/src/usr.lib/learn/files/L3.2b b/usr/src/usr.lib/learn/files/L3.2b
new file mode 100644 (file)
index 0000000..e99f3ba
--- /dev/null
@@ -0,0 +1,32 @@
+#print
+The "cat" command can also print several files
+at once.  In fact, it is named "cat" as an abbreviation
+for "concatenate".  To print the files named "dog"
+and "mouse" in succession, you could either
+type:
+  cat dog
+  cat mouse
+or just
+  cat dog mouse
+If you print them with one command,
+the files are listed in sequence with nothing
+between them.
+
+This directory contains two files
+named "chester" and "charley".  What is the
+longest word in either file?  Type "answer WORD"
+where WORD is the longest word you find.
+#create charley
+most of this file is short but at one place
+there is a surprisingly long word.
+#create chester
+and of the but here now stop go
+#copyin
+#user
+#uncopyin
+#match surprisingly
+#log
+#next
+4.1a  10
+4.2a    5
+4.3a    2
diff --git a/usr/src/usr.lib/learn/files/L3.3a b/usr/src/usr.lib/learn/files/L3.3a
new file mode 100644 (file)
index 0000000..1b082b2
--- /dev/null
@@ -0,0 +1,18 @@
+#print
+A file can be printed on your terminal
+by using the "cat" command.  Just say
+"cat file" where "file" is the file name.
+For example, there is a file named
+"food" in this directory.  List it
+by saying "cat food"; then type "ready".
+#create food
+  this is the file
+  named food.
+#copyout
+#user
+#uncopyout
+tail -2 .ocopy >X1
+#cmp X1 food
+#log
+#next
+3.3b  2
diff --git a/usr/src/usr.lib/learn/files/L3.3b b/usr/src/usr.lib/learn/files/L3.3b
new file mode 100644 (file)
index 0000000..525d4d2
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+Of course, you can print any file with "cat".
+In particular, it is common to first use
+"ls" to find the name of a file and then "cat"
+to print it.  Note the difference between
+"ls", which tells you the name of the files,
+and "cat", which tells you the contents.
+
+One file in the current directory is named for
+a President.  Print the file, then type "ready".
+#create roosevelt
+  this file is named roosevelt
+  and contains three lines of
+  text.
+#copyout
+#user
+#uncopyout
+cp .ocopy X2
+tail -3 .ocopy >X1
+#cmp X1 roosevelt
+#log
+#next
+3.2b 2
diff --git a/usr/src/usr.lib/learn/files/L4.1a b/usr/src/usr.lib/learn/files/L4.1a
new file mode 100644 (file)
index 0000000..f41b79c
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+The "ls" command may be given with one
+or more file names.  In that case,
+it will tell which of the files exist.
+How many of the files "doug", "dave", and
+"dennis" exist in this directory?  Find out
+and then type "answer N" where N is the number
+you found.
+#create dennis
+#create doug
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+5.1a  10
diff --git a/usr/src/usr.lib/learn/files/L4.2a b/usr/src/usr.lib/learn/files/L4.2a
new file mode 100644 (file)
index 0000000..596ff43
--- /dev/null
@@ -0,0 +1,19 @@
+#print
+If a file name is given with the "ls" command,
+it tells you whether that file exists.
+The file name is listed if the file exists;
+if it doesn't, a complaint is typed.
+For example,
+  ls george
+will type "george" if the file exists,
+and "george not found" if it is missing.
+
+Is there a file named "alexander" in the
+current directory?  Find out, then type "yes" or "no".
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+4.2b 10
diff --git a/usr/src/usr.lib/learn/files/L4.2b b/usr/src/usr.lib/learn/files/L4.2b
new file mode 100644 (file)
index 0000000..a6c11f2
--- /dev/null
@@ -0,0 +1,21 @@
+#print
+You can inquire about several files at once
+with the "ls" command.  If you type, for example,
+   ls fee fi fo fum
+you will be told which of the four files "fee", "fi", "fo",
+and "fum" exist.  In the current directory only one
+of the files "grover", "gerald", or "george" exists.
+Find out which one; then rename it "grant".
+Type "ready" when you are done.
+#create gerald
+file
+#create garbage
+garbage it is.
+#user
+#create X1
+file
+#
+cmp -s X1 grant || test ! -r gerald
+#log
+#next
+5.1a  10
diff --git a/usr/src/usr.lib/learn/files/L4.3a b/usr/src/usr.lib/learn/files/L4.3a
new file mode 100644 (file)
index 0000000..2255916
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+You can use the "ls" command to ask whether
+a single file exists without listing the entire
+directory.  For example, "ls george" will list
+"george" if there is a file with that name, and
+complain if there is not one.  This directory
+contains a file named "arthur" but no file named
+"alan".  You can verify that by typing the
+ordinary "ls" command.  Then try typing "ls arthur"
+to see what happens, and follow that by "ls alan".
+Then type "ready".
+#create arthur
+xxx
+#copyin
+#user
+#uncopyin
+grep 'ls arthur' .copy >/dev/null || grep 'ls alan' .copy >/dev/null
+#log
+#next
+4.3b 0
diff --git a/usr/src/usr.lib/learn/files/L4.3b b/usr/src/usr.lib/learn/files/L4.3b
new file mode 100644 (file)
index 0000000..3aec872
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+With the "ls" command, you can inquire about several
+specific files at once.  For example, in the previous
+case, you could type
+
+ls arthur alan
+
+and be told about both files.
+
+Which one of the files "bruce" and "ben" exists?
+Type "answer NAME", where NAME is the one you find.
+#create bruce
+bruce
+#copyin
+#user
+#uncopyin
+#match bruce
+#log
+#next
+4.3c 2
diff --git a/usr/src/usr.lib/learn/files/L4.3c b/usr/src/usr.lib/learn/files/L4.3c
new file mode 100644 (file)
index 0000000..11b9ade
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+Your directory contains only one of the following
+files: "richard", "robert", "ralph", "roger".  Find out
+which one exists, and print the contents of that file
+on your terminal (remember the "cat" command?).
+Then type "ready".
+#create robert
+this is the contents of file
+robert which you had to print.
+#copyin
+#user
+#uncopyin
+grep 'cat rob' .copy >/dev/null
+#log
+#next
+5.1a  10
diff --git a/usr/src/usr.lib/learn/files/L5.1a b/usr/src/usr.lib/learn/files/L5.1a
new file mode 100644 (file)
index 0000000..6e206f4
--- /dev/null
@@ -0,0 +1,34 @@
+#print
+Most UNIX commands, like "ls" and "cat", let you
+specify any number of file names after the command.
+To make this as easy as possible, there are some
+ways to abbreviate file names.  This is usually
+faster and more accurate than typing out the list in full.
+
+For example, when the character "?" is used in a file name,
+it will represent any character that might be
+in a file name.  That is, the name "a?" is
+an abbreviation for the files "a1", "a2", "aa",
+and so forth.  You can say
+  ls a?
+and if there are any file names beginning with
+"a" that are exactly two letters long, the computer
+will tell you their names.  Try that here.
+First list all the file names with "ls"; then type
+  ls a?
+to get all the two letter names beginning with "a".
+Then type "ready".
+#create a1
+#create a12
+#create abcdef
+#create ax
+#create aa
+#copyin
+#user
+#uncopyin
+grep '^ls a?$' .copy >/dev/null
+#log
+#next
+5.1b 0
+5.1c 5
+5.1e 10
diff --git a/usr/src/usr.lib/learn/files/L5.1b b/usr/src/usr.lib/learn/files/L5.1b
new file mode 100644 (file)
index 0000000..7f4b44c
--- /dev/null
@@ -0,0 +1,20 @@
+#print
+Will the name
+  xyz
+be selected by the pattern
+  x?
+in an "ls" command?
+Type "yes" or "no".  If you
+have trouble, there is such a file
+in the current directory,
+so you can find out by trial and error.
+(For example, you might do an ordinary "ls"
+and then try "ls x?" and compare the results.)
+#create xyz
+#copyin
+#user
+#uncopyin
+#match no
+#log
+#next
+5.1c 0
diff --git a/usr/src/usr.lib/learn/files/L5.1c b/usr/src/usr.lib/learn/files/L5.1c
new file mode 100644 (file)
index 0000000..39b8895
--- /dev/null
@@ -0,0 +1,26 @@
+#print
+The "?" may appear anywhere in the name.
+For example you can type
+  a?bc
+to match the list of names
+  axbc, aybc, a3bc
+and so forth.
+But the number of characters must always agree.
+How many of the following file names
+are matched by "x?xx"?
+  x1xx, y1xx, x1xxa, xxx
+Type "answer N" where N is the number of matching names.
+You can experiment in the current directory to
+check your answer before typing it.
+#create x1xx
+#create x1xxa
+#create y1xx
+#create xxx
+#copyin
+#user
+#uncopyin
+#match 1
+#log
+#next
+5.1d 0
+5.1e 5
diff --git a/usr/src/usr.lib/learn/files/L5.1d b/usr/src/usr.lib/learn/files/L5.1d
new file mode 100644 (file)
index 0000000..38ebe84
--- /dev/null
@@ -0,0 +1,14 @@
+#print
+Will the name
+  ?xx
+match "axx"?  Again, you may
+experiment before typing your
+answer.
+#create axx
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+5.1e 0
diff --git a/usr/src/usr.lib/learn/files/L5.1e b/usr/src/usr.lib/learn/files/L5.1e
new file mode 100644 (file)
index 0000000..03c4142
--- /dev/null
@@ -0,0 +1,29 @@
+#print
+Not only may the ? appear anywhere in a name,
+but there may be several ? characters in it.
+For example,
+  g??rge
+will match "george" and "goerge", among others.
+And "a??" will match "abc" or "a11" (but NOT "ax").
+Look at the files in the current directory and decide
+how many names the pattern
+   a?b?c
+will select.  Again, you can try this out
+by comparing an ordinary "ls" with "ls a?b?c"
+to see what happens.  When you figure
+out how many names are selected,
+type "answer N" where N is the number of file names.
+#create a0b0c
+#create a0bc
+#create a0x0c
+#create a1bxc
+#create aabbc
+#create azbzcz
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+6.1a 5
+6.2a 2
diff --git a/usr/src/usr.lib/learn/files/L6.1a b/usr/src/usr.lib/learn/files/L6.1a
new file mode 100644 (file)
index 0000000..0eead33
--- /dev/null
@@ -0,0 +1,33 @@
+#print
+Since the "?" character only matches single characters,
+it isn't useful for such questions as "how many files
+have names beginning with g?"  There is another character,
+  *
+which can be used in patterns for file names, and which matches
+any number of characters of any sort.  Thus
+   g*
+matches anything beginning with g.
+And
+   *x
+matches anything ending in x.  
+There is one file in this directory whose name ends
+in "memo".  Find out that file name
+and print the contents of the file.  Then type "ready".
+#create mymemo
+This is the 7-line file "mymemo";  you should
+have typed "ls *memo", which would print
+"mymemo", and then typed the
+command "cat mymemo".
+Or just plain "cat *memo" would have worked.
+But whatever you did, you got it right
+and now you can type "ready".
+#copyout
+#user
+#uncopyout
+tail -7 .ocopy >X2
+#cmp mymemo X2
+#log
+#next
+6.1b 0
+6.1c 5
+6.1e 10
diff --git a/usr/src/usr.lib/learn/files/L6.1b b/usr/src/usr.lib/learn/files/L6.1b
new file mode 100644 (file)
index 0000000..f7f0d01
--- /dev/null
@@ -0,0 +1,14 @@
+#print
+Will the file name "abcd"
+be matched by "a*d"?  Again,
+if you are not sure, you can experiment
+in this directory with commands like
+"ls" and "ls a*d".
+#create abcd
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+6.1c
diff --git a/usr/src/usr.lib/learn/files/L6.1c b/usr/src/usr.lib/learn/files/L6.1c
new file mode 100644 (file)
index 0000000..cfddd23
--- /dev/null
@@ -0,0 +1,13 @@
+#print
+There is one file in this directory whose name begins
+with "g".  Rename it so the "g" at the beginning
+of the name is replaced by "h".
+Then type ready.
+#create g23
+g23, of course
+#user
+test -r h23 || test ! -r g23
+#log
+#next
+6.1d 0
+6.1e 5
diff --git a/usr/src/usr.lib/learn/files/L6.1d b/usr/src/usr.lib/learn/files/L6.1d
new file mode 100644 (file)
index 0000000..dcf8678
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+What does "*b*" match?  Clearly, any file
+with a "b" anywhere in its name.  Similarly,
+how many files in this directory have
+"se" somewhere in their name?
+Type "answer N" when you figure it out.
+#create arise
+#create reset
+#create set
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+6.1e
diff --git a/usr/src/usr.lib/learn/files/L6.1e b/usr/src/usr.lib/learn/files/L6.1e
new file mode 100644 (file)
index 0000000..cc640d4
--- /dev/null
@@ -0,0 +1,19 @@
+#print
+There is exactly one file name which matches both
+   ab*
+and
+    a?d
+in the current directory.  What is it?
+Type "answer NAME" where NAME is its name.
+#create abc
+#create abd
+#create add
+#copyin
+#user
+#uncopyin
+#match abd
+#log
+#next
+7.1a 10
+7.2a 5
+7.3a 2
diff --git a/usr/src/usr.lib/learn/files/L6.2a b/usr/src/usr.lib/learn/files/L6.2a
new file mode 100644 (file)
index 0000000..b94e7b5
--- /dev/null
@@ -0,0 +1,34 @@
+#print
+Since the '?' character only matches single
+characters in file names, it is not useful for
+questions like "how many files have names which
+begin with the letter g?"  There is another character
+  *
+which can be used in patterns for file names
+and matches any number of any kind of characters.
+So
+  g*
+selects all file names beginning with g, and
+  *x
+selects all file names which end in x.  Try
+  ls *x
+How many files match?
+Compare with an ordinary
+  ls
+if you like.  Type "answer N" eventually where
+N is the number of files whose names end in "x".
+#create abcx
+#create abcxdef
+#create memox
+#create memoy
+#create memoz
+#create x
+#create x53x
+#copyin
+#user
+#uncopyin
+#match 4
+#log
+#next
+6.2b 8
+6.1a 1
diff --git a/usr/src/usr.lib/learn/files/L6.2b b/usr/src/usr.lib/learn/files/L6.2b
new file mode 100644 (file)
index 0000000..faaf442
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+There is one file in this directory whose name ends
+in "memo".  Find out that file name and print
+the contents of the file.  Then type "ready".
+#create mymemo
+This is the 7-line file "mymemo";  you should
+have typed "ls *memo", which would print
+"mymemo", and then typed the
+command "cat mymemo".
+Or just plain "cat *memo" would have worked.
+But whatever you did, you got it right
+and now you can type "ready".
+#copyout
+#user
+#uncopyout
+tail -7 .ocopy >X2
+#cmp mymemo X2
+#log
+#next
+6.1b 0
+6.1c 5
+6.1e 10
diff --git a/usr/src/usr.lib/learn/files/L7.1a b/usr/src/usr.lib/learn/files/L7.1a
new file mode 100644 (file)
index 0000000..871f82f
--- /dev/null
@@ -0,0 +1,38 @@
+#print
+Sometimes ? is too flexible, and you
+only want to allow a few characters.  For example,
+you might want to abbreviate
+  ls memo.ab memo.ac
+without picking up "memo.ad", memo.ae", etc.
+You can match one of a set of particular characters by 
+putting them in brackets "[]" in the list you use with "ls".
+For example,
+  [bc]
+matches either b or c but no other letters,
+so "ls memo.a[bc]" is the abbreviation for
+"ls memo.ab memo.ac".
+You can have as many characters as needed between [ and ].
+
+Type the "ls" command that recognizes
+  a1cat
+  a2cat
+  a3cat
+and no other files.  Then type "ready".
+#create a1bat
+#create a1cat
+#create a2cat
+#create a3cat
+#create a4cat
+#create acat
+#copyin
+#user
+#uncopyin
+#match ls a[123]cat
+#match ls a[1-3]cat
+#match ls a1cat a2cat a3cat
+You were supposed to use a[123]cat.
+Imagine doing it your way with 10 files.
+#log
+#next
+8.1a 10
+8.2a 5
diff --git a/usr/src/usr.lib/learn/files/L7.2a b/usr/src/usr.lib/learn/files/L7.2a
new file mode 100644 (file)
index 0000000..5f51b4b
--- /dev/null
@@ -0,0 +1,30 @@
+#print
+Sometimes ? is too flexible, and you
+only want to allow a few characters.  For example,
+you might want to abbreviate
+  ls memo.ab memo.ac
+without picking up "memo.ad", "memo.ae", and so forth.
+You can match one of a set of particular characters by 
+putting them in brackets "[]" in the list you use with "ls".
+For example,
+  [bc]
+matches either b or c but no other letters.  Thus
+  ls memo.a[bc]
+will list exactly "memo.ab" and "memo.ac" if present.
+
+How many of the files
+  xya, xyb, xyc, xyd
+exist in this directory?
+Type "answer N" where N is the number.
+#create xyb
+#create xyc
+#create xye
+#create xyf
+#create xy1
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+7.2b 10
diff --git a/usr/src/usr.lib/learn/files/L7.2b b/usr/src/usr.lib/learn/files/L7.2b
new file mode 100644 (file)
index 0000000..a86c7f8
--- /dev/null
@@ -0,0 +1,32 @@
+#print
+You can put any number of characters between [..]
+characters, as in
+  [abcdef]
+which matches any of the six letters from a to f;
+and you can put something like that anywhere in a pattern
+for a file name.  For example,
+  ls [abcd]x
+matches any of
+ ax, bx, cx, dx
+You can also combine this with other operators such as
+* or ?.  For example,
+  ls [ab]?
+matches all two-letter names beginning with a or b.
+How would you ask for all names, of any length, ending
+in 1 2 or 3?
+You can experiment in this directory; eventually,
+type the "ls" command you decide on followed by "ready".
+#create a1
+#create a12
+#create a1a
+#create a2
+#create a23
+#create aa1
+#create abc1
+#copyin
+#user
+#uncopyin
+#match ls *[123]
+#log
+#next
+8.1a 10
diff --git a/usr/src/usr.lib/learn/files/L7.3a b/usr/src/usr.lib/learn/files/L7.3a
new file mode 100644 (file)
index 0000000..f757a51
--- /dev/null
@@ -0,0 +1,28 @@
+#print
+Sometimes ? is too flexible, and you
+only want to allow a few characters.  For example,
+you might want to abbreviate
+  ls memo.ab memo.ac
+without picking up "memo.ad", "!"memo.ae", and so forth.
+You can match one of a set of particular characters by 
+putting them in brackets "[]" in the list you use with "ls".
+For example,
+  [bc]
+matches either b or c but no other letters.
+Thus the command
+  ls memo.a[bc]
+would match "memo.ab", "memo.ac", and nothing else.
+Try that command in this directory: type a plain
+"ls" first, and then "ls memo.a[bc]".
+How many files does "ls memo.a[bc]" match?
+Type "answer N" where N is the number.
+#create memo.ab
+#create memo.abc
+#create memo.bc
+#copyin
+#user
+#uncopyin
+#match 1
+#log
+#next
+7.3b 2
diff --git a/usr/src/usr.lib/learn/files/L7.3b b/usr/src/usr.lib/learn/files/L7.3b
new file mode 100644 (file)
index 0000000..1d3b107
--- /dev/null
@@ -0,0 +1,17 @@
+#print
+You can use the [] characters anywhere you want
+in a file name.  For example,
+ ls a[bc]d
+would match abd or acd, right?
+What is the command that finds out how
+many files are named "ax" or "bx"?
+Type that command, then "ready".
+#create ax
+#create bx
+#copyin
+#user
+#uncopyin
+#match ls [ab]x
+#log
+#next
+7.3c 2
diff --git a/usr/src/usr.lib/learn/files/L7.3c b/usr/src/usr.lib/learn/files/L7.3c
new file mode 100644 (file)
index 0000000..8b87957
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+You can put any number of characters between the
+brackets.  For example,
+  ab[123456789]
+could match up to 9 names, of the sort
+  ab1, ab2, ab3, ab4, ab5, ...
+How many of the following names exist in this
+directory?
+  p1end, p2end, p3end, p4end, p5end
+Check with a ordinary "ls".  Type "answer N" when you
+know.
+#once #create p1end
+#once #create p3endx
+#once #create p4end
+#once #create p6end
+#copyin
+#user
+#uncopyin
+#match 2
+#log
+#next
+8.1a 10
+8.2a 5
diff --git a/usr/src/usr.lib/learn/files/L8.1a b/usr/src/usr.lib/learn/files/L8.1a
new file mode 100644 (file)
index 0000000..2228490
--- /dev/null
@@ -0,0 +1,25 @@
+#print
+Sometimes you want to request one of a limited
+range of characters.  This is possible with an
+expression like
+  [a-d]
+which matches a, b, c, or d.  Thus, to take
+some combinations
+  ab[c-f]
+matches
+  abc, abd, abe, abf
+Try typing "ls a[0-9]"
+and see how many files it matches.  Type that
+number in the form "answer N".
+#create a0
+#create a1
+#create a5
+#create ax
+#copyin
+#user
+#uncopyin
+#match 3
+#log
+#next
+9.1a 10
+9.2a 4
diff --git a/usr/src/usr.lib/learn/files/L8.2a b/usr/src/usr.lib/learn/files/L8.2a
new file mode 100644 (file)
index 0000000..6b59b79
--- /dev/null
@@ -0,0 +1,16 @@
+#print
+Will the command
+  ls georg[a-f]
+match the name
+  george
+Type yes or no.
+Experiment first if you want.
+#create george
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+8.2b 5
+9.1a 10
diff --git a/usr/src/usr.lib/learn/files/L8.2b b/usr/src/usr.lib/learn/files/L8.2b
new file mode 100644 (file)
index 0000000..8fd3ef8
--- /dev/null
@@ -0,0 +1,23 @@
+#print
+The command
+ ls [aeiou]*.c
+will match all but one of the following names.
+  e.c
+  alpha.c
+  edward
+  u23.c
+Which one?  Type "answer NAME" where NAME
+is the file that doesn't match.  You can experiment
+first, as usual.
+#create alpha.c
+#create e.c
+#create edward
+#create u23.c
+#copyin
+#user
+#uncopyin
+#match edward
+#log
+#next
+8.2c 5
+9.1a 10
diff --git a/usr/src/usr.lib/learn/files/L8.2c b/usr/src/usr.lib/learn/files/L8.2c
new file mode 100644 (file)
index 0000000..9a87646
--- /dev/null
@@ -0,0 +1,27 @@
+#print
+As an example more complicated than you will
+probably ever need, consider
+  ?[a-c]*
+which matches what?  Well the first character
+can be anything; the second must be a, b, or c; and
+nothing matters thereafter.    So it matches
+ aaa
+ abc
+ xa
+ 3c25
+but not
+ a
+ ghi
+and so forth.
+Will it match
+ %a25
+Try some experiments, then type yes or no.
+#create %a25
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+9.1a 10
+9.2a 4
diff --git a/usr/src/usr.lib/learn/files/L9.1a b/usr/src/usr.lib/learn/files/L9.1a
new file mode 100644 (file)
index 0000000..2da6ae3
--- /dev/null
@@ -0,0 +1,36 @@
+#print
+The patterns for selecting file names that have been discussed
+can be used with other commands than "ls".  For example,
+they can be used with the "cat" command to print files.
+It is common for a memo stored in several
+files to use files named "part1", "part2", etc.
+so that commands like
+  cat part*
+will print everything.
+In this directory there are several
+short files named "sec0", "sec1", "sec3",
+and so forth.
+There are various names of animals in the files;
+find out the largest animal named in the files
+and type "answer NAME" where NAME is that animal.
+#create sec0
+dog mouse cat 
+#create sec1
+rabbit weasel
+pig hamster
+#create sec2
+this file doesn't happen
+to have any animal names in it.
+#create sec3
+fox elephant sheep
+duck  rat
+#create sec4
+groundhog bobcat
+mole  beaver
+#copyin 
+#user
+#uncopyin
+#match elephant
+#log
+#next
+10.1a 10
diff --git a/usr/src/usr.lib/learn/files/L9.2a b/usr/src/usr.lib/learn/files/L9.2a
new file mode 100644 (file)
index 0000000..eac03df
--- /dev/null
@@ -0,0 +1,30 @@
+#print
+You can use patterns for file names with commands
+other than "ls".  For example, you can use them with
+the "cat" command to print files.
+This directory has three files named
+  parta
+  partb
+  partc
+You can use
+  cat part?
+to print all of them.  Try that; then
+type "ready".
+#create parta
+This is file parta;
+it has two lines.
+#create partb
+File partb here - has only one line.
+#create partc
+And now in file partc, which has
+the enormous total of
+three lines.
+#create partxxx
+You shouldn't have printed this one.
+#copyin
+#user
+#uncopyin
+grep 'cat part?' .copy >/dev/null
+#log
+#next
+9.2b 5
diff --git a/usr/src/usr.lib/learn/files/L9.2b b/usr/src/usr.lib/learn/files/L9.2b
new file mode 100644 (file)
index 0000000..64b9b09
--- /dev/null
@@ -0,0 +1,22 @@
+#print
+You can also use the "*" operator.  For example,
+print the contents of all the files in this
+directory whose names begin with the letter 'p'.
+Use just one "cat" command.
+Then type "ready".
+#create p1
+There are only two such files.  This is the first
+one and it is two lines long.
+#create ppx
+
+This is the second file.  Its first line
+is blank, and then there are three lines of
+text of which this is the last.
+#copyin
+#user
+#uncopyin
+grep 'cat p\*' .copy >/dev/null
+#log
+#next
+10.1a 10
+9.2c 5
diff --git a/usr/src/usr.lib/learn/files/L9.2c b/usr/src/usr.lib/learn/files/L9.2c
new file mode 100644 (file)
index 0000000..ed1c330
--- /dev/null
@@ -0,0 +1,26 @@
+#print
+And as an example of the [] operators again,
+print all the files in this directory whose
+names begin with either 'a' or 'c'.
+That will tell you to type either 'yes'
+or 'no' - do what it says.
+#create a1
+Type
+#create a2
+y
+#create b
+n
+o
+#create cxx
+e
+#create cz23
+s
+(on one line, please)
+#copyin
+#user
+#uncopyin
+#match yes
+#log
+#next
+10.1a 10
+10.3a 2