Invocation de commandes Linux Shell à partir de Java : une explication détaillée
Lorsque vous essayez d'exécuter des commandes Linux à partir de Java, il est crucial de comprendre le nuances des commandes spécifiques au shell et leur compatibilité avec le runtime Java environnement.
Défi : Exécuter des commandes avec des redirections et des tuyaux
La tentative initiale d'utilisation de Process p = Runtime.getRuntime().exec("shell command") échoue gérer les redirections ou les tuyaux. En effet, exec() ne s'intègre pas directement au shell du système.
Solution : Tirer parti du "Proxy" du Shell
Pour exécuter des commandes shell avec des redirections et des canaux, vous pouvez tirer parti d'une approche « proxy shell ». Cela implique de spécifier le shell à utiliser comme étape intermédiaire.
Implémentation :
Remplacez exec() par ce qui suit :
Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
Dans cet exemple, "csh" est le proxy shell utilisé pour interpréter la commande "cat /home/narek/pk.txt".
Remarque supplémentaire :
Si vous rencontrez des problèmes lors de l'utilisation de csh, envisagez plutôt d'utiliser bash comme proxy shell :
Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "ls /home/XXX"});
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!