11 Wie kann ich einen Dateipfad in einen URI in der Befehlszeile konvertieren? Beispiel : /home/MHC/directory with spaces and ümläuts zu file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts bash filenames Glutanimat quelle 2 stackoverflow.com/q/11876353/486504 ein CVn 2 stackoverflow.com/q/296536/486504 ein CVn 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
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
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
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
Antworten:
Eine Möglichkeit, dies zu tun, ist die Verwendung
urlencode
(Installation unter Ubuntu übersudo apt-get install gridsite-clients
).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:
oder direkt
oder
Vielen Dank an Michael Kjörling für die Referenzen!
quelle
encodeduri=$(urlencode -m "$uri")
mit$uri
in doppelten Anführungszeichen!Sie können die URI :: -Datei des Perl-Moduls auch direkt über die Befehlszeile verwenden:
quelle
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'
mit Perl 5.10 (ab 2007) oder neuer gekürzt werdenUnter CentOS sind keine zusätzlichen Abhängigkeiten erforderlich:
quelle
pathlib
Modul könnte es überpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
pathlib
ist nur in Python 3 verfügbar, das unter CentOS nicht standardmäßig installiert ist.