Maison  >  Article  >  Java  >  Comment puis-je exécuter des commandes Linux Shell avec des redirections et des canaux depuis Java ?

Comment puis-je exécuter des commandes Linux Shell avec des redirections et des canaux depuis Java ?

DDD
DDDoriginal
2024-11-23 13:34:09810parcourir

How Can I Execute Linux Shell Commands with Redirections and Pipes from Java?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn