我想從Haskell運行帶有unicode文件路徑的bash命令。帶有unicode文件路徑的runcommand(haskell)
字符串在Haskell使用\轉義例如
"beißen" -> "bei\223en"
擊似乎接受以下格式:
$'bei\xC3\x9Fen.avi'
和'beißen.avi'
因爲runCommand
從System.Process
有型
runCommand :: String -> IO System.Process.Internals.ProcessHandle
如何將Haskell字符串編碼爲Bash接受的格式之一?
使用Mac OSX 10.8.4其中有bash 3.2。
編輯
我的問題似乎在bash逃避
我使用Text.ShellEscape
(http://hackage.haskell.org/packages/archive/shell-escape/0.1.2/doc/html/Text-ShellEscape.html),以逃避需要進行轉義對於bash的人物做
如
import qualified Data.ByteString.Char8 as B
import qualified Text.ShellEscape as Esc
let cmd = B.unpack $ Esc.bytes $ Esc.bash . B.pack $ "beißen.txt"
這給我"$'bei\\xDFen.txt'"
運行runCommand $ "ls " ++ cmd
它給了我,當 ls: bei�en.txt: No such file or directory
它有沒有更好的方式來逃避對於bash字符串?
'runCommand「echobeißen>>beißen.txt&& catbeißen.txt」'運行正常,有什麼問題? – josejuan
你在試圖運行什麼,你會得到什麼錯誤? –
我又添加了一些信息 –