Links: Learning Objectives

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 10

Links

Learning Objectives:
1. 2.

3.

To understand the basics of links & its usage To learn the construction / removal of different types of links To distinguish the differences between hard & soft links

COMP111 Lecture 4 / Slide 2

Links
Table of Content
Links Symbolic Links Differences between Hard & Soft Links Biggest Difference between Hard & Soft Links Appending & Pattern Matching

COMP111 Lecture 4 / Slide 3

Links (1)
A link is a pointer to a file. In fact, in UNIX all filenames are just links to a file. Most files only have one link.
-rw-r--r--rw-r--r-drwxr-xr-x 1 jbond 1 jbond 2 jbond cs cs cs 154 Feb 64 Feb 512 Feb 4 15:00 letter3 4 15:00 names 4 15:00 secret/

Additional links to a file allow the file to be shared. The ln command creates new links.
$ ln names NAMES $ ls -l total 8 -rw-r--r-2 jbond -rw-r--r-1 jbond -rw-r--r-2 jbond drwxr-xr-x 2 jbond cs cs cs cs 64 154 64 512 Feb Feb Feb Feb 6 4 4 4 18:36 15:00 15:00 15:00 NAMES letter3 names secret/

COMP111 Lecture 4 / Slide 4

Links (2)
ln creates a new link, not a new file. The new link and the original filename are equivalent pointers to the file. The last argument is the link destination, and can be:

A pathname of a new regular file


$ ln names NAMES

A pathname of an existing directory (a link with the same basename as the original file is created in the directory)
$ ln names secret

No second argument (same as giving a second argument of .)


$ ln /bin/cat

COMP111 Lecture 4 / Slide 5

Links (3)
A link has two pieces of information

A name An inode number

An inode number is an index into a system table that has all the information about the file (e.g., owner, size).
$ ln names NAMES jbond letter3 names

NAMES

file contents
007 Golden Eye Tomorrow Never Dies

system table inode: 42979 user: 4501 group: 1501 address: ...

COMP111 Lecture 4 / Slide 6

Links (4)
You can use ls -i to see if two links point to the same inode:
$ ls -li total 8 42979 -rw-r--r-42976 -rw-r--r-42979 -rw-r--r-59980 drwxr-xr-x 3 1 3 2 jbond jbond jbond jbond cs cs cs cs 64 34 64 512 Feb Feb Feb Feb 6 4 4 4 18:36 15:00 15:00 17:10 NAMES letter3 names secret/

So, using rm actually only removes a link. When the last link to a file is removed, the operating system actually removes the file.

COMP111 Lecture 4 / Slide 7

Symbolic Links
A symbolic link is a pointer to a pathname, not a pointer to the file itself.

ln -s original target creates a symbolic link.

A symbolic link is not equivalent to a hard link. The symbolic link has a different inode.

$ ln -s names snames $ ls -li total 10 42979 -rw-r--r-- 3 42976 -rw-r--r-- 1 42979 -rw-r--r-- 3 59980 drwxr-xr-x 2 42916 lrwxrwxrwx 1

jbond jbond jbond jbond jbond

cs 64 Feb cs 34 Feb cs 64 Feb cs 512 Feb cs 5 Feb

6 4 4 4 8

18:36 15:00 15:00 17:10 17:09

NAMES letter3 names secret/ snames -> names

Symbolic links are sometimes called soft links, and regular links are sometimes called hard links.

COMP111 Lecture 4 / Slide 8

Differences Between Hard and Soft Links (1)


You cant make a hard link to a directory, but you can make a symbolic link to a directory.
$ ln secret secrethlink ln: secret is a directory $ ln -s secret secretslink $ ls -li total 12
42979 -rw-r--r-42976 -rw-r--r-42979 -rw-r--r-59980 drwxr-xr-x 42917 lrwxrwxrwx 42916 lrwxrwxrwx $ cd secretslink $ pwd /homes/jbond/secret 3 1 3 2 1 1 jbond jbond jbond jbond jbond jbond cs 64 Feb 6 cs 34 Feb 4 cs 64 Feb 4 cs 512 Feb 4 cs 6 Feb 8 cs 5 Feb 8 18:36 15:00 15:00 17:10 17:21 17:09 NAMES letter3 names secret/ secretslink -> secret/ snames -> names

COMP111 Lecture 4 / Slide 9

Differences Between Hard and Soft Links (2)


You can also make symbolic links across file systems.
$ pwd /homes/jbond/secret $ ls -l /tmp total 26 -rw-rw-r-1 root sys 13636 Feb 2 01:41 ps_data $ ln /tmp/ps_data ps_data ln: ps_data is on a different file system $ ln -s /tmp/ps_data ps_data $ ls -li total 4 59944 -rw-r--r-- 1 jbond cs 154 Feb 4 16:38 letter1 59597 lrwxrwxrwx 1 jbond cs 12 Feb 8 17:39 ps_data -> /tmp/ps_data

There is no way to tell how many symbolic links there are to a file.

COMP111 Lecture 4 / Slide 10

Biggest Difference Between Hard and Soft Links


The most important difference between hard and symbolic links occur when a link is removed.

For a hard link:

For a symbolic link:

$ echo 123 > first $ ln first second $ rm first $ cat second 123 $ echo 456 > first $ cat first 456 $ cat second 123

$ echo 123 > first $ ln -s first second $ rm first $ cat second cat: cannot open second $ echo 456 > first $ cat first 456 $ cat second 456

You might also like