Making the Transition to Linux

A Guide to the Linux Command Line Interface for Students

Joshua Glatt

Legal Notice
Revision History
Revision Snapshot02 Aug 2009jg
Revision 1.3114 Sept 2008jg
Various small but useful changes, preparing to revise section on vi
Revision 1.3010 Sept 2008jg
Revised further reading and suggestions, other revisions
Revision 1.2027 Aug 2008jg
Revised first chapter, other revisions
Revision 1.1020 Aug 2008jg
First major revision
Revision 1.0011 Aug 2008jg
First official release (w00t)
Revision 0.9506 Aug 2008jg
Second beta release
Revision 0.9001 Aug 2008jg
First beta release

Table of Contents

1. What is this guide for?
2. Who would want to read this guide?
3. Who would not want to read this guide?
4. What is the reader expected to know?
5. What does the reader need?
6. What does this guide cover?
7. What does this guide not cover?
8. Other information about this guide
9. Conventions used in this guide
10. Structure of this guide
11. Suggestions for using this guide
1. Linux and its user interfaces
1.1. User interfaces in Linux: graphical and command line
1.2. Graphical user interfaces (GUIs) for Linux
1.3. Accessing the Linux CLI through a GUI's terminal window
1.4. Shells, the shell prompt, and your home directory
1.5. Key differences between Windows/Mac OS X and Linux
1.6. Understanding the tables of commands and options
2. Built-in help system
2.1. Manual (man) pages
2.2. GNU info pages
3. Basic shell commands and related utilities
3.1. Features of the shell
3.2. Navigating the file system
3.3. Manipulating the file system
3.4. Handling compressed files (tarballs)
3.5. Working with text streams
3.6. Adjusting file permissions
3.7. Using job control
4. Secure file transfer
4.1. Secure copy (SCP)
4.2. SSH file transfer (SFTP)
5. Text editors
5.1. vi and Vim
5.2. GNU Emacs
6. Programming tools
6.1. Compiling programs
6.2. Running programs
6.3. Debugging programs
6.4. Inspecting and modifying programs
7. Version control
7.1. Concurrent Versions System (CVS)
7.2. Subversion (SVN)
A. Further reading
A.1. Suggested resources for finding information
A.2. More on Linux
A.2.1. General Linux resources
A.2.2. Linux file system
A.3. More on the shell and related utilities
A.3.1. General information on the Bash shell
A.3.2. Changing your shell temporarily to Bash
A.3.3. Text processing with the shell
A.3.4. Shell scripting (using Bash)
A.3.5. The GNU Core Utilities (coreutils)
A.4. More on text editors
A.4.1. More on vi and Vim
A.4.2. More on GNU Emacs
A.5. More on programming on Linux machines
A.5.1. Linux programming and the GNU toolchain
A.5.2. More on GCC
A.5.3. GNU Make and Makefiles
A.5.4. More on GDB
A.5.5. More on the GNU Binary Utilities (binutils)
A.6. More on version control
A.6.1. More on Concurrent Versions System (CVS)
A.6.2. More on Subversion (SVN)
B. Graphical alternatives
B.1. GUI-based file managers
B.2. GUI-based file transfer programs
B.3. GUI-based text editors
B.3.1. GUI-based vi and Emacs
B.3.2. Other GUI-based text editors
B.4. GUI-based programming tools
B.4.1. Integrated Development Environments (IDEs)
B.4.2. GUI-based debuggers not part of an IDE
B.5. GUI-based version control tools
B.5.1. GUI-based Concurrent Versions System (CVS) tools
B.5.2. GUI-based Subversion (SVN) tools

List of Tables

2.1. Commands for the built-in help system
3.1. Commands for navigating the file system
3.2. Common symbols from the file system
3.3. Commands for manipulating the file system
3.4. Commands for handling compressed files (tarballs)
3.5. Standard streams
3.6. I/O redirection operators
3.7. Commands for working with text streams
3.8. Commands for adjusting file permissions
3.9. Commands for terminating a process
4.1. SSH file transfer (SFTP) commands
5.1. The Arrow Keys in Vim
5.2. Basic Vim commands, Part 1
5.3. Basic Vim commands, Part 2
5.4. Moving through the buffer in Vim
5.5. Moving through screens and lines in Vim
5.6. Vim actions
5.7. Special text manipulation commands in Vim
5.8. Searching and substituting in Vim
5.9. Ways to enter insert mode in Vim
5.10. Other modes in Vim
5.11. Basic Emacs commands
5.12. Moving the cursor in Emacs
5.13. Manipulating text in Emacs
5.14. Additional Emacs commands
6.1. Commonly used GCC flags
6.2. Commonly used GDB commands, Part 1
6.3. Commonly used GDB commands, Part 2
6.4. Selected commands from GNU Binary Utilities (binutils)

List of Examples

1.1. How to read a table entry
3.1. Using cd
3.2. Using du
3.3. Using find
3.4. Using ls
3.5. Using ln
3.6. Using mv
3.7. Using rm
3.8. Using cat with pipes
3.9. Using /dev/null
3.10. Using diff
3.11. Using echo
3.12. Using xargs
3.13. Using ps and kill
4.1. Using SSH file transfer (SFTP)
6.1. Using GCC
6.2. Using objdump

Back to Guide main page