merging mgregson's patch to the ssh section and minor typos
authorEdgar Bering <ebering@csclub.uwaterloo.ca>
Tue, 9 Sep 2008 21:09:05 +0000 (17:09 -0400)
committerEdgar Bering <ebering@csclub.uwaterloo.ca>
Tue, 9 Sep 2008 21:09:05 +0000 (17:09 -0400)
holy-fuck-a-shell.pod

index 5702507..337ad1b 100644 (file)
@@ -11,20 +11,18 @@ practice one can control a computer with the skill of a poet.
 =head2 A few useful keys before we begin
 
 As you've probably guessed the shell is a command line interface that
-you type into. Its essentially an interactive programming language,
+you type into. It's essentially an interactive programming language,
 like the interactions window in DrScheme, but designed to operate on
 the system and work in a rather diverse environment. Its also designed
-for convinence, and as you'll discover quite powerful. Before we get
+for convinence, and as you'll discover, quite powerful. Before we get
 started there are a few keystrokes you'll need to be aware of.
 
-First, commands that you type in edit just like a line of text, you can
-scroll back and forth, use home and end keys, delete and backspace, etc.
-However its only one line, so the obvious question is what do up and down
-do? Well, they scroll back and foreward in your I<command history>, a log
-of everything you've done previous. Say you want to re-do something, just
-press up until the command you want re-appears. You can make small changes
-if you like, and if you go to far or want to get back to a blank line just
-scroll back down with the down arrow.
+First, the commands that you type in can be editted, similar to a line of
+text in a text editor.  You can move the cursor left and right, erase text
+(both delete and backspace work as you're familiar with from your word
+processor, and ctrl+k will delete everything to the right of the cursor),
+and scroll through your I<command history> (using the up arrow and down
+arrow for back and forwards respctively).
 
 If you want to view your command history use the command C<history>. To run
 an old command type C<!number> where number is the number next to the 
@@ -32,17 +30,24 @@ command in history.
 
 Most shells also provide tab completion of commands and file names, to
 use this just press tab after typing part of a file path or command, as long
-as its unique. If its not the shell will show you all the possibilities.
+as it's unique. If it's not the shell will show you all the possibilities
+(this may be a rather long list).
 
 =head2 Getting to the Shell
 
 There are several ways to access the shell remotely and locally. Remote
 shells can be obtained by connecting to a server with a program called
 Secure Shell or ssh. If you're local to a linux or unix system just start
-any of the many terminal programs.
+any of the many terminal programs. (On OS-X, look for Terminal in
+Applications>Utilities.  On Ubuntu look in the Applications menu under
+Accessories.)
 
 =head3 From Windows
 
+Unlike the other operating systems discussed here, Windows does not have
+a built in Unix-like shell.  There are several applications that provide
+Unix-like shell features on Windows, but the
+
 There are several utilities that can provide access to ssh from Windows, 
 the main one used by people at Waterloo is PuTTY 
 L<http://www.chiark.greenend.org.uk/~sgtatham/putty/>. There is also a
@@ -51,28 +56,30 @@ environment in Windows. You use it inside of a command-prompt window. So it's
 just like using PuTTY, except you don't have to be online to use it. Make sure
 the ssh package is installed, and then just type ssh.
 
-
 =for commentary
 
-ebering doesn't like writing about windows, someone else can do this shit
+What exactly did you want this to discuss? --mgregson
+
+This is fine --ebering
 
 =cut
 
-=head3 From Mac OSX
+=head3 From Mac OS-X
 
 Mac OS X comes with X11 (more on X11 later) installed, and with X11 comes
 a unix shell with most of the features discussed here, including an 
-ssh client. To access the student environment start X11, open a terminal and
-use ssh just like in the linux section. There is also a Terminal.app that you
+ssh client. There is also a Terminal.app that you
 can find in /Applications/Utilities. It doesn't require that you start X11, but
 then you don't get the advantage of X11 forwarding. But that's an advanced
 topic that will be discussed later. You can also use many of the non student
-environment commands on your mac.
+environment commands on your mac. Like most Unix-like operating systems, OS-X 
+comes with a built in ssh client. All you need to do to connect using SSH is to 
+open up Terminal and type in ssh user@host.  (Go on, give it a try.)
 
 =head3 From Linux
 
 To connect to the student environment from linux just start a terminal program
-and use ssh like on a mac, ssh will be documented in its own section. Also
+and use ssh like on OS-X, ssh will be documented in its own section. Also
 most of the things in this guide are useable on your local terminal as well.
 
 =head3 ssh(1) 
@@ -113,7 +120,12 @@ following:
  user@host's password: 
 
 This is optional and more detail can be found in the man page. More
-on those next...
+on those in the next section...
+
+Also, please keep in mind that while the passphrase can be, and too often is,
+left blank, this poses an enormous security risk and should only be done if
+you are 100% certain you are the only person who will be using the computer
+in question, and your hard drive is encrypted.
 
 =head2 Getting Help
 
@@ -146,18 +158,24 @@ for by default.
 
 We'll start with some basic file tools and command and control abilities.
 
+=for commentary
+
+Should we perhaps define "file system"?
+
+=cut
+
 =head2 The file system and what to do about it
 
 Programs are just files on disk and manipulate data which is also on the disk, 
 so it obviously follows that the most important programs are the ones for 
-working with files on the disk. This section will go over the filesystem and 
+working with files on the disk. This section will go over the file system and 
 these important programs.
 
-=head3 The filesystem is organized into directories
+=head3 The file system is organized into directories
 
 The file system in the unix environment starts with C</> or the root, different 
 drives are all attached as directories under the root. For now don't worry 
-about drives and lets chat about directories. In unix everything as a running 
+about drives and lets chat about directories. In unix everything has a running 
 or "working" directory, including your shell prompt. To see what your current 
 directory is use the B<p>rint B<w>orking B<d>irectory command C<pwd> at the 
 prompt. This will give you the I<absolute path> to your working directory. Any 
@@ -336,6 +354,15 @@ will be after the next section.
 A section on searching for files (even if its just a blurb) would be
 nice...
 
+mgregson--
+I'd recommend throwing in something about find.  It took me a while to figure
+out all the nice little tricks you can do with find, but it's definitely a
+worthwhile effort.
+
+eg: find ~/src -type f -iname "*.java" -exec grep "/*TODO:*" {} \;
+
+--mgregson
+
 =cut
 
 =head2 What the shell really gives you.. power.
@@ -707,4 +734,3 @@ version 2.0 available at L<http://www.perlfoundation.org/artistic_license_2_0>.
 
 A student heading into his second year Edgar served as club secretary W08 and
 plans on running for executive most of the rest of the time he's around.
-