Dosya yolunu bash'da URI'ye dönüştürme


Yanıtlar:


5

Bunu yapmanın bir yolu kullanmaktır urlencode(aracılığıyla Ubuntu'ya yükleyin sudo apt-get install gridsite-clients).

urlencode -m "$filepath"

yolu bir URI'ye dönüştürür. URI'nin "file: //" kısmı hariç tutulacak, ancak bunu bir bash tek katmanlı aracılığıyla kolayca ekleyebilirsiniz:

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

veya doğrudan

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

veya

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

Michael Kjörling'e referansları için çok teşekkürler!


Alıntıları unutma! Muhtemelen çift ​​tırnak encodeduri=$(urlencode -m "$uri") ile$uri
gniourf_gniourf

@gniourf_gniourf Teşekkür ederim, kodu buna göre değiştirdi.
Aralık'ta

4

Perl modülü URI :: dosyasını doğrudan komut satırından da kullanabilirsiniz:

$ 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
echo $path | perl -MURI::file -E 'say URI::file->new(<>)'Perl 5.10 (2007 yılından itibaren) veya daha yeni ile kısaltılabilir
Daniel Böhmer

2

CentOS'ta ekstra bağımlılık gerekmez:

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

İle pathlibmodül o yoluyla yapılabilirpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"
Umi

pathlibyalnızca CentOS'a varsayılan olarak yüklenmeyen Python 3'te kullanılabilir.
Rockallite
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.