これらは、OSまたはプロセスライブラリが一般的に提供できる機能ではありません。それらは、シェル言語の機能です(使用する言語はsh
/dash
/bash
/zsh
など)。もちろん
Prelude System.Process> readProcess "bash" ["-c", "lsusb | grep 'Real'"] ""
"Bus 001 Device 003: ID 0bda:57b5 Realtek Semiconductor Corp. \n"
を、これはWindowsのように、bashがインストールされていないシステム上では動作しません。したがって、あなたは、引数としてコマンド全体で、プロセスとしてシェルを呼び出す必要があります。
より良い方法は、でなく、はシェルパイプを呼び出し、grep
を呼び出しますが、Haskell自体で検索します。 turtle
ライブラリは、これは簡単です:。
Prelude Turtle> :set -XOverloadedStrings
Prelude Turtle> stdout . grep (has "Real") $ inproc "lsusb" [] empty
Bus 001 Device 003: ID 0bda:57b5 Realtek Semiconductor Corp.
System.Process.callCommand – amalloy
@amalloy)(読み)のPythonから知られている機能です。それはそこに問題なしで働いた... – Lazersmoke