A link is a pointer to another file. A directory is nothing more than a list of the names and i-numbers of files. A directory entry can be a hard link, in which the i-number points directly to another file. A hard link to a file is indistinguishable from the file itself. When a hard link is made, then the i-numbers of two different directory file entries point to the same inode. For that reason, hard links cannot span across file systems. A soft link (or symbolic link) provides an indirect pointer to a file. A soft link is implemented as a directory file entry containing a pathname. Soft links are distinguishable from files, and can span across file systems. Not all versions of UNIX support soft links.
Filesystem(symbolic link, soft link, hard link, shortcut, alias) is a special type of Unix file which refers to another file by its pathname. A symbolic link is created with the "ln" (link) command:
Where OLDNAME is the target of the link (usually a pathname) and NEWNAME is the pathname of the link itself.
Most operations (open, read, write) on the symbolic link automatically diference it and operate on its target (OLDNAME). Some operations (e.g. removing) work on the link itself (NEWNAME).
In contrast with hard links, there are no restrictions on where a symbolic link can point, it can refer to a file on another file system, to itself or to a file which does not even exist (e.g. when the target of the symlink is removed). Such problems will only be detected when the link is accessed.
You have an explanation about hard links and soft links wiyh directories.
An explanation with files could be:
A file is referenced in the system by a i-node number, when you create a
file, the OS assign an i-node number to the file_name.
example:
a- create a file "pp"
echo "hard_soft_link_inode?" >> pp
b- list the file
ls -l pp
-rw-r--r-- 1 root system 22 May 07 18:39 pp
The number 1 is the number of hard links that the file has.
c- view the i-node number of pp assigned by the system:
ls -i pp
24 pp
the 24 number is the i-node number
d- when you make a hard link, the count of i-nodes of the file
is increased by 1 (and when you unlink the the hard link the number
is decreased by 1):
ln pp hard_link_to_pp
ln pp hard_link2_to_pp
ls -l pp
-rw-r--r-- 3 root system 22 May 07 18:39 pp
ls -i hard_link_to_pp
24 hard_link_to_pp
ls -i hard_link2_to_pp
24 hard_link_to_pp
if you remove the original file (you can access the file content by the
hard link)
rm pp
cat hard_link_to_pp
hard_soft_link_inode?
when you use the unlink command the i-node count decrease by 1:
unlink hard_link_to_pp
ls -l hard_link2_to_pp
-rw-r--r-- 1 root system 22 May 07 18:39 hard_link2_to_pp
if you unlink/rm again you lost the file.
Note: I prefer to use the unlink command over a hard link over the rm command.
The soft link is a pointer that could be point to nothing, to a file in the
same FS, or to a file in other FS (recommended use). To create a soft link
you need to use the "-s" flag of the "ln command".
A common use of hard links is some scripts in the rcX.d (X=1,2,3,S) that
are associated to files in the init.d directory. Use the "ls -i" in rc3.d and in the
init.d directories.
Good luck with your test, and sorry with my poor english.
Hi team, i am writing a purge script to delete softlinks and hardlinks on linux system which are 3/10/30 days old. To test the script i need to create links with old timestamp, i am able to cange timestamp for files but not for links.
i tried touch -h option but this option is not available on... (1 Reply)
I use sugarsync to sync my vimrc across computers. I keep the _vimrc file in a syncing folder and in my home folder, I have a symbolic link ~\_vimrc pointing to ~\Synced Docs\_vimrc. On my mac I have a .vimrc symbolic link pointing at the _vimrc file. On the pc side, every time I open the _vimrc... (3 Replies)
From what I understand a symbolic link is alot like a shortcut where it points to another file. if the original file is deleted the symbolic link is rendered useless but a symbolic link can be deleted without any problem.
A hard link is like a copy of the file itself but pointing to the same... (3 Replies)
Hey,
How can one ZIP the target of a soft/symbolic link in unix (if dodag@ is a symbolic link for the path car/reno/*.*, how can I zip car/reno/*.*, with using only dodag as my reference)?
Thxnk you. (1 Reply)
I am digging for certain types of files in the current directory and all its sub-directories and archiving them with the following code:
#! /usr/bin/ksh
Archive=`date +%Y_%m_%d_%T`
find . -type f \( -name \*\.ksh -o -name \*\.sql -o -name \*\.ini \) -print|xargs tar -cf... (4 Replies)
Hi,
I am writing a unix system utility that is supposed to scan through a directory, collecting
information about the files and subdirectories. That part is going well.
The tricky part is that some files in the directory are hard links or symbolic links. I am supposed to IGNORE these links.... (4 Replies)
hi, i am in a directory, have 2 files as below
then do a ls -l gives the below
lrwxrwxrwx 1 root system 23 Mar 08 2001 filea -> /adir/filea
lrwxrwxrwx 1 root system 23 Mar 08 2001 filea -> /adir/fileb
now, when i do a cd /adir, the system said, adir not... (5 Replies)