05-07-2002
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.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
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)
Discussion started by: yls177
5 Replies
2. Programming
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)
Discussion started by: Yifan_Guo
4 Replies
3. Shell Programming and Scripting
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)
Discussion started by: manthasirisha
4 Replies
4. UNIX for Dummies Questions & Answers
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)
Discussion started by: galz
1 Replies
5. UNIX for Dummies Questions & Answers
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)
Discussion started by: cue
3 Replies
6. Windows & DOS: Issues & Discussions
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)
Discussion started by: dp88
3 Replies
7. Solaris
When loooking at files in a directory using ls, how can I tell if I have a hard link or soft link? (11 Replies)
Discussion started by: Harleyrci
11 Replies
8. AIX
Hi
I'm logged in as root in an aix box
Which command will list all the soft links and hard links present in the server ? (2 Replies)
Discussion started by: newtoaixos
2 Replies
9. UNIX for Dummies Questions & Answers
Hai,
give me a simple example for soft and hard links.
this will work for soft link ?? ln -s (2 Replies)
Discussion started by: Ramesh M
2 Replies
10. Shell Programming and Scripting
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)
Discussion started by: Satyak
1 Replies
LEARN ABOUT OPENDARWIN
ln
LN(1) BSD General Commands Manual LN(1)
NAME
ln, link -- make links
SYNOPSIS
ln [-fhinsv] source_file [target_file]
ln [-fhinsv] source_file ... target_dir
link source_file target_file
DESCRIPTION
The ln utility creates a new directory entry (linked file) which has the same modes as the original file. It is useful for maintaining mul-
tiple copies of a file in many places at once without using up storage for the ``copies''; instead, a link ``points'' to the original copy.
There are two types of links; hard links and symbolic links. How a link ``points'' to a file is one of the differences between a hard and
symbolic link.
The options are as follows:
-f If the target file already exists, then unlink it so that the link may occur. (The -f option overrides any previous -i options.)
-h If the target_file or target_dir is a symbolic link, do not follow it. This is most useful with the -f option, to replace a symlink
which may point to a directory.
-i Cause ln to write a prompt to standard error if the target file exists. If the response from the standard input begins with the char-
acter 'y' or 'Y', then unlink the target file so that the link may occur. Otherwise, do not attempt the link. (The -i option over-
rides any previous -f options.)
-n Same as -h, for compatibility with other ln implementations.
-s Create a symbolic link.
-v Cause ln to be verbose, showing files as they are processed.
By default, ln makes hard links. A hard link to a file is indistinguishable from the original directory entry; any changes to a file are
effectively independent of the name used to reference the file. Hard links may not normally refer to directories and may not span file sys-
tems.
A symbolic link contains the name of the file to which it is linked. The referenced file is used when an open(2) operation is performed on
the link. A stat(2) on a symbolic link will return the linked-to file; an lstat(2) must be done to obtain information about the link. The
readlink(2) call may be used to read the contents of a symbolic link. Symbolic links may span file systems and may refer to directories.
Given one or two arguments, ln creates a link to an existing file source_file. If target_file is given, the link has that name; target_file
may also be a directory in which to place the link; otherwise it is placed in the current directory. If only the directory is specified, the
link will be made to the last component of source_file.
Given more than two arguments, ln makes links in target_dir to all the named source files. The links made will have the same name as the
files being linked to.
When the utility is called as link, exactly two arguments must be supplied, neither of which may specify a directory. No options may be sup-
plied in this simple mode of operation, which performs a link(2) operation using the two passed arguments.
SEE ALSO
link(2), lstat(2), readlink(2), stat(2), symlink(2), symlink(7)
COMPATIBILITY
The -h, -i, -n and -v options are non-standard and their use in scripts is not recommended. They are provided solely for compatibility with
other ln implementations.
STANDARDS
The ln utility conforms to IEEE Std 1003.2-1992 (``POSIX.2'').
The simplified link command conforms to Version 2 of the Single UNIX Specification (``SUSv2'').
HISTORY
An ln command appeared in Version 1 AT&T UNIX.
BSD
December 30, 1993 BSD