11 Comment puis-je convertir un chemin de fichier en URI dans la ligne de commande? Exemple : /home/MHC/directory with spaces and ümläuts à file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts bash filenames Glutanimate la source 2 stackoverflow.com/q/11876353/486504 un CVn du 2 stackoverflow.com/q/296536/486504 un CVn du 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! Glutanimate la source 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 $ la source 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" Rockallite la source 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
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! Glutanimate la source 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 $ la source 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" Rockallite la source 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
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 $ la source 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" Rockallite la source 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
2 Sur CentOS, aucune dépendance supplémentaire n'est requise: $ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url" Rockallite la source 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
Réponses:
Une façon de le faire est d'utiliser
urlencode
(l'installer sur Ubuntu viasudo apt-get install gridsite-clients
).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:
ou directement
ou
Un grand merci à Michael Kjörling pour les références!
la source
encodeduri=$(urlencode -m "$uri")
avec$uri
des guillemets doubles!Vous pouvez également utiliser le fichier URI :: du module Perl directement depuis la ligne de commande:
la source
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
avec Perl 5.10 (à partir de 2007) ou plus récentSur CentOS, aucune dépendance supplémentaire n'est requise:
la source
pathlib
module, cela pourrait se faire viapython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
est uniquement disponible dans Python 3, qui n'est pas installé par défaut sur CentOS.