The GNU Project3.1 was begun in 1984 by Richard Stallman of MIT with the aim to develop a complete free (meaning free for everyone to look at, to learn from, and to build upon) software operating system. In 1989 he codified the terms under which this free software was released, producing the GNU Public License (GPL) which is the basis on which much of the GNU/Linux operating system is released. The license is often referred to as the copyleft license in contrast to the restrictive practise of copyright.
By 1991 when Linus Torvalds wrote his Linux kernel GNU provided the operating system. By combining the GNU operating system with the Linux kernel the seeds for this most popular free operating system were sown.
Many users installed the GNU tools on many different computers as replacements for vendor supplied tools. This provided these users with a consistency across the many different platforms they used. The tools even eventually appeared under MS-Windows, providing a Unix-like environment on a very different operating system.3.2
The tools developed by the GNU project include such essential utilities as the GNU file management utilities and the GNU text file processing utilities. The GNU file management utilities include fundamental command line tools like ls (to list information about files/documents), mkdir (to create new directories/folders), mv (to move directories and files around), rm (to remove files), and many more. The GNU text file processing commands include cat (to concatenate files together), head (to preview the top few lines of a file), sort (to sort the contents of a file), and wc (to count the number of lines, words, and bytes in a file).
The toolkits developed by the GNU project are comprehensive. The following table lists just some of the 200 or more packages that you can obtain freely from http://www.gnu.org/software/software.html:
Package | Description |
---|---|
aspell | An interactive spell checker that suggests `near misses' to replace unrecognised words. |
awk | A powerful yet simple pattern-based scripting language. |
bash | The Bourne Again SHell is compatible with the traditional Unix sh and offers many extensions found in csh and ksh. It is similar in concept to DOS. |
binutils | Consists of programs used to assemble, link, and manipulate binary and object files. It is used in conjunction with a compiler and various libraries to build programs for Linux. |
chess | A state-of-the-art chess-playing program. |
cvs | The Concurrent Versioning System used for version control and management of software projects. |
emacs | An extensible, customisable real-time display editor and computing environment. This editor is widely used by developers and is more than just an editor. Emacs is capable of reading email, of providing integrated development environments, and spreadsheets, to name just a few. |
enscript | An ASCII file formatter generating PostScript for printing of text documents on PostScript printers. |
fileutils | File management utilities. |
findutils | The `find' utility is frequently used both interactively and in shell scripts to find files which match certain criteria and perform arbitrary operations on them. |
gcc | A free compiler collection for C, C++, Objective C and other languages. This compiler is used widely, on multiple platforms, including MS-Windows. |
gdb | A source-level debugger for C, C++ and Fortran. |
ghostscript | An interpreter for the Postscript and PDF graphics languages. |
gimp | A sophisticated graphical image manipulation application. |
gnome | The GNU desktop which provides a consistent graphical user interface for common applications including everything from spreadsheets to mail clients, and more. |
gnumeric | A spreadsheet. |
gphoto | A graphical application for retrieving, organising, and publishing images in various graphics formats, from a range of supported digital cameras. |
gnupg | A complete implementation of the OpenPGP Internet standard for providing pretty good protection through encryption. |
gtk+ | A GUI toolkit for the X Window System. All Gnome packages use this toolkit for their consistent look and feel. |
gzip | GNU's program for compressing and decompressing files. |
kde | An alternative, and very popular desktop which provides a consistent graphical user interface for common applications including everything from spreadsheets to mail clients, and more. |
less | A display paginator similar to `more' and `pg', but with various features (such as the ability to scroll backwards) that most pagers lack. |
mtools | Programs to allow Unix systems to read, write, and manipulate files on a DOS file system (typically a diskette). |
r | A system for statistical computation and graphics. |
shellutils | Useful command line utilities including `basename', `date', `dirname', `echo', `groups', `hostname', `printf', `pwd', `uname', `uptime', `users', `who', and `whoami'. |
tar | An archive utility. |
textutils | A set of utilities for manipulating text. |
time | A utility to report on the time taken to execute other programs. |
wget | A non-interactive web browser to retrieve files from the Internet using HTTP and FTP. See Chapter 90.3 for details. |
Many of these GNU tools are command line tools but a growing number of them are now also GUI-based, including Gnome, KDE, The Gimp, and Gnumeric.