gnome-opne コマンドで日本語ファイル名のファイルを開く
http://d.hatena.ne.jp/sa-y/20070327 で gnome-open コマンドを使うようしたのですが,どうもこのコマンドは引数に日本語ファイル名を含むパスを渡した場合にファイルが開けないようです.
% gnome-open Hello.txt # OK % gnome-open こんにちは.txt # NG URL を表示する際にエラー: 指定した'場所'は無効です.
ファイルシステムがEUC-JPだからかもしれません. UTF-8な環境だとどうなのでしょうねぇ?
切ない限りです… しかし何故か以下のように file スキーム URI にして渡すと同じファイルが正常に開けます.
% gnome-open file:///home/sawai/こんにちは.txt
なかなか謎な仕様ですがとりあえず適当な Ruby スクリプトをでっちあげて回避することにしました. ~/bin/open とかに置いて使います.
#!/usr/bin/ruby require 'uri' FILE_OPEN_COMMAND='gnome-open' uri_str = ARGV[0] uri_str = '.' unless uri_str if URI::extract(uri_str).length == 0 then # not uri file_path = File::expand_path(uri_str); uri_str = "file://#{file_path}" end STDERR.puts("URI : #{uri_str}") if $DEBUG result = system(FILE_OPEN_COMMAND, uri_str)
第一引数をURI::extract()に渡してURIっぽくないものならファイルパスだと解釈して file スキーム URI に変換してあげるだけです.第一引数しか見てないのでオプションとか指定したとしても全部無視してますが気にしない方向で.やる気ないですし.