Making the Transition to Linux

A Guide to the Linux Command Line Interface for Students

Joshua Glatt

Legal Notice
Revision History
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. Getting started with Linux
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. Using job control (partial coverage)
4. SSH (secure) file transfer (SFTP)
5. Text editors
5.1. vi
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
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
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)
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 and debugging tools
B.4.1. Integrated Development Environments (IDEs)
B.4.2. GUI-based debuggers not part of an IDE

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 terminating a process
4.1. SSH file transfer (SFTP) commands
5.1. Basic Emacs commands
5.2. Moving the cursor in Emacs
5.3. Manipulating text in Emacs
5.4. 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 ps and kill
4.1. Using SSH file transfer (SFTP)
6.1. Using GCC
6.2. Using objdump

Back to Guide main page