Comment convertir le chemin d'accès relatif au chemin d'accès absolu dans Unix
Je veux convertir
Chemin Relatif - /home/stevin/data/APP_SERVICE/../datafile.txt
à
Chemin Absolu - /home/stevin/data/datafile.txt
Est-il un outil intégré dans Unix pour ce faire ou toutes les bonnes idées sur comment puis-je le mettre en œuvre.
-Steve
- Peut-être que vous pouvez mettre à jour votre question pour indiquer pourquoi vous pensez que vous avez besoin pour ce faire. C'est une fonctionnalité! Bonne chance.
- Je suis d'estampage Chemin Relatif vers un fichier de petite taille et à l'aide de cette entrée de copier le fichier vers un autre emplacement plus tard. Cependant, APP_SERVICE dossier peut parfois n'existe pas et causant de la copie à l'aide de ce chemin d'accès relatif à l'échec.
Vous devez vous connecter pour publier un commentaire.
readlink -f /home/stevin/data/APP_SERVICE/../datafile.txt
devriez faire ce que vous cherchez, en supposant que votre Unix/Linux areadlink
.readlink
est généralement une partie de lacoreutils
paquet, qui est généralement installé par défaut. Remarque il est en minuscules, cependant, ne pasreadLink
, maisreadlink
...Quelque chose comme cela peut aider pour les répertoires: (Pour les fichiers, ajoutez
basename
)Pour les fichiers,
echo "$(cd $(dirname $thingie); pwd)/$(basename $thingie)"
fait le truc pour les deux fichiers et répertoires, depuisdirname
etbasename
simplement le processus de cordes et ne se soucient pas de savoir si la chaîne de travailler sur un véritable objet FS../dir1/dir2/file3
et$t
les deux à la fois. Je vais corriger ça. 🙂readlink
, ici's une solution qui ne nécessite même pas d'dirname
etbasename
...///
. Pas bonCDPATH
ensemble,cd
se fera l'écho de nouvelles voies, de sorte que vous besoin de tuer sa sortie:echo $(cd $(dirname $filepath) > /dev/null; pwd)/$(basename $filepath)
Je suis surpris que personne ne mentionne
realpath
encore. Passer votre chemins derealpath
et il va accepter d'eux.realpath
installé par défaut sur votre système?realpath
, il est livré avec Debian/Ubuntu et est juste un apt-get/aptitude à l'écart. Mais de toute façon, OP pose aussi des questions sur "les bonnes idées".-f
option.Basé sur Thrustmaster réponse mais avec pur bash:
Bien sûr, le
cd
exige le chemin d'accès existent réellement, qui peut ne pas être toujours le cas - dans ce cas, vous allez probablement avoir une vie plus simple en écrivant un petit script Python à la place...