Konvertieren Sie den Dateipfad in Bash in URI

Antworten:

5

Eine Möglichkeit, dies zu tun, ist die Verwendung urlencode(Installation unter Ubuntu über sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

konvertiert den Pfad in einen URI. Der Teil "file: //" des URI wird weggelassen, aber Sie können ihn einfach über einen Bash-Einzeiler hinzufügen:

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

oder direkt

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

oder

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

Vielen Dank an Michael Kjörling für die Referenzen!

Glutanimat
quelle
Vergessen Sie nicht die Zitate! Sie wollen wahrscheinlich encodeduri=$(urlencode -m "$uri") mit $uriin doppelten Anführungszeichen!
gniourf_gniourf
@gniourf_gniourf Vielen Dank, den Code entsprechend geändert.
Glutanimate
4

Sie können die URI :: -Datei des Perl-Moduls auch direkt über die Befehlszeile verwenden:

$ 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
$

quelle
1
Kann echo $path | perl -MURI::file -E 'say URI::file->new(<>)'mit Perl 5.10 (ab 2007) oder neuer gekürzt werden
Daniel Böhmer
2

Unter CentOS sind keine zusätzlichen Abhängigkeiten erforderlich:

$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
Rockallite
quelle
Mit pathlibModul könnte es überpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
umi
pathlibist nur in Python 3 verfügbar, das unter CentOS nicht standardmäßig installiert ist.
Rockallite