Linux1
Introduction
Linux (sometimes called GNU/Linux) is an operating system, i.e. the middle man between you and the computer hardware. Therefore Linux is a full replacement for Microsoft Windows or Mac OS X. Linux comes with a range of graphical user interfaces where you can use the mouse to interact with the computer as you are used to. However, in most setup within the University (and particularly for the HPC facilities), you will not have access to this graphical user interface. Instead, you will be using Linux at the command line. Therefore this practical introduces some of the basic commands that you must know in order to carry out your research in a Linux based environment.
The user interface on a computer is technically called a shell. When using Linux at the command line, most often the bash shell is used. There are a range of shells (csh, zsh ...) for Linux with slightly different syntaxes. The bash shell is often the default and we will use bash syntax in this practical.
Logging in
Login is performed via a bit of protocol called secure shell or ssh. There is a client for Microsoft Windows which should already be installed on your computer. If not, contact a computer officer. To login select the machine that you want to log into, for instance dylan.ggy.bris.ac.uk or bluecrystal.bris.ac.uk and then enter your username and password. the system will log you in and you will directly be taken to your home directory.
Although you used your password to login, it is important to note that there are other login options available. For instance, you can configure ssh to log you in automatically using authentication keys instead of using a password. This is very interesting when you want scripts to run automatically and perform operations on the network. This is really beyond the scope of this practical.
Getting the content for this practical
Now that you are logged in a Linux system, it is time to get the practical content. The necessary files for this practical are hosted in a version control system. To obtain them, just type the following command:
$ svn export http://source.ggy.bris.ac.uk/subversion-open/intro-to-linux/trunk intro-to-linux
The dollar sign "$" is called the hell prompt. You do not need to type it in. It is merely there to show that the shell is waiting for a command. When a line starts without a dollar, it means that it is an output from the shell. This is a very common convention that will be used throughout this practical.
This will fetch all necessary files and put them in a folder called intro-to-linux/. Ignore the cryptic syntax so far, an introduction to version control using subversion (svn) will be given later on.
To change directories (sometimes called folders), the command cd is used. It stands for ... "change directory" (!) To navigate to the directory containing the files for this practical, simply type:
$ cd intro-to-linux
By doing this operation, you technically used a relative path. Indeed intro-to-linux is not the full directory location but merely its relative path from where you were before. To find out the absolute path of your current location, use the command pwd (print working directory):
$ pwd /gsa13/ggjpr/intro-to-linux
Obviously, the full path will depend on where your home directory is located. The absolute path starts at / called the root and then lists the branches of the directory tree leading to the current directory. Note that the directories are separated by slashes "/" and not backslashes as used by DOS in Microsoft Windows.
The cd command also accepts absolute paths. For instance:
$ cd /gsa3/ggjpr $ pwd /gsa3/ggjpr $ cd /gsa3/ggjpr/intro-to-linux $ pwd /gsa13/ggjpr/intro-to-linux
To help navigation, every directory on a Linux system contains two shortcuts:
- . (yes, one single dot!) links to itself
- .. (two consecutive dots) links to its parent
The .. shortcut especially is important as it allows you to go up one directory without using a full path:
$ pwd /gsa13/ggjpr/intro-to-linux $ cd .. $ pwd /gsa3/ggjpr $ cd .. $ pwd /gsa3
It is important to know that if you don't give an argument to cd, it will take you back to your home directory.
$ pwd /gsa3 $ cd $ pwd /gsa3/ggjpr
Listing a directory content
The content of the directory can be listed with the command ls (for list). For example, let's go back in the intro-to-linux directory and list its content:
$ cd intro-to-linux $ ls file1 file2 folder1 folder2
So our intro-to-linux directory contains two files and two directories. Depending on the secure shell software and the Linux machine, you could also have a colourised output to differentiate easily between files and directories. By default, an alphabetical order is used when listing directory content but sometimes, the directories are listed together before the files.
The ls command also accepts some options to modify its behaviour. The options are listed after a dash "-". For instance, the "-r" option reverse the listing order:
$ ls -r folder2 folder1 file2 file1
Files and folders can be hidden on Linux. To show hidden files, use ls with the "-a" option (for all):
$ ls -a . .. file1 file2 folder1 folder2 .hiddenfile .hiddenfolder
You can see that:
- the dot and dot dot shortcuts are actualy hidden folders
- hidden files and folders also start with a dot (".")
If you go in your home directory, there should be a few hidden files and folders already. They are usually used to store configuration information. Here is a typical home directory on a (heavily used) Linux system:
$ cd $ ls -a . .gconfd .mcoprc Templates .. .gimp-2.4 .metacity .themes .adobe .gnome .mozilla .thumbnails .bash_history .gnome2 Music .thunderbird .bash_logout .gnome2_private .nautilus .tomboy .bash_profile .gstreamer-0.10 .openoffice.org2.0 .tomboy.log .bashrc .gtk-bookmarks Public .Trash bin .gtkrc-1.2-gnome2 .pulse .unison .config hydrostab .pulse-cookie unison.log Desktop .ICEauthority .qt Videos .dmrc .icons .recently-used.xbel .viminfo Documents intro-to-linux .Skype .vimrc Download .kde skype-2.0.0.13-fc5.i586.rpm .wapi .esd_auth .libgda .ssh .xine .evolution linux.tgz .subversion .xsession-errors .fontconfig .local systel90 fortran1 .macromedia tecplot360-2008 .gconf .mcop
Obviously you can ignore these files most of the time. This is why they are hidden.
When you want more detail about the files and directories, use the "-l" option to use the long listing format. lets go ack n the <t>intro-to-linux folder and try it:
$ cd intro-to-linux $ ls -l -rw-r--r-- 1 jp jp 73 2008-02-01 10:43 file1 -rw-r--r-- 1 jp jp 284 2008-02-01 10:43 file2 drwxr-xr-x 2 jp jp 4096 2008-02-01 10:43 folder1 drwxr-xr-x 2 jp jp 4096 2008-02-01 21:30 folder2
The detailed output starts with