[pjh503@bhuna Linux]$ ls -a . first.txt linux.dvi linux.tex~ second.txt~ .. first.txt~ linux.log second_attendees.odt
Notice that the first two entries are simply a full-stop, and a double full-stop. These are special entries indicating the current directory and the parent directory respectively. We can use these as arguments to the cd command, e.g.
[phasnip@mijpnb1 Linux]$ pwd /home/phasnip/Teaching/Linux [phasnip@mijpnb1 Linux]$ cd .. [phasnip@mijpnb1 ~/Teaching]$ pwd /home/phasnip/Teaching
Notice that `..' takes you to the parent directory of your current directory, so it is a relative path. It is also sometimes useful to use cd with a special argument cd - which changes directory to the previous directory you were in.
There is another special character used in paths, the tilde `~'. This means `your home directory', so for example
[phasnip@mijpnb1 ~/Teaching]$ cd ~ [phasnip@mijpnb1 ~]$ pwd /home/phasnip
Often we don't want to list all the files, just a selection. If we only want to see whether a particular file is there we can do
[phasnip@mijpnb1 ~]$ ls minimiser.tex minimiser.tex
If the file isn't there, Linux will tell me:
[phasnip@mijpnb1 ~]$ ls rubbish.txt ls: rubbish.txt: No such file or directory
Usually we are looking for all files of a certain kind of name, and in Linux this is straightforward by using wildcards. Wildcards are special characters that cannot be used in filenames, and are used by commands to look for patterns. There are two common ones, * and ?. The * matches any characters and is basically used to mean `anything', e.g.
[phasnip@mijpnb1 ~]$ ls *.tex linux.tex minimiser.tex [phasnip@mijpnb1 ~]$ ls m* minimiser.aux minimiser.dvi minimiser.log minimiser.tex minimiser.tex~ [phasnip@mijpnb1 ~]$ ls m*tex minimiser.tex
Notice that the other characters are taken into account, so that `*txt' means `anything ending with txt', and `f*' means `anything starting with f'.
The `?' character means `any single character'. It can be repeated, e.g.
[phasnip@mijpnb1 ~]$ ls minimiser.??? minimiser.aux minimiser.dvi minimiser.log minimiser.tex
Notice that this only reports filenames with three characters after the full-stop, and so is not the same as ls minimiser.* which would list everything starting `minimiser.'.
We can also use square brackets to indicate a possible selection of characters
[phasnip@mijpnb1 ~]$ ls minimiser.[ta]?? minimiser.aux minimiser.tex
We can also include a range
[phasnip@mijpnb1 ~]$ ls minimiser.[a-l]* minimiser.aux minimiser.dvi minimiser.log
Finally there is an extremely useful feature which is usually called tab-completion. If you type part of a filename or command in a terminal and press the TAB key once, Linux will look to see which files or commands start with the characters you've types, and fill in as many other characters as are common to them all - this can save a lot of typing! To see which files are consistent with what you've typed, you can use CTRL-d (on some systems pressing TAB twice does this).
Very occasionally you might come across a machine that uses the <ESC> key instead of TAB to do the completion - the operation is the same, it's just the key you press that is different.