This document is an attempt to summarise the many command-line based tools available to a GNU/Linux based operating system. This guide is not a complete listing (I doubt it's possible to document all available programs), this document lists many tools which are available to GNU/Linux systems and which are, or can be useful to the majority of users.
Each tool description provides a quick overview of it's function and some useful options for that individual tool.
The tools listed that require a GUI, usually the X windowing system, are those listed in the Graphics Tools section. All other tools are completely command-line-based and do not require a GUI to run.
If you are looking for information on GUI based tools you will need to look elsewhere.
Also note that a few of the tools in this guide are bash (the Bourne-Again-SHell) specific, tools specific to other shells are not listed in this document.
For some of the tools that are harder to use, or perform a more complex task, there are several mini-tutorials (or mini-guides; Chapter 20) within this document.
Where a mini-guide was considered unncessary, detailed descriptions that explain in detail how a particular tool works, and some examples of how to use it are provided.
Please note that the word “tool” is used interchangeably with the word “command”, both have the same meaning (at least in this guide). For a more detailed explanation, read about the UNIX Tools Philosophy here: Chapter 3 or visit the links in the appendix, Section A.2.2.1.
To find out which tools are bash specific
To find out which tools are bash specific you can type:
Who would want to read this guide?
Anyone who is interested in learning about the tools (also known as commands) available to them when using their GNU/Linux based operating system.
Why would you want to learn how to use the command-line (and available tools)? The Command Line-Interface (CLI), while difficult to learn, is the quickest and most efficient way to use a computer for many different tasks. The CLI is the normal method of use for most UNIX system administrators, programmers and some power users. While a GUI is better suited to some tasks, many operations are best suited to the CLI.
The major motivation behind learning the GNU/Linux CLI is the authors idea that, with software in general, the more time spent learning something equals less time spent performing that particular task (authors opinion only).
This guide is aimed at beginners to intermediate users who want to learn about the command-line tools available to them. Advanced users may wish to use it as a command reference, however this document aims to list commands of interest, as judged by the authors opinion, it is not designed to be completely comprehensive, see the appendix, Section A.2.1 for further information. Or if you are not looking for a command reference guide, but a more gentle introduction to GNU/Linux you may be interested in the Introduction to Linux guide authored by Machtelt Garrels.
This guide could also be considered a summarised version of the Linux Cookbook. If you are looking for a book with more detailed descriptions of each tool have a look at the Linux Cookbook Homepage, also check out the command list from "Linux in a Nutshell 3rd Edition" for an index of 300+ commands and their explanations.
Who would not want to read this guide?
Anyone who is not interested in the command-line, or anyone looking for a detailed reference to all available GNU/Linux tools should look elsewhere. This is only a summary, while it does list many commands, it's not a complete listing (I don't think it's possible to make a complete listing anyway).
This document would not be of interest to those who already have an expert knowledge of the command-line interface and do require any reference information. Or those readers who require detailed lists of options for each command, the man pages are better suited to this purpose.
Availability of sources
The modifiable sources of the original book (in english), are available in LyX format (LyX Document Processor) or Machine-translated SGML (SGML markup language).
LyX is a completely free document processor based on LaTeX, downloadable from the LyX homepage.
See for the modifiable sources of this document. These are the official versions. We (the translators and current maintainers) plan to continue work on this document and add new chapters and enhancements. If you want to see the version we are currently working on (the "bleeding edge" version), check the GNU/Linux Command-Line Tools Summary Homepage from time to time (kindly hosted by Chris Karakas).
Conventions used in this guide
The following conventions are used within this guide:
Anything appearing in italic, like this is either an executable command or emphasized text. Tools (executable commands) are in italics to prevent confusion. Some tools have names which are real english words, such as the “locate” tool.
Are represented by using a '-' (dash sign) in-between the key(s), which must be used in combination. All combinations are also printed in italics to improve clarity. For example CTRL-Z means hold down the Control key and press the z key.
- Admonitions are little pictures used to emphasize something of importance to the reader. The five types used are:
This is a note
Notes often give important information about a tool.
This is a tip
This will offer a useful switch or useful way to use a tool.
This is something important
This is something that is considered very important. Consider it like a note with extra importance, they are usually there to save the reader time.
This is a caution
This will inform you of something that you be careful about (because it could be harmful to your system).
This is a warning
This will inform you of something that you shouldn't do (because it probably will break something within your system).
- Code examples are shown for most commands. Below is an example of what code looks like:
Hello World, I'm a code example. :)
- (or a similar phrase) simply shows how you would normally use the command. Often real examples are used instead of explaining the command syntax. The phrase “ Command syntax” is always followed by the way you would type a command in a shell. The standard syntax for any tool is usually:
command -options file
Note that some tools do not accept options.
- Also note that most commands, even when not explicitly stated, will work with standard wildcards (or globbing patterns) such as *, [A-Z] and various other standard wildcards. Refer to Section 20.4.1 for further information.
- Access keys enable navigation through the document, without relying on a mouse. The following keys have been given special meaning in this document:
- Previous page.
- Next page.
- Home of the document (Table of Contents).
- Up (takes you one level up the section hierarchy).
- Start (takes you to the author's start page).
- The current (“This”) page, without the Sitemenu on the left.
- The current page in a frameset, where the left frame contains a Menu.
To use the access keys, you have to simultaneously press a modifier key, which may vary from browser to browser. For example in NN6+/Mozilla, the modifier key is ALT, so you have to use ALT-N to go to the next page, and ALT-P to come back. In other browsers such as IE6, the access keys just give focus to the associated link, so the sequence becomes ALT-N Enter. Try it, you'll like it!
Resources used to create this document
To create the GNU/Linux Command-Line Tools Summary, I used LyX, the document processor. To convert the LyX files to DocBook SGML I used the lyxtox Scripts created by http://www.karakas-online.de/Chris Karakas.
I also had assistance from various The Linux Documentation Project volunteers (see the contributors section Section 1.7 for specific details).
Feedback is necessary for the advancement of this guide. Positive, constructive criticism is encouraged. If you have ideas, suggestions, advice, or problems with this guide, please send an email to the author Gareth Anderson.
If you wish to make contributions it is recommended (if possible) to read the LyX file(s) for this document. They contain various notes which you can't see in the other versions.
These notes highlight the areas that need contributions, certain tools which I cannot understand, tools which have not been added, or tools which were removed. These notes also explain some of the structure of this document.
As you may be able to see, parts of this guide are based off various advice columns on GNU/Linux, anything that has being directly quoted from an article can be found in the references, Bibliography, section of this document.
The following is a list of people who have made a significant contribution to this document, in a rough chronological order.
Chris allowed the use of his lyxtox scripts to convert the LyX file of the document to working DocBook SGML output (to learn how to use the lyxtox scripts yourself, see http://www.karakas-online.de/mySGML/).
- Chris provided useful suggestions and advice, and added an index listing for many of the commands.
- Chris is also responsible for the great looking HTML file for this document (the CSS file and HTML customisations are completely his work).
- Chris has also helped fix up problems in the document (many times), especially with docbook/sgml, and LyX related issues.
- Chris has also improved the structure of the document by adding labels and fixing minor errors.
William provided a thorough review of the document as required by the Linux Documentation Project. He is responsible for a variety of improvements to the quality of this document. His contributions include:
- Improvements to the readability of this document.
- Improvements to the structure and consistency of this document.
- Various grammar improvements throughout the document.
- Repair of some minor technical errors.
Tabatha, as the Linux Documentation Project Review Coordinator (at the time) also gave a brief review of this document. Her general advice was used to improve the structure, language and grammar of the document.
Rahul provided a brief review of this document for the Linux Documentation Project. Advice from his brief review was integrated into this document to improve readability and structure, several references were added as recommended by Rahul.
- David's criticism of the document (via the TLDP discuss list) were listened to, and attempts to improve the document were made. A number of his criticisms were addressed and improved.
- George provided a second language review. His detailed review of the material allowed me to improve the general grammar of the document and some minor errors.
- Machtelt provided tips in regard to referencing the correct LDP documents from this guide. As well as general advice on improvements to the guide.
- Michael pointed out a number of technical errors in the document after his brief review on behalf of the TLDP during posts to the discussion list.