パイプとリダイレクトを使用して Java から Linux シェル コマンドを実行する
Java から Linux システムと対話しようとする場合、開発者は多くの場合、次のような課題に直面します。リダイレクトやパイプなどの高度な機能を使用してシェル コマンドを実行します。このようなタスクを完了するには、Java を介してシェル コマンドを呼び出す際のニュアンスを理解することが重要です。
Runtime.exec() は、Java でシェル コマンドを実行するために一般的に使用されるメソッドです。ただし、適切なシェル環境を確立できず、リダイレクトやパイプとの互換性が制限されます。代わりに、シェル インタプリタを使用して新しいプロセスを作成し、コマンドを引数として渡すことをお勧めします。
次の修正されたコードを考えてみましょう。
Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
ここでは、「csh」インタプリタは「-c」オプションを使用して起動されます。これにより、指定されたコマンドが csh シェルに直接入力されたかのように実行されます。このアプローチにより、シェル環境が効果的に確立され、必要に応じてリダイレクトやパイプを使用できるようになります。
システムに csh がインストールされていない場合は、次のように bash で置き換えることができます。
Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "ls /home/XXX"});
以上がJava からパイプとリダイレクトを使用して Linux シェル コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。