|
|
1.1 ! root 1: .\" @(#)e2 6.1 (Berkeley) 5/22/86 ! 2: .\" ! 3: .SH ! 4: Writing text out as a file \- the Write command ``w'' ! 5: .PP ! 6: It's likely that you'll want to save your text for later use. ! 7: To write out the contents of the buffer onto a file, ! 8: use the ! 9: .ul ! 10: write ! 11: command ! 12: .P1 ! 13: w ! 14: .P2 ! 15: followed by the filename you want to write on. ! 16: This will copy the buffer's contents ! 17: onto the specified file ! 18: (destroying any previous information on the file). ! 19: To save ! 20: the text on a file named ! 21: .UL junk , ! 22: for example, type ! 23: .P1 ! 24: w junk ! 25: .P2 ! 26: Leave a space between ! 27: .UL w ! 28: and the file name. ! 29: .ul ! 30: Ed ! 31: will respond by printing ! 32: the number of characters it wrote out. ! 33: In this case, ! 34: .ul ! 35: ed ! 36: would respond with ! 37: .P1 ! 38: 68 ! 39: .P2 ! 40: (Remember that blanks and the return character at the end of each ! 41: line are included in the character count.) ! 42: Writing a file just makes a copy of the text \- the ! 43: buffer's contents are not disturbed, so you can go on adding ! 44: lines to it. ! 45: This is an important point. ! 46: .ul ! 47: Ed ! 48: at all times works on a copy ! 49: of a file, not the file itself. ! 50: No change in the contents ! 51: of a file takes place until you give a ! 52: .UL w ! 53: command. ! 54: (Writing out the text onto a file from time to time as it is being ! 55: created is a good idea, since if the system crashes or if you make some horrible mistake, you will lose ! 56: all the text in the buffer but any text that was written onto ! 57: a file is relatively safe.) ! 58: .SH ! 59: Leaving ed \- the Quit command ``q'' ! 60: .PP ! 61: To terminate a session with ! 62: .IT ed , ! 63: save the text you're working on ! 64: by writing it onto a file using the ! 65: .UL w ! 66: command, ! 67: and then type the command ! 68: .P1 ! 69: q ! 70: .P2 ! 71: which ! 72: stands for ! 73: .IT quit . ! 74: The system will respond with ! 75: the prompt character ! 76: .UL $ "" ( ! 77: or ! 78: .UL % ). ! 79: At ! 80: this point your buffer vanishes, with all its text, ! 81: which is why you want to write it out before quitting.\(dg ! 82: .FS ! 83: \(dg Actually, ! 84: .IT ed ! 85: will print ! 86: .UL ? ! 87: if you try to quit without writing. ! 88: At that point, write if you want; ! 89: if not, another ! 90: .UL q ! 91: will get you out regardless. ! 92: .FE ! 93: .SH ! 94: Exercise 1: ! 95: .PP ! 96: Enter ! 97: .ul ! 98: ed ! 99: and ! 100: create some text using ! 101: .P1 ! 102: a ! 103: \&. . . text . . . ! 104: \&\fB.\fR ! 105: .P2 ! 106: Write it out using ! 107: .UL w . ! 108: Then leave ! 109: .ul ! 110: ed ! 111: with the ! 112: .UL q ! 113: command, and print the file, ! 114: to see that everything worked. ! 115: (To print a file, say ! 116: .P1 ! 117: pr filename ! 118: .P2 ! 119: or ! 120: .P1 ! 121: cat filename ! 122: .P2 ! 123: in response to ! 124: the prompt character. ! 125: Try both.) ! 126: .SH ! 127: Reading text from a file \- the Edit command ``e'' ! 128: .PP ! 129: A common way to get text into the buffer is to read it ! 130: from a file in the file system. ! 131: This is what you do to edit text ! 132: that you saved with the ! 133: .UL w ! 134: command in a previous session. ! 135: The ! 136: .ul ! 137: edit ! 138: command ! 139: .UL e ! 140: fetches the entire contents of a file into the buffer. ! 141: So if you had saved the three lines ! 142: ``Now is the time'', etc., ! 143: with a ! 144: .UL w ! 145: command in an earlier session, ! 146: the ! 147: .ul ! 148: ed ! 149: command ! 150: .P1 ! 151: e junk ! 152: .P2 ! 153: would fetch the entire contents of the file ! 154: .UL junk ! 155: into the buffer, and respond ! 156: .P1 ! 157: 68 ! 158: .P2 ! 159: which is the number of characters in ! 160: .UL junk . ! 161: .ul ! 162: If anything was already in the buffer, it is deleted first. ! 163: .PP ! 164: If you use the ! 165: .UL e ! 166: command to read a file into the buffer, ! 167: then you need not use a file name after a subsequent ! 168: .UL w ! 169: command; ! 170: .ul ! 171: ed ! 172: remembers the last file name used in an ! 173: .UL e ! 174: command, ! 175: and ! 176: .UL w ! 177: will write on this file. ! 178: Thus a good way to operate is ! 179: .P1 ! 180: ed ! 181: e file ! 182: [editing session] ! 183: w ! 184: q ! 185: .P2 ! 186: This way, you can simply say ! 187: .UL w ! 188: from time to time, ! 189: and be secure in the knowledge that ! 190: if you got the file name right at the beginning, ! 191: you are writing into the proper file each time. ! 192: .PP ! 193: You can find out at any time what file name ! 194: .ul ! 195: ed ! 196: is remembering by typing the ! 197: .ul ! 198: file ! 199: command ! 200: .UL f . ! 201: In this example, ! 202: if you typed ! 203: .P1 ! 204: f ! 205: .P2 ! 206: .ul ! 207: ed ! 208: would reply ! 209: .P1 ! 210: junk ! 211: .P2 ! 212: .SH ! 213: Reading text from a file \- the Read command ``r'' ! 214: .PP ! 215: Sometimes you want to read a file into the buffer ! 216: without destroying anything that is already there. ! 217: This is done by the ! 218: .ul ! 219: read ! 220: command ! 221: .UL r . ! 222: The command ! 223: .P1 ! 224: r junk ! 225: .P2 ! 226: will read the file ! 227: .UL junk ! 228: into the buffer; ! 229: it adds it ! 230: to the end of whatever is already in the buffer. ! 231: So if you do a read after ! 232: an edit: ! 233: .P1 ! 234: e junk ! 235: r junk ! 236: .P2 ! 237: the buffer will contain ! 238: .ul ! 239: two ! 240: copies of the text (six lines). ! 241: .P1 ! 242: Now is the time ! 243: for all good men ! 244: to come to the aid of their party. ! 245: Now is the time ! 246: for all good men ! 247: to come to the aid of their party. ! 248: .P2 ! 249: Like the ! 250: .UL w ! 251: and ! 252: .UL e ! 253: commands, ! 254: .UL r ! 255: prints ! 256: the ! 257: number of characters read in, after the reading operation is complete. ! 258: .PP ! 259: Generally speaking, ! 260: .UL r ! 261: is much less used than ! 262: .UL e . ! 263: .SH ! 264: Exercise 2: ! 265: .PP ! 266: Experiment with the ! 267: .UL e ! 268: command \- ! 269: try reading and printing various files. ! 270: You may get an error ! 271: .UL ?name , ! 272: where ! 273: .UL name ! 274: is the name of a file; ! 275: this means that the file doesn't exist, ! 276: typically because you spelled the file name wrong, ! 277: or perhaps that you are not allowed to read or write it. ! 278: Try alternately reading and appending to see that they work ! 279: similarly. ! 280: Verify that ! 281: .P1 ! 282: ed filename ! 283: .P2 ! 284: is exactly equivalent to ! 285: .P1 ! 286: ed ! 287: e filename ! 288: .P2 ! 289: What does ! 290: .P1 ! 291: f filename ! 292: .P2 ! 293: do? ! 294: .SH ! 295: Printing the contents of the buffer \- the Print command ``p'' ! 296: .PP ! 297: To ! 298: .ul ! 299: print ! 300: or list the contents of the buffer (or parts ! 301: of it) on the terminal, use the print command ! 302: .P1 ! 303: p ! 304: .P2 ! 305: The way this is done is as follows. ! 306: Specify the lines where ! 307: you want printing to begin and where you want it to end, ! 308: separated by a comma, and ! 309: followed by the letter ! 310: .UL p . ! 311: Thus to print the first two lines of the buffer, for ! 312: example, (that is, lines 1 through 2) say ! 313: .P1 ! 314: 1,2p (starting line=1, ending line=2 p) ! 315: .P2 ! 316: .ul ! 317: Ed ! 318: will respond with ! 319: .P1 ! 320: Now is the time ! 321: for all good men ! 322: .P2 ! 323: .PP ! 324: Suppose you want to print ! 325: .ul ! 326: all ! 327: the lines in the buffer. ! 328: You could use ! 329: .UL 1,3p ! 330: as above if you knew there were exactly ! 331: 3 lines in the buffer. ! 332: But in general, you don't ! 333: know how many there are, so what do you use for the ending ! 334: line number? ! 335: .ul ! 336: Ed ! 337: provides a shorthand symbol for ``line number of ! 338: last line in buffer'' \- the dollar sign ! 339: .UL $ . ! 340: Use it this ! 341: way: ! 342: .P1 ! 343: 1,$p ! 344: .P2 ! 345: This will print ! 346: .ul ! 347: all ! 348: the lines in the buffer (line 1 to last line.) ! 349: If you want to stop the printing before it is finished, ! 350: push the ! 351: .UC DEL ! 352: or Delete key; ! 353: .ul ! 354: ed ! 355: will type ! 356: .P1 ! 357: ? ! 358: .P2 ! 359: and wait for the next command. ! 360: .PP ! 361: To print the ! 362: .ul ! 363: last ! 364: line of the buffer, you could use ! 365: .P1 ! 366: $,$p ! 367: .P2 ! 368: but ! 369: .ul ! 370: ed ! 371: lets you abbreviate this to ! 372: .P1 ! 373: $p ! 374: .P2 ! 375: You can print any single line by typing the line ! 376: number followed by a ! 377: .UL p . ! 378: Thus ! 379: .P1 ! 380: 1p ! 381: .P2 ! 382: produces the response ! 383: .P1 ! 384: Now is the time ! 385: .P2 ! 386: which is the first line of the buffer. ! 387: .PP ! 388: In fact, ! 389: .ul ! 390: ed ! 391: lets you abbreviate even further: ! 392: you can print any single line by typing ! 393: .ul ! 394: just ! 395: the line number \- no need to type the letter ! 396: .UL p . ! 397: So if you say ! 398: .P1 ! 399: $ ! 400: .P2 ! 401: .ul ! 402: ed ! 403: will print the last line of the buffer. ! 404: .PP ! 405: You can also use ! 406: .UL $ ! 407: in combinations like ! 408: .P1 ! 409: $\-1,$p ! 410: .P2 ! 411: which prints the last two lines of the buffer. ! 412: This helps when you want to see how far you got in typing. ! 413: .SH ! 414: Exercise 3: ! 415: .PP ! 416: As before, create some text using the ! 417: .UL a ! 418: command and ! 419: experiment with the ! 420: .UL p ! 421: command. ! 422: You will find, for example, ! 423: that you can't print line 0 or a line beyond ! 424: the end of the buffer, and that attempts ! 425: to print a buffer in reverse order by saying ! 426: .P1 ! 427: 3,1p ! 428: .P2 ! 429: don't work.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.