Ce n'est pas possible directement, comme d'autres l'ont déjà souligné, mais vous pouvez bien sûr écrire un script pour cela. En voici un que j'ai trouvé quand j'ai dû changer beaucoup de liens symboliques
#! /bin/bash
tmp=$(mktemp)
trap "rm $tmp" EXIT
while [ ! -z "$1" ]; do
filename="$1"; shift
if [ ! -h "$filename" ]; then
echo "Not a symlink: $filename";
continue
fi
stat -c "%N" "$filename" >> $tmp
done
emacs $tmp
while read filename linkname; do
ln -sf "$linkname" "$filename"
done < <(sed "s/'\(.*\)' -> '\(.*\)'/\1 \2/" $tmp)
Cela a fonctionné pour moi, mais ce n'est certainement pas parfait, alors utilisez-le à vos risques et périls...
C'est possible en principe, mais l'éditeur devrait le supporter spécifiquement, car la lecture de la destination d'un lien symbolique nécessite un appel système spécial :readlink()
.
Il est peu probable que vous trouviez des éditeurs qui le fassent réellement, car ce n'est pas très utile et entre en conflit avec ce que la plupart des utilisateurs attendent de l'éditeur lorsqu'il lui est demandé d'ouvrir un lien symbolique :ouvrir le fichier vers lequel il pointe.
Selon le Stockage des liens symboliques section dans l'article de Wikipédia Liens symboliques, les liens symboliques sont stockés dans un inode . Cet inode est une structure de données contenant plusieurs informations sur le fichier en question - selon ce fil, le touch
La commande peut être utilisée pour modifier certaines de ses valeurs. Ainsi, il peut ne pas être possible de le modifier à l'aide d'un éditeur de texte, en raison des problèmes mentionnés par @Wyzard, mais il peut être modifiable en utilisant d'autres outils de ligne de commande comme touch
.
J'espère que cela vous aidera !
Oui, dans Emacs, cela est possible en mode dired, en particulier en mode wdired (directement inscriptible).
Notez que dired et wdired sont tous deux des packages intégrés.
Voici un exemple...
(BTW :j'utilise Smex pour donner à Emacs M-x
recherche de commandes et exécution d'une interface utilisateur plus ergonomique + correspondance floue)