J'ai fait un fichier lié en dur dans le terminal par commande : ln somefile somefile_h
et l'utilisait pour s'amuser. Maintenant, je suis confronté à une question : comment puis-je supprimer le lien entre ces deux fichiers et les utiliser séparément ? Quelqu'un sait-il ?
Réponses
Trop de publicités?Pour créer des fichiers indépendants, faites ce qui suit (en supposant que somefile
se trouve dans votre répertoire actuel) :
cp somefile temp_somefile
rm somefile
mv temp_somefile somefile
Cela créera un fichier identique somefile
qui n'est plus lié à somefile_h
. Avec cette approche, il n'est pas nécessaire de savoir où se trouve le fichier lié sur votre système de fichiers.
Si vous savez où se trouve le fichier lié, il est plus court de supprimer ce fichier lié et de faire ensuite une copie normale du fichier (précédemment lié) sous le même nom de fichier :
rm <path>/somefile_h
cp somefile <path>/somefile_h
Un moyen d'y parvenir avec un cp
La commande unique a été fournie par l'utilisateur bac0n :
cp --remove-destination somefile <path>/somefile_h
Ici, le fichier de destination (lié) est supprimé avant de faire une copie. Ainsi, la copie devient un "nouveau" fichier normal qui n'est plus lié au fichier source.
Un fichier lié en dur est comme un nom pointant vers le même inode.
Pour retirer votre lien dur, il suffit
rm linked_name
Cela n'affecte pas votre nom de fichier original et les données sur le disque, il y a un compteur de référence inode qui s'incrémente lors de la liaison et se décrémente lorsque vous délier l'instance. Lorsque le compteur atteint zéro, l'inode est supprimé et l'espace est marqué comme libre.
Pour faire une copie, utilisez cp
et pour le lien, utilisez ln