Table of Contents

  1. Introduction to Linux
  2. Installing New Software
  3. Software Development under Linux
  4. Scientific Software
  5. Linux and Multimedia
  6. Command Line Tasks
  7. Questions?

Introduction to Linux

Linux is a free and flexible operating system that provides many unique features for work and pleasure. We call it Open Source — software that is available free of cost and includes its source code so you can make changes or improvements to it. This is one of its many strengths, and perhaps the one that has allowed it to become so popular.

A note on naming before we begin: some argue that we should refer to Linux using another name, GNU/Linux, because of the large portion of the operating system's code that was contributed by the GNU Project, an effort begun in the 1980's to build a free Unix operating system. They note that Linux is simply the kernel — the piece of the operating system that links the software to the hardware it runs on — and that most of the software was written by others. I'm not going to debate the validity of that viewpoint here; I'll refer to the entire operating system (and its many flavors) as Linux, mainly because GNU/Linux is a mouthful!

A presentation on the basics of Linux given earlier this year can be found at http://warpflyght.com/presentations/2006/linux_intro.html, so we won't go over everything here. Our real goal, after all, is to focus on what we can do with it.

Linux is not controlled by any one company or organization. Instead, it can be customized and distributed freely by anyone, and many different flavors known as distributions have been developed to meet specific needs. Different distributions are all flavors of Linux, and are generally very similar, but each packages different programs and includes different enhancements to meet specific needs. We'll focus on two popular distributions, Red Hat and Debian, during this presentation. If you use another distribution and want to know how to do anything discussed this evening, ask us afterwards and we'll be glad to help you out!

Linux is a modern Unix-like operating system that is very portable (it runs on many computer architectures) and very flexible (it can be adapted to a variety of tasks, from running a cellphone to powering a supercomputer). Our focus on Linux is its role on the desktop: using it as a day-to-day platform for productivity, software development, web browsing, and in general, fun. It is very powerful, and explaining all of the things it has been enhanced to do is beyond the scope of this presentation.

Linux consists of two primary layers: the console layer, the command line sitting beneath everything you see, and the graphical layer, with windows and applications that can be interacted with and manipulated using your mouse. These days, many people can use Linux without ever touching the command line, much as people use Windows without using one. Still, the console layer is beneath the surface, and offers many capabilities depending on what you are interested in doing.

The graphical layer is underpinned by a program called X-Windows, or X for short. X was developed at MIT in the early 1980's to give Unix a graphical environment on part with that of the Macintosh or the Xerox Alto. It was ported to Linux (and many other Unix-like operating systems), and it is what draws everything you see in a graphical environment on Linux.

Those are the basics of Linux, but there's far more to delve into!


Installing New Software

As mentioned above, each distribution of Linux packages different software with the operating system to try to meet different needs. Although much of the software you'll need to use while running Linux is included by default in most distributions, you may still want to install new programs from time to time. This can be done several different ways, but an innovation in this area makes doing it on Linux very easy: the package manager.

A package manager is like Windows Update for computers running Windows: it keeps track of what programs are installed and updates them as needed. Linux distributions, however, take it one step further. Package managers keep track of all software installed on the system, and if a program is not currently installed, the package manager will help you install it easily. From there, it checks for available updates in order to bring you the latest features and avoid security problems.

One way distributions differ is in their package management system. Red Hat and distributions derived from it such as Fedora use a system called RPM. You download an RPM file for your version of Linux and it is installed for you automatically. A good source of new software is http://atrpms.net/, and another good repository is http://rpmfind.net/. Be sure to check that RPM files you download match the version of Linux you are using; problems may result otherwise! Many software project websites include links to RPMs that open and install directly from your web browser after you enter a password, making software installation a breeze.

The other popular package management program is apt, used by Debian and its derivatives (such as Ubuntu Linux). It differs from RPM in that you don't seek out packages by searching on the Web; instead, apt provides a list of available packages that you can select and install. It can be accessed from the command line or used through graphical applications like synaptic.


Software Development under Linux

Linux includes a robust set of development tools to allow you to create a wide range of software. It features the widely-renowned programming editors vi and emacs, and the flexible compiler gcc. If you are using Linux to develop for classwork, you may find yourself using several of these programs.

Linux' software development features do not end there, however. Most distributions include full support for Java, including compilers, plug-ins for web browsers, and development environments. One of the most popular Java development environments, Eclipse, runs natively on Linux and is included by default in many distributions. If it is not installed on your system, you can use your package manager to find it.

A powerful set of development tools included by default on most Linux distributions that Windows does not include is version control software. A version control program allows you to keep track of incremental changes to source code and other types of files, making it possible to roll back any changes that may break code and to keep track of your progress. The two most popular version control applications for Linux (and indeed Unix systems in general), CVS and Subversion, are included by default in most distributions.

A myriad of other development tools such as debuggers, graphical toolkits, built-in language documentation, and scripting language engines are usually available to further assist you in creating new software on the Linux platform.


Scientific Software

Many organizations use Linux for its excellent complement of scientific software. Many scientific programs can be linked together, allowing scientists to perform complex operations on data without needing to write custom software suites to do the job.

Gnuplot is a powerful graphing and plotting tool used to visualize data and generate reports. It can be tied in to other applications to automatically create charts and graphs when performing research and working with data.

A fully-featured mathematical suite similar to MATLAB and Maple is Octave, which is available in many package managers. It allows high-precision calculations and supports many complex operations.

LaTeX is a typesetting system used widely in scientific realms for preparing documents for publication. Many mathematic and scientific textbooks are prepared and typeset using LaTeX. Instead of being a graphical layout tool, LaTeX works like a programming language, allowing you to use any editor to prepare a document using it. LaTeX is renowned for its support for properly rendering extremely complex mathematical formulas.


Linux and Multimedia

Multimedia support is also excellent on Linux. Although some popular multimedia programs have not been ported to the platform, many open source projects have created wonderful multimedia programs for everything from listening to music to mastering DVDs. There are too many programs to list here, so we'll touch on a handful that are likely to be useful to many people.

For the GNOME desktop (default on Red Hat and Ubuntu), Rhythmbox is a full-featured media management program that fills the same niche that Apple's iTunes does on Windows and Mac OS X. It allows you to organize, edit, and play your music, even with large libraries of thousands of songs.

On systems using KDE, amaroK and Juk are popular music management applications. Many systems include one or both of these by default.

CDs and DVDs can be burned using K3b and X-CD-Roast. New users may find K3b more user-friendly, while experienced users will find many advanced features in X-CD-Roast to allow fine control over the burning process.

MPlayer and xine are extremely powerful multimedia players supporting nearly any format you can throw at them. Another contender growing in popularity on Linux and on other platforms is VLC, which also is extremely flexible and powerful.

Rosegarden is a music sequencer and editor designed to meet professional quality standards and compete with commercial packages like Cubase. It offers full control over all aspects of a composition and is available in many package managers.

The GIMP is a high-quality photo editor designed to provide the flexibility and power of commercial programs like Adobe Photoshop. The GIMP 2.0 was recently released, adding a number of useful features.


Command Line Tasks

Although I noted above that most users won't ever need to touch the command line in order to do their work, there are some command line tools are can be very useful.

The most common tools many people use at a command line are ls — directory listing — and cd — change directory. You could type cd /home/username/ to go to the /home/username directory, and ls to view the files it contains. (A shortcut for your home directory is cd ~.)

The less command is a pager — a program that allows you to scroll through the output of a program or a file. You can use less to quickly open and read a text file when you are at the command line. Try pressing the / key and typing a search term to look for a specific string in the file.

The grep command is a very useful tool designed to search for strings. You can use grep to look at files inside of a directory and find a specific string, or to check one individual file for multiple instances of something. grep -i is the case-insensitive version; grep itself matches case.

cat is a command that most people use to quickly output the contents of a text file. It can, however, do more: its name is actually short for concatenate. You can type cat followed by the names of a number of other files and they will be strung together in the output. You might use cat and grep together to easily search several files.


Questions?