diff options
Diffstat (limited to 'ult')
-rw-r--r-- | ult/examples/bar.txt | 8 | ||||
-rw-r--r-- | ult/examples/foo.txt | 9 | ||||
-rw-r--r-- | ult/examples/items.txt | 18 | ||||
-rw-r--r-- | ult/examples/marks.txt | 5 | ||||
-rw-r--r-- | ult/examples/marks1.txt | 5 | ||||
-rw-r--r-- | ult/examples/primes.txt | 30 | ||||
-rw-r--r-- | ult/examples/students.txt | 5 | ||||
-rw-r--r-- | ult/examples/wonderland.txt | 4047 | ||||
-rw-r--r-- | ult/exercises.rst | 109 | ||||
-rw-r--r-- | ult/handout.rst | 2247 | ||||
-rw-r--r-- | ult/index.rst | 6 | ||||
-rw-r--r-- | ult/module_plan.rst | 95 | ||||
-rw-r--r-- | ult/ult.tex | 1721 |
13 files changed, 0 insertions, 8305 deletions
diff --git a/ult/examples/bar.txt b/ult/examples/bar.txt deleted file mode 100644 index c0a5b08..0000000 --- a/ult/examples/bar.txt +++ /dev/null @@ -1,8 +0,0 @@ -"Bar" as the second term in the series may have developed in -electronics, where a digital signal which is considered "on" with a -negative or zero-voltage condition is identified with a horizontal bar -over the signal label; the notation for an inverted signal foo would -then be pronounced "foo bar". Bar may also be read as beyond all -repair, which is how it is used in the acronym FUBAR. - -source: wikipedia diff --git a/ult/examples/foo.txt b/ult/examples/foo.txt deleted file mode 100644 index 1fe9426..0000000 --- a/ult/examples/foo.txt +++ /dev/null @@ -1,9 +0,0 @@ -FOO is an abbreviation of Forward Observation Officer, a British Army -term in use as early as the First World War. The etymology of foo is -explored in the Internet Engineering Task Force (IETF) Request for -Comments 3092, which notes usage of foo in 1930s cartoons including -The Daffy Doc (with Daffy Duck) and comic strips, especially Smokey -Stover and Pogo. From there the term migrated into military slang, -where it merged with FUBAR. - -source: wikipedia diff --git a/ult/examples/items.txt b/ult/examples/items.txt deleted file mode 100644 index e0828ee..0000000 --- a/ult/examples/items.txt +++ /dev/null @@ -1,18 +0,0 @@ -Programming Pearls -The C Programming Language -The Mythical Man Month: Essays on Software Engineering -Programming Pearls -The C Programming Language -Structure and Interpretation of Computer Programs -Programming Pearls -Compilers: Principles, Techniques, and Tools -The C Programming Language -The Art of UNIX Programming -Programming Pearls -The Art of Computer Programming -Introduction to Algorithms -The Art of UNIX Programming -The Pragmatic Programmer: From Journeyman to Master -Programming Pearls -Unix Power Tools -The Art of UNIX Programming diff --git a/ult/examples/marks.txt b/ult/examples/marks.txt deleted file mode 100644 index f97b743..0000000 --- a/ult/examples/marks.txt +++ /dev/null @@ -1,5 +0,0 @@ -89 92 85 -98 47 67 -67 82 76 -78 97 60 -67 68 69 diff --git a/ult/examples/marks1.txt b/ult/examples/marks1.txt deleted file mode 100644 index 9a5299d..0000000 --- a/ult/examples/marks1.txt +++ /dev/null @@ -1,5 +0,0 @@ -5 89 92 85 -4 98 47 67 -1 67 82 76 -2 78 97 60 -3 67 68 69 diff --git a/ult/examples/primes.txt b/ult/examples/primes.txt deleted file mode 100644 index b5cdec8..0000000 --- a/ult/examples/primes.txt +++ /dev/null @@ -1,30 +0,0 @@ -2 -3 -5 -7 -11 -13 -17 -19 -23 -29 -31 -37 -41 -43 -47 -53 -59 -61 -67 -71 -73 -79 -83 -89 -97 -101 -103 -107 -109 -113 diff --git a/ult/examples/students.txt b/ult/examples/students.txt deleted file mode 100644 index ddacd6b..0000000 --- a/ult/examples/students.txt +++ /dev/null @@ -1,5 +0,0 @@ -Hussain -Dilbert -Anne -Raul -Sven diff --git a/ult/examples/wonderland.txt b/ult/examples/wonderland.txt deleted file mode 100644 index 0f62284..0000000 --- a/ult/examples/wonderland.txt +++ /dev/null @@ -1,4047 +0,0 @@ -Project Gutenberg's Alice's Adventures in Wonderland, by Lewis Carroll
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever. You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-
-Title: Alice's Adventures in Wonderland
- Illustrated by Arthur Rackham. With a Proem by Austin Dobson
-
-Author: Lewis Carroll
-
-Illustrator: Arthur Rackham
-
-Release Date: May 19, 2009 [EBook #28885]
-
-Language: English
-
-Character set encoding: ISO-8859-1
-
-*** START OF THIS PROJECT GUTENBERG EBOOK ALICE'S ADVENTURES IN WONDERLAND ***
-
-
-
-
-Produced by Jana Srna, Emmy and the Online Distributed
-Proofreading Team at http://www.pgdp.net (This file was
-produced from images generously made available by the
-University of Florida Digital Collections.)
-
-
-
-
-
-
-
-
-
-
-
-ALICE'S ADVENTURES IN WONDERLAND
-
-[Illustration: "Alice"]
-
-[Illustration:
-
- ALICE'S·ADVENTURES
- IN·WONDERLAND
- BY·LEWIS·CARROLL
- ILLUSTRATED·BY
- ARTHUR·RACKHAM
-
- WITH A PROEM BY AUSTIN DOBSON
-
- LONDON·WILLIAM·HEINEMANN
- NEW·YORK·DOUBLEDAY·PAGE·&·Co]
-
- PRINTED IN ENGLAND
-
- _'Tis two score years since CARROLL'S art,
- With topsy-turvy magic,
- Sent ALICE wondering through a part
- Half-comic and half-tragic._
-
- _Enchanting ALICE! Black-and-white
- Has made your deeds perennial;
- And naught save "Chaos and old Night"
- Can part you now from TENNIEL;_
-
- _But still you are a Type, and based
- In Truth, like LEAR and HAMLET;
- And Types may be re-draped to taste
- In cloth-of-gold or camlet._
-
- _Here comes afresh Costumier, then;
- That Taste may gain a wrinkle
- From him who drew with such deft pen
- The rags of RIP VAN WINKLE!_
-
- _AUSTIN DOBSON._
-
-
-
- All in the golden afternoon
- Full leisurely we glide;
- For both our oars, with little skill,
- By little arms are plied,
- While little hands make vain pretence
- Our wanderings to guide.
-
- Ah, cruel Three! In such an hour,
- Beneath such dreamy weather,
- To beg a tale of breath too weak
- To stir the tiniest feather!
- Yet what can one poor voice avail
- Against three tongues together?
-
- Imperious Prima flashes forth
- Her edict "to begin it"--
- In gentler tone Secunda hopes
- "There will be nonsense in it!"--
- While Tertia interrupts the tale
- Not _more_ than once a minute.
-
- Anon, to sudden silence won,
- In fancy they pursue
- The dream-child moving through a land
- Of wonders wild and new,
- In friendly chat with bird or beast--
- And half believe it true.
-
- And ever, as the story drained
- The wells of fancy dry.
- And faintly strove that weary one
- To put the subject by,
- "The rest next time--" "It _is_ next time!"
- The happy voices cry.
-
- Thus grew the tale of Wonderland:
- Thus slowly, one by one,
- Its quaint events were hammered out--
- And now the tale is done,
- And home we steer, a merry crew,
- Beneath the setting sun.
-
- Alice! a childish story take,
- And with a gentle hand
- Lay it where Childhood's dreams are twined
- In Memory's mystic band,
- Like pilgrim's wither'd wreath of flowers
- Pluck'd in a far-off land.
-
-
-
-
-CONTENTS
-
-
- PAGE
-
- I. DOWN THE RABBIT-HOLE 1
-
- II. THE POOL OF TEARS 13
-
- III. A CAUCUS-RACE AND A LONG TALE 24
-
- IV. THE RABBIT SENDS IN A LITTLE BILL 35
-
- V. ADVICE FROM A CATERPILLAR 49
-
- VI. PIG AND PEPPER 64
-
- VII. A MAD TEA-PARTY 82
-
- VIII. THE QUEEN'S CROQUET-GROUND 96
-
- IX. THE MOCK TURTLE'S STORY 111
-
- X. THE LOBSTER QUADRILLE 126
-
- XI. WHO STOLE THE TARTS? 139
-
- XII. ALICE'S EVIDENCE 150
-
-
-
-
-LIST OF THE PLATES
-
-
- _To face page_
-
- Alice _Frontispiece_
-
- The Pool of Tears 22
-
- They all crowded round it panting and
- asking, "But who has won?" 28
-
- "Why, Mary Ann, what are you doing out
- here?" 36
-
- Advice from a Caterpillar 50
-
- An unusually large saucepan flew close
- by it, and very nearly carried it off 70
-
- It grunted again so violently that she
- looked down into its face in some alarm 74
-
- A Mad Tea-Party 84
-
- The Queen turned angrily away from him
- and said to the Knave, "Turn them over" 100
-
- The Queen never left off quarrelling
- with the other players, and shouting
- "Off with his head!" or, "Off with her
- head!" 116
-
- The Mock Turtle drew a long breath and
- said, "That's very curious" 132
-
- Who stole the Tarts? 140
-
- At this the whole pack rose up into the
- air, and came flying down upon her 158
-
-
-
-
-CHAPTER I
-
-
-[Sidenote: _Down the Rabbit-Hole_]
-
-ALICE was beginning to get very tired of sitting by her
-sister on the bank, and of having nothing to do: once or twice she had
-peeped into the book her sister was reading, but it had no pictures or
-conversations in it, "and what is the use of a book," thought Alice,
-"without pictures or conversations?"
-
-So she was considering in her own mind (as well as she could, for the
-hot day made her feel very sleepy and stupid) whether the pleasure of
-making a daisy-chain would be worth the trouble of getting up and
-picking the daisies, when suddenly a White Rabbit with pink eyes ran
-close by her.
-
-There was nothing so _very_ remarkable in that; nor did Alice think it
-so _very_ much out of the way to hear the Rabbit say to itself, "Oh
-dear! Oh dear! I shall be too late!" (when she thought it over
-afterwards, it occurred to her that she ought to have wondered at this,
-but at the time it all seemed quite natural); but when the Rabbit
-actually _took a watch out of its waistcoat-pocket_, and looked at it,
-and then hurried on, Alice started to her feet, for it flashed across
-her mind that she had never before seen a rabbit with either a
-waistcoat-pocket, or a watch to take out of it, and burning with
-curiosity, she ran across the field after it, and was just in time to
-see it pop down a large rabbit-hole under the hedge.
-
-In another moment down went Alice after it, never once considering how
-in the world she was to get out again.
-
-The rabbit-hole went straight on like a tunnel for some way, and then
-dipped suddenly down, so suddenly that Alice had not a moment to think
-about stopping herself before she found herself falling down what seemed
-to be a very deep well.
-
-[Illustration]
-
-Either the well was very deep, or she fell very slowly, for she had
-plenty of time as she went down to look about her, and to wonder what
-was going to happen next. First, she tried to look down and make out
-what she was coming to, but it was too dark to see anything; then she
-looked at the sides of the well and noticed that they were filled with
-cupboards and book-shelves: here and there she saw maps and pictures
-hung upon pegs. She took down a jar from one of the shelves as she
-passed; it was labelled "ORANGE MARMALADE," but to her disappointment it
-was empty; she did not like to drop the jar for fear of killing
-somebody underneath, so managed to put it into one of the cupboards as
-she fell past it.
-
-"Well!" thought Alice to herself. "After such a fall as this, I shall
-think nothing of tumbling down stairs! How brave they'll all think me at
-home! Why, I wouldn't say anything about it, even if I fell off the top
-of the house!" (Which was very likely true.)
-
-Down, down, down. Would the fall _never_ come to an end? "I wonder how
-many miles I've fallen by this time?" she said aloud. "I must be getting
-somewhere near the centre of the earth. Let me see: that would be four
-thousand miles down. I think--" (for, you see, Alice had learnt several
-things of this sort in her lessons in the schoolroom, and though this
-was not a _very_ good opportunity for showing off her knowledge, as
-there was no one to listen to her, still it was good practice to say it
-over) "--yes, that's about the right distance--but then I wonder what
-Latitude or Longitude I've got to?" (Alice had no idea what Latitude
-was, or Longitude either, but thought they were nice grand words to
-say.)
-
-Presently she began again. "I wonder if I shall fall right _through_ the
-earth! How funny it'll seem to come out among the people that walk with
-their heads downwards! The Antipathies, I think--" (she was rather glad
-there _was_ no one listening, this time, as it didn't sound at all the
-right word) "--but I shall have to ask them what the name of the country
-is, you know. Please, Ma'am, is this New Zealand or Australia?" (and she
-tried to curtsey as she spoke--fancy _curtseying_ as you're falling
-through the air! Do you think you could manage it?) "And what an
-ignorant little girl she'll think me! No, it'll never do to ask: perhaps
-I shall see it written up somewhere."
-
-Down, down, down. There was nothing else to do, so Alice soon began
-talking again. "Dinah'll miss me very much to-night, I should think!"
-(Dinah was the cat.) "I hope they'll remember her saucer of milk at
-tea-time. Dinah, my dear, I wish you were down here with me! There are
-no mice in the air, I'm afraid, but you might catch a bat, and that's
-very like a mouse, you know. But do cats eat bats, I wonder?" And here
-Alice began to get rather sleepy, and went on saying to herself, in a
-dreamy sort of way, "Do cats eat bats? Do cats eat bats?" and sometimes,
-"Do bats eat cats?" for, you see, as she couldn't answer either
-question, it didn't much matter which way she put it. She felt that she
-was dozing off, and had just begun to dream that she was walking hand in
-hand with Dinah, and saying to her very earnestly, "Now, Dinah, tell me
-the truth: did you ever eat a bat?" when suddenly, thump! thump! down
-she came upon a heap of sticks and dry leaves, and the fall was over.
-
-Alice was not a bit hurt, and she jumped up on to her feet in a moment:
-she looked up, but it was all dark overhead; before her was another long
-passage, and the White Rabbit was still in sight, hurrying down it.
-There was not a moment to be lost: away went Alice like the wind, and
-was just in time to hear it say, as it turned a corner, "Oh my ears and
-whiskers, how late it's getting!" She was close behind it when she
-turned the corner, but the Rabbit was no longer to be seen: she found
-herself in a long, low hall, which was lit up by a row of lamps hanging
-from the roof.
-
-There were doors all round the hall, but they were all locked; and when
-Alice had been all the way down one side and up the other, trying every
-door, she walked sadly down the middle, wondering how she was ever to
-get out again.
-
-Suddenly she came upon a little three-legged table, all made of solid
-glass; there was nothing on it but a tiny golden key, and Alice's first
-idea was that this might belong to one of the doors of the hall; but,
-alas! either the locks were too large, or the key was too small, but at
-any rate it would not open any of them. However, on the second time
-round, she came upon a low curtain she had not noticed before, and
-behind it was a little door about fifteen inches high: she tried the
-little golden key in the lock, and to her great delight it fitted!
-
-Alice opened the door and found that it led into a small passage, not
-much larger than a rat-hole: she knelt down and looked along the passage
-into the loveliest garden you ever saw. How she longed to get out of
-that dark hall, and wander about among those beds of bright flowers and
-those cool fountains, but she could not even get her head through the
-doorway; "and even if my head would go through," thought poor Alice, "it
-would be of very little use without my shoulders. Oh, how I wish I could
-shut up like a telescope! I think I could, if I only knew how to begin."
-For, you see, so many out-of-the-way things had happened lately, that
-Alice had begun to think that very few things indeed were really
-impossible.
-
-There seemed to be no use in waiting by the little door, so she went
-back to the table, half hoping she might find another key on it, or at
-any rate a book of rules for shutting people up like telescopes: this
-time she found a little bottle on it ("which certainly was not here
-before," said Alice,) and tied round the neck of the bottle was a paper
-label, with the words "DRINK ME" beautifully printed on it in large
-letters.
-
-It was all very well to say "Drink me," but the wise little Alice was
-not going to do _that_ in a hurry. "No, I'll look first," she said, "and
-see whether it's marked '_poison_' or not;" for she had read several
-nice little stories about children who had got burnt, and eaten up by
-wild beasts, and other unpleasant things, all because they _would_ not
-remember the simple rules their friends had taught them: such as, that a
-red-hot poker will burn you if you hold it too long; and that, if you
-cut your finger _very_ deeply with a knife, it usually bleeds; and she
-had never forgotten that, if you drink much from a bottle marked
-"poison," it is almost certain to disagree with you, sooner or later.
-
-However, this bottle was _not_ marked "poison," so Alice ventured to
-taste it, and finding it very nice (it had, in fact, a sort of mixed
-flavour of cherry-tart, custard, pineapple, roast turkey, coffee, and
-hot buttered toast,) she very soon finished it off.
-
- * * * * *
-
-"What a curious feeling!" said Alice. "I must be shutting up like a
-telescope."
-
-And so it was indeed: she was now only ten inches high, and her face
-brightened up at the thought that she was now the right size for going
-through that little door into that lovely garden. First, however, she
-waited for a few minutes to see if she was going to shrink any further:
-she felt a little nervous about this: "for it might end, you know," said
-Alice to herself, "in my going out altogether, like a candle. I wonder
-what I should be like then?" And she tried to fancy what the flame of a
-candle looks like after the candle is blown out, for she could not
-remember ever having seen such a thing.
-
-After a while, finding that nothing more happened, she decided on going
-into the garden at once; but, alas for poor Alice! when she got to the
-door, she found she had forgotten the little golden key, and when she
-went back to the table for it, she found she could not possibly reach
-it: she could see it quite plainly through the glass, and she tried her
-best to climb up one of the legs of the table, but it was too slippery;
-and when she had tired herself out with trying, the poor little thing
-sat down and cried.
-
-"Come, there's no use in crying like that!" said Alice to herself,
-rather sharply. "I advise you to leave off this minute!" She generally
-gave herself very good advice (though she very seldom followed it), and
-sometimes she scolded herself so severely as to bring tears into her
-eyes; and once she remembered trying to box her own ears for having
-cheated herself in a game of croquet she was playing against herself,
-for this curious child was very fond of pretending to be two people.
-"But it's no use now," thought poor Alice, "to pretend to be two people!
-Why there's hardly enough of me left to make _one_ respectable person!"
-
-Soon her eye fell on a little glass box that was lying under the table:
-she opened it, and found in it a very small cake, on which the words
-"EAT ME" were beautifully marked in currants. "Well, I'll eat it," said
-Alice, "and if it makes me grow larger, I can reach the key; and if it
-makes me grow smaller, I can creep under the door; so either way I'll
-get into the garden, and I don't care which happens!"
-
-She ate a little bit, and said anxiously to herself, "Which way? Which
-way?" holding her hand on the top of her head to feel which way it was
-growing, and she was quite surprised to find that she remained the same
-size; to be sure, this is what generally happens when one eats cake,
-but Alice had got so much into the way of expecting nothing but
-out-of-the-way things to happen, that it seemed quite dull and stupid
-for life to go on in the common way.
-
-So she set to work, and very soon finished off the cake.
-
- * * * * *
-
-
-
-
-CHAPTER II
-
-
-[Sidenote: _Pool of Tears_]
-
-"CURIOUSER and curiouser!" cried Alice (she was so much
-surprised, that for a moment she quite forgot how to speak good
-English); "now I'm opening out like the largest telescope that ever was!
-Good-bye, feet!" (for when she looked down at her feet, they seemed to
-be almost out of sight, they were getting so far off). "Oh, my poor
-little feet, I wonder who will put on your shoes and stockings for you
-now, dears? I'm sure _I_ sha'n't be able! I shall be a great deal too
-far off to trouble myself about you: you must manage the best way you
-can--but I must be kind to them," thought Alice, "or perhaps they won't
-walk the way I want to go! Let me see: I'll give them a new pair of
-boots every Christmas."
-
-And she went on planning to herself how she would manage it. "They must
-go by the carrier," she thought; "and how funny it'll seem, sending
-presents to one's own feet! And how odd the directions will look!
-
- Alice's Right Foot, Esq.
- Hearthrug,
- near the Fender,
- (with Alice's love).
-
-Oh dear, what nonsense I'm talking!"
-
-Just then her head struck against the roof of the hall: in fact she was
-now rather more than nine feet high, and she at once took up the little
-golden key and hurried off to the garden door.
-
-Poor Alice! It was as much as she could do, lying down on one side, to
-look through into the garden with one eye; but to get through was more
-hopeless than ever: she sat down and began to cry again.
-
-"You ought to be ashamed of yourself," said Alice, "a great girl like
-you" (she might well say this), "to go on crying in this way! Stop this
-moment, I tell you!" But she went on all the same, shedding gallons of
-tears, until there was a large pool all round her, about four inches
-deep and reaching half down the hall.
-
-[Illustration: CURIOUSER AND CURIOUSER]
-
-After a time she heard a little pattering of feet in the distance, and
-she hastily dried her eyes to see what was coming. It was the White
-Rabbit returning, splendidly dressed, with a pair of white kid gloves in
-one hand and a large fan in the other: he came trotting along in a great
-hurry, muttering to himself as he came, "Oh! the Duchess, the Duchess!
-Oh! won't she be savage if I've kept her waiting!" Alice felt so
-desperate that she was ready to ask help of any one; so, when the
-Rabbit came near her, she began, in a low, timid voice, "If you please,
-sir----" The Rabbit started violently, dropped the white kid gloves and
-the fan, and scurried away into the darkness as hard as he could go.
-
-Alice took up the fan and gloves, and, as the hall was very hot, she
-kept fanning herself all the time she went on talking! "Dear, dear! How
-queer everything is to-day! And yesterday things went on just as usual.
-I wonder if I've been changed during the night? Let me think: _was_ I
-the same when I got up this morning? I almost think I can remember
-feeling a little different. But if I'm not the same, the next question
-is, who in the world am I? Ah, _that's_ the great puzzle!" And she began
-thinking over all the children she knew that were of the same age as
-herself, to see if she could have been changed for any of them.
-
-"I'm sure I'm not Ada," she said, "for her hair goes in such long
-ringlets, and mine doesn't go in ringlets at all; and I'm sure I can't
-be Mabel, for I know all sorts of things, and she, oh! she knows such a
-very little! Besides, _she's_ she, and _I'm_ I, and--oh dear, how
-puzzling it all is! I'll try if I know all the things I used to know.
-Let me see: four times five is twelve, and four times six is thirteen,
-and four times seven is--oh dear! I shall never get to twenty at that
-rate! However, the Multiplication Table doesn't signify: let's try
-Geography. London is the capital of Paris, and Paris is the capital of
-Rome, and Rome--no, _that's_ all wrong, I'm certain! I must have been
-changed for Mabel! I'll try and say '_How doth the little----_'" and she
-crossed her hands on her lap as if she were saying lessons, and began to
-repeat it, but her voice sounded hoarse and strange, and the words did
-not come the same as they used to do:--
-
- "How doth the little crocodile
- Improve his shining tail,
- And pour the waters of the Nile
- On every golden scale!
-
- "How cheerfully he seems to grin,
- How neatly spreads his claws,
- And welcomes little fishes in,
- With gently smiling jaws!"
-
-"I'm sure those are not the right words," said poor Alice, and her eyes
-filled with tears again as she went on. "I must be Mabel, after all, and
-I shall have to go and live in that poky little house, and have next to
-no toys to play with, and oh! ever so many lessons to learn! No, I've
-made up my mind about it; if I'm Mabel, I'll stay down here! It'll be no
-use their putting their heads down and saying, 'Come up again, dear!' I
-shall only look up and say, 'Who am I then? Tell me that first, and
-then, if I like being that person, I'll come up: if not, I'll stay down
-here till I'm somebody else'--but, oh dear!" cried Alice with a sudden
-burst of tears, "I do wish they _would_ put their heads down! I am so
-_very_ tired of being all alone here!"
-
-As she said this she looked down at her hands, and was surprised to see
-that she had put on one of the Rabbit's little white kid gloves while
-she was talking. "How _can_ I have done that?" she thought. "I must be
-growing small again." She got up and went to the table to measure
-herself by it, and found that, as nearly as she could guess, she was now
-about two feet high, and was going on shrinking rapidly: she soon found
-out that the cause of this was the fan she was holding, and she dropped
-it hastily, just in time to avoid shrinking away altogether.
-
-"That _was_ a narrow escape!" said Alice, a good deal frightened at the
-sudden change, but very glad to find herself still in existence; "and
-now for the garden!" and she ran with all speed back to the little door:
-but alas! the little door was shut again, and the little golden key was
-lying on the glass table as before, "and things are worse than ever,"
-thought the poor child, "for I never was so small as this before, never!
-And I declare it's too bad, that it is!"
-
-As she said these words her foot slipped, and in another moment, splash!
-she was up to her chin in salt water. Her first idea was that she had
-somehow fallen into the sea, "and in that case I can go back by
-railway," she said to herself. (Alice had been to the seaside once in
-her life, and had come to the general conclusion, that wherever you go
-to on the English coast you find a number of bathing machines in the
-sea, some children digging in the sand with wooden spades, then a row
-of lodging houses, and behind them a railway station.) However, she soon
-made out that she was in the pool of tears which she had wept when she
-was nine feet high.
-
-"I wish I hadn't cried so much!" said Alice, as she swam about, trying
-to find her way out. "I shall be punished for it now, I suppose, by
-being drowned in my own tears! That _will_ be a queer thing, to be sure!
-However, everything is queer to-day."
-
-Just then she heard something splashing about in the pool a little way
-off, and she swam nearer to make out what it was: at first she thought
-it must be a walrus or hippopotamus, but then she remembered how small
-she was now, and she soon made out that it was only a mouse that had
-slipped in like herself.
-
-"Would it be of any use now," thought Alice, "to speak to this mouse?
-Everything is so out-of-the-way down here, that I should think very
-likely it can talk: at any rate, there's no harm in trying." So she
-began: "O Mouse, do you know the way out of this pool? I am very tired
-of swimming about here, O Mouse!" (Alice thought this must be the right
-way of speaking to a mouse; she had never done such a thing before, but
-she remembered having seen in her brother's Latin Grammar, "A mouse--of
-a mouse--to a mouse--a mouse--O mouse!") The Mouse looked at her rather
-inquisitively, and seemed to her to wink with one of its little eyes,
-but it said nothing.
-
-"Perhaps it doesn't understand English," thought Alice; "I daresay it's
-a French mouse, come over with William the Conqueror." (For, with all
-her knowledge of history, Alice had no very clear notion how long ago
-anything had happened.) So she began again: "Où est ma chatte?" which
-was the first sentence in her French lesson-book. The Mouse gave a
-sudden leap out of the water, and seemed to quiver all over with fright.
-"Oh, I beg your pardon!" cried Alice hastily, afraid that she had hurt
-the poor animal's feelings. "I quite forgot you didn't like cats."
-
-"Not like cats!" cried the Mouse, in a shrill, passionate voice. "Would
-_you_ like cats if you were me?"
-
-"Well, perhaps not," said Alice in a soothing tone: "don't be angry
-about it. And yet I wish I could show you our cat Dinah: I think you'd
-take a fancy to cats if you could only see her. She is such a dear quiet
-thing," Alice went on, half to herself, as she swam lazily about in the
-pool, "and she sits purring so nicely by the fire, licking her paws and
-washing her face--and she is such a nice soft thing to nurse--and she's
-such a capital one for catching mice----oh, I beg your pardon!" cried
-Alice again, for this time the Mouse was bristling all over, and she
-felt certain it must be really offended. "We won't talk about her any
-more if you'd rather not."
-
-"We, indeed!" cried the Mouse, who was trembling down to the end of his
-tail. "As if _I_ would talk on such a subject! Our family always _hated_
-cats: nasty, low, vulgar things! Don't let me hear the name again!"
-
-[Illustration: _The Pool of Tears_]
-
-"I won't indeed!" said Alice, in a great hurry to change the subject of
-conversation. "Are you--are you fond--of--of dogs?" The Mouse did not
-answer, so Alice went on eagerly: "There is such a nice little dog near
-our house I should like to show you! A little bright-eyed terrier, you
-know, with oh, such long curly brown hair! And it'll fetch things
-when you throw them, and it'll sit up and beg for its dinner, and all
-sorts of things--I can't remember half of them--and it belongs to a
-farmer, you know, and he says it's so useful, it's worth a hundred
-pounds! He says it kills all the rats and--oh dear!" cried Alice in a
-sorrowful tone, "I'm afraid I've offended it again!" For the Mouse was
-swimming away from her as hard as it could go, and making quite a
-commotion in the pool as it went.
-
-So she called softly after it, "Mouse dear! Do come back again, and we
-won't talk about cats or dogs either, if you don't like them!"
-
-When the Mouse heard this, it turned round and swam slowly back to her:
-its face was quite pale (with passion, Alice thought), and it said in a
-low trembling voice, "Let us get to the shore, and then I'll tell you my
-history, and you'll understand why it is I hate cats and dogs."
-
-It was high time to go, for the pool was getting quite crowded with the
-birds and animals that had fallen into it: there were a Duck and a Dodo,
-a Lory and an Eaglet, and several other curious creatures. Alice led the
-way, and the whole party swam to the shore.
-
-
-
-
-CHAPTER III
-
-
-[Sidenote: _A Caucus-race and a Long Tale_]
-
-THEY were indeed a queer-looking party that assembled on
-the bank--the birds with draggled feathers, the animals with their fur
-clinging close to them, and all dripping wet, cross, and uncomfortable.
-
-The first question of course was, how to get dry again: they had a
-consultation about this, and after a few minutes it seemed quite natural
-to Alice to find herself talking familiarly with them, as if she had
-known them all her life. Indeed, she had quite a long argument with the
-Lory, who at last turned sulky, and would only say, "I am older than
-you, and must know better;" and this Alice would not allow without
-knowing how old it was, and, as the Lory positively refused to tell its
-age, there was no more to be said.
-
-At last the Mouse, who seemed to be a person of authority among them,
-called out "Sit down, all of you, and listen to me! _I'll_ soon make you
-dry enough!" They all sat down at once, in a large ring, with the Mouse
-in the middle. Alice kept her eyes anxiously fixed on it, for she felt
-sure she would catch a bad cold if she did not get dry very soon.
-
-"Ahem!" said the Mouse with an important air. "Are you all ready? This
-is the driest thing I know. Silence all round, if you please! 'William
-the Conqueror, whose cause was favoured by the pope, was soon submitted
-to by the English, who wanted leaders, and had been of late much
-accustomed to usurpation and conquest. Edwin and Morcar, the earls of
-Mercia and Northumbria--'"
-
-"Ugh!" said the Lory, with a shiver.
-
-"I beg your pardon!" said the Mouse, frowning, but very politely. "Did
-you speak?"
-
-"Not I!" said the Lory hastily.
-
-"I thought you did," said the Mouse, "--I proceed. 'Edwin and Morcar,
-the earls of Mercia and Northumbria, declared for him: and even
-Stigand, the patriotic Archbishop of Canterbury, found it advisable--'"
-
-"Found _what_?" said the Duck.
-
-"Found _it_," the Mouse replied rather crossly: "of course you know what
-'it' means."
-
-"I know what 'it' means well enough, when _I_ find a thing," said the
-Duck; "it's generally a frog or a worm. The question is, what did the
-archbishop find?"
-
-The Mouse did not notice this question, but hurriedly went on, "'--found
-it advisable to go with Edgar Atheling to meet William and offer him the
-crown. William's conduct at first was moderate. But the insolence of his
-Normans--' How are you getting on now, my dear?" it continued, turning
-to Alice as it spoke.
-
-"As wet as ever," said Alice in a melancholy tone; "doesn't seem to dry
-me at all."
-
-"In that case," said the Dodo solemnly, rising to its feet, "I move that
-the meeting adjourn, for the immediate adoption of more energetic
-remedies----"
-
-"Speak English!" said the Eaglet. "I don't know the meaning of half
-those long words, and, what's more, I don't believe you do either!" And
-the Eaglet bent down its head to hide a smile: some of the other birds
-tittered audibly.
-
-"What I was going to say," said the Dodo in an offended tone, "was that
-the best thing to get us dry would be a Caucus-race."
-
-"What _is_ a Caucus-race?" said Alice; not that she much wanted to know,
-but the Dodo had paused as if it thought that _somebody_ ought to speak,
-and no one else seemed inclined to say anything.
-
-"Why," said the Dodo, "the best way to explain it is to do it." (And, as
-you might like to try the thing yourself some winter day, I will tell
-you how the Dodo managed it.)
-
-First it marked out a race-course, in a sort of circle, ("the exact
-shape doesn't matter," it said,) and then all the party were placed
-along the course, here and there. There was no "One, two, three, and
-away," but they began running when they liked, and left off when they
-liked, so that it was not easy to know when the race was over. However,
-when they had been running half an hour or so, and were quite dry again,
-the Dodo suddenly called "The race is over!" and they all crowded round
-it, panting, and asking "But who has won?"
-
-This question the Dodo could not answer without a great deal of thought,
-and it stood for a long time with one finger pressed upon its forehead
-(the position in which you usually see Shakespeare, in the pictures of
-him), while the rest waited in silence. At last the Dodo said
-"_Everybody_ has won, and _all_ must have prizes."
-
-"But who is to give the prizes?" quite a chorus of voices asked.
-
-"Why, _she_, of course," said the Dodo, pointing to Alice with one
-finger; and the whole party at once crowded round her, calling out in a
-confused way, "Prizes! Prizes!"
-
-Alice had no idea what to do, and in despair she put her hand in her
-pocket, and pulled out a box of comfits (luckily the salt water had not
-got into it), and handed them round as prizes. There was exactly one
-apiece all round.
-
- _They all crowded round it panting and asking,
- "But who has won?"_
-
-[Illustration]
-
-"But she must have a prize herself, you know," said the Mouse.
-
-"Of course," the Dodo replied very gravely.
-
-"What else have you got in your pocket?" it went on, turning to Alice.
-
-"Only a thimble," said Alice sadly.
-
-"Hand it over here," said the Dodo.
-
-Then they all crowded round her once more, while the Dodo solemnly
-presented the thimble, saying "We beg your acceptance of this elegant
-thimble;" and, when it had finished this short speech, they all cheered.
-
-Alice thought the whole thing very absurd, but they all looked so grave
-that she did not dare to laugh; and, as she could not think of anything
-to say, she simply bowed, and took the thimble, looking as solemn as she
-could.
-
-The next thing was to eat the comfits; this caused some noise and
-confusion, as the large birds complained that they could not taste
-theirs, and the small ones choked and had to be patted on the back.
-However, it was over at last, and they sat down again in a ring, and
-begged the Mouse to tell them something more.
-
-"You promised to tell me your history, you know," said Alice, "and why
-it is you hate--C and D," she added in a whisper, half afraid that it
-would be offended again.
-
-[Illustration]
-
-"Mine is a long and sad tale!" said the Mouse, turning to Alice and
-sighing.
-
-"It _is_ a long tail, certainly," said Alice, looking down with wonder
-at the Mouse's tail; "but why do you call it sad?" And she kept on
-puzzling about it while the Mouse was speaking, so that her idea of the
-tale was something like this:--
-
- "Fury said to
- a mouse, That
- he met in the
- house, 'Let
- us both go
- to law: _I_
- will prose-
- cute _you_.--
- Come, I'll
- take no de-
- nial: We
- must have
- the trial;
- For really
- this morn-
- ing I've
- nothing
- to do.'
- Said the
- mouse to
- the cur,
- 'Such a
- trial, dear
- sir, With
- no jury
- or judge,
- would
- be wast-
- ing our
- breath.'
- 'I'll be
- judge,
- I'll be
- jury,'
- said
- cun-
- ning
- old
- Fury:
- 'I'll
- try
- the
- whole
- cause,
- and
- con-
- demn
- you to
- death.'
-
-"You are not attending!" said the Mouse to Alice severely. "What are you
-thinking of?"
-
-"I beg your pardon," said Alice very humbly: "you had got to the fifth
-bend, I think?"
-
-"I had _not_!" cried the Mouse, angrily.
-
-"A knot!" said Alice, always ready to make herself useful, and looking
-anxiously about her. "Oh, do let me help to undo it!"
-
-"I shall do nothing of the sort," said the Mouse, getting up and walking
-away. "You insult me by talking such nonsense!"
-
-"I didn't mean it!" pleaded poor Alice. "But you're so easily offended,
-you know!"
-
-The Mouse only growled in reply.
-
-"Please come back and finish your story!" Alice called after it. And the
-others all joined in chorus, "Yes, please do!" but the Mouse only shook
-its head impatiently and walked a little quicker.
-
-"What a pity it wouldn't stay!" sighed the Lory, as soon as it was quite
-out of sight; and an old Crab took the opportunity of saying to her
-daughter, "Ah, my dear! Let this be a lesson to you never to lose
-_your_ temper!" "Hold your tongue, Ma!" said the young Crab, a little
-snappishly. "You're enough to try the patience of an oyster!"
-
-"I wish I had our Dinah here, I know I do!" said Alice aloud, addressing
-nobody in particular. "She'd soon fetch it back!"
-
-"And who is Dinah, if I might venture to ask the question?" said the
-Lory.
-
-Alice replied eagerly, for she was always ready to talk about her pet:
-"Dinah's our cat. And she's such a capital one for catching mice, you
-ca'n't think! And oh, I wish you could see her after the birds! Why,
-she'll eat a little bird as soon as look at it!"
-
-This speech caused a remarkable sensation among the party. Some of the
-birds hurried off at once; one old Magpie began wrapping itself up very
-carefully, remarking "I really must be getting home; the night-air
-doesn't suit my throat!" and a Canary called out in a trembling voice to
-its children "Come away, my dears! It's high time you were all in bed!"
-On various pretexts they all moved off, and Alice was soon left alone.
-
-"I wish I hadn't mentioned Dinah!" she said to herself in a melancholy
-tone. "Nobody seems to like her, down here, and I'm sure she's the best
-cat in the world! Oh, my dear Dinah! I wonder if I shall ever see you
-any more!" And here poor Alice began to cry again, for she felt very
-lonely and low-spirited. In a little while, however, she again heard a
-little pattering of footsteps in the distance, and she looked up
-eagerly, half hoping that the Mouse had changed his mind, and was coming
-back to finish his story.
-
-
-
-
-CHAPTER IV
-
-
-[Sidenote: _The Rabbit sends in a Little Bill_]
-
-IT was the White Rabbit, trotting slowly back again, and
-looking anxiously about as it went, as if it had lost something; and she
-heard it muttering to itself, "The Duchess! The Duchess! Oh my dear
-paws! Oh my fur and whiskers! She'll get me executed, as sure as ferrets
-are ferrets! Where _can_ I have dropped them, I wonder?" Alice guessed
-in a moment that it was looking for the fan and the pair of white kid
-gloves, and she very good-naturedly began hunting about for them, but
-they were nowhere to be seen--everything seemed to have changed since
-her swim in the pool, and the great hall, with the glass table and the
-little door, had vanished completely.
-
-Very soon the Rabbit noticed Alice, as she went hunting about, and
-called out to her in an angry tone, "Why, Mary Ann, what _are_ you
-doing out here? Run home this moment, and fetch me a pair of gloves and
-a fan! Quick, now!" And Alice was so much frightened that she ran off at
-once in the direction it pointed to, without trying to explain the
-mistake it had made.
-
-"He took me for his housemaid," she said to herself as she ran. "How
-surprised he'll be when he finds out who I am! But I'd better take him
-his fan and gloves--that is, if I can find them." As she said this, she
-came upon a neat little house, on the door of which was a bright brass
-plate with the name "W. RABBIT" engraved upon it. She went in without
-knocking, and hurried up stairs, in great fear lest she should meet the
-real Mary Ann, and be turned out of the house before she had found the
-fan and gloves.
-
-[Illustration: "_Why, Mary Ann, what are you doing out here?_"]
-
-"How queer it seems," Alice said to herself, "to be going messages for a
-rabbit! I suppose Dinah'll be sending me on messages next!" And she
-began fancying the sort of thing that would happen: "'Miss Alice! Come
-here directly, and get ready for your walk!' 'Coming in a minute, nurse!
-But I've got to watch this mouse-hole till Dinah comes back, and see
-that the mouse doesn't get out.' Only I don't think," Alice went on,
-"that they'd let Dinah stop in the house if it began ordering people
-about like that!"
-
-By this time she had found her way into a tidy little room with a table
-in the window, and on it (as she had hoped) a fan and two or three pairs
-of tiny white kid gloves: she took up the fan and a pair of the gloves,
-and was just going to leave the room, when her eye fell upon a little
-bottle that stood near the looking-glass. There was no label this time
-with the words "DRINK ME," but nevertheless she uncorked it and put it
-to her lips. "I know _something_ interesting is sure to happen," she
-said to herself, "whenever I eat or drink anything; so I'll just see
-what this bottle does. I do hope it will make me grow large again, for
-really I'm quite tired of being such a tiny little thing!"
-
-It did so indeed, and much sooner than she had expected: before she had
-drunk half the bottle, she found her head pressing against the ceiling,
-and had to stoop to save her neck from being broken. She hastily put
-down the bottle, saying to herself "That's quite enough--I hope I
-sha'n't grow any more--As it is, I can't get out at the door--I do wish
-I hadn't drunk quite so much!"
-
-Alas! it was too late to wish that! She went on growing, and growing,
-and very soon had to kneel down on the floor: in another minute there
-was not even room for this, and she tried the effect of lying down with
-one elbow against the door, and the other arm curled round her head.
-Still she went on growing, and, as a last resource, she put one arm out
-of the window, and one foot up the chimney, and said to herself "Now I
-can do no more, whatever happens. What _will_ become of me?"
-
-Luckily for Alice, the little magic bottle had now had its full effect,
-and she grew no larger: still it was very uncomfortable, and, as there
-seemed to be no sort of chance of her ever getting out of the room
-again, no wonder she felt unhappy.
-
-"It was much pleasanter at home," thought poor Alice, "when one wasn't
-always growing larger and smaller, and being ordered about by mice and
-rabbits. I almost wish I hadn't gone down that rabbit-hole--and
-yet--and yet--it's rather curious, you know, this sort of life! I do
-wonder what _can_ have happened to me! When I used to read fairy-tales,
-I fancied that kind of thing never happened, and now here I am in the
-middle of one! There ought to be a book written about me, that there
-ought! And when I grow up, I'll write one--but I'm grown up now," she
-added in a sorrowful tone; "at least there's no room to grow up any more
-_here_."
-
-"But then," thought Alice, "shall I _never_ get any older than I am now?
-That'll be a comfort, one way--never to be an old woman--but
-then--always to have lessons to learn! Oh, I shouldn't like _that_!"
-
-"Oh, you foolish Alice!" she answered herself. "How can you learn
-lessons in here? Why, there's hardly room for _you_, and no room at all
-for any lesson-books!"
-
-And so she went on, taking first one side and then the other, and making
-quite a conversation of it altogether; but after a few minutes she heard
-a voice outside, and stopped to listen.
-
-"Mary Ann! Mary Ann!" said the voice. "Fetch me my gloves this moment!"
-Then came a little pattering of feet on the stairs. Alice knew it was
-the Rabbit coming to look for her, and she trembled till she shook the
-house, quite forgetting that she was now about a thousand times as large
-as the Rabbit, and had no reason to be afraid of it.
-
-Presently the Rabbit came up to the door, and tried to open it; but, as
-the door opened inwards, and Alice's elbow was pressed hard against it,
-that attempt proved a failure. Alice heard it say to itself "Then I'll
-go round and get in at the window."
-
-"_That_ you won't" thought Alice, and, after waiting till she fancied
-she heard the Rabbit just under the window, she suddenly spread out her
-hand, and made a snatch in the air. She did not get hold of anything,
-but she heard a little shriek and a fall, and a crash of broken glass,
-from which she concluded that it was just possible it had fallen into a
-cucumber-frame, or something of the sort.
-
-Next came an angry voice--the Rabbit's--"Pat! Pat! Where are you?" And
-then a voice she had never heard before, "Sure then I'm here! Digging
-for apples, yer honour!"
-
-"Digging for apples, indeed!" said the Rabbit angrily. "Here! Come and
-help me out of _this_!" (Sounds of more broken glass.)
-
-"Now tell me, Pat, what's that in the window?"
-
-"Sure, it's an arm, yer honour." (He pronounced it "arrum.")
-
-"An arm, you goose! Who ever saw one that size? Why, it fills the whole
-window!"
-
-"Sure, it does, yer honour? but it's an arm for all that."
-
-"Well, it's got no business there, at any rate: go and take it away!"
-
-There was a long silence after this, and Alice could only hear whispers
-now and then; such as, "Sure, I don't like it, yer honour, at all, at
-all!" "Do as I tell you, you coward!" and at last she spread out her
-hand again, and made another snatch in the air. This time there were
-_two_ little shrieks, and more sounds of broken glass. "What a number of
-cucumber-frames there must be!" thought Alice. "I wonder what they'll do
-next! As for pulling me out of the window, I only wish they _could_!
-I'm sure _I_ don't want to stay in here any longer!"
-
-She waited for some time without hearing anything more: at last came a
-rumbling of little cart-wheels, and the sound of a good many voices all
-talking together: she made out the words: "Where's the other
-ladder?--Why I hadn't to bring but one; Bill's got the other--Bill!
-Fetch it here, lad!--Here, put 'em up at this corner--No, tie 'em
-together first--they don't reach half high enough yet--Oh! they'll do
-well enough; don't be particular--Here, Bill! catch hold of this
-rope--Will the roof bear?--Mind that loose slate--Oh, it's coming down!
-Heads below!" (a loud crash)--"Now, who did that?--It was Bill, I
-fancy--Who's to go down the chimney?--Nay, _I_ sha'n't! _You_ do
-it!--_That_ I won't, then! Bill's to go down--Here, Bill! the master
-says you've to go down the chimney!"
-
-"Oh! So Bill's got to come down the chimney, has he?" said Alice to
-herself. "Why, they seem to put everything upon Bill! I wouldn't be in
-Bill's place for a good deal: this fireplace is narrow, to be sure; but
-I _think_ I can kick a little!"
-
-She drew her foot as far down the chimney as she could, and waited till
-she heard a little animal (she couldn't guess of what sort it was)
-scratching and scrambling about in the chimney close above her: then,
-saying to herself "This is Bill," she gave one sharp kick, and waited to
-see what would happen next.
-
-The first thing she heard was a general chorus of "There goes Bill!"
-then the Rabbit's voice alone--"Catch him, you by the hedge!" then
-silence, and then another confusion of voices--"Hold up his head--Brandy
-now--Don't choke him--How was it, old fellow? What happened to you? Tell
-us all about it!"
-
-At last came a little feeble, squeaking voice, ("That's Bill," thought
-Alice,) "Well, I hardly know--No more, thank ye; I'm better now--but I'm
-a deal too flustered to tell you--all I know is, something comes at me
-like a Jack-in-the-box, and up I goes like a sky-rocket!"
-
-"So you did, old fellow!" said the others.
-
-"We must burn the house down!" said the Rabbit's voice. And Alice
-called out as loud as she could, "If you do, I'll set Dinah at you!"
-
-There was a dead silence instantly, and Alice thought to herself "I
-wonder what they _will_ do next! If they had any sense, they'd take the
-roof off." After a minute or two they began moving about again, and
-Alice heard the Rabbit say "A barrowful will do, to begin with."
-
-"A barrowful of _what_?" thought Alice. But she had not long to doubt,
-for the next moment a shower of little pebbles came rattling in at the
-window, and some of them hit her in the face. "I'll put a stop to this,"
-she said to herself, and shouted out "You'd better not do that again!"
-which produced another dead silence.
-
-Alice noticed with some surprise that the pebbles were all turning into
-little cakes as they lay on the floor, and a bright idea came into her
-head. "If I eat one of these cakes," she thought, "it's sure to make
-_some_ change in my size; and, as it can't possibly make me larger, it
-must make me smaller, I suppose."
-
-So she swallowed one of the cakes, and was delighted to find that she
-began shrinking directly. As soon as she was small enough to get through
-the door, she ran out of the house, and found quite a crowd of little
-animals and birds waiting outside. The poor little Lizard, Bill, was in
-the middle, being held up by two guinea-pigs, who were giving it
-something out of a bottle. They all made a rush at Alice the moment she
-appeared; but she ran off as hard as she could, and soon found herself
-safe in a thick wood.
-
-"The first thing I've got to do," said Alice to herself, as she wandered
-about in the wood, "is to grow to my right size again; and the second
-thing is to find my way into that lovely garden. I think that will be
-the best plan."
-
-It sounded an excellent plan, no doubt, and very neatly and simply
-arranged; the only difficulty was, that she had not the smallest idea
-how to set about it; and, while she was peering about anxiously among
-the trees, a little sharp bark just over her head made her look up in a
-great hurry.
-
-An enormous puppy was looking down at her with large round eyes, and
-feebly stretching out one paw, trying to touch her. "Poor little
-thing!" said Alice, in a coaxing tone, and she tried hard to whistle to
-it; but she was terribly frightened all the time at the thought that it
-might be hungry, in which case it would be very likely to eat her up in
-spite of all her coaxing.
-
-Hardly knowing what she did, she picked up a little bit of stick, and
-held it out to the puppy; whereupon the puppy jumped into the air off
-all its feet at once, with a yelp of delight, and rushed at the stick,
-and made believe to worry it; then Alice dodged behind a great thistle,
-to keep herself from being run over; and, the moment she appeared on the
-other side, the puppy made another rush at the stick, and tumbled head
-over heels in its hurry to get hold of it; then Alice, thinking it was
-very like having a game of play with a cart-horse, and expecting every
-moment to be trampled under its feet, ran round the thistle again; then
-the puppy began a series of short charges at the stick, running a little
-way forwards each time and a long way back, and barking hoarsely all the
-while, till at last it sat down a good way off, panting, with its
-tongue hanging out of its mouth, and its great eyes half shut.
-
-This seemed to Alice a good opportunity for making her escape; so she
-set off at once, and ran till she was quite tired and out of breath, and
-till the puppy's bark sounded quite faint in the distance.
-
-"And yet what a dear little puppy it was!" said Alice, as she leant
-against a buttercup to rest herself, and fanned herself with one of the
-leaves. "I should have liked teaching it tricks very much, if--if I'd
-only been the right size to do it! Oh, dear! I'd nearly forgotten that
-I've got to grow up again! Let me see--how _is_ it to be managed? I
-suppose I ought to eat or drink something or other; but the great
-question is, what?"
-
-The great question certainly was, what? Alice looked all round her at
-the flowers and the blades of grass, but she could not see anything that
-looked like the right thing to eat or drink under the circumstances.
-There was a large mushroom growing near her, about the same height as
-herself; and, when she had looked under it, and on both sides of it, and
-behind it, it occurred to her that she might as well look and see what
-was on the top of it.
-
-She stretched herself up on tiptoe, and peeped over the edge of the
-mushroom, and her eyes immediately met those of a large blue
-caterpillar, that was sitting on the top with its arms folded, quietly
-smoking a long hookah, and taking not the smallest notice of her or of
-anything else.
-
-
-
-
-CHAPTER V
-
-
-[Sidenote: _Advice from a Caterpillar_]
-
-THE Caterpillar and Alice looked at each other for some
-time in silence: at last the Caterpillar took the hookah out of its
-mouth, and addressed her in a languid, sleepy voice.
-
-"Who are _you_?" said the Caterpillar.
-
-This was not an encouraging opening for a conversation. Alice replied,
-rather shyly, "I hardly know, sir, just at present--at least I know who
-I _was_ when I got up this morning, but I think I must have been changed
-several times since then."
-
-"What do you mean by that?" said the Caterpillar sternly. "Explain
-yourself!"
-
-"I can't explain _myself_, I'm afraid, sir," said Alice, "because I'm
-not myself, you see."
-
-"I don't see," said the Caterpillar.
-
-"I'm afraid I can't put it more clearly," Alice replied very politely,
-"for I can't understand it myself to begin with; and being so many
-different sizes in a day is very confusing."
-
-"It isn't," said the Caterpillar.
-
-"Well, perhaps you haven't found it so yet," said Alice, "but when you
-have to turn into a chrysalis--you will some day, you know--and then
-after that into a butterfly, I should think you'll feel it a little
-queer, won't you?"
-
-"Not a bit," said the Caterpillar.
-
-"Well, perhaps your feelings may be different," said Alice; "all I know
-is, it would feel very queer to _me_."
-
-"You!" said the Caterpillar contemptuously. "Who are _you_?"
-
-Which brought them back again to the beginning of the conversation.
-Alice felt a little irritated at the Caterpillar's making such _very_
-short remarks, and she drew herself up and said, very gravely, "I think
-you ought to tell me who _you_ are, first."
-
-"Why?" said the Caterpillar.
-
-[Illustration: _Advice from a Caterpillar_]
-
-Here was another puzzling question; and as Alice could not think of any
-good reason, and as the Caterpillar seemed to be in a _very_
-unpleasant state of mind, she turned away.
-
-"Come back!" the Caterpillar called after her. "I've something important
-to say!"
-
-This sounded promising, certainly: Alice turned and came back again.
-
-"Keep your temper," said the Caterpillar.
-
-"Is that all?" said Alice, swallowing down her anger as well as she
-could.
-
-"No," said the Caterpillar.
-
-Alice thought she might as well wait, as she had nothing else to do, and
-perhaps after all it might tell her something worth hearing. For some
-minutes it puffed away without speaking, but at last it unfolded its
-arms, took the hookah out of its mouth again, and said, "So you think
-you're changed, do you?"
-
-"I'm afraid I am, sir," said Alice; "I can't remember things as I
-used--and I don't keep the same size for ten minutes together!"
-
-"Can't remember _what_ things?" said the Caterpillar.
-
-"Well, I've tried to say '_How doth the little busy bee_,' but it all
-came different!" Alice replied in a very melancholy voice.
-
-"Repeat '_You are old, Father William_,'" said the Caterpillar.
-
-Alice folded her hands, and began:--
-
- "You are old, Father William," the young man said,
- "And your hair has become very white;
- And yet you incessantly stand on your head--
- Do you think, at your age, it is right?"
-
- "In my youth," Father William replied to his son,
- "I feared it might injure the brain;
- But, now that I'm perfectly sure I have none,
- Why, I do it again and again."
-
- "You are old," said the youth, "as I mentioned before,
- And have grown most uncommonly fat;
- Yet you turned a back-somersault in at the door--
- Pray, what is the reason of that?"
-
- "In my youth," said the sage, as he shook his grey locks,
- "I kept all my limbs very supple
- By the use of this ointment--one shilling the box--
- Allow me to sell you a couple?"
-
- "You are old," said the youth, "and your jaws are too weak
- For anything tougher than suet;
- Yet you finished the goose, with the bones and the beak--
- Pray, how did you manage to do it?"
-
- "In my youth," said his father, "I took to the law
- And argued each case with my wife;
- And the muscular strength, which it gave to my jaw,
- Has lasted the rest of my life."
-
- "You are old," said the youth, "one would hardly suppose
- That your eye was as steady as ever;
- Yet you balanced an eel on the end of your nose--
- What made you so awfully clever?"
-
- "I have answered three questions, and that is enough,"
- Said his father; "don't give yourself airs!
- Do you think I can listen all day to such stuff?
- Be off, or I'll kick you down stairs!"
-
-"That is not said right," said the Caterpillar.
-
-"Not _quite_ right, I'm afraid," said Alice, timidly; "some of the
-words have got altered."
-
-"It is wrong from beginning to end," said the Caterpillar, decidedly,
-and there was silence for some minutes.
-
-The Caterpillar was the first to speak.
-
-"What size do you want to be?" it asked.
-
-"Oh, I'm not particular as to size," Alice hastily replied; "only one
-doesn't like changing so often, you know."
-
-"I _don't_ know," said the Caterpillar.
-
-Alice said nothing: she had never been so much contradicted in all her
-life before, and she felt that she was losing her temper.
-
-"Are you content now?" said the Caterpillar.
-
-"Well, I should like to be a _little_ larger, sir, if you wouldn't
-mind," said Alice: "three inches is such a wretched height to be."
-
-"It is a very good height indeed!" said the Caterpillar angrily, rearing
-itself upright as it spoke (it was exactly three inches high).
-
-"But I'm not used to it!" pleaded poor Alice in a piteous tone. And she
-thought to herself, "I wish the creatures wouldn't be so easily
-offended!"
-
-"You'll get used to it in time," said the Caterpillar; and it put its
-hookah into its mouth and began smoking again.
-
-This time Alice waited patiently until it chose to speak again. In a
-minute or two the Caterpillar took the hookah out of its mouth and
-yawned once or twice, and shook itself. Then it got down off the
-mushroom, and crawled away into the grass, merely remarking as it went,
-"One side will make you grow taller, and the other side will make you
-grow shorter."
-
-"One side of _what_? The other side of _what_?" thought Alice to
-herself.
-
-"Of the mushroom," said the Caterpillar, just as if she had asked it
-aloud; and in another moment it was out of sight.
-
-Alice remained looking thoughtfully at the mushroom for a minute, trying
-to make out which were the two sides of it; and as it was perfectly
-round, she found this a very difficult question. However, at last she
-stretched her arms round it as far as they would go, and broke off a bit
-of the edge with each hand.
-
-"And now which is which?" she said to herself, and nibbled a little of
-the right-hand bit to try the effect: the next moment she felt a violent
-blow underneath her chin: it had struck her foot!
-
-[Illustration]
-
-She was a good deal frightened by this very sudden change, but she felt
-that there was no time to be lost, as she was shrinking rapidly; so she
-set to work at once to eat some of the other bit. Her chin was pressed
-so closely against her foot that there was hardly room to open her
-mouth; but she did it at last, and managed to swallow a morsel of the
-left-hand bit.
-
- * * * * *
-
-"Come, my head's free at last!" said Alice in a tone of delight, which
-changed into alarm in another moment, when she found that her shoulders
-were nowhere to be found: all she could see, when she looked down, was
-an immense length of neck, which seemed to rise like a stalk out of a
-sea of green leaves that lay far below her.
-
-"What _can_ all that green stuff be?" said Alice. "And where have my
-shoulders got to? And oh, my poor hands, how is it I ca'n't see you?"
-She was moving them about as she spoke, but no result seemed to follow,
-except a little shaking among the distant green leaves.
-
-As there seemed to be no chance of getting her hands up to her head, she
-tried to get her head down to them, and was delighted to find that her
-neck would bend about easily in any direction, like a serpent. She had
-just succeeded in curving it down into a graceful zigzag, and was going
-to dive in among the leaves, which she found to be nothing but the tops
-of the trees under which she had been wandering, when a sharp hiss made
-her draw back in a hurry: a large pigeon had flown into her face, and
-was beating her violently with its wings.
-
-"Serpent!" screamed the Pigeon.
-
-"I'm _not_ a serpent!" said Alice indignantly. "Let me alone!"
-
-"Serpent, I say again!" repeated the Pigeon, but in a more subdued tone,
-and added with a kind of a sob, "I've tried every way, and nothing seems
-to suit them!"
-
-"I haven't the least idea what you're talking about," said Alice.
-
-"I've tried the roots of trees, and I've tried banks, and I've tried
-hedges," the Pigeon went on, without attending to her; "but those
-serpents! There's no pleasing them!"
-
-Alice was more and more puzzled, but she thought there was no use in
-saying anything more till the Pigeon had finished.
-
-"As if it wasn't trouble enough hatching the eggs," said the Pigeon;
-"but I must be on the look-out for serpents night and day! Why, I
-haven't had a wink of sleep these three weeks!"
-
-"I'm very sorry you've been annoyed," said Alice, who was beginning to
-see its meaning.
-
-[Illustration]
-
-"And just as I'd taken the highest tree in the wood," continued the
-Pigeon, raising its voice to a shriek, "and just as I was thinking I
-should be free of them at last, they must needs come wriggling down from
-the sky! Ugh, Serpent!"
-
-"But I'm _not_ a serpent, I tell you!" said Alice. "I'm a---- I'm a
-----"
-
-"Well! _What_ are you?" said the Pigeon. "I can see you're trying to
-invent something!"
-
-"I--I'm a little girl," said Alice, rather doubtfully, as she remembered
-the number of changes she had gone through that day.
-
-"A likely story indeed!" said the Pigeon in a tone of the deepest
-contempt. "I've seen a good many little girls in my time, but never
-_one_ with such a neck as that! No, no! You're a serpent; and there's no
-use denying it. I suppose you'll be telling me next that you never
-tasted an egg!"
-
-"I _have_ tasted eggs, certainly," said Alice, who was a very truthful
-child; "but little girls eat eggs quite as much as serpents do, you
-know."
-
-"I don't believe it," said the Pigeon; "but if they do, why then
-they're a kind of serpent, that's all I can say."
-
-This was such a new idea to Alice, that she was quite silent for a
-minute or two, which gave the Pigeon the opportunity of adding, "You're
-looking for eggs, I know _that_ well enough; and what does it matter to
-me whether you're a little girl or a serpent?"
-
-"It matters a good deal to _me_," said Alice hastily; "but I'm not
-looking for eggs, as it happens; and if I was, I shouldn't want _yours_:
-I don't like them raw."
-
-"Well, be off, then!" said the Pigeon in a sulky tone, as it settled
-down again into its nest. Alice crouched down among the trees as well as
-she could, for her neck kept getting entangled among the branches, and
-every now and then she had to stop and untwist it. After a while she
-remembered that she still held the pieces of mushroom in her hands, and
-she set to work very carefully, nibbling first at one and then at the
-other, and growing sometimes taller and sometimes shorter, until she had
-succeeded in bringing herself down to her usual height.
-
-It was so long since she had been anything near the right size, that it
-felt quite strange at first; but she got used to it in a few minutes,
-and began talking to herself, as usual. "Come, there's half my plan done
-now! How puzzling all these changes are! I'm never sure what I'm going
-to be, from one minute to another! However, I've got back to my right
-size: the next thing is, to get into that beautiful garden--how _is_
-that to be done, I wonder?" As she said this, she came suddenly upon an
-open place, with a little house in it about four feet high. "Whoever
-lives there," thought Alice, "it'll never do to come upon them _this_
-size: why, I should frighten them out of their wits!" So she began
-nibbling at the right-hand bit again, and did not venture to go near the
-house till she had brought herself down to nine inches high.
-
-
-
-
-CHAPTER VI
-
-
-[Sidenote: _Pig and Pepper_]
-
-FOR a minute or two she stood looking at the house, and
-wondering what to do next, when suddenly a footman in livery came
-running out of the wood--(she considered him to be a footman because he
-was in livery: otherwise, judging by his face only, she would have
-called him a fish)--and rapped loudly at the door with his knuckles. It
-was opened by another footman in livery, with a round face and large
-eyes like a frog; and both footmen, Alice noticed, had powdered hair
-that curled all over their heads. She felt very curious to know what it
-was all about, and crept a little way out of the wood to listen.
-
-The Fish-Footman began by producing from under his arm a great letter,
-nearly as large as himself, and this he handed over to the other,
-saying, in a solemn tone, "For the Duchess. An invitation from the
-Queen to play croquet." The Frog-Footman repeated, in the same solemn
-tone, only changing the order of the words a little, "From the Queen. An
-invitation for the Duchess to play croquet."
-
-Then they both bowed low, and their curls got entangled together.
-
-Alice laughed so much at this, that she had to run back into the wood
-for fear of their hearing her; and, when she next peeped out, the
-Fish-Footman was gone, and the other was sitting on the ground near the
-door, staring stupidly up into the sky.
-
-Alice went timidly up to the door and knocked.
-
-"There's no use in knocking," said the Footman, "and that for two
-reasons. First, because I'm on the same side of the door as you are;
-secondly, because they're making such a noise inside, no one could
-possibly hear you." And certainly there was a most extraordinary noise
-going on within--a constant howling and sneezing, and every now and then
-a great crash, as if a dish or kettle had been broken to pieces.
-
-"Please, then," said Alice, "how am I to get in?"
-
-"There might be some sense in your knocking," the Footman went on
-without attending to her, "if we had the door between us. For instance,
-if you were _inside_, you might knock, and I could let you out, you
-know." He was looking up into the sky all the time he was speaking, and
-this Alice thought decidedly uncivil. "But perhaps he can't help it,"
-she said to herself: "his eyes are so _very_ nearly at the top of his
-head. But at any rate he might answer questions. How am I to get in?"
-she repeated aloud.
-
-"I shall sit here," the Footman remarked, "till to-morrow----"
-
-At this moment the door of the house opened, and a large plate came
-skimming out, straight at the Footman's head: it just grazed his nose,
-and broke to pieces against one of the trees behind him.
-
-"----or next day, maybe," the Footman continued in the same tone,
-exactly as if nothing had happened.
-
-"How am I to get in?" asked Alice again in a louder tone.
-
-"_Are_ you to get in at all?" said the Footman. "That's the first
-question, you know."
-
-[Illustration]
-
-It was, no doubt: only Alice did not like to be told so. "It's really
-dreadful," she muttered to herself, "the way all the creatures argue.
-It's enough to drive one crazy!"
-
-The Footman seemed to consider this a good opportunity for repeating his
-remark, with variations. "I shall sit here," he said, "on and off, for
-days and days."
-
-"But what am _I_ to do?" said Alice.
-
-"Anything you like," said the Footman, and began whistling.
-
-"Oh, there's no use in talking to him," said Alice desperately: "he's
-perfectly idiotic!" And she opened the door and went in.
-
-The door led right into a large kitchen, which was full of smoke from
-one end to the other: the Duchess was sitting on a three-legged stool in
-the middle, nursing a baby, the cook was leaning over the fire, stirring
-a large cauldron which seemed to be full of soup.
-
-"There's certainly too much pepper in that soup!" Alice said to herself,
-as well as she could for sneezing.
-
-There was certainly too much of it in the air. Even the Duchess sneezed
-occasionally; and the baby was sneezing and howling alternately without
-a moment's pause. The only things in the kitchen that did not sneeze,
-were the cook, and a large cat which was sitting on the hearth and
-grinning from ear to ear.
-
-"Please would you tell me," said Alice a little timidly, for she was not
-quite sure whether it was good manners for her to speak first, "why your
-cat grins like that?"
-
-"It's a Cheshire cat," said the Duchess, "and that's why. Pig!"
-
-She said the last word with such sudden violence that Alice quite
-jumped; but she saw in another moment that it was addressed to the baby,
-and not to her, so she took courage, and went on again:
-
-"I didn't know that Cheshire cats always grinned; in fact, I didn't know
-that cats _could_ grin."
-
-"They all can," said the Duchess; "and most of 'em do."
-
-"I don't know of any that do," Alice said very politely, feeling quite
-pleased to have got into a conversation.
-
-"You don't know much," said the Duchess; "and that's a fact."
-
-Alice did not at all like the tone of this remark, and thought it would
-be as well to introduce some other subject of conversation. While she
-was trying to fix on one, the cook took the cauldron of soup off the
-fire, and at once set to work throwing everything within her reach at
-the Duchess and the baby--the fire-irons came first; then followed a
-shower of saucepans, plates, and dishes. The Duchess took no notice of
-them even when they hit her; and the baby was howling so much already,
-that it was quite impossible to say whether the blows hurt it or not.
-
-"Oh, _please_ mind what you're doing!" cried Alice, jumping up and down
-in an agony of terror. "Oh, there goes his _precious_ nose"; as an
-unusually large saucepan flew close by it, and very nearly carried it
-off.
-
-"If everybody minded their own business," the Duchess said in a hoarse
-growl, "the world would go round a deal faster than it does."
-
-[Illustration: _An unusually large saucepan flew close by it, and very
-nearly carried it off_]
-
-"Which would _not_ be an advantage," said Alice, who felt very glad to
-get an opportunity of showing off a little of her knowledge. "Just think
-what work it would make with the day and night! You see the earth
-takes twenty-four hours to turn round on its axis----"
-
-"Talking of axes," said the Duchess, "chop off her head."
-
-Alice glanced rather anxiously at the cook, to see if she meant to take
-the hint; but the cook was busily engaged in stirring the soup, and did
-not seem to be listening, so she ventured to go on again: "Twenty-four
-hours, I _think_; or is it twelve? I----"
-
-"Oh, don't bother _me_," said the Duchess; "I never could abide
-figures!" And with that she began nursing her child again, singing a
-sort of lullaby to it as she did so, and giving it a violent shake at
-the end of every line:
-
- "Speak roughly to your little boy,
- And beat him when he sneezes:
- He only does it to annoy,
- Because he knows it teases."
-
-CHORUS
-
- (In which the cook and the baby joined):
- "Wow! wow! wow!"
-
-While the Duchess sang the second verse of the song, she kept tossing
-the baby violently up and down, and the poor little thing howled so,
-that Alice could hardly hear the words:
-
- "I speak severely to my boy,
- I beat him when he sneezes;
- For he can thoroughly enjoy
- The pepper when he pleases!"
-
- CHORUS.
-
- "Wow! wow! wow!"
-
-"Here! you may nurse it a bit if you like!" the Duchess said to Alice,
-flinging the baby at her as she spoke. "I must go and get ready to play
-croquet with the Queen," and she hurried out of the room. The cook threw
-a frying-pan after her as she went out, but it just missed her.
-
-Alice caught the baby with some difficulty, as it was a queer-shaped
-little creature, and held out its arms and legs in all directions, "just
-like a star-fish," thought Alice. The poor little thing was snorting
-like a steam-engine when she caught it, and kept doubling itself up and
-straightening itself out again, so that altogether, for the first minute
-or two, it was as much as she could do to hold it.
-
-As soon as she had made out the proper way of nursing it, (which was to
-twist it up into a knot, and then keep tight hold of its right ear and
-left foot, so as to prevent its undoing itself,) she carried it out into
-the open air. "If I don't take this child away with me," thought Alice,
-"they're sure to kill it in a day or two: wouldn't it be murder to leave
-it behind?" She said the last words out loud, and the little thing
-grunted in reply (it had left off sneezing by this time). "Don't grunt,"
-said Alice; "that's not at all a proper way of expressing yourself."
-
-The baby grunted again, and Alice looked very anxiously into its face to
-see what was the matter with it. There could be no doubt that it had a
-_very_ turn-up nose, much more like a snout than a real nose; also its
-eyes were getting extremely small for a baby: altogether Alice did not
-like the look of the thing at all. "But perhaps it was only sobbing,"
-she thought, and looked into its eyes again, to see if there were any
-tears.
-
-No, there were no tears. "If you're going to turn into a pig, my dear,"
-said Alice, seriously, "I'll have nothing more to do with you. Mind
-now!" The poor little thing sobbed again (or grunted, it was impossible
-to say which), and they went on for some while in silence.
-
-Alice was just beginning to think to herself, "Now, what am I to do with
-this creature when I get it home?" when it grunted again, so violently,
-that she looked down into its face in some alarm. This time there could
-be _no_ mistake about it: it was neither more nor less than a pig, and
-she felt that it would be quite absurd for her to carry it any further.
-
-So she set the little creature down, and felt quite relieved to see it
-trot quietly away into the wood. "If it had grown up," she said to
-herself, "it would have made a dreadfully ugly child: but it makes
-rather a handsome pig, I think." And she began thinking over other
-children she knew, who might do very well as pigs, and was just saying
-to herself, "if one only knew the right way to change them----" when she
-was a little startled by seeing the Cheshire Cat sitting on a bough of a
-tree a few yards off.
-
-[Illustration: _It grunted again so violently that she looked down into
-its face in some alarm_]
-
-The Cat only grinned when it saw Alice. It looked good-natured, she
-thought: still it had _very_ long claws and a great many teeth, so she
-felt that it ought to be treated with respect.
-
-[Illustration]
-
-"Cheshire Puss," she began, rather timidly, as she did not at all know
-whether it would like the name: however, it only grinned a little wider.
-"Come, it's pleased so far," thought Alice, and she went on. "Would you
-tell me, please, which way I ought to go from here?"
-
-"That depends a good deal on where you want to get to," said the Cat.
-
-"I don't much care where----" said Alice.
-
-"Then it doesn't matter which way you go," said the Cat.
-
-"---- so long as I get _somewhere_," Alice added as an explanation.
-
-"Oh, you're sure to do that," said the Cat, "if you only walk long
-enough."
-
-Alice felt that this could not be denied, so she tried another question.
-"What sort of people live about here?"
-
-"In _that_ direction," the Cat said, waving its right paw round, "lives
-a Hatter: and in _that_ direction," waving the other paw, "lives a March
-Hare. Visit either you like: they're both mad."
-
-"But I don't want to go among mad people," Alice remarked.
-
-"Oh, you ca'n't help that," said the Cat: "we're all mad here. I'm mad.
-You're mad."
-
-"How do you know I'm mad?" said Alice.
-
-"You must be," said the Cat, "or you wouldn't have come here."
-
-Alice didn't think that proved it at all; however, she went on. "And how
-do you know that you're mad?"
-
-"To begin with," said the Cat, "a dog's not mad. You grant that?"
-
-"I suppose so," said Alice.
-
-"Well, then," the Cat went on, "you see a dog growls when it's angry,
-and wags its tail when it's pleased. Now _I_ growl when I'm pleased, and
-wag my tail when I'm angry. Therefore I'm mad."
-
-"_I_ call it purring, not growling," said Alice.
-
-"Call it what you like," said the Cat. "Do you play croquet with the
-Queen to-day?"
-
-"I should like it very much," said Alice, "but I haven't been invited
-yet."
-
-"You'll see me there," said the Cat and vanished.
-
-Alice was not much surprised at this, she was getting so used to queer
-things happening. While she was looking at the place where it had been,
-it suddenly appeared again.
-
-"By-the-bye, what became of the baby?" said the Cat. "I'd nearly
-forgotten to ask."
-
-"It turned into a pig," Alice quietly said, just as if it had come back
-in a natural way.
-
-"I thought it would," said the Cat, and vanished again.
-
-Alice waited a little, half expecting to see it again, but it did not
-appear, and after a minute or two she walked on in the direction in
-which the March Hare was said to live. "I've seen hatters before," she
-said to herself; "the March Hare will be much the most interesting, and
-perhaps as this is May, it won't be raving mad--at least not so mad as
-it was in March." As she said this, she looked up, and there was the Cat
-again, sitting on the branch of a tree.
-
-"Did you say pig, or fig?" said the Cat.
-
-"I said pig," replied Alice; "and I wish you wouldn't keep appearing and
-vanishing so suddenly: you make one quite giddy."
-
-"All right," said the Cat; and this time it vanished quite slowly,
-beginning with the end of the tail, and ending with the grin, which
-remained some time after the rest of it had gone.
-
-"Well! I've often seen a cat without a grin," thought Alice; "but a grin
-without a cat! It's the most curious thing I ever saw in all my life."
-
-[Illustration]
-
-She had not gone much farther before she came in sight of the house of
-the March Hare: she thought it must be the right house, because the
-chimneys were shaped like ears and the roof was thatched with fur. It
-was so large a house, that she did not like to go nearer till she had
-nibbled some more of the left-hand bit of mushroom, and raised herself,
-to about two feet high: even then she walked up towards it rather
-timidly, saying to herself, "Suppose it should be raving mad after all!
-I almost wish I'd gone to see the Hatter instead!"
-
-
-
-
-CHAPTER VII
-
-
-[Sidenote: _A Mad Tea-party_]
-
-THERE was a table set out under a tree in front of the
-house, and the March Hare and the Hatter were having tea at it: a
-Dormouse was sitting between them, fast asleep, and the other two were
-using it as a cushion resting their elbows on it, and talking over its
-head. "Very uncomfortable for the Dormouse," thought Alice; "only as
-it's asleep, suppose it doesn't mind."
-
-The table was a large one, but the three were all crowded together at
-one corner of it. "No room! No room!" they cried out when they saw Alice
-coming. "There's _plenty_ of room!" said Alice indignantly, and she sat
-down in a large arm-chair at one end of the table.
-
-"Have some wine," the March Hare said in an encouraging tone.
-
-Alice looked all round the table, but there was nothing on it but tea.
-"I don't see any wine," she remarked.
-
-"There isn't any," said the March Hare.
-
-"Then it wasn't very civil of you to offer it," said Alice angrily.
-
-"It wasn't very civil of you to sit down without being invited," said
-the March Hare.
-
-"I didn't know it was _your_ table," said Alice; "it's laid for a great
-many more than three."
-
-"Your hair wants cutting," said the Hatter. He had been looking at Alice
-for some time with great curiosity, and this was his first speech.
-
-"You should learn not to make personal remarks," Alice said with some
-severity; "it's very rude."
-
-The Hatter opened his eyes very wide on hearing this; but all he _said_
-was "Why is a raven like a writing-desk?"
-
-"Come, we shall have some fun now!" thought Alice. "I'm glad they've
-begun asking riddles.--I believe I can guess that," she added aloud.
-
-"Do you mean that you think you can find out the answer to it?" said
-the March Hare.
-
-"Exactly so," said Alice.
-
-"Then you should say what you mean," the March Hare went on.
-
-"I do," Alice hastily replied; "at least--at least I mean what I
-say--that's the same thing, you know."
-
-"Not the same thing a bit!" said the Hatter. "Why, you might just as
-well say that 'I see what I eat' is the same thing as 'I eat what I
-see'!"
-
-"You might just as well say," added the March Hare, "that 'I like what I
-get' is the same thing as 'I get what I like'!"
-
-"You might just as well say," added the Dormouse, which seemed to be
-talking in his sleep, "that 'I breathe when I sleep' is the same thing
-as 'I sleep when I breathe'!"
-
-"It _is_ the same thing with you," said the Hatter; and here the
-conversation dropped, and the party sat silent for a minute, while Alice
-thought over all she could remember about ravens and writing-desks,
-which wasn't much.
-
-[Illustration: _A Mad Tea Party_]
-
-The Hatter was the first to break the silence. "What day of the month
-is it?" he said, turning to Alice: he had taken his watch out of his
-pocket, and was looking at it uneasily, shaking it every now and then,
-and holding it to his ear.
-
-Alice considered a little, and then said "The fourth."
-
-"Two days wrong!" sighed the Hatter. "I told you butter would not suit
-the works!" he added, looking angrily at the March Hare.
-
-"It was the _best_ butter," the March Hare meekly replied.
-
-"Yes, but some crumbs must have got in as well," the Hatter grumbled:
-"you shouldn't have put it in with the bread-knife."
-
-The March Hare took the watch and looked at it gloomily: then he dipped
-it into his cup of tea, and looked at it again: but he could think of
-nothing better to say than his first remark, "It was the _best_ butter,
-you know."
-
-Alice had been looking over his shoulder with some curiosity. "What a
-funny watch!" she remarked. "It tells the day of the month, and doesn't
-tell what o'clock it is!"
-
-"Why should it?" muttered the Hatter. "Does _your_ watch tell you what
-year it is?"
-
-"Of course not," Alice replied very readily: "but that's because it
-stays the same year for such a long time together."
-
-"Which is just the case with _mine_," said the Hatter.
-
-Alice felt dreadfully puzzled. The Hatter's remark seemed to have no
-meaning in it, and yet it was certainly English. "I don't quite
-understand," she said, as politely as she could.
-
-"The Dormouse is asleep again," said the Hatter, and he poured a little
-hot tea upon its nose.
-
-The Dormouse shook its head impatiently, and said, without opening its
-eyes, "Of course, of course; just what I was going to remark myself."
-
-"Have you guessed the riddle yet?" the Hatter said, turning to Alice
-again.
-
-"No, I give it up," Alice replied: "what's the answer?"
-
-"I haven't the slightest idea," said the Hatter.
-
-"Nor I," said the March Hare.
-
-Alice sighed wearily. "I think you might do something better with the
-time," she said, "than wasting it asking riddles with no answers."
-
-"If you knew Time as well as I do," said the Hatter, "you wouldn't talk
-about wasting _it_. It's _him_."
-
-"I don't know what you mean," said Alice.
-
-"Of course you don't!" the Hatter said, tossing his head contemptuously.
-"I daresay you never spoke to Time!"
-
-"Perhaps not," Alice cautiously replied: "but I know I have to beat time
-when I learn music."
-
-"Ah! that accounts for it," said the Hatter. "He won't stand beating.
-Now, if you only kept on good terms with him, he'd do almost anything
-you liked with the clock. For instance, suppose it were nine o'clock in
-the morning, just time to begin lessons: you'd only have to whisper a
-hint to Time, and round goes the clock in a twinkling! Half-past one,
-time for dinner!"
-
-("I only wish it was," the March Hare said to itself in a whisper.)
-
-"That would be grand, certainly," said Alice thoughtfully: "but then--I
-shouldn't be hungry for it, you know."
-
-"Not at first, perhaps," said the Hatter: "but you could keep it to
-half-past one as long as you liked."
-
-"Is that the way _you_ manage?" Alice asked.
-
-The Hatter shook his head mournfully. "Not I!" he replied. "We
-quarrelled last March----just before _he_ went mad, you know----"
-(pointing with his teaspoon to the March Hare), "it was at the great
-concert given by the Queen of Hearts, and I had to sing
-
- 'Twinkle, twinkle, little bat!
- How I wonder what you're at!'
-
-You know that song, perhaps?"
-
-"I've heard something like it," said Alice.
-
-"It goes on, you know," the Hatter continued, "in this way:--
-
- 'Up above the world you fly,
- Like a tea-tray in the sky.
- Twinkle, twinkle----'"
-
-Here the Dormouse shook itself, and began singing in its sleep
-"_Twinkle, twinkle, twinkle, twinkle_----" and went on so long that they
-had to pinch it to make it stop.
-
-"Well, I'd hardly finished the first verse," said the Hatter, "when the
-Queen jumped up and bawled out 'He's murdering the time! Off with his
-head!'"
-
-"How dreadfully savage!" exclaimed Alice.
-
-"And ever since that," the Hatter went on in a mournful tone, "he won't
-do a thing I ask! It's always six o'clock now."
-
-A bright idea came into Alice's head. "Is that the reason so many
-tea-things are put out here?" she asked.
-
-"Yes, that's it," said the Hatter with a sigh: "it's always tea-time,
-and we've no time to wash the things between whiles."
-
-"Then you keep moving round, I suppose?" said Alice.
-
-"Exactly so," said the Hatter: "as the things get used up."
-
-"But what happens when you come to the beginning again?" Alice ventured
-to ask.
-
-"Suppose we change the subject," the March Hare interrupted, yawning.
-"I'm getting tired of this. I vote the young lady tells us a story."
-
-"I'm afraid I don't know one," said Alice, rather alarmed at the
-proposal.
-
-"Then the Dormouse shall!" they both cried. "Wake up, Dormouse!" And
-they pinched it on both sides at once.
-
-The Dormouse slowly opened his eyes. "I wasn't asleep," he said in a
-hoarse, feeble voice: "I heard every word you fellows were saying."
-
-"Tell us a story!" said the March Hare.
-
-"Yes, please do!" pleaded Alice.
-
-"And be quick about it," added the Hatter, "or you'll be asleep again
-before it's done."
-
-"Once upon a time there were three little sisters," the Dormouse began
-in a great hurry; "and their names were Elsie, Lacie, and Tillie; and
-they lived at the bottom of a well----"
-
-"What did they live on?" said Alice, who always took a great interest in
-questions of eating and drinking.
-
-"They lived on treacle," said the Dormouse, after thinking a minute or
-two.
-
-"They couldn't have done that, you know," Alice gently remarked; "they'd
-have been ill."
-
-"So they were," said the Dormouse; "_very_ ill."
-
-Alice tried a little to fancy to herself what such an extraordinary way
-of living would be like, but it puzzled her too much, so she went on:
-"But why did they live at the bottom of a well?"
-
-"Take some more tea," the March Hare said to Alice, very earnestly.
-
-"I've had nothing yet," Alice replied in an offended tone, "so I can't
-take more."
-
-"You mean you can't take _less_," said the Hatter; "it's very easy to
-take _more_ than nothing."
-
-"Nobody asked _your_ opinion," said Alice.
-
-"Who's making personal remarks now?" the Hatter asked triumphantly.
-
-Alice did not quite know what to say to this: so she helped herself to
-some tea and bread-and-butter, and then turned to the Dormouse, and
-repeated her question. "Why did they live at the bottom of a well?"
-
-The Dormouse again took a minute or two to think about it, and then
-said, "It was a treacle-well."
-
-"There's no such thing!" Alice was beginning very angrily, but the
-Hatter and the March Hare went "Sh! sh!" and the Dormouse sulkily
-remarked: "If you can't be civil, you'd better finish the story for
-yourself."
-
-"No, please go on!" Alice said very humbly. "I won't interrupt you
-again. I dare say there may be _one_."
-
-"One, indeed!" said the Dormouse indignantly. However, he consented to
-go on. "And so these three little sisters--they were learning to draw,
-you know----"
-
-"What did they draw?" said Alice, quite forgetting her promise.
-
-"Treacle," said the Dormouse, without considering at all this time.
-
-"I want a clean cup," interrupted the Hatter: "let's all move one place
-on."
-
-He moved as he spoke, and the Dormouse followed him: the March Hare
-moved into the Dormouse's place, and Alice rather unwillingly took the
-place of the March Hare. The Hatter was the only one who got any
-advantage from the change: and Alice was a good deal worse off than
-before, as the March Hare had just upset the milk-jug into his plate.
-
-Alice did not wish to offend the Dormouse again, so she began very
-cautiously: "But I don't understand. Where did they draw the treacle
-from?"
-
-"You can draw water out of a water-well," said the Hatter; "so I should
-think you could draw treacle out of a treacle-well--eh, stupid!"
-
-"But they were _in_ the well," Alice said to the Dormouse, not choosing
-to notice this last remark.
-
-"Of course they were," said the Dormouse; "----well in."
-
-This answer so confused poor Alice that she let the Dormouse go on for
-some time without interrupting it.
-
-"They were learning to draw," the Dormouse went on, yawning and rubbing
-its eyes, for it was getting very sleepy; "and they drew all manner of
-things--everything that begins with an M----"
-
-"Why with an M?" said Alice.
-
-"Why not?" said the March Hare.
-
-Alice was silent.
-
-The Dormouse had closed its eyes by this time, and was going off into a
-dose; but, on being pinched by the Hatter, it woke up again with a
-little shriek, and went on: "----that begins with an M, such as
-mouse-traps, and the moon, and memory, and muchness--you know you say
-things are 'much of a muchness'--did you ever see such a thing as a
-drawing of a muchness?"
-
-"Really, now you ask me," said Alice, very much confused, "I don't
-think----"
-
-"Then you shouldn't talk," said the Hatter.
-
-This piece of rudeness was more than Alice could bear: she got up in
-great disgust and walked off; the Dormouse fell asleep instantly, and
-neither of the others took the least notice of her going, though she
-looked back once or twice, half hoping that they would call after her:
-the last time she saw them, they were trying to put the Dormouse into
-the teapot.
-
-"At any rate I'll never go _there_ again!" said Alice as she picked her
-way through the wood. "It's the stupidest tea-party I ever was at in all
-my life!"
-
-Just as she said this, she noticed that one of the trees had a door
-leading right into it. "That's very curious!" she thought. "But
-everything's curious to-day. I think I may as well go in at once." And
-in she went.
-
-Once more she found herself in the long hall, and close to the little
-glass table. "Now I'll manage better this time," she said to herself,
-and began by taking the little golden key, and unlocking the door that
-led into the garden. Then she set to work nibbling at the mushroom (she
-had kept a piece of it in her pocket) till she was about a foot high:
-then she walked down the little passage: and _then_--she found herself
-at last in the beautiful garden, among the bright flower-beds and the
-cool fountains.
-
-
-
-
-CHAPTER VIII
-
-
-[Sidenote: _The Queen's Croquet-Ground_]
-
-A LARGE rose-tree stood near the entrance of the garden:
-the roses growing on it were white, but there were three gardeners at
-it, busily painting them red. Alice thought this a very curious thing,
-and she went nearer to watch them, and just as she came up to them she
-heard one of them say "Look out now, Five! Don't go splashing paint over
-me like that!"
-
-"I couldn't help it," said Five, in a sulky tone. "Seven jogged my
-elbow."
-
-On which Seven looked up and said, "That's right, Five! Always lay the
-blame on others!"
-
-"_You'd_ better not talk!" said Five. "I heard the Queen say only
-yesterday you deserved to be beheaded!"
-
-"What for?" said the one who had first spoken.
-
-"That's none of _your_ business, Two!" said Seven.
-
-"Yes, it _is_ his business!" said Five. "And I'll tell him--it was for
-bringing the cook tulip-roots instead of onions."
-
-Seven flung down his brush, and had just begun "Well, of all the unjust
-things----" when his eye chanced to fall upon Alice, as she stood
-watching them, and he checked himself suddenly: the others looked round
-also, and all of them bowed low.
-
-"Would you tell me," said Alice, a little timidly, "why you are painting
-those roses?"
-
-Five and Seven said nothing, but looked at Two. Two began in a low
-voice, "Why, the fact is, you see, Miss, this here ought to have been a
-_red_ rose-tree, and we put a white one in by mistake; and if the Queen
-was to find it out, we should all have our heads cut off, you know. So
-you see, Miss, we're doing our best, afore she comes, to----" At this
-moment, Five, who had been anxiously looking across the garden, called
-out "The Queen! The Queen!" and the three gardeners instantly threw
-themselves flat upon their faces. There was a sound of many footsteps,
-and Alice looked round, eager to see the Queen.
-
-First came ten soldiers carrying clubs; these were all shaped like the
-three gardeners, oblong and flat, with their hands and feet at the
-corners: next the ten courtiers; these were ornamented all over with
-diamonds, and walked two and two, as the soldiers did. After these came
-the royal children; there were ten of them, and the little dears came
-jumping merrily along hand in hand, in couples; they were all ornamented
-with hearts. Next came the guests, mostly Kings and Queens, and among
-them Alice recognised the White Rabbit: it was talking in a hurried,
-nervous manner, smiling at everything that was said, and went by without
-noticing her. Then followed the Knave of Hearts, carrying the King's
-crown on a crimson velvet cushion; and last of all this grand
-procession, came THE KING AND QUEEN OF HEARTS.
-
-Alice was rather doubtful whether she ought not to lie down on her face
-like the three gardeners, but she could not remember ever having heard
-of such a rule at processions; "and besides, what would be the use of a
-procession," thought she, "if people had to lie down upon their faces,
-so that they couldn't see it?" So she stood still where she was, and
-waited.
-
-When the procession came opposite to Alice, they all stopped and looked
-at her, and the Queen said severely, "Who is this?" She said it to the
-Knave of Hearts, who only bowed and smiled in reply.
-
-"Idiot!" said the Queen, tossing her head impatiently; and turning to
-Alice, she went on, "What's your name, child?"
-
-"My name is Alice, so please your Majesty," said Alice very politely;
-but she added, to herself, "Why, they're only a pack of cards, after
-all. I needn't be afraid of them!"
-
-"And who are _these_?" said the Queen, pointing to the three gardeners
-who were lying round the rose-tree; for, you see, as they were lying on
-their faces, and the pattern on their backs was the same as the rest of
-the pack, she could not tell whether they were gardeners, or soldiers,
-or courtiers, or three of her own children.
-
-"How should _I_ know?" said Alice, surprised at her own courage. "It's
-no business of _mine_."
-
-The Queen turned crimson with fury, and, after glaring at her for a
-moment like a wild beast, screamed "Off with her head! Off----"
-
-"Nonsense!" said Alice, very loudly and decidedly, and the Queen was
-silent.
-
-The King laid his hand upon her arm, and timidly said "Consider my dear:
-she is only a child!"
-
-The Queen turned angrily away from him, and said to the Knave "Turn them
-over!"
-
-The Knave did so, very carefully, with one foot.
-
-"Get up!" said the Queen, in a shrill, loud voice, and the three
-gardeners instantly jumped up, and began bowing to the King, the Queen,
-the royal children, and everybody else.
-
-"Leave off that!" screamed the Queen. "You make me giddy." And then,
-turning to the rose-tree, she went on, "What _have_ you been doing
-here?"
-
-"May it please your Majesty," said Two, in a very humble tone, going
-down on one knee as he spoke, "we were trying----"
-
-[Illustration: _The Queen turned angrily away from him and said to the
-Knave, "Turn them over"_]
-
-"_I_ see!" said the Queen, who had meanwhile been examining the roses.
-"Off with their heads!" and the procession moved on, three of the
-soldiers remaining behind to execute the unfortunate gardeners, who ran
-to Alice for protection.
-
-"You shan't be beheaded!" said Alice, and she put them into a large
-flower-pot that stood near. The three soldiers wandered about for a
-minute or two, looking for them, and then quietly marched off after the
-others.
-
-"Are their heads off?" shouted the Queen.
-
-"Their heads are gone, if it please your Majesty!" the soldiers shouted
-in reply.
-
-"That's right!" shouted the Queen. "Can you play croquet?"
-
-The soldiers were silent, and looked at Alice, as the question was
-evidently meant for her.
-
-"Yes!" shouted Alice.
-
-"Come on, then!" roared the Queen, and Alice joined the procession,
-wondering very much what would happen next.
-
-"It's--it's a very fine day!" said a timid voice at her side. She was
-walking by the White Rabbit, who was peeping anxiously into her face.
-
-"Very," said Alice: "----where's the Duchess?"
-
-"Hush! Hush!" said the Rabbit in a low hurried tone. He looked anxiously
-over his shoulder as he spoke, and then raised himself upon tiptoe, put
-his mouth close to her ear, and whispered "She's under sentence of
-execution."
-
-"What for?" said Alice.
-
-"Did you say 'What a pity!'?" the Rabbit asked.
-
-"No, I didn't," said Alice: "I don't think it's at all a pity. I said
-'What for?'"
-
-"She boxed the Queen's ears--" the Rabbit began. Alice gave a little
-scream of laughter. "Oh, hush!" the Rabbit whispered in a frightened
-tone. "The Queen will hear you! You see she came rather late, and the
-Queen said----"
-
-"Get to your places!" shouted the Queen in a voice of thunder, and
-people began running about in all directions, tumbling up against each
-other; however, they got settled down in a minute or two, and the game
-began. Alice thought she had never seen such a curious croquet-ground in
-all her life; it was all ridges and furrows; the balls were live
-hedgehogs, the mallets live flamingoes, and the soldiers had to double
-themselves up and to stand upon their hands and feet, to make the
-arches.
-
-[Illustration]
-
-The chief difficulty Alice found at first was in managing her flamingo;
-she succeeded in getting its body tucked away, comfortably enough, under
-her arm, with its legs hanging down, but generally, just as she had got
-its neck nicely straightened out, and was going to give the hedgehog a
-blow with its head, it _would_ twist itself round and look up in her
-face, with such a puzzled expression that she could not help bursting
-out laughing: and when she had got its head down, and was going to
-begin again, it was very provoking to find that the hedgehog had
-unrolled itself and was in the act of crawling away: besides all this,
-there was generally a ridge or a furrow in the way wherever she wanted
-to send the hedgehog to, and, as the doubled-up soldiers were always
-getting up and walking off to other parts of the ground, Alice soon came
-to the conclusion that it was a very difficult game indeed.
-
-The players all played at once without waiting for turns, quarrelling
-all the while, and fighting for the hedgehogs; and in a very short time
-the Queen was in a furious passion, and went stamping about, and
-shouting "Off with his head!" or "Off with her head!" about once in a
-minute.
-
-Alice began to feel very uneasy: to be sure she had not as yet had any
-dispute with the Queen, but she knew that it might happen any minute,
-"and then," thought she, "what would become of me? They're dreadfully
-fond of beheading people here: the great wonder is that there's any one
-left alive!"
-
-She was looking about for some way of escape, and wondering whether she
-could get away without being seen, when she noticed a curious
-appearance in the air: it puzzled her very much at first, but, after
-watching it a minute or two, she made it out to be a grin, and she said
-to herself "It's the Cheshire Cat: now I shall have somebody to talk
-to."
-
-"How are you getting on?" said the Cat, as soon as there was mouth
-enough for it to speak with.
-
-Alice waited till the eyes appeared, and then nodded. "It's no use
-speaking to it," she thought, "till its ears have come, or at least one
-of them." In another minute the whole head appeared, and then Alice put
-down her flamingo, and began an account of the game, feeling very glad
-she had some one to listen to her. The Cat seemed to think that there
-was enough of it now in sight, and no more of it appeared.
-
-"I don't think they play at all fairly," Alice began, in rather a
-complaining tone, "and they all quarrel so dreadfully one can't hear
-oneself speak--and they don't seem to have any rules in particular; at
-least, if there are, nobody attends to them--and you've no idea how
-confusing it is all the things being alive; for instance, there's the
-arch I've got to go through next walking about at the other end of the
-ground--and I should have croqueted the Queen's hedgehog just now, only
-it ran away when it saw mine coming!"
-
-[Illustration]
-
-"How do you like the Queen?" said the Cat in a low voice.
-
-"Not at all," said Alice: "she's so extremely----" Just then she noticed
-that the Queen was close behind her listening: so she went on,
-"----likely to win, that it's hardly worth while finishing the game."
-
-The Queen smiled and passed on.
-
-"Who _are_ you talking to?" said the King, coming up to Alice, and
-looking at the Cat's head with great curiosity.
-
-"It's a friend of mine--a Cheshire Cat," said Alice: "allow me to
-introduce it."
-
-"I don't like the look of it at all," said the King: "however, it may
-kiss my hand if it likes."
-
-"I'd rather not," the Cat remarked.
-
-"Don't be impertinent," said the King, "and don't look at me like that!"
-He got behind Alice as he spoke.
-
-"A cat may look at a king," said Alice. "I've read that in some book,
-but I don't remember where."
-
-"Well, it must be removed," said the King very decidedly, and he called
-to the Queen, who was passing at the moment, "My dear! I wish you would
-have this cat removed!"
-
-The Queen had only one way of settling all difficulties, great or small.
-"Off with his head!" she said, without even looking round.
-
-"I'll fetch the executioner myself," said the King eagerly, and he
-hurried off.
-
-Alice thought she might as well go back and see how the game was going
-on, as she heard the Queen's voice in the distance, screaming with
-passion. She had already heard her sentence three of the players to be
-executed for having missed their turns, and she did not like the look of
-things at all, as the game was in such confusion that she never knew
-whether it was her turn or not. So she went in search of her hedgehog.
-
-The hedgehog was engaged in a fight with another hedgehog, which seemed
-to Alice an excellent opportunity for croqueting one of them with the
-other: the only difficulty was, that her flamingo was gone across to the
-other side of the garden, where Alice could see it trying in a helpless
-sort of way to fly up into one of the trees.
-
-By the time she had caught the flamingo and brought it back, the fight
-was over, and both the hedgehogs were out of sight: "but it doesn't
-matter much," thought Alice, "as all the arches are gone from this side
-of the ground." So she tucked it under her arm, that it might not escape
-again, and went back for a little more conversation with her friend.
-
-When she got back to the Cheshire Cat, she was surprised to find quite a
-large crowd collected round it: there was a dispute going on between the
-executioner, the King, and the Queen, who were all talking at once,
-while all the rest were quite silent, and looked very uncomfortable.
-
-The moment Alice appeared, she was appealed to by all three to settle
-the question, and they repeated their arguments to her, though, as they
-all spoke at once, she found it very hard indeed to make out exactly
-what they said.
-
-[Illustration]
-
-The executioner's argument was, that you couldn't cut off a head unless
-there was a body to cut it off from: that he had never had to do such a
-thing before, and he wasn't going to begin at _his_ time of life.
-
-The King's argument was, that anything that had a head could be
-beheaded, and that you weren't to talk nonsense.
-
-The Queen's argument was, that if something wasn't done about it in less
-than no time, she'd have everybody executed all round. (It was this last
-remark that had made the whole party look so grave and anxious.)
-
-Alice could think of nothing else to say but "It belongs to the Duchess:
-you'd better ask _her_ about it."
-
-"She's in prison," the Queen said to the executioner; "fetch her here."
-And the executioner went off like an arrow.
-
-The Cat's head began fading away the moment he was gone, and by the time
-he had come back with the Duchess, it had entirely disappeared; so the
-King and the executioner ran wildly up and down looking for it, while
-the rest of the party went back to the game.
-
-
-
-
-CHAPTER IX
-
-
-[Sidenote: _The Mock Turtle's Story_]
-
-"YOU can't think how glad I am to see you again, you
-dear old thing!" said the Duchess, as she tucked her arm affectionately
-into Alice's, and they walked off together.
-
-Alice was very glad to find her in such a pleasant temper, and thought
-to herself that perhaps it was only the pepper that had made her so
-savage when they met in the kitchen.
-
-"When _I'm_ a Duchess," she said to herself (not in a very hopeful tone
-though), "I won't have any pepper in my kitchen _at all_. Soup does very
-well without--Maybe it's always pepper that makes people hot-tempered,"
-she went on, very much pleased at having found out a new kind of rule,
-"and vinegar that makes them sour--and camomile that makes them
-bitter--and--barley-sugar and such things that make children
-sweet-tempered. I only wish people knew _that_: then they wouldn't be
-so stingy about it, you know----"
-
-She had quite forgotten the Duchess by this time, and was a little
-startled when she heard her voice close to her ear. "You're thinking
-about something, my dear, and that makes you forget to talk. I can't
-tell you just now what the moral of that is, but I shall remember it in
-a bit."
-
-"Perhaps it hasn't one," Alice ventured to remark.
-
-"Tut, tut, child!" said the Duchess. "Every thing's got a moral, if only
-you can find it." And she squeezed herself up closer to Alice's side as
-she spoke.
-
-Alice did not much like her keeping so close to her: first, because the
-Duchess was _very_ ugly; and secondly, because she was exactly the right
-height to rest her chin on Alice's shoulder, and it was an uncomfortably
-sharp chin. However, she did not like to be rude, so she bore it as well
-as she could. "The game's going on rather better now," she said, by way
-of keeping up the conversation a little.
-
-"'Tis so," said the Duchess: "and the moral of that is--'Oh, 'tis love,
-'tis love, that makes the world go round!'"
-
-"Somebody said," Alice whispered, "that it's done by everybody minding
-their own business!"
-
-"Ah, well! It means much the same thing," said the Duchess, digging her
-sharp little chin into Alice's shoulder as she added, "and the moral of
-_that_ is--'Take care of the sense, and the sounds will take care of
-themselves.'"
-
-"How fond she is of finding morals in things!" Alice thought to herself.
-
-"I dare say you're wondering why I don't put my arm round your waist,"
-the Duchess said after a pause: "the reason is, that I'm doubtful about
-the temper of your flamingo. Shall I try the experiment?"
-
-"He might bite," Alice cautiously replied, not feeling at all anxious to
-have the experiment tried.
-
-"Very true," said the Duchess: "flamingoes and mustard both bite. And
-the moral of that is--'Birds of a feather flock together.'"
-
-"Only mustard isn't a bird," Alice remarked.
-
-"Right, as usual," said the Duchess: "what a clear way you have of
-putting things!"
-
-"It's a mineral, I _think_," said Alice.
-
-"Of course it is," said the Duchess, who seemed ready to agree to
-everything that Alice said: "there's a large mustard-mine near here. And
-the moral of that is--'The more there is of mine, the less there is of
-yours.'"
-
-"Oh, I know!" exclaimed Alice, who had not attended to this last remark.
-"It's a vegetable. It doesn't look like one, but it is."
-
-"I quite agree with you," said the Duchess; "and the moral of that
-is--'Be what you would seem to be'--or if you'd like it put more
-simply--'Never imagine yourself not to be otherwise than what it might
-appear to others that what you were or might have been was not otherwise
-than what you had been would have appeared to them to be otherwise.'"
-
-"I think I should understand that better," Alice said very politely, "if
-I had it written down: but I can't quite follow it as you say it."
-
-"That's nothing to what I could say if I chose," the Duchess replied, in
-a pleased tone.
-
-"Pray don't trouble yourself to say it any longer than that," said
-Alice.
-
-"Oh, don't talk about trouble!" said the Duchess. "I make you a present
-of everything I've said as yet."
-
-"A cheap sort of present!" thought Alice. "I'm glad they don't give
-birthday presents like that!" But she did not venture to say it out
-loud.
-
-"Thinking again?" the Duchess asked with another dig of her sharp little
-chin.
-
-"I've a right to think," said Alice sharply, for she was beginning to
-feel a little worried.
-
-"Just about as much right," said the Duchess, "as pigs have to fly; and
-the m----"
-
-But here, to Alice's great surprise, the Duchess's voice died away, even
-in the middle of her favourite word "moral," and the arm that was linked
-into hers began to tremble. Alice looked up, and there stood the Queen
-in front of them, with her arms folded, frowning like a thunderstorm.
-
-"A fine day, your Majesty!" the Duchess began in a low, weak voice.
-
-"Now, I give you fair warning," shouted the Queen, stamping on the
-ground as she spoke; "either you or your head must be off, and that in
-about half no time! Take your choice!"
-
-The Duchess took her choice, and was gone in a moment.
-
-"Let's go on with the game," the Queen said to Alice; and Alice was too
-much frightened to say a word, but slowly followed her back to the
-croquet-ground.
-
-The other guests had taken advantage of the Queen's absence, and were
-resting in the shade: however, the moment they saw her, they hurried
-back to the game, the Queen merely remarking that a moment's delay would
-cost them their lives.
-
-[Illustration: _The Queen never left off quarrelling with the other
-players, and shouting "Off with his head!" or, "Off with her head!"_]
-
-All the time they were playing the Queen never left off quarrelling with
-the other players, and shouting "Off with his head!" or "Off with her
-head!" Those whom she sentenced were taken into custody by the soldiers,
-who of course had to leave off being arches to do this, so that by the
-end of half an hour or so there were no arches left, and all the
-players, except the King, the Queen, and Alice, were in custody and
-under sentence of execution.
-
-Then the Queen left off, quite out of breath, and said to Alice, "Have
-you seen the Mock Turtle yet?"
-
-"No," said Alice. "I don't even know what a Mock Turtle is."
-
-"It's the thing Mock Turtle Soup is made from," said the Queen.
-
-"I never saw one, or heard of one," said Alice.
-
-"Come on then," said the Queen, "and he shall tell you his history."
-
-As they walked off together, Alice heard the King say in a low voice, to
-the company generally, "You are all pardoned." "Come, _that's_ a good
-thing!" she said to herself, for she had felt quite unhappy at the
-number of executions the Queen had ordered.
-
-They very soon came upon a Gryphon, lying fast asleep in the sun. (If
-you don't know what a Gryphon is, look at the picture.) "Up, lazy
-thing!" said the Queen, "and take this young lady to see the Mock
-Turtle, and to hear his history. I must go back and see after some
-executions I have ordered," and she walked off, leaving Alice alone
-with the Gryphon. Alice did not quite like the look of the creature, but
-on the whole she thought it would be quite as safe to stay with it as to
-go after that savage Queen: so she waited.
-
-The Gryphon sat up and rubbed its eyes: then it watched the Queen till
-she was out of sight: then it chuckled. "What fun!" said the Gryphon,
-half to itself, half to Alice.
-
-"What _is_ the fun?" said Alice.
-
-"Why, _she_," said the Gryphon. "It's all her fancy, that: they never
-executes nobody, you know. Come on!"
-
-"Everybody says 'come on!' here," thought Alice, as she went slowly
-after it: "I never was so ordered about in my life, never!"
-
-[Illustration]
-
-They had not gone far before they saw the Mock Turtle in the distance,
-sitting sad and lonely on a little ledge of rock, and, as they came
-nearer, Alice could hear him sighing as if his heart would break. She
-pitied him deeply. "What is his sorrow?" she asked the Gryphon, and the
-Gryphon answered, very nearly in the same words as before, "It's all
-his fancy, that: he hasn't got no sorrow, you know. Come on!"
-
-So they went up to the Mock Turtle, who looked at them with large eyes
-full of tears, but said nothing.
-
-"This here young lady," said the Gryphon, "she wants to know your
-history, she do."
-
-"I'll tell it her," said the Mock Turtle in a deep, hollow tone; "sit
-down, both of you, and don't speak a word till I've finished."
-
-So they sat down, and nobody spoke for some minutes. Alice thought to
-herself, "I don't see how he can _ever_ finish, if he doesn't begin."
-But she waited patiently.
-
-"Once," said the Mock Turtle at last, with a deep sigh, "I was a real
-Turtle."
-
-These words were followed by a very long silence, broken only by an
-occasional exclamation of "Hjckrrh!" from the Gryphon, and the constant
-heavy sobbing of the Mock Turtle. Alice was very nearly getting up and
-saying "Thank you, sir, for your interesting story," but she could not
-help thinking there _must_ be more to come, so she sat still and said
-nothing.
-
-"When we were little," the Mock Turtle went on at last, more calmly,
-though still sobbing a little now and then, "we went to school in the
-sea. The master was an old Turtle--we used to call him Tortoise----"
-
-"Why did you call him Tortoise, if he wasn't one?" Alice asked.
-
-"We called him Tortoise because he taught us," said the Mock Turtle
-angrily: "really you are very dull!"
-
-"You ought to be ashamed of yourself for asking such a simple question,"
-added the Gryphon; and then they both sat silent and looked at poor
-Alice, who felt ready to sink into the earth. At last the Gryphon said
-to the Mock Turtle, "Drive on, old fellow. Don't be all day about it!"
-and he went on in these words:
-
-"Yes, we went to school in the sea, though you mayn't believe it----"
-
-"I never said I didn't!" interrupted Alice.
-
-"You did," said the Mock Turtle.
-
-"Hold your tongue!" added the Gryphon, before Alice could speak again.
-The Mock Turtle went on:--
-
-"We had the best of educations--in fact, we went to school every
-day----"
-
-"_I've_ been to a day-school, too," said Alice; "you needn't be so proud
-as all that."
-
-"With extras?" asked the Mock Turtle a little anxiously.
-
-"Yes," said Alice, "we learned French and music."
-
-"And washing?" said the Mock Turtle.
-
-"Certainly not!" said Alice indignantly.
-
-"Ah! then yours wasn't a really good school," said the Mock Turtle in a
-tone of relief. "Now at _ours_ they had at the end of the bill, 'French,
-music, _and washing_--extra.'"
-
-"You couldn't have wanted it much," said Alice; "living at the bottom of
-the sea."
-
-"I couldn't afford to learn it," said the Mock Turtle with a sigh. "I
-only took the regular course."
-
-"What was that?" inquired Alice.
-
-"Reeling and Writhing, of course, to begin with," the Mock Turtle
-replied; "and then the different branches of Arithmetic--Ambition,
-Distraction, Uglification, and Derision."
-
-"I never heard of 'Uglification,'" Alice ventured to say. "What is it?"
-
-The Gryphon lifted up both its paws in surprise. "Never heard of
-uglifying!" it exclaimed. "You know what to beautify is, I suppose?"
-
-"Yes," said Alice doubtfully: "it means--to--make--anything--prettier."
-
-"Well, then," the Gryphon went on, "if you don't know what to uglify is,
-you are a simpleton."
-
-Alice did not feel encouraged to ask any more questions about it, so she
-turned to the Mock Turtle and said, "What else had you to learn?"
-
-"Well, there was Mystery," the Mock Turtle replied, counting off the
-subjects on his flappers, "--Mystery, ancient and modern, with
-Seaography: then Drawling--the Drawling-master was an old conger-eel,
-that used to come once a week: _he_ taught us Drawling, Stretching, and
-Fainting in Coils."
-
-"What was _that_ like?" said Alice.
-
-"Well, I can't show it you myself," the Mock Turtle said: "I'm too
-stiff. And the Gryphon never learnt it."
-
-"Hadn't time," said the Gryphon: "I went to the Classical master,
-though. He was an old crab, _he_ was."
-
-"I never went to him," the Mock Turtle said with a sigh: "he taught
-Laughing and Grief, they used to say."
-
-"So he did, so he did," said the Gryphon, sighing in his turn; and both
-creatures hid their faces in their paws.
-
-"And how many hours a day did you do lessons?" said Alice, in a hurry to
-change the subject.
-
-"Ten hours the first day," said the Mock Turtle: "nine the next, and so
-on."
-
-"What a curious plan!" exclaimed Alice.
-
-"That's the reason they're called lessons," the Gryphon remarked:
-"because they lessen from day to day."
-
-This was quite a new idea to Alice, and she thought over it a little
-before she made her next remark. "Then the eleventh day must have been a
-holiday."
-
-"Of course it was," said the Mock Turtle.
-
-"And how did you manage on the twelfth?" Alice went on eagerly.
-
-"That's enough about lessons," the Gryphon interrupted in a very decided
-tone: "tell her something about the games now."
-
-
-
-
-CHAPTER X
-
-
-[Sidenote: _The Lobster Quadrille_]
-
-THE Mock Turtle sighed deeply, and drew the back of one
-flapper across his eyes. He looked at Alice, and tried to speak, but,
-for a minute or two, sobs choked his voice. "Same as if he had a bone in
-his throat," said the Gryphon: and it set to work shaking him and
-punching him in the back. At last the Mock Turtle recovered his voice,
-and, with tears running down his cheeks, went on again:
-
-"You may not have lived much under the sea--" ("I haven't," said Alice)
-"and perhaps you were never even introduced to a lobster--" (Alice began
-to say "I once tasted----" but checked herself hastily, and said "No,
-never") "--so you can have no idea what a delightful thing a Lobster
-Quadrille is!"
-
-"No, indeed," said Alice. "What sort of a dance is it?"
-
-"Why," said the Gryphon, "you first form into a line along the
-sea-shore----"
-
-"Two lines!" cried the Mock Turtle. "Seals, turtles, and so on; then,
-when you've cleared the jelly-fish out of the way----"
-
-"_That_ generally takes some time," interrupted the Gryphon.
-
-"--you advance twice----"
-
-"Each with a lobster as a partner!" cried the Gryphon.
-
-"Of course," the Mock Turtle said: "advance twice, set to partners----"
-
-"--change lobsters, and retire in same order," continued the Gryphon.
-
-"Then, you know," the Mock Turtle went on, "you throw the----"
-
-"The lobsters!" shouted the Gryphon, with a bound into the air.
-
-"--as far out to sea as you can----"
-
-"Swim, after them!" screamed the Gryphon.
-
-"Turn a somersault in the sea!" cried the Mock Turtle, capering wildly
-about.
-
-"Change lobsters again!" yelled the Gryphon.
-
-"Back to land again, and--that's all the first figure," said the Mock
-Turtle, suddenly dropping his voice; and the two creatures, who had been
-jumping about like mad things all this time, sat down again very sadly
-and quietly, and looked at Alice.
-
-"It must be a very pretty dance," said Alice, timidly.
-
-"Would you like to see a little of it?" said the Mock Turtle.
-
-"Very much indeed," said Alice.
-
-"Come, let's try the first figure!" said the Mock Turtle to the Gryphon.
-"We can do it without lobsters, you know. Which shall sing?"
-
-"Oh, _you_ sing," said the Gryphon. "I've forgotten the words."
-
-So they began solemnly dancing round and round Alice, every now and then
-treading on her toes when they passed too close, and waving their
-forepaws to mark the time, while the Mock Turtle sang this, very slowly
-and sadly:--
-
- "Will you walk a little faster?" said a whiting to a snail,
- "There's a porpoise close behind us, and he's treading on my tail.
- See how eagerly the lobsters and the turtles all advance!
- They are waiting on the shingle--will you come and join the dance?
- Will you, won't you, will you, won't you, will you join the dance?
- Will you, won't you, will you, won't you, won't you join the dance?
-
- "You can really have no notion how delightful it will be,
- When they take us up and throw us, with the lobsters, out to sea!"
- But the snail replied: "Too far, too far!" and gave a look askance--
- Said he thanked the whiting kindly, but he would not join the dance.
- Would not, could not, would not, could not, would not join the dance.
- Would not, could not, would not, could not, could not join the dance.
-
- "What matters it how far we go?" his scaly friend replied;
- "There is another shore, you know, upon the other side.
- The further off from England the nearer is to France--
- Then turn not pale, beloved snail, but come and join the dance.
- Will you, won't you, will you, won't you, will you join the dance?
- Will you, won't you, will you, won't you, won't you join the dance?"
-
-"Thank you, it's a very interesting dance to watch," said Alice, feeling
-very glad that it was over at last: "and I do so like that curious song
-about the whiting!"
-
-"Oh, as to the whiting," said the Mock Turtle, "they--you've seen them,
-of course?"
-
-"Yes," said Alice, "I've often seen them at dinn----" she checked
-herself hastily.
-
-"I don't know where Dinn may be," said the Mock Turtle, "but if you've
-seen them so often, of course you know what they're like."
-
-"I believe so," Alice replied thoughtfully. "They have their tails in
-their mouths--and they're all over crumbs."
-
-"You're wrong about the crumbs," said the Mock Turtle: "crumbs would all
-wash off in the sea. But they _have_ their tails in their mouths; and
-the reason is--" here the Mock Turtle yawned and shut his eyes. "Tell
-her about the reason and all that," he said to the Gryphon.
-
-"The reason is," said the Gryphon, "that they _would_ go with the
-lobsters to the dance. So they got thrown out to sea. So they had to
-fall a long way. So they got their tails fast in their mouths. So they
-couldn't get them out again. That's all."
-
-"Thank you," said Alice. "It's very interesting. I never knew so much
-about a whiting before."
-
-"I can tell you more than that, if you like," said the Gryphon. "Do you
-know why it's called a whiting?"
-
-"I never thought about it," said Alice. "Why?"
-
-"_It does the boots and shoes_," the Gryphon replied very solemnly.
-
-Alice was thoroughly puzzled. "Does the boots and shoes!" she repeated
-in a wondering tone.
-
-"Why, what are _your_ shoes done with?" said the Gryphon. "I mean, what
-makes them so shiny?"
-
-Alice looked down at them, and considered a little before she gave her
-answer. "They're done with blacking, I believe."
-
-"Boots and shoes under the sea," the Gryphon went on in a deep voice,
-"are done with whiting. Now you know."
-
-"And what are they made of?" Alice asked in a tone of great curiosity.
-
-"Soles and eels, of course," the Gryphon replied rather impatiently:
-"any shrimp could have told you that."
-
-"If I'd been the whiting," said Alice, whose thoughts were still running
-on the song, "I'd have said to the porpoise, 'Keep back, please: we
-don't want _you_ with us!'"
-
-"They were obliged to have him with them," the Mock Turtle said: "no
-wise fish would go anywhere without a porpoise."
-
-"Wouldn't it really?" said Alice in a tone of great surprise.
-
-"Of course not," said the Mock Turtle: "why, if a fish came to _me_, and
-told me he was going a journey, I should say, 'With what porpoise?'"
-
-"Don't you mean 'purpose'?" said Alice.
-
-"I mean what I say," the Mock Turtle replied in an offended tone. And
-the Gryphon added, "Come, let's hear some of _your_ adventures."
-
-[Illustration: _The Mock Turtle drew a long breath and said, "That's
-very curious"_]
-
-"I could tell you my adventures--beginning from this morning," said
-Alice a little timidly: "but it's no use going back to yesterday,
-because I was a different person then."
-
-"Explain all that," said the Mock Turtle.
-
-"No, no! The adventures first," said the Gryphon in an impatient tone:
-"explanations take such a dreadful time."
-
-So Alice began telling them her adventures from the time when she first
-saw the White Rabbit. She was a little nervous about it just at first,
-the two creatures got so close to her, one on each side, and opened
-their eyes and mouths so _very_ wide, but she gained courage as she went
-on. Her listeners were perfectly quiet till she got to the part about
-her repeating "_You are old, Father William_," to the Caterpillar, and
-the words all coming different, and then the Mock Turtle drew a long
-breath, and said, "That's very curious."
-
-"It's all about as curious as it can be," said the Gryphon.
-
-"It all came different!" the Mock Turtle repeated thoughtfully. "I
-should like to hear her repeat something now. Tell her to begin." He
-looked at the Gryphon as if he thought it had some kind of authority
-over Alice.
-
-"Stand up and repeat '_'Tis the voice of the sluggard_,'" said the
-Gryphon.
-
-"How the creatures order one about, and make one repeat lessons!"
-thought Alice. "I might as well be at school at once." However, she got
-up, and began to repeat it, but her head was so full of the Lobster
-Quadrille, that she hardly knew what she was saying, and the words came
-very queer indeed:--
-
- "'Tis the voice of the Lobster; I heard him declare,
- 'You have baked me too brown, I must sugar my hair.'
- As a duck with its eyelids, so he with his nose
- Trims his belt and his buttons, and turns out his toes.
- When the sands are all dry, he is gay as a lark,
- And will talk in contemptuous tones of the Shark:
- But, when the tide rises and sharks are around,
- His voice has a timid and tremulous sound."
-
-"That's different from what _I_ used to say when I was a child," said
-the Gryphon.
-
-"Well, _I_ never heard it before," said the Mock Turtle: "but it sounds
-uncommon nonsense."
-
-Alice said nothing; she had sat down with her face in her hands,
-wondering if anything would _ever_ happen in a natural way again.
-
-"I should like to have it explained," said the Mock Turtle.
-
-"She ca'n't explain it," hastily said the Gryphon. "Go on with the next
-verse."
-
-"But about his toes?" the Mock Turtle persisted. "How _could_ he turn
-them out with his nose, you know?"
-
-"It's the first position in dancing," Alice said; but was dreadfully
-puzzled by the whole thing, and longed to change the subject.
-
-"Go on with the next verse," the Gryphon repeated: "it begins '_I passed
-by his garden_.'"
-
-Alice did not dare to disobey, though she felt sure it would all come
-wrong, and she went on in a trembling voice:
-
- "I passed by his garden, and marked, with one eye,
- How the Owl and the Panther were sharing a pie:
- The Panther took pie-crust, and gravy, and meat,
- While the Owl had the dish as its share of the treat.
- When the pie was all finished, the Owl, as a boon,
- Was kindly permitted to pocket the spoon:
- While the Panther received knife and fork with a growl,
- And concluded the banquet by----"
-
-"What _is_ the use of repeating all that stuff," the Mock Turtle
-interrupted, "if you don't explain it as you go on? It's by far the most
-confusing thing _I_ ever heard!"
-
-[Illustration]
-
-"Yes, I think you'd better leave off," said the Gryphon: and Alice was
-only too glad to do so.
-
-"Shall we try another figure of the Lobster Quadrille?" the Gryphon went
-on. "Or would you like the Mock Turtle to sing you another song?"
-
-"Oh, a song, please, if the Mock Turtle would be so kind," Alice
-replied, so eagerly that the Gryphon said, in a rather offended tone,
-"H'm! No accounting for tastes! Sing her '_Turtle Soup_,' will you, old
-fellow?"
-
-The Mock Turtle sighed deeply, and began, in a voice choked with sobs,
-to sing this:--
-
- "Beautiful Soup, so rich and green,
- Waiting in a hot tureen!
- Who for such dainties would not stoop?
- Soup of the evening, beautiful Soup!
- Soup of the evening, beautiful Soup!
- Beau--ootiful Soo--oop!
- Beau--ootiful Soo--oop!
- Soo--oop of the e--e--evening,
- Beautiful, beautiful Soup!
-
- "Beautiful Soup! Who cares for fish,
- Game, or any other dish?
- Who would not give all else for two
- Pennyworth only of beautiful Soup?
- Pennyworth only of beautiful Soup?
- Beau--ootiful Soo--oop!
- Beau--ootiful Soo--oop!
- Soo--oop of the e--e--evening,
- Beautiful, beauti--FUL SOUP!"
-
-"Chorus again!" cried the Gryphon, and the Mock Turtle had just begun
-to repeat it, when a cry of "The trial's beginning!" was heard in the
-distance.
-
-"Come on!" cried the Gryphon, and, taking Alice by the hand, it hurried
-off, without waiting for the end of the song.
-
-"What trial is it?" Alice panted as she ran; but the Gryphon only
-answered "Come on!" and ran the faster, while more and more faintly
-came, carried on the breeze that followed them, the melancholy words:--
-
- "Soo--oop of the e--e--evening,
- Beautiful, beautiful Soup!"
-
-
-
-
-CHAPTER XI
-
-
-[Sidenote: _Who Stole the Tarts?_]
-
-THE King and Queen of Hearts were seated on their throne
-when they arrived, with a great crowd assembled about them--all sorts of
-little birds and beasts, as well as the whole pack of cards: the Knave
-was standing before them, in chains, with a soldier on each side to
-guard him; and near the King was the White Rabbit, with a trumpet in one
-hand, and a scroll of parchment in the other. In the very middle of the
-court was a table, with a large dish of tarts upon it: they looked so
-good, that it made Alice quite hungry to look at them--"I wish they'd
-get the trial done," she thought, "and hand round the refreshments!" But
-there seemed to be no chance of this, so she began looking about her, to
-pass away the time.
-
-Alice had never been in a court of justice before, but she had read
-about them in books, and she was quite pleased to find that she knew the
-name of nearly everything there. "That's the judge," she said to
-herself, "because of his great wig."
-
-The judge, by the way, was the King; and as he wore his crown over the
-wig, he did not look at all comfortable, and it was certainly not
-becoming.
-
-"And that's the jury-box," thought Alice, "and those twelve creatures,"
-(she was obliged to say "creatures," you see, because some of them were
-animals, and some were birds,) "I suppose they are the jurors." She said
-this last word two or three times over to herself, being rather proud of
-it: for she thought, and rightly too, that very few little girls of her
-age knew the meaning of it at all. However, "jurymen" would have done
-just as well.
-
-The twelve jurors were all writing very busily on slates. "What are they
-all doing?" Alice whispered to the Gryphon. "They can't have anything to
-put down yet, before the trial's begun."
-
-[Illustration: _Who stole the tarts?_]
-
-"They're putting down their names," the Gryphon whispered in reply,
-"for fear they should forget them before the end of the trial."
-
-"Stupid things!" Alice began in a loud, indignant voice, but she stopped
-hastily, for the White Rabbit cried out "Silence in the court!" and the
-King put on his spectacles and looked anxiously round, to see who was
-talking.
-
-Alice could see, as well as if she were looking over their shoulders,
-that all the jurors were writing down "stupid things!" on their slates,
-and she could even make out that one of them didn't know how to spell
-"stupid," and that he had to ask his neighbour to tell him. "A nice
-muddle their slates will be in before the trial's over!" thought Alice.
-
-One of the jurors had a pencil that squeaked. This, of course, Alice
-could _not_ stand, and she went round the court and got behind him, and
-very soon found an opportunity of taking it away. She did it so quickly
-that the poor little juror (it was Bill, the Lizard) could not make out
-at all what had become of it; so, after hunting all about for it, he
-was obliged to write with one finger for the rest of the day; and this
-was of very little use, as it left no mark on the slate.
-
-"Herald, read the accusation!" said the King.
-
-On this the White Rabbit blew three blasts on the trumpet, and then
-unrolled the parchment scroll, and read as follows:
-
- "The Queen of Hearts, she made some tarts,
- All on a summer day:
- The Knave of Hearts, he stole those tarts,
- And took them quite away!"
-
-"Consider your verdict," the King said to the jury.
-
-"Not yet, not yet!" the Rabbit hastily interrupted. "There's a great
-deal to come before that!"
-
-"Call the first witness," said the King; and the Rabbit blew three
-blasts on the trumpet, and called out "First witness!"
-
-The first witness was the Hatter. He came in with a teacup in one hand
-and a piece of bread-and-butter in the other. "I beg pardon, your
-Majesty," he began, "for bringing these in; but I hadn't quite finished
-my tea when I was sent for."
-
-"You ought to have finished," said the King. "When did you begin?"
-
-The Hatter looked at the March Hare, who had followed him into the
-court, arm-in-arm with the Dormouse. "Fourteenth of March, I _think_ it
-was," he said.
-
-"Fifteenth," said the March Hare.
-
-"Sixteenth," said the Dormouse.
-
-"Write that down," the King said to the jury, and the jury eagerly wrote
-down all three dates on their slates, and then added them up, and
-reduced the answer to shillings and pence.
-
-"Take off your hat," the King said to the Hatter.
-
-"It isn't mine," said the Hatter.
-
-"_Stolen!_" the King exclaimed, turning to the jury, who instantly made
-a memorandum of the fact.
-
-"I keep them to sell," the Hatter added as an explanation: "I've none of
-my own. I'm a hatter."
-
-Here the Queen put on her spectacles, and began staring hard at the
-Hatter, who turned pale and fidgeted.
-
-"Give your evidence," said the King; "and don't be nervous, or I'll have
-you executed on the spot."
-
-This did not seem to encourage the witness at all: he kept shifting from
-one foot to the other, looking uneasily at the Queen, and in his
-confusion he bit a large piece out of his teacup instead of the
-bread-and-butter.
-
-Just at this moment Alice felt a very curious sensation, which puzzled
-her a good deal until she made out what it was: she was beginning to
-grow larger again, and she thought at first she would get up and leave
-the court; but on second thoughts she decided to remain where she was as
-long as there was room for her.
-
-"I wish you wouldn't squeeze so," said the Dormouse, who was sitting
-next to her. "I can hardly breathe."
-
-"I can't help it," said Alice very meekly: "I'm growing."
-
-"You've no right to grow _here_," said the Dormouse.
-
-"Don't talk nonsense," said Alice more boldly: "you know you're growing
-too."
-
-"Yes, but _I_ grow at a reasonable pace," said the Dormouse; "not in
-that ridiculous fashion." And he got up very sulkily and crossed over to
-the other side of the court.
-
-All this time the Queen had never left off staring at the Hatter, and,
-just as the Dormouse crossed the court, she said to one of the officers
-of the court, "Bring me the list of the singers in the last concert!" on
-which the wretched Hatter trembled so, that he shook off both his shoes.
-
-"Give your evidence," the King repeated angrily, "or I'll have you
-executed, whether you're nervous or not."
-
-"I'm a poor man, your Majesty," the Hatter began, in a trembling voice,
-"--and I hadn't begun my tea--not above a week or so--and what with the
-bread-and-butter getting so thin--and the twinkling of the tea----"
-
-"The twinkling of _what_?" said the King.
-
-"It _began_ with the tea," the Hatter replied.
-
-"Of course twinkling _begins_ with a T!" said the King sharply. "Do you
-take me for a dunce? Go on!"
-
-"I'm a poor man," the Hatter went on, "and most things twinkled after
-that--only the March Hare said----"
-
-"I didn't!" the March Hare interrupted in a great hurry.
-
-"You did!" said the Hatter.
-
-"I deny it!" said the March Hare.
-
-"He denies it," said the King: "leave out that part."
-
-"Well, at any rate, the Dormouse said----" the Hatter went on, looking
-anxiously round to see if he would deny it too: but the Dormouse denied
-nothing, being fast asleep.
-
-"After that," continued the Hatter, "I cut some more
-bread-and-butter----"
-
-"But what did the Dormouse say?" one of the jury asked.
-
-"That I can't remember," said the Hatter.
-
-"You _must_ remember," remarked the King, "or I'll have you executed."
-
-The miserable Hatter dropped his teacup and bread-and-butter, and went
-down on one knee. "I'm a poor man, your Majesty," he began.
-
-"You're a _very_ poor _speaker_," said the King.
-
-Here one of the guinea-pigs cheered, and was immediately suppressed by
-the officers of the court. (As that is rather a hard word, I will just
-explain to you how it was done. They had a large canvas bag, which tied
-up at the mouth with strings: into this they slipped the guinea-pig,
-head first, and then sat upon it.)
-
-"I'm glad I've seen that done," thought Alice. "I've so often read in
-the newspapers, at the end of trials, 'There was some attempt at
-applause, which was immediately suppressed by the officers of the
-court,' and I never understood what it meant till now."
-
-"If that's all you know about it, you may stand down," continued the
-King.
-
-"I can't go no lower," said the Hatter: "I'm on the floor, as it is."
-
-"Then you may _sit_ down," the King replied.
-
-Here the other guinea-pig cheered, and was suppressed.
-
-"Come, that finishes the guinea-pigs!" thought Alice. "Now we shall get
-on better."
-
-"I'd rather finish my tea," said the Hatter, with an anxious look at
-the Queen, who was reading the list of singers.
-
-"You may go," said the King; and the Hatter hurriedly left the court,
-without even waiting to put his shoes on.
-
-"--and just take his head off outside," the Queen added to one of the
-officers; but the Hatter was out of sight before the officer could get
-to the door.
-
-"Call the next witness!" said the King.
-
-The next witness was the Duchess's cook. She carried the pepper-box in
-her hand, and Alice guessed who it was, even before she got into the
-court, by the way the people near the door began sneezing all at once.
-
-"Give your evidence," said the King.
-
-"Sha'n't," said the cook.
-
-The King looked anxiously at the White Rabbit, who said in a low voice,
-"Your Majesty must cross-examine _this_ witness."
-
-"Well, if I must, I must," the King said with a melancholy air, and,
-after folding his arms and frowning at the cook till his eyes were
-nearly out of sight, he said in a deep voice, "What are tarts made of?"
-
-"Pepper, mostly," said the cook.
-
-"Treacle," said a sleepy voice behind her.
-
-"Collar that Dormouse," the Queen shrieked out. "Behead that Dormouse!
-Turn that Dormouse out of court! Suppress him! Pinch him! Off with his
-whiskers."
-
-For some minutes the whole court was in confusion, getting the Dormouse
-turned out, and, by the time they had settled down again, the cook had
-disappeared.
-
-[Illustration]
-
-"Never mind!" said the King, with an air of great relief. "Call the next
-witness." And he added in an undertone to the Queen, "Really, my dear,
-_you_ must cross-examine the next witness. It quite makes my forehead
-ache!"
-
-Alice watched the White Rabbit as he fumbled over the list, feeling very
-curious to see what the next witness would be like, "--for they haven't
-got much evidence _yet_," she said to herself. Imagine her surprise,
-when the White Rabbit read out, at the top of his shrill little voice,
-the name "Alice!"
-
-
-
-
-CHAPTER XII
-
-
-[Sidenote: _Alice's Evidence_]
-
-"HERE!" cried Alice, quite forgetting in the flurry of
-the moment how large she had grown in the last few minutes, and she
-jumped up in such a hurry that she tipped over the jury-box with the
-edge of her skirt, upsetting all the jurymen on to the heads of the
-crowd below, and there they lay sprawling about, reminding her very much
-of a globe of gold-fish she had accidentally upset the week before.
-
-"Oh, I _beg_ your pardon!" she exclaimed in a tone of great dismay, and
-began picking them up again as quickly as she could, for the accident of
-the gold-fish kept running in her head, and she had a vague sort of idea
-that they must be collected at once and put back into the jury-box, or
-they would die.
-
-"The trial cannot proceed," said the King in a very grave voice, "until
-all the jurymen are back in their proper places--_all_," he repeated
-with great emphasis, looking hard at Alice as he said so.
-
-Alice looked at the jury-box, and saw that, in her haste, she had put
-the Lizard in head downwards, and the poor little thing was waving its
-tail about in a melancholy way, being quite unable to move. She soon got
-it out again, and put it right; "not that it signifies much," she said
-to herself; "I should think it would be _quite_ as much use in the trial
-one way up as the other."
-
-As soon as the jury had a little recovered from the shock of being
-upset, and their slates and pencils had been found and handed back to
-them, they set to work very diligently to write out a history of the
-accident, all except the Lizard, who seemed too much overcome to do
-anything but sit with its mouth open, gazing up into the roof of the
-court.
-
-"What do you know about this business?" the King said to Alice.
-
-"Nothing," said Alice.
-
-"Nothing _whatever_?" persisted the King.
-
-"Nothing whatever," said Alice.
-
-"That's very important," the King said, turning to the jury. They were
-just beginning to write this down on their slates, when the White Rabbit
-interrupted: "_Un_important, your Majesty means, of course," he said in
-a very respectful tone, but frowning and making faces at him as he
-spoke.
-
-"_Un_important, of course, I meant," the King hastily said, and went on
-himself in an undertone,"important--unimportant--unimportant--important----"
-as if he were trying which word sounded best.
-
-Some of the jury wrote it down "important," and some "unimportant."
-Alice could see this, as she was near enough to look over their slates;
-"but it doesn't matter a bit," she thought to herself.
-
-At this moment the King, who had been for some time busily writing in
-his note-book, called out "Silence!" and read out from his book, "Rule
-Forty-two. _All persons more than a mile high to leave the court._"
-
-Everybody looked at Alice.
-
-"_I'm_ not a mile high," said Alice.
-
-"You are," said the King.
-
-"Nearly two miles high," added the Queen.
-
-"Well, I sha'n't go, at any rate," said Alice: "besides, that's not a
-regular rule: you invented it just now."
-
-"It's the oldest rule in the book," said the King.
-
-"Then it ought to be Number One," said Alice.
-
-The King turned pale, and shut his note-book hastily. "Consider your
-verdict," he said to the jury, in a low trembling voice.
-
-"There's more evidence to come yet, please your Majesty," said the White
-Rabbit, jumping up in a great hurry: "this paper has just been picked
-up."
-
-"What's in it?" said the Queen.
-
-"I haven't opened it yet," said the White Rabbit, "but it seems to be a
-letter, written by the prisoner to--to somebody."
-
-"It must have been that," said the King, "unless it was written to
-nobody, which isn't usual, you know."
-
-"Who is it directed to?" said one of the jurymen.
-
-"It isn't directed at all," said the White Rabbit; "in fact, there's
-nothing written on the _outside_." He unfolded the paper as he spoke,
-and added "It isn't a letter after all: it's a set of verses."
-
-"Are they in the prisoner's handwriting?" asked another of the jurymen.
-
-"No, they're not," said the White Rabbit, "and that's the queerest thing
-about it." (The jury all looked puzzled.)
-
-"He must have imitated somebody else's hand," said the King. (The jury
-all brightened up again.)
-
-"Please your Majesty," said the Knave, "I didn't write it, and they
-can't prove that I did: there's no name signed at the end."
-
-"If you didn't sign it," said the King, "that only makes the matter
-worse. You _must_ have meant some mischief, or else you'd have signed
-your name like an honest man."
-
-There was a general clapping of hands at this: it was the first really
-clever thing the King had said that day.
-
-"That _proves_ his guilt, of course," said the Queen: "so, off with----"
-
-"It doesn't prove anything of the sort!" said Alice. "Why, you don't
-even know what they're about!"
-
-"Read them," said the King.
-
-The White Rabbit put on his spectacles. "Where shall I begin, please
-your Majesty?" he asked.
-
-"Begin at the beginning," the King said gravely, "and go on till you
-come to the end; then stop."
-
-There was dead silence in the court, whilst the White Rabbit read out
-these verses:--
-
- "They told me you had been to her,
- And mentioned me to him:
- She gave me a good character,
- But said I could not swim.
-
- He sent them word I had not gone,
- (We know it to be true):
- If she should push the matter on,
- What would become of you?
-
- I gave her one, they gave him two,
- You gave us three or more;
- They all returned from him to you,
- Though they were mine before.
-
- If I or she should chance to be
- Involved in this affair,
- He trusts to you to set them free,
- Exactly as we were.
-
- My notion was that you had been
- (Before she had this fit)
- An obstacle that came between
- Him, and ourselves, and it.
-
- Don't let him know she liked them best,
- For this must ever be
- A secret, kept from all the rest,
- Between yourself and me."
-
-"That's the most important piece of evidence we've heard yet," said the
-King, rubbing his hands; "so now let the jury----"
-
-"If any of them can explain it," said Alice, (she had grown so large in
-the last few minutes that she wasn't a bit afraid of interrupting him,)
-"I'll give him sixpence. _I_ don't believe there's an atom of meaning in
-it."
-
-The jury all wrote down on their slates, "_She_ doesn't believe there's
-an atom of meaning in it," but none of them attempted to explain the
-paper.
-
-"If there's no meaning in it," said the King, "that saves a world of
-trouble, you know, as we needn't try to find any. And yet I don't
-know," he went on, spreading out the verses on his knee, and looking at
-them with one eye; "I seem to see some meaning in them after all.
-'----_said I could not swim_--' you can't swim can you?" he added,
-turning to the Knave.
-
-The Knave shook his head sadly. "Do I look like it?" he said. (Which he
-certainly did _not_, being made entirely of cardboard.)
-
-"All right, so far," said the King, as he went on muttering over the
-verses to himself: "'_We know it to be true_--' that's the jury, of
-course--'_If she should push the matter on_'--that must be the
-Queen--'_What would become of you?_'--What, indeed!--'_I gave her one,
-they gave him two_--' why, that must be what he did with the tarts, you
-know----"
-
-"But it goes on '_they all returned from him to you_,'" said Alice.
-
-"Why, there they are!" said the King triumphantly, pointing to the tarts
-on the table. "Nothing can be clearer than _that_. Then again--'_before
-she had this fit_--' you never had _fits_, my dear, I think?" he said to
-the Queen.
-
-"Never!" said the Queen furiously, throwing an inkstand at the Lizard
-as she spoke. (The unfortunate little Bill had left off writing on his
-slate with one finger, as he found it made no mark; but he now hastily
-began again, using the ink, that was trickling down his face, as long as
-it lasted.)
-
-"Then the words don't _fit_ you," said the King, looking round the court
-with a smile. There was a dead silence.
-
-"It's a pun!" the King added in an angry tone, and everybody laughed.
-
-"Let the jury consider their verdict," the King said, for about the
-twentieth time that day.
-
-"No, no!" said the Queen. "Sentence first--verdict afterwards."
-
-"Stuff and nonsense!" said Alice loudly. "The idea of having the
-sentence first!"
-
-"Hold your tongue!" said the Queen, turning purple.
-
-"I won't!" said Alice.
-
-"Off with her head!" the Queen shouted at the top of her voice. Nobody
-moved.
-
-"Who cares for _you_?" said Alice (she had grown to her full size by
-this time). "You're nothing but a pack of cards!"
-
-[Illustration: _At this the whole pack rose up into the air, and came
-flying down upon her_]
-
-At this the whole pack rose up into the air, and came flying down upon
-her: she gave a little scream, half of fright and half of anger, and
-tried to beat them off, and found herself lying on the bank, with her
-head in the lap of her sister, who was gently brushing away some dead
-leaves that had fluttered down from the trees upon her face.
-
-"Wake up, Alice dear!" said her sister. "Why, what a long sleep you've
-had!"
-
-"Oh, I've had such a curious dream!" said Alice, and she told her
-sister, as well as she could remember them, all these strange Adventures
-of hers that you have just been reading about; and when she had
-finished, her sister kissed her, and said "It _was_ a curious dream,
-dear, certainly: but now run in to your tea; it's getting late." So
-Alice got up and ran off, thinking while she ran, as well she might,
-what a wonderful dream it had been.
-
-
-
-
-BUT her sister sat still just as she had left her, leaning her head,
-watching the setting sun, and thinking of little Alice and all her
-wonderful Adventures, till she too began dreaming after a fashion, and
-this was her dream:
-
-First, she dreamed of little Alice herself, and once again the tiny
-hands were clasped upon her knee, and the bright eager eyes were looking
-up into hers--she could hear the very tones of her voice, and see that
-queer little toss of her head to keep back the wandering hair that
-_would_ always get into her eyes--and still as she listened, or seemed
-to listen, the whole place around her became alive with the strange
-creatures of her little sister's dream.
-
-The long grass rustled at her feet as the White Rabbit hurried by--the
-frightened Mouse splashed his way through the neighbouring pool--she
-could hear the rattle of the teacups as the March Hare and his friends
-shared their never-ending meal, and the shrill voice of the Queen
-ordering off her unfortunate guests to execution--once more the pig-baby
-was sneezing on the Duchess' knee, while plates and dishes crashed
-around it--once more the shriek of the Gryphon, the squeaking of the
-Lizard's slate-pencil, and the choking of the suppressed guinea-pigs,
-filled the air, mixed up with the distant sobs of the miserable Mock
-Turtle.
-
-So she sat on with closed eyes, and half believed herself in Wonderland,
-though she knew she had but to open them again, and all would change to
-dull reality--the grass would be only rustling in the wind, and the pool
-rippling to the waving of the reeds--the rattling teacups would change
-to the tinkling sheep-bells, and the Queen's shrill cries to the voice
-of the shepherd boy--and the sneeze of the baby, the shriek of the
-Gryphon, and all the other queer noises, would change (she knew) to the
-confused clamour of the busy farm-yard--while the lowing of the cattle
-in the distance would take the place of the Mock Turtle's heavy sobs.
-
-Lastly, she pictured to herself how this same little sister of hers
-would, in the after-time, be herself a grown woman; and how she would
-keep, through all her riper years, the simple and loving heart of her
-childhood: and how she would gather about her other little children,
-and make _their_ eyes bright and eager with many a strange tale, perhaps
-even with the dream of Wonderland of long ago: and how she would feel
-with all their simple sorrows, and find a pleasure in all their simple
-joys, remembering her own child-life, and the happy summer days.
-
-
-THE END
-
-
-
-
- ILLUSTRATIONS REPRODUCED BY HENTSCHEL COLOURTYPE
- TEXT PRINTED BY BALLANTYNE & COMPANY LTD
- AT THE BALLANTYNE PRESS
- TAVISTOCK STREET
- LONDON
-
- * * * * *
-
-Transcriber's Notes:
-
-Page 8, opening quote added to text (doorway; "and even if)
-
-Page 33, "she" changed to "she's" (And she's such a)
-
-Page 37, "quiet" changed to "quite" (I'm quite tired of)
-
-Page 41, colon changed to period (arm, yer honour.)
-
-Page 42, "wont" changed to "want" (want to stay)
-
-Page 66, closing quotation mark added (to-morrow----")
-
-Page 69, single quotation mark changed to double (cat," said the
-Duchess)
-
-Page 91, word "to" added to text (minute or two to)
-
-Page 103, word "as" added to the text (just as she had)
-
-Page 104, "hedge-hog" changed to "hedgehog" (send the hedgehog to)
-
-Page 126, end parenthesis added ("No, never")
-
-Page 153, added an apostrophe (What's in it?)
-
-
-
-
-
-
-End of Project Gutenberg's Alice's Adventures in Wonderland, by Lewis Carroll
-
-*** END OF THIS PROJECT GUTENBERG EBOOK ALICE'S ADVENTURES IN WONDERLAND ***
-
-***** This file should be named 28885-8.txt or 28885-8.zip *****
-This and all associated files of various formats will be found in:
- http://www.gutenberg.org/2/8/8/8/28885/
-
-Produced by Jana Srna, Emmy and the Online Distributed
-Proofreading Team at http://www.pgdp.net (This file was
-produced from images generously made available by the
-University of Florida Digital Collections.)
-
-
-Updated editions will replace the previous one--the old editions
-will be renamed.
-
-Creating the works from public domain print editions means that no
-one owns a United States copyright in these works, so the Foundation
-(and you!) can copy and distribute it in the United States without
-permission and without paying copyright royalties. Special rules,
-set forth in the General Terms of Use part of this license, apply to
-copying and distributing Project Gutenberg-tm electronic works to
-protect the PROJECT GUTENBERG-tm concept and trademark. Project
-Gutenberg is a registered trademark, and may not be used if you
-charge for the eBooks, unless you receive specific permission. If you
-do not charge anything for copies of this eBook, complying with the
-rules is very easy. You may use this eBook for nearly any purpose
-such as creation of derivative works, reports, performances and
-research. They may be modified and printed and given away--you may do
-practically ANYTHING with public domain eBooks. Redistribution is
-subject to the trademark license, especially commercial
-redistribution.
-
-
-
-*** START: FULL LICENSE ***
-
-THE FULL PROJECT GUTENBERG LICENSE
-PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
-
-To protect the Project Gutenberg-tm mission of promoting the free
-distribution of electronic works, by using or distributing this work
-(or any other work associated in any way with the phrase "Project
-Gutenberg"), you agree to comply with all the terms of the Full Project
-Gutenberg-tm License (available with this file or online at
-http://gutenberg.net/license).
-
-
-Section 1. General Terms of Use and Redistributing Project Gutenberg-tm
-electronic works
-
-1.A. By reading or using any part of this Project Gutenberg-tm
-electronic work, you indicate that you have read, understand, agree to
-and accept all the terms of this license and intellectual property
-(trademark/copyright) agreement. If you do not agree to abide by all
-the terms of this agreement, you must cease using and return or destroy
-all copies of Project Gutenberg-tm electronic works in your possession.
-If you paid a fee for obtaining a copy of or access to a Project
-Gutenberg-tm electronic work and you do not agree to be bound by the
-terms of this agreement, you may obtain a refund from the person or
-entity to whom you paid the fee as set forth in paragraph 1.E.8.
-
-1.B. "Project Gutenberg" is a registered trademark. It may only be
-used on or associated in any way with an electronic work by people who
-agree to be bound by the terms of this agreement. There are a few
-things that you can do with most Project Gutenberg-tm electronic works
-even without complying with the full terms of this agreement. See
-paragraph 1.C below. There are a lot of things you can do with Project
-Gutenberg-tm electronic works if you follow the terms of this agreement
-and help preserve free future access to Project Gutenberg-tm electronic
-works. See paragraph 1.E below.
-
-1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation"
-or PGLAF), owns a compilation copyright in the collection of Project
-Gutenberg-tm electronic works. Nearly all the individual works in the
-collection are in the public domain in the United States. If an
-individual work is in the public domain in the United States and you are
-located in the United States, we do not claim a right to prevent you from
-copying, distributing, performing, displaying or creating derivative
-works based on the work as long as all references to Project Gutenberg
-are removed. Of course, we hope that you will support the Project
-Gutenberg-tm mission of promoting free access to electronic works by
-freely sharing Project Gutenberg-tm works in compliance with the terms of
-this agreement for keeping the Project Gutenberg-tm name associated with
-the work. You can easily comply with the terms of this agreement by
-keeping this work in the same format with its attached full Project
-Gutenberg-tm License when you share it without charge with others.
-
-1.D. The copyright laws of the place where you are located also govern
-what you can do with this work. Copyright laws in most countries are in
-a constant state of change. If you are outside the United States, check
-the laws of your country in addition to the terms of this agreement
-before downloading, copying, displaying, performing, distributing or
-creating derivative works based on this work or any other Project
-Gutenberg-tm work. The Foundation makes no representations concerning
-the copyright status of any work in any country outside the United
-States.
-
-1.E. Unless you have removed all references to Project Gutenberg:
-
-1.E.1. The following sentence, with active links to, or other immediate
-access to, the full Project Gutenberg-tm License must appear prominently
-whenever any copy of a Project Gutenberg-tm work (any work on which the
-phrase "Project Gutenberg" appears, or with which the phrase "Project
-Gutenberg" is associated) is accessed, displayed, performed, viewed,
-copied or distributed:
-
-This eBook is for the use of anyone anywhere at no cost and with
-almost no restrictions whatsoever. You may copy it, give it away or
-re-use it under the terms of the Project Gutenberg License included
-with this eBook or online at www.gutenberg.net
-
-1.E.2. If an individual Project Gutenberg-tm electronic work is derived
-from the public domain (does not contain a notice indicating that it is
-posted with permission of the copyright holder), the work can be copied
-and distributed to anyone in the United States without paying any fees
-or charges. If you are redistributing or providing access to a work
-with the phrase "Project Gutenberg" associated with or appearing on the
-work, you must comply either with the requirements of paragraphs 1.E.1
-through 1.E.7 or obtain permission for the use of the work and the
-Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or
-1.E.9.
-
-1.E.3. If an individual Project Gutenberg-tm electronic work is posted
-with the permission of the copyright holder, your use and distribution
-must comply with both paragraphs 1.E.1 through 1.E.7 and any additional
-terms imposed by the copyright holder. Additional terms will be linked
-to the Project Gutenberg-tm License for all works posted with the
-permission of the copyright holder found at the beginning of this work.
-
-1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm
-License terms from this work, or any files containing a part of this
-work or any other work associated with Project Gutenberg-tm.
-
-1.E.5. Do not copy, display, perform, distribute or redistribute this
-electronic work, or any part of this electronic work, without
-prominently displaying the sentence set forth in paragraph 1.E.1 with
-active links or immediate access to the full terms of the Project
-Gutenberg-tm License.
-
-1.E.6. You may convert to and distribute this work in any binary,
-compressed, marked up, nonproprietary or proprietary form, including any
-word processing or hypertext form. However, if you provide access to or
-distribute copies of a Project Gutenberg-tm work in a format other than
-"Plain Vanilla ASCII" or other format used in the official version
-posted on the official Project Gutenberg-tm web site (www.gutenberg.net),
-you must, at no additional cost, fee or expense to the user, provide a
-copy, a means of exporting a copy, or a means of obtaining a copy upon
-request, of the work in its original "Plain Vanilla ASCII" or other
-form. Any alternate format must include the full Project Gutenberg-tm
-License as specified in paragraph 1.E.1.
-
-1.E.7. Do not charge a fee for access to, viewing, displaying,
-performing, copying or distributing any Project Gutenberg-tm works
-unless you comply with paragraph 1.E.8 or 1.E.9.
-
-1.E.8. You may charge a reasonable fee for copies of or providing
-access to or distributing Project Gutenberg-tm electronic works provided
-that
-
-- You pay a royalty fee of 20% of the gross profits you derive from
- the use of Project Gutenberg-tm works calculated using the method
- you already use to calculate your applicable taxes. The fee is
- owed to the owner of the Project Gutenberg-tm trademark, but he
- has agreed to donate royalties under this paragraph to the
- Project Gutenberg Literary Archive Foundation. Royalty payments
- must be paid within 60 days following each date on which you
- prepare (or are legally required to prepare) your periodic tax
- returns. Royalty payments should be clearly marked as such and
- sent to the Project Gutenberg Literary Archive Foundation at the
- address specified in Section 4, "Information about donations to
- the Project Gutenberg Literary Archive Foundation."
-
-- You provide a full refund of any money paid by a user who notifies
- you in writing (or by e-mail) within 30 days of receipt that s/he
- does not agree to the terms of the full Project Gutenberg-tm
- License. You must require such a user to return or
- destroy all copies of the works possessed in a physical medium
- and discontinue all use of and all access to other copies of
- Project Gutenberg-tm works.
-
-- You provide, in accordance with paragraph 1.F.3, a full refund of any
- money paid for a work or a replacement copy, if a defect in the
- electronic work is discovered and reported to you within 90 days
- of receipt of the work.
-
-- You comply with all other terms of this agreement for free
- distribution of Project Gutenberg-tm works.
-
-1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm
-electronic work or group of works on different terms than are set
-forth in this agreement, you must obtain permission in writing from
-both the Project Gutenberg Literary Archive Foundation and Michael
-Hart, the owner of the Project Gutenberg-tm trademark. Contact the
-Foundation as set forth in Section 3 below.
-
-1.F.
-
-1.F.1. Project Gutenberg volunteers and employees expend considerable
-effort to identify, do copyright research on, transcribe and proofread
-public domain works in creating the Project Gutenberg-tm
-collection. Despite these efforts, Project Gutenberg-tm electronic
-works, and the medium on which they may be stored, may contain
-"Defects," such as, but not limited to, incomplete, inaccurate or
-corrupt data, transcription errors, a copyright or other intellectual
-property infringement, a defective or damaged disk or other medium, a
-computer virus, or computer codes that damage or cannot be read by
-your equipment.
-
-1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right
-of Replacement or Refund" described in paragraph 1.F.3, the Project
-Gutenberg Literary Archive Foundation, the owner of the Project
-Gutenberg-tm trademark, and any other party distributing a Project
-Gutenberg-tm electronic work under this agreement, disclaim all
-liability to you for damages, costs and expenses, including legal
-fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
-LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE
-PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE
-TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE
-LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR
-INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a
-defect in this electronic work within 90 days of receiving it, you can
-receive a refund of the money (if any) you paid for it by sending a
-written explanation to the person you received the work from. If you
-received the work on a physical medium, you must return the medium with
-your written explanation. The person or entity that provided you with
-the defective work may elect to provide a replacement copy in lieu of a
-refund. If you received the work electronically, the person or entity
-providing it to you may choose to give you a second opportunity to
-receive the work electronically in lieu of a refund. If the second copy
-is also defective, you may demand a refund in writing without further
-opportunities to fix the problem.
-
-1.F.4. Except for the limited right of replacement or refund set forth
-in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER
-WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE.
-
-1.F.5. Some states do not allow disclaimers of certain implied
-warranties or the exclusion or limitation of certain types of damages.
-If any disclaimer or limitation set forth in this agreement violates the
-law of the state applicable to this agreement, the agreement shall be
-interpreted to make the maximum disclaimer or limitation permitted by
-the applicable state law. The invalidity or unenforceability of any
-provision of this agreement shall not void the remaining provisions.
-
-1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the
-trademark owner, any agent or employee of the Foundation, anyone
-providing copies of Project Gutenberg-tm electronic works in accordance
-with this agreement, and any volunteers associated with the production,
-promotion and distribution of Project Gutenberg-tm electronic works,
-harmless from all liability, costs and expenses, including legal fees,
-that arise directly or indirectly from any of the following which you do
-or cause to occur: (a) distribution of this or any Project Gutenberg-tm
-work, (b) alteration, modification, or additions or deletions to any
-Project Gutenberg-tm work, and (c) any Defect you cause.
-
-
-Section 2. Information about the Mission of Project Gutenberg-tm
-
-Project Gutenberg-tm is synonymous with the free distribution of
-electronic works in formats readable by the widest variety of computers
-including obsolete, old, middle-aged and new computers. It exists
-because of the efforts of hundreds of volunteers and donations from
-people in all walks of life.
-
-Volunteers and financial support to provide volunteers with the
-assistance they need are critical to reaching Project Gutenberg-tm's
-goals and ensuring that the Project Gutenberg-tm collection will
-remain freely available for generations to come. In 2001, the Project
-Gutenberg Literary Archive Foundation was created to provide a secure
-and permanent future for Project Gutenberg-tm and future generations.
-To learn more about the Project Gutenberg Literary Archive Foundation
-and how your efforts and donations can help, see Sections 3 and 4
-and the Foundation web page at http://www.pglaf.org.
-
-
-Section 3. Information about the Project Gutenberg Literary Archive
-Foundation
-
-The Project Gutenberg Literary Archive Foundation is a non profit
-501(c)(3) educational corporation organized under the laws of the
-state of Mississippi and granted tax exempt status by the Internal
-Revenue Service. The Foundation's EIN or federal tax identification
-number is 64-6221541. Its 501(c)(3) letter is posted at
-http://pglaf.org/fundraising. Contributions to the Project Gutenberg
-Literary Archive Foundation are tax deductible to the full extent
-permitted by U.S. federal laws and your state's laws.
-
-The Foundation's principal office is located at 4557 Melan Dr. S.
-Fairbanks, AK, 99712., but its volunteers and employees are scattered
-throughout numerous locations. Its business office is located at
-809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email
-business@pglaf.org. Email contact links and up to date contact
-information can be found at the Foundation's web site and official
-page at http://pglaf.org
-
-For additional contact information:
- Dr. Gregory B. Newby
- Chief Executive and Director
- gbnewby@pglaf.org
-
-
-Section 4. Information about Donations to the Project Gutenberg
-Literary Archive Foundation
-
-Project Gutenberg-tm depends upon and cannot survive without wide
-spread public support and donations to carry out its mission of
-increasing the number of public domain and licensed works that can be
-freely distributed in machine readable form accessible by the widest
-array of equipment including outdated equipment. Many small donations
-($1 to $5,000) are particularly important to maintaining tax exempt
-status with the IRS.
-
-The Foundation is committed to complying with the laws regulating
-charities and charitable donations in all 50 states of the United
-States. Compliance requirements are not uniform and it takes a
-considerable effort, much paperwork and many fees to meet and keep up
-with these requirements. We do not solicit donations in locations
-where we have not received written confirmation of compliance. To
-SEND DONATIONS or determine the status of compliance for any
-particular state visit http://pglaf.org
-
-While we cannot and do not solicit contributions from states where we
-have not met the solicitation requirements, we know of no prohibition
-against accepting unsolicited donations from donors in such states who
-approach us with offers to donate.
-
-International donations are gratefully accepted, but we cannot make
-any statements concerning tax treatment of donations received from
-outside the United States. U.S. laws alone swamp our small staff.
-
-Please check the Project Gutenberg Web pages for current donation
-methods and addresses. Donations are accepted in a number of other
-ways including including checks, online payments and credit card
-donations. To donate, please visit: http://pglaf.org/donate
-
-
-Section 5. General Information About Project Gutenberg-tm electronic
-works.
-
-Professor Michael S. Hart is the originator of the Project Gutenberg-tm
-concept of a library of electronic works that could be freely shared
-with anyone. For thirty years, he produced and distributed Project
-Gutenberg-tm eBooks with only a loose network of volunteer support.
-
-
-Project Gutenberg-tm eBooks are often created from several printed
-editions, all of which are confirmed as Public Domain in the U.S.
-unless a copyright notice is included. Thus, we do not necessarily
-keep eBooks in compliance with any particular paper edition.
-
-
-Most people start at our Web site which has the main PG search facility:
-
- http://www.gutenberg.net
-
-This Web site includes information about Project Gutenberg-tm,
-including how to make donations to the Project Gutenberg Literary
-Archive Foundation, how to help produce our new eBooks, and how to
-subscribe to our email newsletter to hear about new eBooks.
diff --git a/ult/exercises.rst b/ult/exercises.rst deleted file mode 100644 index 9898b39..0000000 --- a/ult/exercises.rst +++ /dev/null @@ -1,109 +0,0 @@ -Exercises -========= - -Session-1 ---------- - -1. Login to your machine from the CLI prompt, by pressing Ctrl+Alt+F1. - -#. Logout and re-login. - -#. What is your present working directory, once you login? - -#. List all the files present in your current working directory. - -#. Navigate to the ``Desktop`` directory. If such a directory is not - present create one. - -#. Navigate back to the ``home`` directory. - -#. Create a directory called ``ult`` inside another directory called - ``sees``. Create both the directories in a single command. - -#. What would be your present working directory after doing the - following? - - :: - - cd ~/sees/./../ - -#. Use the touch command to create a file with your name in the - ``ult`` folder. - -#. Remove the file you created in the previous step. - -#. Navigate to your home directory and remove the directory - ``sees``. Use ``rm`` command. - -#. Re-create the directories ``sees`` and ``ult`` again. Now, remove - them using the ``rmdir`` command. Use ``man`` or ``--help``, if - required. - -#. Create a file with your first-name in your home directory and copy - it to ``sees/ult``. - -#. Copy the file again, but this time, ensure that ``cp`` checks if - such a file doesn't already exist. - -#. Copy the directory ``sees`` to the directory ``sttp``. - -#. Rename directory ``sttp`` with your name. - -#. Create a file ``test`` and modify its permission for user and group - to ``execute``. - -#. For the same ``test`` file, change mode to ``r,w,x`` for - all(user,group,others). - -#. Change ownership of the file ``test`` to some other user (if exists). - -#. Count the number of files (files, sub-directories, etc.) in a directory. - -#. Create a new file ``alice.txt`` by concatenating the first 30 lines - and the last 40 lines of ``wonderland.txt``. - -#. Show the lines from 10 to 20 of ``primes.txt`` - -#. Concatenate the content of ``foo.txt`` and ``bar.txt`` in a single - ``foobar.txt`` but with the ``source:wikipedia`` line appearing only - once, at the end of the file. - -Session-2 ---------- - -0. Read through the section ``REGULAR EXPRESSIONS`` in ``man grep`` - -#. Read through in ``man expr`` - -#. grep the marks of the students who scored above 75 in atleast one - subject. - -#. grep the marks of all the students whose names begin with an 's' - -#. grep the marks of all the students whose names begin with - consonants. - -#. change the results.sh script to accept the input files also as - arguments. - -#. Write a shell script that will take a filename as input and check - if it is executable. - -#. Modify the script in the previous step, to remove the execute - permissions, if the file is executable. - -#. Write a shell script to remove all executable files from a - directory, when a directory is given as argument. - -#. List all the years between 2001 and 2099 which have 5 Fridays, - Saturdays and Sundays in the month of July. Hint: ``man cal`` - -#. Generate frequency list of all the commands you have used, and show - the top 5 commands along with their count. (Hint: ``history`` command - will give you a list of all commands used.) - -#. generate a word frequency list for ``wonderland.txt``. Hint: use - ``grep``, ``tr``, ``sort``, ``uniq`` (or anything else that you want) - -#. **Print the middle line of a file**. - diff --git a/ult/handout.rst b/ult/handout.rst deleted file mode 100644 index 5ef762a..0000000 --- a/ult/handout.rst +++ /dev/null @@ -1,2247 +0,0 @@ -Introducing Linux -================= - -Linux (sometimes called GNU/Linux) is a Free and Open Source Operating -System that is inspired by Unix and runs on a variety of hardware -platforms. - -Free - Free as in Freedom or Free Speech, not Free Beer. - -Open-source - licensed to permit modifications and redistribution of its source code. - -Linux is a modular operating system, with it's basic design based on the -principles established in Unix. It consists of an important and central -piece called the Linux kernel, which, manages system resources like process -control, networking, peripherals and file system access. This is -complemented by the application software, written on top of the kernel that -give the higher level functionality that facilitate the user to carry out -various tasks. - -Why Linux? ----------- - -Free as in Free Beer - GNU/Linux can be downloaded in its entirety from the Internet completely - for free. No registration fees, no costs per user, free updates, and - freely available source code in case you want to change the behavior of - your system. - -Secure & versatile - The security model used in Linux is based on the UNIX idea of security, - which is known to be robust and of proven quality. Also, there are no - viruses in the GNU/Linux world. - -Why Linux for Scientific Computing? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Free as in Free Speech - You can share your operating system and the libraries that you are using - with your co-workers, without any headaches of licensing. Also, you can - study and improve the implementation of various libraries that you may - use for your work - -Tools for Scientific computing - There are a host of tools and libraries, written by various (groups of) - people that are useful in day-to-day scientific computing work. You have - the benefit of standing on the shoulders of giants. - -Keeps on running - GNU/Linux distributions are very stable and known for their up-time. You - don't have the fear of losing your computational work, due to system - crashes. - -Parallel & Distributed computing - It is pretty easy to build your own cluster with GNU/Linux and there are - host of libraries for parallel and distributed computing that work with - GNU/Linux. - - -Reading Exercises ------------------ - - 1. In the Beginning was the Command Line -- Neal Stephenson - #. Linux -- Wikipedia - #. GNU/Linux naming controversy -- Wikipedia - -Getting Started -=============== - - -Logging in ----------- - -Let's begin with logging into our system. The GNU/Linux OS supports -multiple users and each user logs in with his/her user-name and password. -After the machine boots up, the OS prompts you for a user-name and -password. You can log-in once you provide your authentication details. - -It is a popular misconception that GNU/Linux doesn't have a GUI (Graphical -user interface). It does have a fully functional GUI, but for the purpose -of this course we shall start with using the CLI (Command line interface). -Once your system has booted up, hit ``Ctrl + Alt + F1`` to switch to the -command line interface. - -You can log out using the ``logout`` command. - -Where am I? ------------ - -Now that we have logged in, where are we? Where did we get in? - -To find out the present working directory, we use the ``pwd`` command. - -:: - - $ pwd - /home/user - -What is in there? ------------------ - -To see what is in the current directory, we use the ``ls`` command. It -gives us a list of all the files in our present working directory. - -:: - - $ ls - jeeves.rst psmith.html blandings.html Music - -``ls`` command takes the directory, in which we want to see the list of -files present, as an argument. To see all the files present in the -``Music`` directory, we say - -:: - - $ ls Music - one.mp3 two.mp3 three.mp3 - -Note that everything in GNU/Linux and the Unix world is case sensitive. For -example if we had said ``ls music`` instead of ``ls Music``, we would get -an error ``No such file or directory``. - -New folders ------------ - -As you can see, our home folder has two html files one rst file and a -directory for Music. What if we wanted the files to be more organized? Say, -we would like to put all our work during this course in a separate -directory. Let us now create a directory ``sees`` by saying - -:: - - $ mkdir sees - -Again, note that we are using all small case letters. ``sees`` is different -from ``Sees`` or ``SEES``. Type ``ls`` to see that a new directory has been -created. - -:: - - $ ls - -Also, note that special characters need to be escaped. For example if we -wanted to create a directory with the name ``software engineering``, we do -it either as - -:: - - $ mkdir software\ engineering - -or as - -:: - - $ mkdir "software engineering" - -But it is generally a practice to use hyphens or underscores instead of -spaces in filenames and directory names. - -In modern GNU/Linux filesystems all characters except the forward slash are -allowed. - -Moving around -------------- - -Now that we have created our directory ``sees``, let us make it our present -working directory by moving into it. We use the ``cd`` command for this -purpose. - -:: - - $ cd sees - $ pwd - /home/user/sees/ - -This could alternately have been written as ``cd ./sees``. The dot in the -beginning specifies that we are specifying the path, relative to the -present working-directory. - -To go up the directory structure, we use ``..``. Typing - -:: - - $ cd .. - -in the ``sees`` directory will take us back to the home directory. - -What will happen if we type ``cd ..`` in the home folder? We go to the -``/home`` directory. - -All this while, we have been using what are called relative paths, to -specify the path. We could alternatively use the absolute path, which give -the whole path, starting with a /. The absolute path of the ``sees`` -directory is, ``/home/user/sees/``. - -New files ---------- - -Now that we have seen how to create a new empty directory and navigate into -it, let us create a new blank file. We use the ``touch`` command for this. - -:: - - $ pwd - /home/user - $ cd sees - $ touch first - -This creates a file named touch in our present working directory. Use the -``ls`` command to see that the file has been created. - -:: - - $ ls - first - - -Getting Help -============ - -What does a command do? ------------------------ - -To get a quick description of the command, we could use the ``whatis`` -command. It gives a short one-line description of the command that is -passed as an argument to it. For instance let's see what is the ``touch`` -command that we just saw. - -:: - - $ whatis touch - touch (1) - change file timestamps - -Now, what does it mean by change file timestamps? We used it to create a -file, just a while ago. To get a more detailed description of the command, -we use the ``man`` command. - -:: - - $ man touch - -This shows the ``man`` (short for "manual pages") page of the command. This -page gives a detailed description of the command. We can see that the -``touch`` command has a whole host of options that can be passed to it. -Every command in Linux has such a list of options that can be passed to the -command to do specific tasks. Hit the ``q`` key to quit the ``man`` page. - -To see the manual on man itself do - -:: - - $ man man - -Using additional options ------------------------- - -As you may have observed, often the ``man`` page is a bit too much for -quickly cross checking what option to use for a specific task. For this -kind of quick look-up, most of the commands come with a -h or --help -option. This gives a brief description of the options available for that -command. - -Let us look at using a couple of useful options that we can pass to -commands that we have already see. - -:: - - $ ls -R - -This lists out all the files in the sub-tree of the current directory, -recursively. - -When you wish to create a new directory deep inside a directory structure, -using a ``-p`` option with the ``mkdir`` command would be useful. For -example, if we wish to create a folder ``scripts`` inside the directory -``linux-tools`` inside the directory ``sees``, we could simply say, - -:: - - $ pwd - /home/user/ - $ mkdir -p sees/linux-tools/scripts - -This will create the scripts directory, inside the required directory -structure, creating any other new directory required, to maintain the tree -structure. - -Searching for a command ------------------------ - -Let's now say, we wish to remove a directory or a file. How do we find out -what command to use? We use the ``apropos`` command to search for commands -based on their descriptions. To search for the command to remove a -file/directory say, - -:: - - $ apropos remove - -This gives us a whole list of commands that have the word ``remove``, in -their description. Looking through the list tells us that ``rm`` or -``rmdir`` is the command to use. - - -Basic File Handling -=================== - -Removing files --------------- - -``rm`` is used to delete files. - -Here's example to remove a file named "foo" from a directory, - -:: - - $ rm foo - -Note that, as such, ``rm`` works only for files and not for directories. -For instance, if you try to remove a directory named ``bar``, - -:: - - $ rm bar - -we get an error saying, cannot remove `bar`: Is a directory. But ``rm`` -takes additional arguments which can be used to remove a directory and all -of it's content, including sub-directories. - -:: - - $ rm -r bar - -removes the directory ``bar`` and all of it's content including -sub-directories, recursively. The ``-r`` stands for recursive. - -A function called ``rmdir`` is also available, to remove directories, but -we shall not look into it. - -Copying Files -------------- - -Let's say we wish to copy a file, ``foo`` from ``sees/linux-tools/scripts`` to -``sees/linux-tools``, how would we do it? - -:: - - $ pwd - /home/user/sees/ - - $ cp linux-tools/scripts/foo linux-tools/ - -In general, - -:: - - $ cp SourceFile TargetLocation - -Note, that we haven't changed the name of the file name at the target -location. We could have done that by specifying a new filename at the -target location. - -:: - - $ cp linux-tools/scripts/foo linux-tools/bar - -This copies the file ``foo`` to the new location, but with the new name, -``bar``. - -So, ``cp`` is the command to copy a file from one place to another. The -original file remains unchanged, and the new file may have the same or a -different name. - -But, what would have happened if we had a file named ``bar`` already at the -new location? Let's try doing the copy again, and see what happens. - -:: - - $ cp linux-tools/scripts/foo linux-tools/bar - -We get no error message, what happened? ``cp`` actually overwrites files. -In this case, it's not a problem since, we just re-copied the same content, -but in general it could be a problem, and we could lose data. To prevent -this, we use the ``-i`` flag with ``cp``. - -:: - - $ cp -i linux-tools/scripts/foo linux-tools/bar - cp: overwrite `bar'? - -We are now prompted, whether the file should be over-written. To over-write -say ``y``, else say ``n``. - -Now, let's try to copy the directory ``sees`` to a new directory called -``course``. How do we do it? - -:: - - $ cd /home/user - $ cp -i sees course - cp: omitting directory `sees/' - -``cp`` refuses to copy the directory ``sees``. We use the option ``-r`` -(recursive) to copy the directory and all it's content. - -:: - - $ cd /home/user - $ cp -ir sees course - - -Moving Files ------------- - -What if we want to move files, instead of copying them? One way to go about -it, would be to ``cp`` the file to the new location and ``rm`` the old -file. - -But, there's a command that does this for you, ``mv`` (short for move). It -can move files or directories. It also takes the ``-i`` option to prompt -before overwriting. - -:: - - $ cd /home/user - $ mv -i sees/ course/ - -What happened? Why didn't we get any prompt? Did course get overwritten? - -:: - - $ ls course - -We can see that the ``sees`` directory has been inserted as sub-directory -of the ``course`` directory. The move command doesn't over-write -directories, but the ``-i`` option is useful when moving files around. - -A common way to rename files (or directories), is to copy a file (or a -directory) to the same location, with a new name. - -:: - - $ mv sees/linux-tools sees/linux - -will rename the ``linux-tools`` directory to just ``linux``. - - -Linux File Hierarchy & Permissions and ownership -================================================ - -While moving around our files and directories, we have been careful to stay -within the ``/home/`` directory, but if you were curious, you may have -ventured out and seen that there are a lot of other directories. Let us -take this opportunity to understand a few things about the linux file -hierarchy and file permissions. - -:: - - $ cd / - -The ``/`` directory is called the root directory. All the files and -directories, (even if they are on different physical devices) appear as -sub-directories of the root directory. - -:: - - $ ls - -You can see the various directories present at the top most level. Below is -a table that briefly describes, what is present in each of these -directories and what their function is. - -+---------------+------------------------------------------------+ -| Directory | Description | -+===============+================================================+ -| / | Primary hierarchy root and root directory of | -| | the entire file system hierarchy. | -+---------------+------------------------------------------------+ -| /bin/ | Essential command binaries that need to be | -| | available in single user mode; for all users, | -| | e.g., *cat*, *ls*, *cp*. | -+---------------+------------------------------------------------+ -| /boot/ | Boot loader files, e.g., *kernels*, *initrd*; | -| | often a separate partition. | -+---------------+------------------------------------------------+ -| /dev/ | Essential devices, e.g., /dev/null | -+---------------+------------------------------------------------+ -| /etc/ | Host-specific system-wide configuration files | -| | (the name comes from *et cetera*) | -+---------------+------------------------------------------------+ -| /home/ | User's home directories, containing saved | -| | files, personal settings, etc.; often a | -| | separate partition. | -+---------------+------------------------------------------------+ -| /lib/ | Libraries essential for the binaries in | -| | */bin/* and */sbin/* | -+---------------+------------------------------------------------+ -| /media/ | Mount points for removable media such as | -| | CD-ROMs, external hard disks, USB sticks, etc. | -+---------------+------------------------------------------------+ -| /mnt/ | Temporarily mounted file systems | -+---------------+------------------------------------------------+ -| /opt/ | Optional application software packages | -+---------------+------------------------------------------------+ -| /proc/ | Virtual filesystem documenting kernel and | -| | process status as text files; e.g., uptime, | -| | network. In Linux, corresponds to a *Procfs* | -| | mount. | -+---------------+------------------------------------------------+ -| /root/ | Home directory for the root user | -+---------------+------------------------------------------------+ -| /sbin/ | Essential system binaries; e.g., *init*, | -| | *route*, *mount*. | -+---------------+------------------------------------------------+ -| /srv/ | Site-specific data which is served by the | -| | system. | -+---------------+------------------------------------------------+ -| /tmp/ | Temporary files. Often not preserved between | -| | system reboots. | -+---------------+------------------------------------------------+ -| /usr/ | Secondary hierarchy for read-only user data; | -| | contains the majority of (multi-)user | -| | utilities and applications. | -+---------------+------------------------------------------------+ -| /var/ | Variable files - files whose content is | -| | expected to continually change during normal | -| | operation of the system - such as logs, spool | -| | files, and temporary e-mail files. | -| | Sometimes a separate partition. | -+---------------+------------------------------------------------+ - - -Note that some of these directories may or may not be present on your Unix -system depending on whether certain subsystems, such as the X Window -System, are installed. - -For more information, it is recommended that you look at the ``man`` page -of ``hier``. - -:: - - $ man hier - -Permissions and Access control ------------------------------- - -Let us now look at file permissions. Linux is a multi-user environment and -allows users to set permissions to their files to allow only a set of -people to read or write it. Similarly, it is not "safe" to allow system -files to be edited by any user. All this access control is possible in -Linux. - -To start, in the root directory, say, - -:: - - $ ls -l - -You again get a list of all the sub-directories, but this time with a lot -of additional information. Let us try and understand what this output says. - -:: - - drwxr-xr-x 5 root users 4096 Jan 21 20:07 home - -The first column denotes the type and the access permissions of the file. -The second is the number of links. The third and fourth are the owner and -group of the file. The next field is the size of the file in bytes. The -next field is the date and time of modification and the last column is the -file name. - -We shall look at the permissions of the file now, ie., the first column of -the output. - -The first character in the first column specifies, whether the item is a -file or a directory. Files have a ``-`` as the first character and -directories have a ``d``. - -The next 9 characters define the access permissions of the file. Before -looking at it, we need to briefly study groups and users and ownership. - -Each file in the Linux filesystem is associated with a user and a group. -The user and the group of the file can be seen in the third and the fourth -columns of the output of ``ls -l`` command. The third column is the user, -and is usually the person who has created the file. A group is simply a -group of users. Users can be added or removed from groups, but doing that -is out of the scope of this course. This brief introduction to users and -groups is enough to go ahead and understand access permissions. - -We already know what the first character in the first column (in the output -of ``ls -l``) is for. The rest of the 9 characters are actually sets of 3 -characters of each. The first set of 3 characters defines the permissions -of the user, the next 3 is for the group and the last three is for others. -Based on the values of these characters, access is provided or denied to -files, to each of the users. - -So, what does each of the three characters stand for? Let's suppose we are -looking at the set, corresponding to the permissions of the user. In the -three characters, the first character can either be an ``r`` or a ``-``. -Which means, the user can either have the permissions to read the file or -not. If the character is ``r``, then the user has the permissions to read -the file, else not. Similarly, ``w`` stands for write permissions and -decides whether the user is allowed to write to the file. ``x`` stands for -execute permissions. You cannot execute a file, if you do not have the -permissions to execute it. - -Similarly, the next set of characters decides the same permissions for the -members of the group, that the file is associated with. The last set of -characters defines these permissions for the users, who are neither owners -of the file nor in the group, with which the file is associated. - -Changing the permissions ------------------------- - -Now, it's not as if these permissions are set in stone. If you are the -owner of a file, you can change the permissions of a file, using the -``chmod`` command. - -Let's say, we wish to give the execute permissions for a file, to both the -user and the group, how do we go about doing it? To be more explicit, given -a file ``foo.sh``, with the permissions flags as ``-rw-r--r--``, change it -to ``-rwxr-xr--``. - -The following command does it for us, - -:: - - $ chmod ug+x foo.sh - $ ls -l foo.sh - -As you can see, the permissions have been set to the required value. But -what did we exactly do? Let us try and understand. - -Symbolic modes -~~~~~~~~~~~~~~ - -In the command above, the parameter ``ug+x`` is the mode parameter to the -``chmod`` command. It specifies the changes that need to be made to the -permissions of the file ``foo.sh``. - -The ``u`` and ``g`` stand for the user and group, respectively. The ``x`` -stands for the execute permission and the ``+`` stands for adding the -specified permission. So, essentially, we are asking ``chmod`` command to -add the execute permission for the user and group. The permission of others -will remain unchanged. - -The following three tables give the details of the class, the operator and -the permissions. - -+--------------+--------+---------------------------------------------+ -| Reference | Class | Description | -+==============+========+=============================================+ -| u | user | the owner of the file | -+--------------+--------+---------------------------------------------+ -| g | group | users who are members of the file's group | -+--------------+--------+---------------------------------------------+ -| o | others | users who are not hte owner of the file or | -| | | members of the group | -+--------------+--------+---------------------------------------------+ -| a | all | all three of the above; is the same as *ugo*| -+--------------+--------+---------------------------------------------+ - -+--------------+------------------------------------------------------+ -| Operator | Description | -+==============+======================================================+ -| + | adds the specified modes to the specified classes | -+--------------+------------------------------------------------------+ -| - | removes the specified modes from the specified | -| | classes | -+--------------+------------------------------------------------------+ -| = | the modes specified are to be made the exact modes | -| | for the specified classes | -+--------------+------------------------------------------------------+ - -+-----+--------------+------------------------------------------------+ -|Mode | Name | Description | -+=====+==============+================================================+ -| r | read | read a file or list a directory's contents | -+-----+--------------+------------------------------------------------+ -| w | write | write to a file or directory | -+-----+--------------+------------------------------------------------+ -| x | execute | execute a file or recurse a directory tree | -+-----+--------------+------------------------------------------------+ - -So, if we wished to add the execute permission to all the users, instead of -adding it to just the user and group, we would have instead said - -:: - - $ chmod a+x foo.sh - -or - -:: - - $ chmod ugo+x foo.sh - - -To change the permissions of a directory along with all of its -sub-directories and files, recursively, we use the ``-R`` option. - -For instance if we wished to remove the read permissions of a file from all -users except the owner of the file, we would say, - - -:: - - $ chmod go-r bar.txt - -It is important to note that the permissions of a file can only be changed -by a user who is the owner of a file or the superuser. (We shall talk about -the superuser in the next section) - - -Changing Ownership of Files ---------------------------- - -What if we wish to change the ownership of a file? The ``chown`` command is -used to change the owner and group. - -By default, the owner of a file (or directory) object is the user that -created it. The group is a set of users that share the same access -permissions (i.e., read, write and execute). - -For instance, to change the user and the group of the file -``wonderland.txt`` to ``alice`` and ``users``, respectively, we say. - - $ chown alice:users wonderland.txt - -What does it say? We get an error saying, the operation is not permitted. -We have attempted to change the ownership of a file that we own, to a -different user. Logically, this shouldn't be possible, because, this can -lead to problems, in a multi-user system. - -Only the superuser is allowed to change the ownership of a file from one -user to another. The superuser or the ``root`` user is the only user -empowered to a certain set of tasks and hence is called the superuser. The -command above would have worked, if you did login as the superuser and -then changed the ownership of the file. - -We shall end our discussion of the Linux hierarchy and file permissions -here. Let us look at working with text, files and the role of the command -shell in the next section. - -Looking at files -================ - -cat ---- - -The ``cat`` command is the most commonly used command to display the -contents of files. To view the contents of a file, say, ``foo.txt``, we -simply say, - -:: - - $ cat foo.txt - -The contents of the file are shown on the terminal. - -The cat command could also be used to concatenate the text of multiple -files. (It's name actually comes from there). Say, we have two files, -``foo.txt`` and ``bar.txt``, - -:: - - $ cat foo.txt bar.txt - -shows the output of both the files concatenated on the standard output. - -But if we had a long file, like ``wonderland.txt``, the ouptut of ``cat`` -command is not convenient to read. Let's look at the ``less`` command which -turns out to be more useful in such a case. - - -less ----- - -``less `` allows you to view the contents of a text file one screen at a -time. - -:: - - $ less wonderland.txt - -will give show us the file, one screen at a time. - -``less`` has a list of commands that it allows you to use, once you have -started viewing a file. A few of the common ones have been listed below. - - * q: Quit. - - * [Arrows]/[Page Up]/[Page Down]/[Home]/[End]: Navigation. - - * ng: Jump to line number n. Default is the start of the file. - - * /pattern: Search for pattern. Regular expressions can be used. - - * h: Help. - -wc --- - -Often we just would like to get some statistical information about the -file, rather than viewing the contents of the file. The ``wc`` command -prints these details for a file. - -:: - - $ wc wonderland.txt - -The first number is the number of lines, the second is the number of words -and the third is the number of characters in the file. - -head & tail ------------ - -Let us now look at a couple of commands that let you see parts of files, -instead of the whole file. ``head`` and ``tail`` let you see parts of -files, as their names suggest, the start and the end of a file, -respectively. - -:: - - $ head wonderland.txt - -will print the first 10 lines of the file. Similarly tail will print the -last 10 lines of the file. If we wish to change the number of lines that we -wish to view, we use the option ``-n``. - -:: - - $ head -n 1 wonderland.txt - -will print only the first line of the file. Similarly, we could print only -the last line of the file. - -The most common use of the tail command is to monitor a continuously -changing file, for instance a log file. Say you have a process running, -which is continuously logging it's information to a file, for instance the -logs of the system messages. - -:: - - $ tail -f /var/log/dmesg - -This will show the last 10 lines of the file as expected, but along with -that, start monitoring the file. Any new lines added at the end of the -file, will be shown. To interrupt, tail while it is monitoring, hit -``Ctrl-C``. Ctrl-C is used to stop any process that is running from your -current shell. - -cut & paste ------------ - -We looked at a couple of functions that allow you to view a part of files, -line-wise. We shall now look at a couple of commands that allow you to look -at only certain sections of each line of a file and merge those parts. - -Let's take the ``/etc/passwd`` file as our example file. It contains -information about each user of the system. - -:: - - root:x:0:0:root:/root:/bin/bash - bin:x:1:1:bin:/bin:/bin/false - daemon:x:2:2:daemon:/sbin:/bin/false - mail:x:8:12:mail:/var/spool/mail:/bin/false - ftp:x:14:11:ftp:/srv/ftp:/bin/false - http:x:33:33:http:/srv/http:/bin/false - -Let us look at only the first, fifth, sixth and the last columns. The first -column is the user name, the fifth column is the user info, the sixth -column is the home folder and the last column is the path of the shell -program that the user uses. - -Let's say we wish to look at only the user names of all the users in the -file, how do we do it? - -:: - - $ cut -d : -f 1 /etc/passwd - -gives us the required output. But what are we doing here? - -The first option ``-d`` specifies the delimiter between the various fields in -the file, in this case it is the semicolon. If no delimiter is specified, -the TAB character is assumed to be the delimiter. The ``-f`` option specifies, -the field number that we want to choose. - -You can print multiple fields, by separating the field numbers with a -comma. - -:: - - $ cut -d : -f 1,5,7 /etc/passwd - -prints only the first, fifth and the seventh fields. - -Instead of choosing by fields, ``cut`` also allows us to choose on the -basis of characters or bytes. For instance, we could get the first 4 -characters of all the entries of the file, ``/etc/passwd`` - -:: - - $ cut -c 1-4 /etc/passwd - -The end limits of the ranges can take sensible default values, if they are -left out. For example, - -:: - - $ cut -c -4 /etc/passwd - -gives the same output as before. If the start position has not been -specified, it is assumed to be the start of the line. Similarly if the end -position is not specified, it is assumed to be the end of the line. - -:: - - $ cut -c 10- /etc/passwd - -will print all the characters from the 10th character up to the end of the -line. - -Let us now solve the inverse problem. Let's say we have two columns of data -in two different files, and we wish to view them side by side. - -For instance, given a file containing the names of students in a file, and -another file with the marks of the students, we wish to view the contents, -side by side. ``paste`` command allows us to do that. - -Contents of students.txt - -:: - - Hussain - Dilbert - Anne - Raul - Sven - -Contents of marks.txt - -:: - - 89 92 85 - 98 47 67 - 67 82 76 - 78 97 60 - 67 68 69 - -:: - - $ paste students.txt marks.txt - - $ paste -s students.txt marks.txt - - -The first command gives us the output of the two files, next to each other -and the second command gives us the output one below the other. - -Now, this problem is a bit unrealistic because, we wouldn't have the marks -of students in a file, without any information about the student to which -they belong. Let's say our marks file had the first column as the roll -number of the student, followed by the marks of the students. What would we -then do, to get the same output that we got before? - -Essentially we need to use both, the ``cut`` and ``paste`` commands, but -how do we do that? That brings us to the topic of Redirection and Piping. - -The Command Shell -================= - -Redirection and Piping ----------------------- - -Let's say the contents of ``marks1.txt`` are as follows, - -:: - - 5 89 92 85 - 4 98 47 67 - 1 67 82 76 - 2 78 97 60 - 3 67 68 69 - -The solution would be as below - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt - - -or - -:: - - $ cut -d " " -f 2- marks1.txt > /tmp/m_tmp.txt - $ paste -d " " students.txt m_tmp.txt - - -Let's first try to understand the second solution, which is a two step -solution. Later, we shall look at the first solution. - -Redirecting -~~~~~~~~~~~ - -The standard output (stdout), in general, streams (or goes) to the display. -Hence, the output of the commands that we type, come out to the display. -This may not always be what we require. - -For instance, in the solution above, we use the cut command and get only -the required columns of the file and write the output to a new temporary -file. The ``>`` character is used to state that we wish to redirect the -output, and it is followed by the location to which we wish to redirect. - -:: - - $ command > file1 - -In general, this creates a new file at the specified location, to which the -output is written. But, if we wish to append the output to an existing -file, we use ``>>``. - -Similarly, the standard input (stdin) is assumed to be from the keyboard. -Instead we could redirect the input from a file. - -:: - - $ command < file1 - -The input and the output redirection could be combined in a single command. - -:: - - $ command < infile > outfile - - -There is actually a third kind of standard stream, called the Standard -error (stderr). Any error messages that you get, are coming through this -stream. Like ``stdout``, ``stderr`` also streams to the display, by default -but it could be redirected to a file, as well. - -For instance, let's introduce an error into the ``cut`` command used -before. We change the ``-f`` option to ``-c`` - -:: - - $ cut -d " " -c 2- marks1.txt > /tmp/m_tmp.txt - -This prints an error that says the delimiter option should be used with the -fields option only, and you can verify that the ``m_tmp.txt`` file is -empty. We can now, redirect the ``stderr`` also to a file, instead of -showing it on the display. - -:: - - $ cut -d " " -f 2- marks1.txt 1> /tmp/m_tmp.txt 2> /tmp/m_err.txt - -The above command redirects all the errors to the ``m_err.txt`` file -and the output to the ``m_tmp.txt`` file. When redirecting, 1 stands -for ``stdout`` and 2 stands for ``stderr``. That brings us to the end of -the discussion on redirecting. - -The second command in the solution of the problem is trivial to understand. -:: - - $ paste -d " " students.txt m_tmp.txt - -So, in two steps we solved the problem of getting rid of the roll numbers -from the marks file and displaying the marks along with the names of the -students. Now, that we know how to redirect output, we could choose to -write the output to a file, instead of showing on the display. - -Piping -~~~~~~ - -Let us now look at the first solution. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt - - -First of all, the hyphen at the end is to ask the paste command to read the -standard input, instead of looking for a FILE. The ``man`` page of ``paste`` -command gives us this information. - -Now, what is happening with the ``cut`` command. It is a normal ``cut`` -command, if we looked at the command only up to the ``|`` character. So, -the ``|`` seems to be joining the commands in some way. - -Essentially, what we are doing is, to redirect the output of the first -command to the ``stdin`` and the second command takes input from the -``stdin``. - -More generally, - -:: - - $ command1 | command2 - -executes ``command1`` and sends it's output to the ``stdin``, which is then -used as the input for the ``command2``. This activity is commonly called -piping, and the character ``|`` is called a pipe. - -This is roughly equivalent to using two redirects and a temporary file - -:: - - $ command1 > tempfile - $ command2 < tempfile - $ rm tempfile - -Also, given that a pipe is just a way to send the output of the command to -the ``stdin``, it should be obvious, to you that we can use a chain of -pipes. Any number of commands can be piped together and you need not be -restricted to two commands. - -Using piping and redirection, we can do a whole bunch of complex tasks -combined with the commands we have already looked at, and other commands -that we are going to look at. - -Features of the Shell ---------------------- - -The Bash shell has some nice features, that make our job of using the shell -easier and much more pleasant. We shall look at a few of them, here. - -Tab-completion -~~~~~~~~~~~~~~ - -Bash provides the feature of tab completion. What does tab completion mean? -When you are trying to type a word, bash can complete the word for you, -if you have entered enough portion of the word (to complete it -unambiguously) and then hit the tab key. - -If on hitting the tab key, the word doesn't get completed, either the word -doesn't exist or the word cannot be decided unambiguously. If the case is -the latter one, hitting the tab key a second time, will list the -possibilities. - -Bash provides tab completion for the following. - - 1. File Names - 2. Directory Names - 3. Executable Names - 4. User Names (when they are prefixed with a ~) - 5. Host Names (when they are prefixed with a @) - 6. Variable Names (when they are prefixed with a $) - -For example, - -:: - - $ pas<TAB> - $ $PA<TAB> - $ ~/<TAB><TAB> - -History -~~~~~~~ - -Bash also saves the history of the commands you have typed. So, you can go -back to a previously typed command. Use the up and down arrow keys to -navigate in your bash history. - -:: - - $ <UP-ARROW> - -You can also search incrementally, for commands in your bash history. -``Ctrl-r`` search for the commands that you have typed before. But, note -that the number of commands saved in the history is limited, generally upto -a 1000 commands. - -:: - - $ <Ctrl-r> pas - - -Shell Meta Characters -~~~~~~~~~~~~~~~~~~~~~ - -Unix recognizes certain special characters, called "meta characters," as -command directives. The shell meta characters are recognized anywhere they -appear in the command line, even if they are not surrounded by blank space. -For that reason, it is safest to only use the characters A-Z, a-z, 0-9, and -the period, dash, and underscore characters when naming files and -directories on Unix. If your file or directory has a shell meta character -in the name, you will find it difficult to use the name in a shell command. - -The shell meta characters include: - -\ / < > ! $ % ^ & * | { } [ ] " ' ` ~ ; - - -As an example, - -:: - - $ ls file.* - -run on a directory containing the files file, file.c, file.lst, and myfile -would list the files file.c and file.lst. However, - -:: - - $ ls file.? - -run on the same directory would only list file.c because the ? only matches -one character, no more, no less. This can save you a great deal of typing -time. - -For example, if there is a file called -california_cornish_hens_with_wild_rice and no other files whose names begin -with 'c', you could view the file without typing the whole name by typing -this - -:: - - $ more c* - -because the c* matches that long file name. - -File-names containing metacharacters can pose many problems and should -never be intentionally created. - -More text processing -==================== - -``sort`` --------- - -Let's continue with the previous problem of the students and their marks, -that we had. Let's say we wish to sort the output in the alphabetical order -of the names of the files. We can use the ``sort`` command for this -purpose. - -We just pipe the previous output to the ``sort`` command. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt -| sort - -Let's say we wished to sort the names, based on the marks in the first -subject (first column after the name). ``sort`` command also allows us to -specify the delimiter between the fields and sort the data on a particular -field. ``-t`` option is used to specify the delimiter and the ``-k`` option -is used to specify the field. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt -| sort -t " " -k 2 - -The above command give us a sorted output as required. But, it would be -nicer to have the output sorted in the reverse order. ``-r`` option allows -the output to be sorted in the reverse order and the ``-n`` option is used -to choose a numerical sorting. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt -| sort -t " " -k 2 -rn - -``grep`` --------- - -While you are compiling the student marklist, Anne walks up to you and -wants to know her marks. You, being the kind person that you are, oblige. -But you do not wish to her to see the marks that others have scored. What -do you do? The ``grep`` command comes to your rescue. - -``grep`` is a command line text search utility. You can use it to search -for Anne and show her, what she scored. ``grep`` allows you to search for a -search string in files. But you could, like any other command, pipe the -output of other commands to it. So, we shall use the previous combination -of cut and paste that we had, to get the marks of students along with their -names and search for Anne in that. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt - | grep Anne - -This will give you only the line containing the word Anne as the output. -The grep command is by default case-sensitive. So, you wouldn't have got -the result if you had searched for anne instead of Anne. But, what if you -didn't know, whether the name was capitalized or not? ``grep`` allows you -to do case-insensitive searches by using the ``-i`` option. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt - | grep -i Anne - -Now, in another scenario, if you wished to print all the lines, which do -not contain the word Anne, you could use the ``-v`` option. - -:: - - $ cut -d " " -f 2- marks1.txt | paste -d " " students.txt - | grep -iv Anne - -Grep allows you to do more complex searches, for instance searching for -sentences starting or ending with a particular pattern and regular -expression based searches. You shall learn about these, as a part of your -lab exercises. - -``tr`` ------- - -``tr`` is a command that takes as parameters two sets of characters, and -replaces occurrences of the characters in the first set with the -corresponding elements from the other set. It reads from the standard -output and writes to the standard output. - -For instance if you wished to replace all the lower case letters in the -students file with upper case, - -:: - - $ cat students.txt | tr a-z A-Z - -A common task is to remove empty newlines from a file. The ``-s`` flag -causes ``tr`` to compress sequences of identical adjacent characters in its -output to a single token. For example, - -:: - - $ tr -s '\n' '\n' - -replaces sequences of one or more newline characters with a single newline. - -The ``-d`` flag causes ``tr`` to delete all tokens of the specified set of -characters from its input. In this case, only a single character set -argument is used. The following command removes carriage return characters, -thereby converting a file in DOS/Windows format to the Unix format. - -:: - - $ cat foo.txt | tr -d '\r' > bar.txt - -The ``-c`` flag complements the first set of characters. - -:: - - $ tr -cd '[:alnum:]' - -therefore removes all non-alphanumeric characters. - -``uniq`` --------- - -Suppose we have a list of items, say books, and we wish to obtain a list which names of all the books only once, without any duplicates. We use the ``uniq`` command to achieve this. - -:: - - Programming Pearls - The C Programming Language - The Mythical Man Month: Essays on Software Engineering - Programming Pearls - The C Programming Language - Structure and Interpretation of Computer Programs - Programming Pearls - Compilers: Principles, Techniques, and Tools - The C Programming Language - The Art of UNIX Programming - Programming Pearls - The Art of Computer Programming - Introduction to Algorithms - The Art of UNIX Programming - The Pragmatic Programmer: From Journeyman to Master - Programming Pearls - Unix Power Tools - The Art of UNIX Programming - -Let us try and get rid of the duplicate lines from this file using the ``uniq`` command. - -:: - - $ uniq items.txt - Programming Pearls - The C Programming Language - The Mythical Man Month: Essays on Software Engineering - Programming Pearls - The C Programming Language - Structure and Interpretation of Computer Programs - Programming Pearls - Compilers: Principles, Techniques, and Tools - The C Programming Language - The Art of UNIX Programming - Programming Pearls - The Art of Computer Programming - Introduction to Algorithms - The Art of UNIX Programming - The Pragmatic Programmer: From Journeyman to Master - Programming Pearls - Unix Power Tools - The Art of UNIX Programming - -Nothing happens! Why? The ``uniq`` command removes duplicate lines only when they are next to each other. So, we get a sorted file from the original file and work with that file, henceforth. - -:: - - $ sort items.txt | uniq - Compilers: Principles, Techniques, and Tools - Introduction to Algorithms - Programming Pearls - Structure and Interpretation of Computer Programs - The Art of Computer Programming - The Art of UNIX Programming - The C Programming Language - The Mythical Man Month: Essays on Software Engineering - The Pragmatic Programmer: From Journeyman to Master - Unix Power Tools - -``uniq -u`` command gives the lines which are unique and do not have any duplicates in the file. ``uniq -d`` outputs only those lines which have duplicates. The ``-c`` option displays the number of times each line occurs in the file. - -:: - - $ uniq -u items-sorted.txt - Compilers: Principles, Techniques, and Tools - Introduction to Algorithms - Structure and Interpretation of Computer Programs - The Art of Computer Programming - The Mythical Man Month: Essays on Software Engineering - The Pragmatic Programmer: From Journeyman to Master - Unix Power Tools - - $ uniq -dc items-sorted.txt - 5 Programming Pearls - 3 The Art of UNIX Programming - 3 The C Programming Language - -That brings us to the end of our discussion on text processing. Text -processing is an art and there is a lot more to it, than could have been -covered in this short introduction. But, we hope that the tools you learned -to use here, will help you solve a great deal of problems. - -Basic editing and editors -========================= - -vim ---- - -Vim is a very powerful editor. It has a lot of commands, and all of them -cannot be explained here. We shall try and look at a few, so that you can -find your way around in vim. - -To open a file in vim, we pass the filename as a parameter to the ``vim`` -command. If a file with that filename does not exist, a new file is -created. - -:: - - $ vim first.txt - -To start inserting text into the new file that we have opened, we need to -press the ``i`` key. This will take us into the *insert* mode from the -*command* mode. Hitting the ``esc`` key, will bring us back to the -*command* mode. There is also another mode of vim, called the *visual* mode -which will be discussed later in the course. - -In general, it is good to spend as little time as possible in the insert -mode and extensively use the command mode to achieve various tasks. - -To save the file, use ``:w`` in the command mode. From here on, it is -understood that we are in the command mode, whenever we are issuing any -command to vim. - -To save a file and continue editing, use ``:w FILENAME`` The file name is -optional. If you do not specify a filename, it is saved in the same file -that you opened. If a file name different from the one you opened is -specified, the text is saved with the new name, but you continue editing -the file that you opened. The next time you save it without specifying a -name, it gets saved with the name of the file that you initially opened. - -To save file with a new name and continue editing the new file, use ``:saveas FILENAME`` - -To save and quit, use ``:wq`` - -To quit, use ``:q`` - -To quit without saving, use ``:q!`` - -Moving around -~~~~~~~~~~~~~ - -While you are typing in a file, it is in-convenient to keep moving your -fingers from the standard position for typing to the arrow keys. Vim, -therefore, provides alternate keys for moving in the document. Note again -that, you should be in the command mode, when issuing any commands to vim. - -The basic cursor movement can be achieved using the keys, ``h`` (left), -``l`` (right), ``k`` (up) and ``j`` (down). - -:: - - ^ - k - < h l > - j - v - -Note: Most commands can be prefixed with a number, to repeat the command. -For instance, ``10j`` will move the cursor down 10 lines. - -Moving within a line -++++++++++++++++++++ - -+----------------------------------------+---------+ -| Cursor Movement | Command | -+========================================+=========+ -| Beginning of line | ``0`` | -+----------------------------------------+---------+ -| First non-space character of line | ``^`` | -+----------------------------------------+---------+ -| End of line | ``$`` | -+----------------------------------------+---------+ -| Last non-space character of line | ``g_`` | -+----------------------------------------+---------+ - -Moving by words and sentences -+++++++++++++++++++++++++++++ - -+------------------------------+---------+ -| Cursor Movement | Command | -+==============================+=========+ -| Forward, word beginning | ``w`` | -+------------------------------+---------+ -| Backward, word beginning | ``b`` | -+------------------------------+---------+ -| Forward, word end | ``e`` | -+------------------------------+---------+ -| Backward, word end | ``ge`` | -+------------------------------+---------+ -| Forward, sentence beginning | ``)`` | -+------------------------------+---------+ -| Backward, sentence beginning | ``(`` | -+------------------------------+---------+ -| Forward, paragraph beginning | ``}`` | -+------------------------------+---------+ -| Backward, paragraph beginning| ``{`` | -+------------------------------+---------+ - -More movement commands -++++++++++++++++++++++ - -+---------------------------------+------------+ -| Cursor Movement | Command | -+=================================+============+ -| Forward by a screenful of text | ``C-f`` | -+---------------------------------+------------+ -| Backward by a screenful of text | ``C-b`` | -+---------------------------------+------------+ -| Beginning of the screen | ``H`` | -+---------------------------------+------------+ -| Middle of the screen | ``M`` | -+---------------------------------+------------+ -| End of the screen | ``L`` | -+---------------------------------+------------+ -| End of file | ``G`` | -+---------------------------------+------------+ -| Line number ``num`` | ``[num]G`` | -+---------------------------------+------------+ -| Beginning of file | ``gg`` | -+---------------------------------+------------+ -| Next occurrence of the text | ``*`` | -| under the cursor | | -+---------------------------------+------------+ -| Previous occurrence of the text | ``#`` | -| under the cursor | | -+---------------------------------+------------+ - -Note: ``C-x`` is ``Ctrl`` + ``x`` - -The visual mode -~~~~~~~~~~~~~~~ - -The visual mode is a special mode that is not present in the original vi -editor. It allows us to highlight text and perform actions on it. All the -movement commands that have been discussed till now work in the visual mode -also. The editing commands that will be discussed in the future work on the -visual blocks selected, too. - -Editing commands -~~~~~~~~~~~~~~~~ - -The editing commands usually take the movements as arguments. A movement is -equivalent to a selection in the visual mode. The cursor is assumed to have -moved over the text in between the initial and the final points of the -movement. The motion or the visual block that's been highlighted can be -passed as arguments to the editing commands. - -+-------------------------+---------+ -| Editing effect | Command | -+=========================+=========+ -| Cutting text | ``d`` | -+-------------------------+---------+ -| Copying/Yanking text | ``y`` | -+-------------------------+---------+ -| Pasting copied/cut text | ``p`` | -+-------------------------+---------+ - -The cut and copy commands take the motions or visual blocks as arguments -and act on them. For instance, if you wish to delete the text from the -current text position to the beginning of the next word, type ``dw``. If -you wish to copy the text from the current position to the end of this -sentence, type ``y)``. - -Apart from the above commands, that take any motion or visual block as an -argument, there are additional special commands. - -+----------------------------------------+---------+ -| Editing effect | Command | -+========================================+=========+ -| Cut the character under the cursor | ``x`` | -+----------------------------------------+---------+ -| Replace the character under the | ``ra`` | -| cursor with ``a`` | | -+----------------------------------------+---------+ -| Cut an entire line | ``dd`` | -+----------------------------------------+---------+ -| Copy/yank an entire line | ``yy`` | -+----------------------------------------+---------+ - -Note: You can prefix numbers to any of the commands, to repeat them. - -Undo and Redo -~~~~~~~~~~~~~ -You can undo almost anything using ``u``. - -To undo the undo command type ``C-r`` - -Searching and Replacing -~~~~~~~~~~~~~~~~~~~~~~~ - -+-----------------------------------------+---------+ -| Finding | Command | -+=========================================+=========+ -| Next occurrence of ``text``, forward |``\text``| -+-----------------------------------------+---------+ -| Next occurrence of ``text``, backward |``?text``| -+-----------------------------------------+---------+ -| Search again in the same direction | ``n`` | -+-----------------------------------------+---------+ -| Search again in the opposite direction | ``N`` | -+-----------------------------------------+---------+ -| Next occurrence of ``x`` in the line | ``fx`` | -+-----------------------------------------+---------+ -| Previous occurrence of ``x`` in the line| ``Fx`` | -+-----------------------------------------+---------+ - -+---------------------------------------+------------------+ -| Finding and Replacing | Command | -+=======================================+==================+ -| Replace the first instance of ``old`` |``:s/old/new`` | -| with ``new`` in the current line. | | -+---------------------------------------+------------------+ -| Replace all instances of ``old`` |``:s/old/new/g`` | -| with ``new`` in the current line. | | -+---------------------------------------+------------------+ -| Replace all instances of ``old`` |``:s/old/new/gc`` | -| with ``new`` in the current line, | | -| but ask for confirmation each time. | | -+---------------------------------------+------------------+ -| Replace the first instance of ``old`` |``:%s/old/new`` | -| with ``new`` in the entire file. | | -+---------------------------------------+------------------+ -| Replace all instances of ``old`` |``:%s/old/new/g`` | -| with ``new`` in the entire file. | | -+---------------------------------------+------------------+ -| Replace all instances of ``old`` with |``:%s/old/new/gc``| -| ``new`` in the entire file but ask | | -| for confirmation each time. | | -+---------------------------------------+------------------+ - -SciTE ------ - -SciTE is a *source code* editor, that has a feel similar to the commonly -used GUI text editors. It has a wide range of features that are extremely -useful for a programmer, editing code. Also it aims to keep configuration -simple, and the user needs to edit a text file to configure SciTE to -his/her liking. - -Opening, Saving, Editing files with SciTE is extremely simple and trivial. -Knowledge of using a text editor will suffice. - -SciTE can syntax highlight code in various languages. It also has -auto-indentation, code-folding and other such features which are useful -when editing code. - -SciTE also gives you the option to (compile and) run your code, from within -the editor. - -Simple Shell Scripts -==================== - -A shell script is simply a sequence of commands, that are put into a file, -instead of entering them one by one onto the shell. The script can then be -run, to run the sequence of commands in a single shot instead of manually -running, each of the individual commands. - -For instance, let's say we wish to create a directory called ``marks`` in the -home folder and save the results of the students into a file -``results.txt``. - -We open our editor and save the following text to ``results.sh`` - -:: - - #!/bin/bash - mkdir ~/marks - cut -d " " -f 2- marks1.txt | paste -d " " students.txt - | sort > ~/marks/results.txt - -We can now run the script, - -:: - - $ ./results.sh - -We get an error saying, Permission denied! Why? Can you think of the -reason? (Hint: ``ls -l``). Yes, the file doesn't have execute permissions. -We make the file executable and then run it. - -:: - - $ chmod u+x results.sh - $ ./results.sh - -We get back the prompt. We can check the contents of the file -``results.txt`` to see if the script has run. - -So, here, we have our first shell script. We understand almost all of it, -except for the first line of the file. The first line is used to specify -the interpreter or shell which should be used to execute the script. In -this case, we are asking it to use the bash shell. - -Once, the script has run, we got back the prompt. We had to manually check, -if the contents of the file are correct, to see if the script has run. It -would be useful to have our script print out messages. For this, we can use -the ``echo`` command. We can edit our ``results.sh`` script, as follows. - -:: - - #!/bin/bash - mkdir ~/marks - cut -d " " -f 2- marks1.txt | paste -d " " students.txt - | sort > ~/marks/results.txt - echo "Results generated." - -Now, on running the script, we get a message on the screen informing us, -when the script has run. - -Let's now say, that we wish to let the user decide the file to which the -results should be written to. The results file, should be specifiable by an -argument in the command line. We can do so, by editing the file, as below. - -:: - - #!/bin/bash - mkdir ~/marks - cut -d " " -f 2- marks1.txt | paste -d " " students.txt - | sort > ~/marks/$1 - echo "Results generated." - - -The ``$1`` above, corresponds to the first command line argument to the -script. So, we can run the script as shown below, to save the results to -``grades.txt``. - -:: - - $ ./results.sh grades.txt - -When we run the ``results.sh`` file, we are specifying the location of the -script by using ``./``. But for any of the other commands (even if they may -not be shell scripts), we didn't have to specify their locations. Why? The -shell has a set of locations where it searches, for the command that we are -trying to run. These set of locations are saved in an "environment" -variable called PATH. We shall look at environment variables, again, later. -But, let us look at what the value of the PATH variable is. To view the -values of variables, we can use the echo command. - -:: - - $ echo $PATH - -So, these are all the paths that are searched, when looking to execute a -command. If we put the results.sh script in one of these locations, we -could simply run it, without using the ``./`` at the beginning. - -Variables ---------- - -As expected, it is possible to define our own variables inside our shell -scripts. For example, - -:: - - name="FOSSEE" - -creates a new variable ``name`` whose value is ``FOSSEE``. To refer to this -variable, inside our shell script, we would refer to it, as ``$name``. -**NOTE** that there is no space around the ``=`` sign. - -:: - - ls $name* - -It is possible to store the output of a command in a variable, by enclosing -the command in back-quotes. - -:: - - count=`wc -l wonderland.txt` - -saves the number of lines in the file ``wonderland.txt`` in the variable -count. - -Comments --------- - -The ``#`` character is used to comment out content from a shell script. -Anything that appears after the ``#`` character in a line, is ignored by -the bash shell. - -Control structures and Operators -================================ - -We can have if-else constructs, for and while loops in bash. Let us look at -how to write them, in this section. - -To write an if, or an if-else construct, we need to check or test for a -condition. ``test`` command allows us to test for conditions. ``test`` has -a whole range of tests that can be performed. The man page of ``test`` -gives a listing of various types of tests that can be performed with it. - -Let's write a simple script with an ``if`` condition that tests whether a -directory with a particular name, is present or not. - -``if`` ------- - -Let's save the following code to the script ``dir-test.sh`` - -:: - - #!/bin/bash - if test -d $1 - then - echo "Yes, the directory" $1 "is present" - fi - -When the script is run with an argument, it prints a message, if a -directory with that name exists in the current working directory. - -``if`` - ``else`` ------------------ - -Let's write a simple script which returns back whether the argument passed -is negative or not - -:: - - #!/bin/bash - if test $1 -lt 0 - then - echo "number is negative" - else - echo "number is non-negative" - fi - -We can run the file with a set of different inputs and see if it works. - -:: - - $ ./sign.sh -11 - -Instead of using the ``test`` command, square brackets can also be used. - -:: - - #!/bin/bash - if [ $1 -lt 0 ] - then - echo "number is negative" - else - echo "number is non-negative" - fi - -Note that the spacing is important, when using the square brackets. ``[`` -should be followed by a space and ``]`` should be preceded by a space. - -Let's create something interesting using the if-else clause. Let's write a -script, that greets the user, based on the time. - -:: - - #!/bin/sh - # Script to greet the user according to time of day - hour=`date | cut -c12-13` - now=`date +"%A, %d of %B, %Y (%r)"` - if [ $hour -lt 12 ] - then - mess="Good Morning $LOGNAME, Have a nice day!" - fi - - if [ $hour -gt 12 -a $hour -le 16 ] - then - mess="Good Afternoon $LOGNAME" - fi - - if [ $hour -gt 16 -a $hour -le 18 ] - then - mess="Good Evening $LOGNAME" - fi - echo -e "$mess\nIt is $now" - -There a couple of new things, in this script. ``$LOGNAME`` is another -environment variable, which has the login name of the user. The variables -``hour`` and ``now`` are actually taking the output of the commands that -are placed in the back quotes. - -Let us now see how to run loops in bash. We shall look at the ``for`` and -the ``while`` loops. - -``for`` -------- - -Suppose we have a set of files, that have names beginning with numbers -followed by their names - ``08 - Society.mp3``. We would like to rename -these files to remove the numbering. How would we go about doing that? - -It is clear from the problem statement that we could loop over the list of -files and rename each of the files. - -Let's first look at a simple ``for`` loop, to understand how it works. - -:: - - for animal in rat cat dog man - do - echo $animal - done - -We just wrote a list of animals, each animal's name separated by a space -and printed each name on a separate line. The variable ``animal`` is a -dummy or a loop variable. It can then be used to refer to the element of -the list that is currently being dealt with. We could, obviously, use -something as lame as ``i`` in place of ``animal``. - -To generate a range of numbers and iterate over them, we do the following. - -:: - - for i in {5..10} - do - echo $i - done - -Now, we use a ``for`` loop to list the files that we are interested in. - -:: - - for i in `ls *.mp3` - do - echo "$i" - done - -If the file-names contain spaces, ``for`` assumes each space separated word -to be a single item in the list and prints it in a separate line. We could -change the script slightly to overcome this problem. - -:: - - for i in *.mp3 - do - echo "$i" - done - -Now, we have each file name printed on a separate line. The file names are -in the form ``dd - Name.mp3`` and it has to be changed to the format -``Name.mp3``. Also, if the name has spaces, we wish to replace it with -hyphens. - -:: - - for i in *.mp3 - do - echo $f|tr -s " " "-"|cut -d - -f 2- - done - -Now we just replace the echo command with a ``mv`` command. - -:: - - for i in *.mp3 - do - mv $i `echo $f|tr -s " " "-"|cut -d - -f 2-` - done - -``while`` ---------- - -The ``while`` command allows us to continuously execute a block of commands -until the command that is controlling the loop is executing successfully. - -Let's start with the lamest example of a while loop. - -:: - - while true - do - echo "True" - done - -This, as you can see, is an infinite loop that prints the ``True``. - -Say we wish to write a simple program that takes user input and prints it -back, until the input is ``quit``, which quits the program. - -:: - - while [ "$variable" != "quit" ] - do - read variable - echo "Input - $variable" - done - exit 0 - -Environment Variables ---------------------- - -Environment variables are way of passing information from the shell to the -programs that are run in it. Programs are often made to look "in the -environment" for particular variables and behave differently based on what -their values are. - -Standard UNIX variables are split into two categories, environment -variables and shell variables. In broad terms, shell variables apply only -to the current instance of the shell and are used to set short-term working -conditions; environment variables have a farther reaching significance, and -those set at login are valid for the duration of the session. By -convention, environment variables have UPPER CASE and shell variables have -lower case names. - -Here are a few examples of environment variables, - -:: - - $ echo $OSTYPE - linux-gnu - $ echo $HOME - /home/user - -To see all the variables and their values, we could use any of the -following, - -:: - - $ printenv | less - $ env - -We have looked at the PATH variable, in the previous section. We shall now -use the ``export`` command to change it's value. - -:: - - $ export PATH=$PATH:$HOME/bin - -See the difference in value of PATH variable before and after modifying it. - -``export`` command is used to export a variable to the environment of all -the processes that are started from that shell. - -Miscellaneous Tools -=================== - -Finally, here are a bunch of tools, that will prove to be handy in your day -to day work. These tools will help you quickly perform tasks like searching -for files, comparing files and checking if they are the same, viewing the -exact differences between them. - -find ----- - -The ``find`` command lets you find files in a directory hierarchy. It -offers a very complex feature set allowing you to search for files with a -wide range of restrictions. We shall only look at some of the most -frequently used ones. You should look at the man page, for more. - -To find all files, which end with an extension, ``.pdf``, in the current -folder and all it's subfolders, - -:: - - $ find . -name "*.pdf" - -To list all the directory and sub-directory names, - -:: - - $ find . -type d - -``find`` allows you to set limits on file-size, modification time and whole -lot of other things. - -``cmp`` -------- - -To compare two files, whether they are identical or not, we can use the -``cmp`` command. Let us consider some situation, we run ``find`` to locate -some file, and it turns out that we have a file with same name in different -location. - -If we are unsure, whether both the files are the same, we can use the -``cmp`` command to check if the files are identical. - -:: - - $ find . -name quick.c - ./Desktop/programs/quick.c - ./c-folder/quick.c - $ cmp Desktop/programs/quick.c c-folder/quick.c - -If the cmp command doesn't return any output, it means that both files are -exactly identical. If there are any differences in the file, it gives you -the exact byte location at which the first difference occurred. - -Here is the output, after we made a small change to one of the files. - -:: - - $ cmp Desktop/programs/quick.c c-folder/quick.c - Desktop/programs/quick.c c-folder/quick.c differ: byte 339, line 24 - - -``diff`` --------- - -Now, we may not be happy with just the knowledge that the files are -different. We may want to see the exact differences between the files. -The ``diff`` command can be used to find the exact differences between the -files. - -:: - - $ diff Desktop/programs/quick.c c-folder/quick.c - -We get back a line by line difference between the two files. The ``>`` mark -indicates the content that has been added to the second file, and was not -present in the first file. The ``<`` mark indicates the lines that were -present in the first file, but are not existent in the second file. - -``tar`` -------- - -You would often come across (archive) files which are called *tarballs*. A -tar ball is essentially a collection of files, which may or may not be -compressed. Essentially, it eases the job of storing, backing up and -transporting multiple files, at once. - -Extracting an archive -~~~~~~~~~~~~~~~~~~~~~ - -The following command extracts the contents of the ``allfiles.tar`` tarball -to the directory extract. - -:: - - $ mkdir extract - $ cp allfiles.tar extract/ - $ cd extract - $ tar -xvf allfiles.tar - -The option, ``x`` tells ``tar`` to extract the files in the archive file -specified by the ``f`` option. The ``v`` option tells ``tar`` to give out a -verbose output. - -Creating an archive -~~~~~~~~~~~~~~~~~~~ - -Similarly, if we wish to create a ``tar`` archive, we use the ``c`` option -instead of the ``x`` option. For instance, the command below creates an -archive from all the files with the ``.txt`` extension. - -:: - - $ tar -cvf newarchive.tar *.txt - - -Compressed archives -~~~~~~~~~~~~~~~~~~~ - -You can also create and extract compressed archives using ``tar``. It -supports a wide variety of compressions like gzip, bzip2, lzma, etc. - -We need to add an additional option to ``tar`` to handle these -compressions. - - -+-------------+------------+ -| Compression | Option | -+-------------+------------+ -| gzip | ``-z`` | -| bzip2 | ``-j`` | -| lzma | ``--lzma`` | -+-------------+------------+ - - -So, if we wished to create a gzip archive in the previous command, we -change it to the following - -:: - - $ tar -cvzf newarchive.tar.gz *.txt - -Customizing your shell ----------------------- - -What would you do, if you want bash to execute a particular command each -time you start it up? For instance, say you want the current directory to -be your Desktop instead of your home folder, each time bash starts up. How -would you achieve this? Bash reads and executes commands in a whole bunch -of files called start-up files, when it starts up. - -When bash starts up as an interactive login shell, it reads the files -``/etc/profile``, ``~/.bash_profile``, ``~/.bash_login``, and -``~/.profile`` in that order. - -When it is a shell that is not a login shell, ``~/.bashrc`` is read and the -commands in it are executed. This can be prevented using the ``--norc`` -option. To force bash to use another file, instead of the ``~/.bashrc`` -file on start-up, the ``--rcfile`` option may be used. - -Now, you know what you should do, to change the current directory to you -Desktop. Just put a ``cd ~/Desktop`` into your ``~/.bashrc`` and you are -set! - -This example is quite a simple and lame one. The start-up files are used -for a lot more complex things than this. You could set (or unset) aliases -and a whole bunch of environment variables in the ``.bashrc``, like -changing environment variables etc. - -.. - Local Variables: - mode: rst - indent-tabs-mode: nil - sentence-end-double-space: nil - fill-column: 75 - End: diff --git a/ult/index.rst b/ult/index.rst deleted file mode 100644 index beaf301..0000000 --- a/ult/index.rst +++ /dev/null @@ -1,6 +0,0 @@ -================== - Using Linux Tools -================== - -.. include :: handout.rst -.. include :: exercises.rst diff --git a/ult/module_plan.rst b/ult/module_plan.rst deleted file mode 100644 index 5557222..0000000 --- a/ult/module_plan.rst +++ /dev/null @@ -1,95 +0,0 @@ -Module 1: Using Linux Tools -============================ - -Module Objectives ------------------ - -After successfully completing this module a participant will be able to: - -* Understand the design philosophy of \*nix {U} -* Use Linux as their day-to-day operating system {Ap} -* Use the text processing tools such as 'grep', 'tr' {Ap} -* Write and execute (bash) shell scripts {Ap} - -.. * Use a text editor comfortably {Ap} - -Suggested Reading ------------------ - -(1) "In the beginning..." by Neal Stephenson -(2) "The Unix Programming Environment" by Kerninghan and Pike - -**Initial Session Plan** - -+---------+----------------------------------------------+----------+ -| Session | Topic | Duration | -+---------+----------------------------------------------+----------+ -| 1 | What is Linux? FOSS Philosophy | 5 min | -| | | | -| | Getting Started | 15 min | -| | - login | | -| | - pwd | | -| | - ls | | -| | - mkdir | | -| | - cd | | -| | - touch | | -| | | | -| | Getting help | 10 min | -| | - man | | -| | - command line flags | | -| | - apropos | | -| | | | -| | Basic File Handling | 10 min | -| | - cp | | -| | - mv | | -| | - rm | | -| | | | -| | Linux File Hierarchy, permissions, ownership | 10 min | -| | - hier | | -| | - ls -l | | -| | - chmod | | -| | - chown | | -| | | | -+---------+----------------------------------------------+----------+ -| 2 | Looking at files | 15 min | -| | - cat | | -| | - wc | | -| | - less | | -| | - head | | -| | - tail | | -| | - cut | | -| | - paste | | -| | | | -| | Role of Command Shell | 20 min | -| | - redirection and piping | | -| | - stdin, stdout, stderr | | -| | - tab-completion | | -| | - history | | -| | - meta characters | | -| | | | -| | Text Processing | 15 min | -| | - sort | | -| | - grep | | -| | - tr | | -| | - uniq | | -| | | | -+---------+----------------------------------------------+----------+ -| 3 | Writing Simple Shell scripts | 10 min | -| | - echo | | -| | - command line parameters | | -| | - PATH | | -| | - chmod and execute permission | | -| | | | -| | Control structures and operators | 25 min | -| | - test, [ ] | | -| | - if, if-else | | -| | - for | | -| | - while | | -| | - Environment variables | | -| | | | -| | Miscellaneous Tools | 15 min | -| | - tar | | -| | - cmp, diff | | -| | - find | | -| | - customizing your shell | | -+---------+----------------------------------------------+----------+ diff --git a/ult/ult.tex b/ult/ult.tex deleted file mode 100644 index a94dc14..0000000 --- a/ult/ult.tex +++ /dev/null @@ -1,1721 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Using Linux Tools -% -% Author: FOSSEE -% Copyright (c) 2009, FOSSEE, IIT Bombay -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\documentclass[12pt,compress]{beamer} - -\mode<presentation> -{ - \usetheme{Warsaw} - \useoutertheme{infolines} - \setbeamercovered{transparent} -} - -\usepackage[english]{babel} -\usepackage[latin1]{inputenc} -%\usepackage{times} -\usepackage[T1]{fontenc} - -% Taken from Fernando's slides. -\usepackage{ae,aecompl} -\usepackage{mathpazo,courier,euler} -\usepackage[scaled=.95]{helvet} - -\definecolor{darkgreen}{rgb}{0,0.5,0} - -\usepackage{listings} -\lstset{language=sh, - basicstyle=\ttfamily\bfseries, - commentstyle=\color{red}\itshape, - stringstyle=\color{darkgreen}, - showstringspaces=false, - keywordstyle=\color{blue}\bfseries} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Macros -\setbeamercolor{emphbar}{bg=blue!20, fg=black} -\newcommand{\emphbar}[1] -{\begin{beamercolorbox}[rounded=true]{emphbar} - {#1} - \end{beamercolorbox} -} -\newcounter{time} -\setcounter{time}{0} -\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}} - -\newcommand{\typ}[1]{\lstinline{#1}} - -\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Title page -\title[Using Linux Tools]{SEES: Using Linux Tools} - -\author[FOSSEE] {FOSSEE} - -\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} -\date[]{} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo} -%\logo{\pgfuseimage{iitmlogo}} - - -%% Delete this, if you do not want the table of contents to pop up at -%% the beginning of each subsection: - -\AtBeginSection[] -{ - \begin{frame}<beamer> - \frametitle{Outline} - \tableofcontents[currentsection] - \end{frame} -} - -% If you wish to uncover everything in a step-wise fashion, uncomment -% the following command: -%\beamerdefaultoverlayspecification{<+->} - -%%\includeonlyframes{current,current1,current2,current3,current4,current5,current6} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% DOCUMENT STARTS -\begin{document} - -\begin{frame} - \maketitle -\end{frame} - -% CREATING TOC -\begin{frame} - \frametitle{Outline} - \tableofcontents - % You might wish to add the option [pausesections] -\end{frame} - - -\section{Introduction} -\begin{frame}[fragile] - \begin{block}{What is the Linux OS?} - \begin{itemize} - \item Free Open Source Operating System - \begin{description} - \item[Free] - Free as in Free Speech, not Free Beer - \item[Open-Source] - Permit modifications and redistribution of source code - \end{description} - \item Unix-inspired - \item Linux Kernel + Application software - \item Runs on a variety of hardware - \item Also called GNU/Linux - \end{itemize} - \end{block} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Why Linux?} - \begin{itemize} - \item Free as in Free Beer - \item Secure \& versatile - \end{itemize} - - \begin{block}{Why Linux for Scientific Computing?} - \begin{itemize} - \item Free as in Free Speech - \item Can run for \emph{ever} - \item Libraries - \item Parallel Computing - \end{itemize} - \end{block} -\end{frame} - -\section{Getting Started} -\begin{frame}[fragile] - \frametitle{Logging in} - \begin{itemize} - \item GNU/Linux does have a GUI - \item Command Line for this module - \item Hit \texttt{Ctrl + Alt + F1} - \item Login - \item \texttt{logout} command logs you out - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Where am I?} - \begin{itemize} - \item Logged in. Where are we? - \item \texttt{pwd} command gives the present working directory - \end{itemize} - \begin{lstlisting} - $ pwd - /home/user - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{What is in there?} - \begin{itemize} - \item \texttt{ls} command lists contents of \texttt{pwd} - \end{itemize} - \begin{lstlisting} - $ ls - jeeves.rst psmith.html blandings.html Music - \end{lstlisting} %$ - \begin{itemize} - \item Can also pass directory as argument - \end{itemize} - \begin{lstlisting} - $ ls Music - one.mp3 two.mp3 three.mp3 - \end{lstlisting} %$ - \begin{itemize} - \item \alert{the Unix world is case sensitive} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{New folders} - \begin{itemize} - \item \texttt{mkdir} creates new directories - \end{itemize} - \begin{lstlisting} - $ mkdir sees - $ ls - \end{lstlisting} - \begin{itemize} - \item Special characters need to be escaped OR quoted - \end{itemize} - \begin{lstlisting} - $ mkdir software\ engineering - $ mkdir "software engg" - \end{lstlisting} - \begin{itemize} - \item Generally, use hyphens or underscores instead of spaces in names - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Moving around} - \begin{itemize} - \item \texttt{cd} command changes the \texttt{pwd} - \end{itemize} - \begin{lstlisting} - $ cd sees - $ pwd - /home/user/sees/ - \end{lstlisting} - \begin{itemize} - \item Alternately written as \texttt{cd ./sees} - \item Specifying path relative to \texttt{pwd} - \item \texttt{..} takes one level up the directory structure - \end{itemize} - \begin{lstlisting} - $ cd .. - \end{lstlisting} % $ - \begin{itemize} - \item We could use absolute path instead of relative - \end{itemize} - \begin{lstlisting} - $ cd /home/user/sees/ - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{New files} - \begin{itemize} - \item \texttt{touch} command creates a blank file - \end{itemize} - \begin{lstlisting} - $ pwd - /home/user - $ cd sees - $ touch first - $ ls - first - \end{lstlisting} % $ -\end{frame} - -\section{Getting Help} -\begin{frame}[fragile] - \frametitle{What does a command do?} - - \begin{itemize} - \item \texttt{whatis} gives a quick description of a command - \end{itemize} - \begin{lstlisting} - $ whatis touch - touch (1) - change file timestamps - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{man} command gives more detailed description - \end{itemize} - \begin{lstlisting} - $ man touch - \end{lstlisting} % $ - \begin{itemize} - \item Shows all tasks that the command can perform - \item Hit \texttt{q} to quit the \texttt{man} page - \item For more, see the \texttt{man} page of \texttt{man} - \end{itemize} - \begin{lstlisting} - $ man man - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Using additional options} - - \begin{itemize} - \item \texttt{-h} or \texttt{--help} give summary of command usage - \end{itemize} - \begin{lstlisting} - $ ls --help - \end{lstlisting} % $ - \begin{itemize} - \item List out all files within a directory, recursively - \end{itemize} - \begin{lstlisting} - $ ls -R - \end{lstlisting} % $ - \begin{itemize} - \item Create a new directory along with parents, if required - \end{itemize} - \begin{lstlisting} - $ pwd - /home/user/ - $ ls sees/ - $ mkdir -p sees/linux-tools/scripts - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Searching for a command} - - \begin{itemize} - \item \texttt{apropos} searches commands based on their descriptions - \end{itemize} - - \begin{lstlisting} - $ apropos remove - \end{lstlisting} % $ - - \begin{itemize} - \item Returns a list of all commands that contain the search term - \item In this case, we are interested in \texttt{rm}, \texttt{rmdir} - \end{itemize} -\end{frame} - -\section{Basic File Handling} -\begin{frame}[fragile] - \frametitle{Removing files} - - \begin{itemize} - \item \texttt{rm} is used to delete files - \end{itemize} - - \begin{lstlisting} - $ rm foo - \end{lstlisting} % $ - - \begin{itemize} - \item \alert{\texttt{rm} works only for files; not directories} - \end{itemize} - - \begin{itemize} - \item Additional arguments required to remove a directory - \item \texttt{-r} stands for recursive. - \item Removes directory and all of it's content - \end{itemize} - - \begin{lstlisting} - $ rm -r bar - \end{lstlisting} % $ - - \begin{itemize} - \item \alert{\texttt{rmdir} can also be used; Explore} - \end{itemize} - -\end{frame} - - -\begin{frame}[fragile] - \frametitle{Copying Files} - - \begin{itemize} - \item \texttt{cp} copies files from one location to another - \end{itemize} - - \begin{lstlisting} - $ cp linux-tools/scripts/foo linux-tools/ - \end{lstlisting} % $ - - \begin{itemize} - \item New file-name can be used at target location - \item \texttt{foo} copied to new location with the name \texttt{bar} - \end{itemize} - - \begin{lstlisting} - $ cp linux-tools/scripts/foo linux-tools/bar - \end{lstlisting} % $ - - \begin{itemize} - \item \texttt{cp} overwrites files, unless explicitly asked not to - \item To prevent this, use the \texttt{-i} flag - \end{itemize} - - \begin{lstlisting} - $ cp -i linux-tools/scripts/foo linux-tools/bar - cp: overwrite `bar'? - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Copying Directories} - - \begin{itemize} - \item \texttt{-r} is required to copy a directory and all it's - content - \item Copying directories is similar to copying files - \end{itemize} - - \begin{lstlisting} - $ cd /home/user - $ cp -ir sees course - \end{lstlisting} -\end{frame} - - - -\begin{frame}[fragile] - \frametitle{Moving Files} - \begin{itemize} - \item \texttt{cp} and \texttt{rm} would be one way - \item \texttt{mv} command does the job - \item Also takes \texttt{-i} option to prompt before overwriting - \end{itemize} - - \begin{lstlisting} - $ cd /home/user - # Assume we have course directory already created - $ mv -i sees/ course/ - \end{lstlisting} - \begin{itemize} - \item No prompt! Why? - \end{itemize} - \begin{lstlisting} - $ ls course - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{sees} became a sub-directory of \texttt{course} - \item \texttt{mv} command doesn't over-write directories - \item \texttt{-i} option is useful when moving files around - \item \texttt{mv} to rename --- move to same location with new name - \end{itemize} -\end{frame} - -\section{Linux File Hierarchy, Permissions \& Ownership} -\begin{frame} - \frametitle{Linux File Hierarchy} - \begin{itemize} - \item \texttt{/} is called the root directory - \item It is the topmost level of the hierarchy - \item For details \texttt{man hier} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Permissions and Access control} - - \begin{itemize} - \item In a multi-user environment, access control is vital - \item Look at the output of \texttt{ls -l} - \end{itemize} - - \begin{lstlisting} - drwxr-xr-x 5 root users 4096 Jan 21 20:07 home - \end{lstlisting} % $ - - \begin{itemize} - \item The first column shows the permission information - \item First character specifies type of the file - \item Files have \texttt{-}; Directories have \texttt{d} - \item 3 sets of 3 characters --- for user, group and others - \item \texttt{r}, \texttt{w}, \texttt{x} --- for read, write, execute - \item Either the corresponding character or \texttt{-} is present - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Changing the permissions} - \begin{itemize} - \item Permissions can be changed by owner of the file - \item \texttt{chmod} command is used - \item \texttt{-R} option to recursively change for all content of a - directory - \end{itemize} - \begin{itemize} - \item Change permissions of \texttt{foo.sh} from - \texttt{-rw-r-{}-r-{}-} to \texttt{-rwxr-xr-{}-} - \end{itemize} - \begin{lstlisting} - $ ls -l foo.sh - $ chmod ug+x foo.sh - $ ls -l foo.sh - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Symbolic modes} - \begin{small} - \begin{center} - \begin{tabular}{lll} - Reference & Class & Description \\ - \hline - u & user & the owner of the file \\ - g & group & users who are members of the file's group \\ - o & others & users who are not hte owner of the file or members of the group \\ - a & all & all three of the above; is the same as \emph{ugo} \\ - \end{tabular} - \end{center} - - \begin{center} - \begin{tabular}{ll} - Operator & Description \\ - \hline - + & adds the specified modes to the specified classes \\ - - & removes the specified modes from the specified classes \\ - = & the modes specified are to be made the exact modes for the specified classes \\ - \end{tabular} - \end{center} - - \begin{center} - \begin{tabular}{lll} - Mode & Name & Description \\ - \hline - r & read & read a file or list a directory's contents \\ - w & write & write to a file or directory \\ - x & execute & execute a file or recurse a directory tree \\ - \end{tabular} - \end{center} - \end{small} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Changing Ownership of Files} - \begin{itemize} - \item \texttt{chown} changes the owner and group - \item By default, the user who creates file is the owner - \item The default group is set as the group of the file - \end{itemize} - \begin{lstlisting} - $ chown alice:users wonderland.txt - \end{lstlisting} % $ - \begin{itemize} - \item Did it work? \alert{Not every user can change ownership} - \item Super-user or \texttt{root} user alone is empowered - \end{itemize} -\end{frame} - -\section{Looking at files} -\begin{frame}[fragile] - \frametitle{\texttt{cat}} - \begin{itemize} - \item Displays the contents of files - \end{itemize} - \begin{lstlisting} - $ cat foo.txt - \end{lstlisting} % $ - \begin{itemize} - \item Concatenates the text of multiple files - \end{itemize} - \begin{lstlisting} - $ cat foo.txt bar.txt - \end{lstlisting} % $ - \begin{itemize} - \item Not-convenient to view long files - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{less}} - \begin{itemize} - \item View contents of a file one screen at a time - \end{itemize} - - \begin{lstlisting} - $ less wonderland.txt - \end{lstlisting} % $ - - \begin{itemize} - \item q: Quit - \item Arrows/Page Up/Page Down/Home/End: Navigation - \item ng: Jump to line number n - \item /pattern: Search. Regular expressions can be used - \item h: Help - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{wc}} - \begin{itemize} - \item Statistical information about the file - \item the number of lines in the file - \item the number of words - \item the number of characters - \end{itemize} - - \begin{lstlisting} - $ wc wonderland.txt - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{head} \& \texttt{tail}} - \begin{itemize} - \item let you see parts of files, instead of the whole file - \item \texttt{head} -- start of a file; \texttt{tail} -- end of a - file - \item show 10 lines by default - \end{itemize} - \begin{lstlisting} - $ head wonderland.txt - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-n} option to change the number of lines - \end{itemize} - \begin{lstlisting} - $ head -n 1 wonderland.txt - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{tail} is commonly used to monitor files - \item \texttt{-f} option to monitor the file - \item \texttt{Ctrl-C} to interrupt - \end{itemize} - \begin{lstlisting} - $ tail -f /var/log/dmesg - \end{lstlisting} % $ -\end{frame} - - -\begin{frame}[fragile] - \frametitle{\texttt{cut}} - \begin{itemize} - \item Allows you to view only certain sections of lines - \item Let's take \texttt{/etc/passwd} as our example - \end{itemize} - \begin{lstlisting} - root:x:0:0:root:/root:/bin/bash - \end{lstlisting} - \begin{itemize} - \item View only user names of all the users (first column) - \end{itemize} - \begin{lstlisting} - $ cut -d : -f 1 /etc/passwd - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-d} specifies delimiter between fields (default TAB) - \item \texttt{-f} specifies the field number - \item Multiple fields by separating field numbers with comma - \end{itemize} - \begin{lstlisting} - $ cut -d : -f 1,5,7 /etc/passwd - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{cut}} - \begin{itemize} - \item Allows choosing on the basis of characters or bytes - \item Example below gets first 4 characters of \texttt{/etc/passwd} - \end{itemize} - \begin{lstlisting} - $ cut -c 1-4 /etc/passwd - \end{lstlisting} % $ - \begin{itemize} - \item One of the limits of the range can be dropped - \item Sensible defaults are assumed in such cases - \end{itemize} - \begin{lstlisting} - $ cut -c -4 /etc/passwd - $ cut -c 10- /etc/passwd - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{paste}} - \begin{itemize} - \item Joins corresponding lines from two different files - \begin{center} - \begin{tabular}{l|l} - \verb~students.txt~ & \verb~marks.txt~ \\ - Hussain & 89 92 85 \\ - Dilbert & 98 47 67 \\ - Anne & 67 82 76 \\ - Raul & 78 97 60 \\ - Sven & 67 68 69 \\ - \end{tabular} - \end{center} - \end{itemize} - \begin{lstlisting} - $ paste students.txt marks.txt - $ paste -s students.txt marks.txt - \end{lstlisting} - \begin{itemize} - \item \texttt{-s} prints content, one below the other - \item If first column of marks file had roll numbers? How do we get - a combined file with the same output as above (i.e. without roll - numbers). We need to use \texttt{cut} \& \texttt{paste} together. - But how? - \end{itemize} -\end{frame} - -\section{The Command Shell} - -\begin{frame}[fragile] - \frametitle{Redirection and Piping} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - > /tmp/m_tmp.txt - $ paste -d " " students.txt m_tmp.txt - \end{lstlisting} % $ - - or - - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - - \end{lstlisting} % $ - - \begin{itemize} - \item The first solution used Redirection - \item The second solution uses Piping - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Redirection} - - \begin{itemize} - \item The standard output (stdout) stream goes to the display - \item Not always, what we need - \item First solution, redirects output to a file - \item \texttt{>} states that output is redirected; It is - followed by location to redirect - \end{itemize} - \begin{lstlisting} - $ command > file1 - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{>} creates a new file at specified location - \item \texttt{>>} appends to a file at specified location - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Redirection \ldots} - \begin{itemize} - \item Similarly, the standard input (stdin) can be redirected - \end{itemize} - \begin{lstlisting} - $ command < file1 - \end{lstlisting} % $ - \begin{itemize} - \item input and the output redirection could be combined - \end{itemize} - \begin{lstlisting} - $ command < infile > outfile - \end{lstlisting} % $ - \begin{itemize} - \item Standard error (stderr) is the third standard stream - \item All error messages come through this stream - \item \texttt{stderr} can also be redirected - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Redirection \ldots} - \begin{itemize} - \item Following example shows \texttt{stderr} redirection - \item Error is printed out in the first case - \item Error message is redirected, in the second case - \end{itemize} - \begin{lstlisting} - $ cut -d " " -c 2- marks1.txt \ - > /tmp/m_tmp.txt - - $ cut -d " " -f 2- marks1.txt 1> \ - /tmp/m_tmp.txt 2> /tmp/m_err.txt - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{1>} redirects \texttt{stdout}; \texttt{2>} redirects - \texttt{stderr} - \end{itemize} - \begin{lstlisting} - $ paste -d " " students.txt m_tmp.txt - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Piping} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-} instead of FILE asks \texttt{paste} to read from - \texttt{stdin} - \item \texttt{cut} command is a normal command - \item the \texttt{|} seems to be joining the two commands - \item Redirects output of first command to \texttt{stdin}, which - becomes input to the second command - \item This is called piping; \texttt{|} is called a pipe - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Piping} - \begin{itemize} - \item Roughly same as -- 2 redirects and a temporary file - \end{itemize} - \begin{lstlisting} - $ command1 > tempfile - $ command2 < tempfile - $ rm tempfile - \end{lstlisting} % $ - \begin{itemize} - \item Any number of commands can be piped together - \end{itemize} -\end{frame} - -\subsection{Features of the Shell} - -\begin{frame}[fragile] - \frametitle{Tab-completion} - \begin{itemize} - \item Hit tab to complete an incompletely typed word - \item Tab twice to list all possibilities when ambiguous completion - \item Bash provides tab completion for the following. - \begin{enumerate} - \item File Names - \item Directory Names - \item Executable Names - \item User Names (when they are prefixed with a \~{}) - \item Host Names (when they are prefixed with a @) - \item Variable Names (when they are prefixed with a \$) - \end{enumerate} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{History} - \begin{itemize} - \item Bash saves history of commands typed - \item Up and down arrow keys allow to navigate history - \item \texttt{Ctrl-r} searches for commands used - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Shell Meta Characters} - \begin{itemize} - \item ``meta characters'' are special command directives - \item File-names shouldn't have meta-characters - \item \verb+/<>!$%^&*|{}[]"'`~;+ - \end{itemize} - \begin{lstlisting} - $ ls file.* - \end{lstlisting} % $ - \begin{itemize} - \item Lists \texttt{file.ext} files, where \texttt{ext} can be - anything - \end{itemize} - \begin{lstlisting} - $ ls file.? - \end{lstlisting} % $ - \begin{itemize} - \item Lists \texttt{file.ext} files, where \texttt{ext} is only one - character - \end{itemize} -\end{frame} - -\section{More text processing} - -\begin{frame}[fragile] - \frametitle{\texttt{sort}} - \begin{itemize} - \item \texttt{sort} can be used to get sorted content - \item Command below prints student marks, sorted by name - \end{itemize} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - \ - | sort - \end{lstlisting} % $ - \begin{itemize} - \item The default is sort based on the whole line - \item \texttt{sort} can sort based on a particular field - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{sort} \ldots} - \begin{itemize} - \item The command below sorts based on marks in first subject - \end{itemize} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt -\ - | sort -t " " -k 2 -rn - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-t} specifies the delimiter between fields - \item \texttt{-k} specifies the field to use for sorting - \item \texttt{-n} to choose numerical sorting - \item \texttt{-r} for sorting in the reverse order - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{grep}} - \begin{itemize} - \item \texttt{grep} is a command line text search utility - \item Command below searches \& shows the marks of Anne alone - \end{itemize} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - - | grep Anne - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{grep} is case-sensitive by default - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{grep} \ldots} - \begin{itemize} - \item \texttt{-i} for case-insensitive searches - \end{itemize} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - - | grep -i Anne - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-v} inverts the search - \item To see everyone's marks except Anne's - \end{itemize} - \begin{lstlisting} - $ cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - - | grep -iv Anne - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{tr}} - \begin{itemize} - \item \texttt{tr} translates or deletes characters - \item Reads from \texttt{stdin} and outputs to \texttt{stdout} - \item Given, two sets of characters, replaces one with other - \item The following, replaces all lower-case with upper-case - \end{itemize} - \begin{lstlisting} - $ cat students.txt | tr a-z A-Z - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-s} compresses sequences of identical adjacent - characters in the output to a single one - \item Following command removes empty newlines - \end{itemize} - \begin{lstlisting} - $ tr -s '\n' '\n' - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{tr} \ldots} - \begin{itemize} - \item \texttt{-d} deletes all specified characters - \item Only a single character set argument is required - \item The following command removes carriage return characters - (converting file in DOS/Windows format to the Unix format) - \end{itemize} - \begin{lstlisting} - $ cat foo.txt | tr -d '\r' > bar.txt - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{-c} complements the first set of characters - \item The following command removes all non-alphanumeric characters - \end{itemize} - \begin{lstlisting} - $ tr -cd '[:alnum:]' - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{uniq}} - \begin{itemize} - \item \texttt{uniq} command removes duplicates from \alert{sorted} input - \end{itemize} - \begin{lstlisting} - $ sort items.txt | uniq - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{uniq -u} gives lines which do not have any duplicates - \item \texttt{uniq -d} outputs only those lines which have duplicates - \item \texttt{-c} displays the number of times each line occurs - \end{itemize} - \begin{lstlisting} - $ sort items.txt | uniq -u - $ sort items.txt | uniq -dc - \end{lstlisting} % $ -\end{frame} - -\section{Simple Shell Scripts} - -\begin{frame}[fragile] - \frametitle{Shell scripts} - \begin{itemize} - \item Simply a sequence of shell commands in a file - \item To save results of students in \texttt{results.txt} in - \texttt{marks} dir - \end{itemize} - \begin{lstlisting} - #!/bin/bash - mkdir ~/marks - cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - \ - | sort > ~/marks/results.txt - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Shell scripts \ldots} - \begin{itemize} - \item Save the script as \texttt{results.sh} - \item Make file executable and then run - \end{itemize} - \begin{lstlisting} - $ chmod u+x results.sh - $ ./results.sh - \end{lstlisting} % $ - \begin{itemize} - \item What does the first line in the script do? - \item Specify the interpreter or shell which should be used to - execute the script; in this case \texttt{bash} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Variables \& Comments} - \begin{lstlisting} - $ name=FOSSEE - $ count=`wc -l wonderland.txt` - $ echo $count # Shows the value of count - \end{lstlisting} % $ - \begin{itemize} - \item It is possible to create variables in shell scripts - \item Variables can be assigned with the output of commands - \item \alert{NOTE:} There is no space around the \texttt{=} sign - \item All text following the \texttt{\#} is considered a comment - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{echo}} - \begin{itemize} - \item \texttt{echo} command prints out messages - \end{itemize} - \begin{lstlisting} - #!/bin/bash - mkdir ~/marks - cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - \ - | sort > ~/marks/results.txt - echo "Results generated." - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Command line arguments} - \begin{itemize} - \item Shell scripts can be given command line arguments - \item Following code allows to specify the results file - \end{itemize} - \begin{lstlisting} - #!/bin/bash - mkdir ~/marks - cut -d " " -f 2- marks1.txt \ - | paste -d " " students.txt - \ - | sort > ~/marks/$1 - echo "Results generated." - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{\$1} corresponds to first command line argument - \item \texttt{\$n} corresponds to $n{th}$ command line argument - \item It can be run as shown below - \end{itemize} - \begin{lstlisting} - $ ./results.sh grades.txt - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{PATH}} - \begin{itemize} - \item The shell searches in a set of locations, for the command - \item Locations are saved in ``environment'' variable called PATH - \item \texttt{echo} can show the value of variables - \end{itemize} - \begin{lstlisting} - $ echo $PATH - \end{lstlisting} % $ - \begin{itemize} - \item Put \texttt{results.sh} in one of these locations - \item It can then be run without \texttt{./} - \end{itemize} -\end{frame} - -\section{Control structures and Operators} -\begin{frame}[fragile] - \frametitle{Control Structures} - \begin{itemize} - \item \texttt{if-else} - \item \texttt{for} loops - \item \texttt{while} loops - \end{itemize} - \begin{itemize} - \item \texttt{test} command to test for conditions - \item A whole range of tests that can be performed - \begin{itemize} - \item \texttt{STRING1 = STRING2} -- string equality - \item \texttt{INTEGER1 -eq INTEGER2} -- integer equality - \item \texttt{-e FILE} -- existence of FILE - \end{itemize} - \item \texttt{man} page of \texttt{test} gives list of various tests - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{if}} - \begin{itemize} - \item Print message if directory exists in \texttt{pwd} - \end{itemize} - \begin{lstlisting} - #!/bin/bash - if test -d $1 - then - echo "Yes, the directory" \ - $1 "is present" - fi - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{if}-\texttt{else}} - \begin{itemize} - \item Checks whether argument is negative or not - \end{itemize} - \begin{lstlisting} - #!/bin/bash - if test $1 -lt 0 - then - echo "number is negative" - else - echo "number is non-negative" - fi - \end{lstlisting} % $ - \begin{lstlisting} - $ ./sign.sh -11 - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{[ ]} - alias for \texttt{test}} - \begin{itemize} - \item Square brackets (\texttt{[]}) can be used instead of - \texttt{test} - \item - \end{itemize} - \begin{lstlisting} - #!/bin/bash - if [ $1 -lt 0 ] - then - echo "number is negative" - else - echo "number is non-negative" - fi - \end{lstlisting} % $ - \begin{itemize} - \item \alert{spacing is important, when using the square brackets} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{if}-\texttt{else}} - \begin{itemize} - \item An example script to greet the user, based on the time - \end{itemize} - \begin{lstlisting} - #!/bin/sh - # Script to greet the user - # according to time of day - hour=`date | cut -c12-13` - now=`date +"%A, %d of %B, %Y (%r)"` - if [ $hour -lt 12 ] - then - mess="Good Morning \ - $LOGNAME, Have a nice day!" - fi - \end{lstlisting} %$ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{if}-\texttt{else} \ldots} - \begin{lstlisting} - if [ $hour -gt 12 -a $hour -le 16 ] - then - mess="Good Afternoon $LOGNAME" - fi - if [ $hour -gt 16 -a $hour -le 18 ] - then - mess="Good Evening $LOGNAME" - fi - echo -e "$mess\nIt is $now" - \end{lstlisting} % $ - \begin{itemize} - \item \texttt{\$LOGNAME} has login name (env. variable) - \item backquotes store commands outputs into variables - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{for}} - \begin{block}{Problem} - Given a set of \texttt{.mp3} files, that have names beginning with - numbers followed by their names --- \texttt{08 - Society.mp3} --- - rename the files to have just the names. Also replace any spaces - in the name with hyphens. - \end{block} - \begin{itemize} - \item Loop over the list of files - \item Process the names, to get new names - \item Rename the files - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{for}} - \begin{itemize} - \item A simple example of the \texttt{for} loop - \end{itemize} - \begin{lstlisting} - for animal in rat cat dog man - do - echo $animal - done - \end{lstlisting} % $ - \begin{itemize} - \item List of animals, each animal's name separated by a space - \item Loop over the list; \texttt{animal} is a dummy variable - \item Echo value of \texttt{animal} --- each name in list - \end{itemize} - \begin{lstlisting} - for i in {10..20} - do - echo $i - done - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{for}} - \begin{itemize} - \item Let's start with echoing the names of the files - \end{itemize} - \begin{lstlisting} - for i in `ls *.mp3` - do - echo "$i" - done - \end{lstlisting} % $ - \begin{itemize} - \item Spaces in names cause trouble! - \item The following works better - \end{itemize} - \begin{lstlisting} - for i in *.mp3 - do - echo "$i" - done - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{tr} \& \texttt{cut}} - \begin{itemize} - \item Replace all spaces with hyphens using \texttt{tr -s} - \item Use cut \& keep only the text after the first hyphen - \end{itemize} - \begin{lstlisting} - for i in *.mp3 - do - echo $i|tr -s " " "-"|cut -d - -f 2- - done - \end{lstlisting} % $ - Now \texttt{mv}, instead of just echoing - \begin{lstlisting} - for i in *.mp3 - do - mv $i `echo $i|tr -s " " "-"\ - |cut -d - -f 2-` - done - \end{lstlisting} % $ -\end{frame} - - -\begin{frame}[fragile] - \frametitle{\texttt{while}} - \begin{itemize} - \item Continuously execute a block of commands until condition - becomes false - \end{itemize} - - \begin{itemize} - \item program that takes user input and prints it back, until the - input is \texttt{quit} - \end{itemize} - - \begin{lstlisting} - while [ "$variable" != "quit" ] - do - read variable - echo "Input - $variable" - done - exit 0 - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Environment Variables} - \begin{itemize} - \item Pass information from shell to programs running in it - \item Behavior of programs can change based on values of variables - \item Environment variables vs. Shell variables - \item Shell variables -- only current instance of the shell - \item Environment variables -- valid for the whole session - \item Convention -- environment variables are UPPER CASE - \end{itemize} - \begin{lstlisting} - $ echo $OSTYPE - linux-gnu - $ echo $HOME - /home/user - \end{lstlisting} % $ -\end{frame} - -\begin{frame}[fragile] - \frametitle{Environment Variables \ldots} - \begin{itemize} - \item The following commands show values of all the environment - variables - \end{itemize} - \begin{lstlisting} - $ printenv | less - $ env - \end{lstlisting} % $ - \begin{itemize} - \item Use \texttt{export} to change Environment variables - \item The new value is available to all programs started from the shell - \end{itemize} - \begin{lstlisting} - $ export PATH=$PATH:$HOME/bin - \end{lstlisting} % $ -\end{frame} - -\section{Miscellaneous Tools} - -\begin{frame}[fragile] - \frametitle{\texttt{find}} - \begin{itemize} - \item Find files in a directory hierarchy - \item Offers a very complex feature set - \item Look at the \texttt{man} page! - \end{itemize} - \begin{itemize} - \item Find all \texttt{.pdf} files, in current dir and sub-dirs - \begin{lstlisting} - $ find . -name ``*.pdf'' - \end{lstlisting} % $ - \item List all the directory and sub-directory names - \begin{lstlisting} - $ find . -type d - \end{lstlisting} % $ - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{cmp}} - \begin{itemize} - \item Compare two files - \end{itemize} - \begin{lstlisting} - $ find . -name quick.c - ./Desktop/programs/quick.c - ./c-folder/quick.c - $ cmp Desktop/programs/quick.c \ - c-folder/quick.c - \end{lstlisting} % $ - \begin{itemize} - \item No output when the files are exactly the same - \item Else, gives location where the first difference occurs - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\texttt{diff}} - \begin{itemize} - \item We know the files are different, but want exact differences - \end{itemize} - \begin{lstlisting} - $ diff Desktop/programs/quick.c \ - c-folder/quick.c - \end{lstlisting} % $ - \begin{itemize} - \item line by line difference between files - \item \texttt{>} indicates content only in second file - \item \texttt{<} indicates content only in first file - \end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{\texttt{tar}} -\begin{itemize} -\item \emph{tarball} -- essentially a collection of files -\item May or may not be compressed -\item Eases the job of storing, backing-up \& transporting files -\end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Extracting an archive} - -\begin{lstlisting} -$ mkdir extract -$ cp allfiles.tar extract/ -$ cd extract -$ tar -xvf allfiles.tar -\end{lstlisting} %$ - -\begin{itemize} -\item \texttt{-x} --- Extract files within the archive -\item \texttt{-f} --- Specify the archive file -\item \texttt{-v} --- Be verbose -\end{itemize} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Creating an archive} -\begin{lstlisting} -$ tar -cvf newarchive.tar *.txt -\end{lstlisting} % $ -\begin{itemize} -\item \texttt{-c} --- Create archive -\item Last argument is list of files to be added to archive -\end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Compressed archives} - \begin{itemize} - \item \texttt{tar} can create and extract compressed archives - \item Supports compressions like gzip, bzip2, lzma, etc. - \item Additional option to handle compressed archives - \begin{center} - \begin{tabular}{ll} - Compression & Option \\ - gzip & \texttt{-z} \\ - bzip2 & \texttt{-j} \\ - lzma & \texttt{-{}-lzma} \\ - \end{tabular} - \end{center} - \end{itemize} - \begin{lstlisting} - $ tar -cvzf newarchive.tar.gz *.txt - \end{lstlisting} % $ -\end{frame} - - -\begin{frame} -\frametitle{Customizing your shell} -\begin{itemize} -\item Bash reads \texttt{/etc/profile}, - \texttt{\textasciitilde{}/.bash\_profile}, - \texttt{\textasciitilde{}/.bash\_login}, and - \texttt{\textasciitilde{}/.profile} in that order, when starting - up as a login shell. -\item \texttt{\textasciitilde{}/.bashrc} is read, when not a login - shell -\item Put any commands that you want to run when bash starts, in this - file. -\end{itemize} -\end{frame} - -%% THE DOCUMENT ENDS HERE -\end{document} -%%%%%%%%%%%%%%%%%%%% - -\section{Basic editing and editors} -\begin{frame}[fragile] -\frametitle{vim} - - -Vim is a very powerful editor. It has a lot of commands, and all of them -cannot be explained here. We shall try and look at a few, so that you -can find your way around in vim. - -To open a file in vim, we pass the filename as a parameter to the \texttt{vim} -command. If a file with that filename does not exist, a new file is -created. - -\begin{lstlisting} -$ vim first.txt -\end{lstlisting} % $ - -To start inserting text into the new file that we have opened, we need -to press the \texttt{i} key. This will take us into the \emph{insert} mode from the -\emph{command} mode. Hitting the \texttt{esc} key, will bring us back to the -\emph{command} mode. There is also another mode of vim, called the \emph{visual} -mode which will be discussed later in the course. - -In general, it is good to spend as little time as possible in the insert -mode and extensively use the command mode to achieve various tasks. - -To save the file, use \texttt{:w} in the command mode. From here on, it is -understood that we are in the command mode, whenever we are issuing any -command to vim. - -To save a file and continue editing, use \texttt{:w FILENAME} The file name is -optional. If you do not specify a filename, it is saved in the same file -that you opened. If a file name different from the one you opened is -specified, the text is saved with the new name, but you continue editing -the file that you opened. The next time you save it without specifying a -name, it gets saved with the name of the file that you initially opened. - -To save file with a new name and continue editing the new file, use -\texttt{:saveas FILENAME} - -To save and quit, use \texttt{:wq} - -To quit, use \texttt{:q} - -To quit without saving, use \texttt{:q!} -\begin{itemize} - -\item Moving around\\ -While you are typing in a file, it is in-convenient to keep moving your -fingers from the standard position for typing to the arrow keys. Vim, -therefore, provides alternate keys for moving in the document. Note -again that, you should be in the command mode, when issuing any commands -to vim. - -The basic cursor movement can be achieved using the keys, \texttt{h} (left), -\texttt{l} (right), \texttt{k} (up) and \texttt{j} (down). - -\begin{lstlisting} -^ -k -\end{lstlisting} % $ - -\begin{quote} - -\begin{description} -\item[< h l >] j v -\end{description} - -\end{quote} - -Note: Most commands can be prefixed with a number, to repeat the -command. For instance, \texttt{10j} will move the cursor down 10 lines. - - -\item Moving within a line\\ -\begin{center} -\begin{tabular}{ll} - Cursor Movement & Command \\ -\hline - Beginning of line & \texttt{0} \\ - First non-space character of line & \texttt{\textasciicircum{}} \\ - End of line & \texttt{\$} \\ - Last non-space character of line & \texttt{g\_} \\ -\end{tabular} -\end{center} - - - - -\item Moving by words and sentences\\ -\begin{center} -\begin{tabular}{ll} - Cursor Movement & Command \\ -\hline - Forward, word beginning & \texttt{w} \\ - Backward, word beginning & \texttt{b} \\ - Forward, word end & \texttt{e} \\ - Backward, word end & \texttt{ge} \\ - Forward, sentence beginning & \texttt{)} \\ - Backward, sentence beginning & \texttt{(} \\ - Forward, paragraph beginning & \texttt{\}} \\ - Backward, paragraph beginning & \texttt{\{} \\ -\end{tabular} -\end{center} - - - - -\item More movement commands\\ -\begin{center} -\begin{tabular}{ll} - Cursor Movement & Command \\ -\hline - Forward by a screenful of text & \texttt{C-f} \\ - Backward by a screenful of text & \texttt{C-b} \\ - Beginning of the screen & \texttt{H} \\ - Middle of the screen & \texttt{M} \\ - End of the screen & \texttt{L} \\ - End of file & \texttt{G} \\ - Line number \texttt{num} & \texttt{[num]G} \\ - Beginning of file & \texttt{gg} \\ - Next occurrence of the text under the cursor & \texttt{*} \\ - Previous occurrence of the text under the cursor & \texttt{\#} \\ -\end{tabular} -\end{center} - - - -Note: \texttt{C-x} is \texttt{Ctrl} + \texttt{x} - - -\item The visual mode\\ -The visual mode is a special mode that is not present in the original vi -editor. It allows us to highlight text and perform actions on it. All -the movement commands that have been discussed till now work in the -visual mode also. The editing commands that will be discussed in the -future work on the visual blocks selected, too. - - -\item Editing commands\\ -The editing commands usually take the movements as arguments. A movement -is equivalent to a selection in the visual mode. The cursor is assumed -to have moved over the text in between the initial and the final points -of the movement. The motion or the visual block that's been highlighted -can be passed as arguments to the editing commands. - - -\begin{center} -\begin{tabular}{ll} - Editing effect & Command \\ -\hline - Cutting text & \texttt{d} \\ - Copying/Yanking text & \texttt{y} \\ - Pasting copied/cut text & \texttt{p} \\ -\end{tabular} -\end{center} - - - -The cut and copy commands take the motions or visual blocks as arguments -and act on them. For instance, if you wish to delete the text from the -current text position to the beginning of the next word, type \texttt{dw}. If -you wish to copy the text from the current position to the end of this -sentence, type \texttt{y)}. - -Apart from the above commands, that take any motion or visual block as -an argument, there are additional special commands. - - -\begin{center} -\begin{tabular}{ll} - Editing effect & Command \\ -\hline - Cut the character under the cursor & \texttt{x} \\ - Replace the character under the cursor with \texttt{a} & \texttt{ra} \\ - Cut an entire line & \texttt{dd} \\ - Copy/yank an entire line & \texttt{yy} \\ -\end{tabular} -\end{center} - - - -Note: You can prefix numbers to any of the commands, to repeat them. - - -\item Undo and Redo\\ -You can undo almost anything using \texttt{u}. - -To undo the undo command type \texttt{C-r} - - -\item Searching and Replacing\\ -\begin{center} -\begin{tabular}{ll} - Finding & Command \\ -\hline - Next occurrence of \texttt{text}, forward & \texttt{\textbackslash{}text} \\ - Next occurrence of \texttt{text}, backward & \texttt{?text} \\ - Search again in the same direction & \texttt{n} \\ - Search again in the opposite direction & \texttt{N} \\ - Next occurrence of \texttt{x} in the line & \texttt{fx} \\ - Previous occurrence of \texttt{x} in the line & \texttt{Fx} \\ -\end{tabular} -\end{center} - - - - -\begin{center} -\begin{tabular}{ll} - Finding and Replacing & Command \\ -\hline - Replace the first instance of \texttt{old} with \texttt{new} in the current line. & \texttt{:s/old/new} \\ - Replace all instances of \texttt{old} with \texttt{new} in the current line. & \texttt{:s/old/new/g} \\ - Replace all instances of \texttt{old} with \texttt{new} in the current line, but ask for confirmation each time. & \texttt{:s/old/new/gc} \\ - Replace the first instance of \texttt{old} with \texttt{new} in the entire file. & \texttt{:\%s/old/new} \\ - Replace all instances of \texttt{old} with \texttt{new} in the entire file. & \texttt{:\%s/old/new/g} \\ - Replace all instances of \texttt{old} with \texttt{new} in the entire file but ask for confirmation each time. & \texttt{:\%s/old/new/gc} \\ -\end{tabular} -\end{center} - - - -\end{itemize} % ends low level -\end{frame} -\begin{frame} -\frametitle{SciTE} - - -SciTE is a \emph{source code} editor, that has a feel similar to the commonly -used GUI text editors. It has a wide range of features that are -extremely useful for a programmer, editing code. Also it aims to keep -configuration simple, and the user needs to edit a text file to -configure SciTE to his/her liking. - -Opening, Saving, Editing files with SciTE is extremely simple and -trivial. Knowledge of using a text editor will suffice. - -SciTE can syntax highlight code in various languages. It also has -auto-indentation, code-folding and other such features which are useful -when editing code. - -SciTE also gives you the option to (compile and) run your code, from -within the editor. -\end{frame} - - - |