Groesbeek, view of the 'National Liberation Museum 1944-1945' in Groesbeek. © Ton Kersten
Fork me on GitHub

sed breaks links

2009-05-04 (17) by Ton Kersten, tagged as old

When using the stream editor (sed) with the -i option, it does break links. Like this:

~$ mkdir test
~$ cd test
~/test$ echo Hello > f1
~/test$ ln -s f1 f2
~/test$ ls -l
total 4
-rw-r--r-- 1 tonk tonk 6 May  4 09:28 f1
lrwxrwxrwx 1 tonk tonk 2 May  4 09:28 f2 -> f1
~/test$ sed -i.bck 's/Hello/Bello/' f2
~/test$ ls -l
total 8
-rw-r--r-- 1 tonk tonk 6 May  4 09:28 f1
-rw-r--r-- 1 tonk tonk 6 May  4 09:29 f2
lrwxrwxrwx 1 tonk tonk 2 May  4 09:28 f2.bck -> f1
~/test$ rm f2 f2.bck
~/test$ ln f1 f2
~/test$ ls -l
total 8
-rw-r--r-- 2 tonk tonk 6 May  4 09:28 f1
-rw-r--r-- 2 tonk tonk 6 May  4 09:28 f2
~/test$ sed -i.bck 's/Hello/Bello/' f2
~/test$ ls -l
total 12
-rw-r--r-- 2 tonk tonk 6 May  4 09:28 f1
-rw-r--r-- 1 tonk tonk 6 May  4 09:29 f2
-rw-r--r-- 2 tonk tonk 6 May  4 09:28 f2.bck

According to the sed developers this is a feature and not a bug. Therefore they will add the --follow-symlinks option in version 4.2.
Yep. It's not a bug.

I have corrected the vigit program, because it uses the -i of sed. The new version can be found here