Convertir le chemin du fichier en URI en bash


Réponses:


5

Une façon de le faire est d'utiliser urlencode(l'installer sur Ubuntu via sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

convertira le chemin en URI. La partie "file: //" de l'URI sera laissée de côté, mais vous pouvez facilement l'ajouter via un bash one-liner:

uri=$(urlencode -m "$1"); echo "file://$uri"

ou directement

echo "file://$(urlencode -m "$1")"

ou

echo -n file://; urlencode -m "$1"

Un grand merci à Michael Kjörling pour les références!


N'oubliez pas les citations! Vous voulez probablement encodeduri=$(urlencode -m "$uri") avec $urides guillemets doubles!
— gniourf_gniourf

@gniourf_gniourf Merci d'avoir modifié le code en conséquence.
— Glutanimate

4

Vous pouvez également utiliser le fichier URI :: du module Perl directement depuis la ligne de commande:

$ path="/home/MHC/directory with spaces and ümläuts"
$ echo $path | perl -MURI::file -e 'print URI::file->new(<STDIN>)."\n"'
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
$

1
Peut être raccourci echo $path | perl -MURI::file -E 'say URI::file->new(<>)'avec Perl 5.10 (à partir de 2007) ou plus récent
— Daniel Böhmer

2

Sur CentOS, aucune dépendance supplémentaire n'est requise:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"

Avec le pathlibmodule, cela pourrait se faire viapython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
— umi

pathlibest uniquement disponible dans Python 3, qui n'est pas installé par défaut sur CentOS.
— Rockallite
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.