bashでファイルパスをURIに変換する


回答:


5

これを行う1つの方法は、を使用urlencodeすることです(Ubuntuにをインストールしsudo apt-get install gridsite-clientsます)。

urlencode -m "$filepath"

パスをURIに変換します。URIの「file://」の部分は省略されますが、bashの1行で簡単に追加できます。

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

または直接

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

または

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

参照してくれたMichaelKjörlingに感謝します。


引用を忘れないでください!あなたはおそらくしたいencodeduri=$(urlencode -m "$uri") との$uri二重引用符で!
gniourf_gniourf 2012

@gniourf_gniourfありがとう、それに応じてコードを修正しました。
グルタニメート

4

コマンドラインから直接PerlモジュールURI :: fileを使用することもできます

$ 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年から)以降で短縮可能
DanielBöhmer'19年

2

CentOSでは、追加の依存関係は必要ありません。

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

pathlibモジュールには、経由して行うことができるpython -c 'import sys,pathlib; print(pathlib.Path(sys.argv[1]).resolve().as_uri())' "$my_url"

pathlibはPython 3でのみ使用できます。CentOSにはデフォルトではインストールされません。
Rockallite
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.