Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/11/2011, à 21:01

compte supprimé

[Résolu] Liens symboliques − Édition et suppression

Bonsoir à tous et merci pour votre aide,

1) Je me demandais s'il était possible de modifier la cible d'un lien symbolique autrement qu'en le supprimant puis en le recréant avec la nouvelle cible. Mes recherches sur Internet suggèrent le contraire et je n'ai pas trouvé dans le man une commande qui le permettrait.

2) D'après ce que j'ai compris, la commande rm supprime le lien symbolique et non sa cible. Or, j'ai l'impression que c'est le cas si la cible est un répertoire et qu'on lui passe l'option -R (suppression récursive). C'est vrai ?
Vu que je l'ai ajouté automatiquement avec un alias dans mon bashrc :

alias rm='rm -RIv --one-file-system --preserve-root'

, j'aimerais éviter la farce qui me supprime tout le contenu du dossier pointé… Des suggestions ?

Dernière modification par Maelan (Le 21/11/2011, à 20:28)

#2 Le 20/11/2011, à 21:52

Kshegzyaj

Re : [Résolu] Liens symboliques − Édition et suppression

Je ne sais pas ce qu'il en est en ce qui concerne le rm -R sur un lien, mais il est possible d'outrepasser un alias en ajoutant un antislash. Ainsi, la commande suivante sera un simple rm :

\rm

Le plus simple serait peut-être de créer un répertoire, des fichiers et un lien vers ce repertoire afin de tester tout ça et d'en avoir le coeur net.


Netbook : Asus Eee 1215B / AMD C-60 / 4Go RAM / Radeon HD 6290 / Ubuntu 12.04
Laptop : Packard Bell EasyNote TM85 / Intel Core i5-430M / 4Go RAM / Windows Seven
Fixe : Packard Bell ? / Intel Pentium 4 / 2 Go RAM / Nvidia Geforce 6200LE / Windows XP et Ubuntu 12.04
Console : Nintendo Wii / IBM Broadway / 76 Mo RAM / ATI Hollywood / Debian Lenny

Hors ligne

#3 Le 20/11/2011, à 21:52

helly

Re : [Résolu] Liens symboliques − Édition et suppression

Bonjour :
1) non, je doute que ça soit possible. En même temps je vois pas à quoi ça aurait servi ^^’.
2) Yep pas de gaffe ! Faire un rm -r sur un lien symbolique supprimera la cible ! Et au passage, faire un alias de  rm -r vers rm, je trouve pas ça très sécure hmm.


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#4 Le 20/11/2011, à 23:38

pingouinux

Re : [Résolu] Liens symboliques − Édition et suppression

Bonsoir,

Maelan #1 a écrit :

1) Je me demandais s'il était possible de modifier la cible d'un lien symbolique autrement qu'en le supprimant puis en le recréant avec la nouvelle cible.

Oui : ln -sf lien nouvelle_cible

Maelan #1 a écrit :

2) D'après ce que j'ai compris, la commande rm supprime le lien symbolique et non sa cible.

Oui, on dirait, même avec l'option -r

Réponses aux deux questions par l'exemple :

$ touch A B
$ ln -s A C
$ ls -l A B C
-rw-r----- 1 user user 0 2011-11-20 22:53 A
-rw-r----- 1 user user 0 2011-11-20 22:53 B
lrwxrwxrwx 1 user user 1 2011-11-20 22:53 C -> A

$ ln -s B C
ln: creating symbolic link `C': File exists

$ ln -sf B C
$ ls -l A B C
-rw-r----- 1 user user 0 2011-11-20 22:53 A
-rw-r----- 1 user user 0 2011-11-20 22:53 B
lrwxrwxrwx 1 user user 1 2011-11-20 22:53 C -> B

$ cd /tmp
$mkdir rep
touch rep/a rep/b rep/c

$ ln -s /tmp/rep lien_1 
$ ln -s /tmp/rep lien_2

$ ls -l lien*
lrwxrwxrwx 1 user user 8 2011-11-20 22:33 lien_1 -> /tmp/rep
lrwxrwxrwx 1 user user 8 2011-11-20 22:33 lien_2 -> /tmp/rep

$ ls -l lien*/*
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_1/a
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_1/b
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_1/c
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_2/a
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_2/b
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_2/c

$ rm -r lien_1

$ ls -l lien*/*
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_2/a
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_2/b
-rw-r----- 1 user user 0 2011-11-20 22:32 lien_2/c

$ rm -r lien_2

$ ls -l rep
total 8
drwxr-x---  2 user user 4096 2011-11-20 22:30 .
-rw-r-----  1 user user    0 2011-11-20 22:32 c
-rw-r-----  1 user user    0 2011-11-20 22:32 b
-rw-r-----  1 user user    0 2011-11-20 22:32 a
drwxrwxrwt 24 root root 4096 2011-11-20 22:38 ..

Dernière modification par pingouinux (Le 21/11/2011, à 00:18)

Hors ligne

#5 Le 21/11/2011, à 02:31

sputnick

Re : [Résolu] Liens symboliques − Édition et suppression

ln -sf

ne fonctionne pas chez moi pour écraser un lien (archlinux)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 21/11/2011, à 20:27

compte supprimé

Re : [Résolu] Liens symboliques − Édition et suppression

helly a écrit :

Bonjour :
1) non, je doute que ça soit possible. En même temps je vois pas à quoi ça aurait servi ^^’.

Ben, à changer la cible du lien. big_smile

helly a écrit :

2) Yep pas de gaffe ! Faire un rm -r sur un lien symbolique supprimera la cible !

pingouinux a écrit :

Oui, on dirait, même avec l'option -r

D'après mes tests (j'aurais dû commencer par là roll), quand on passe l'option -R (ou -r, c'est pareil), alors ça ne change rien et c'est bien le lien lui-même qui est détruit, sauf si on écrit un slash / à la fin ; dans ce cas le lien est suivi et c'est tout le contenu du dossier qui part aux oubliettes (mais ni le dossier lui-même ni le lien, car il affiche "impossible de supprimer « lienRep » : pas un dossier").


helly a écrit :

Et au passage, faire un alias de  rm -r vers rm, je trouve pas ça très sécure hmm.

On est d'accord. Je pense que je vais faire 2 aliases, un pour les fichiers et un autre pour un dossier et son contenu :

alias rm='rm -iv --one-file-system --preserve-root'
alias rd='rm -RIv --one-file-system --preserve-root'

Sinon, l'option -f de ln fonctionne chez moi. smile En revanche, en interne, ça supprime bien le lien pour le recréer car l'inode change (problème en cas de lien physique sur un lien symbolique, mais bon faut le vouloir).


Merci pour toutes vos réponses !


Je me posais une autre question en rapport : les propriétaire et permissions du lien lui-même ne sont jamais utilisés, à la place on lit les propriétés de la cible, c'est bien ça ? Dans ce cas ça voudrais dire que même pour modifier/supprimer le lien lui-même (le renommer, changer la cible…) il faudrait posséder le droit d'écriture sur la cible ?

Dernière modification par Maelan (Le 21/11/2011, à 20:31)