Exécuter des commandes Linux Shell à partir de Java avec des canaux et des redirections
Lorsqu'ils tentent d'interagir avec des systèmes Linux à partir de Java, les développeurs sont souvent confrontés au défi de exécuter des commandes shell avec des fonctionnalités avancées telles que la redirection et les tuyaux. Comprendre les nuances de l'appel de commandes shell via Java est crucial pour accomplir de telles tâches.
Runtime.exec() est une méthode couramment utilisée pour exécuter des commandes shell en Java. Cependant, il ne parvient pas à établir un environnement shell approprié, ce qui limite sa compatibilité avec les redirections et les canaux. Au lieu de cela, l'approche préférée consiste à créer un nouveau processus avec un interpréteur shell et à transmettre la commande en argument.
Considérez le code révisé suivant :
Process p = Runtime.getRuntime().exec(new String[]{"csh", "-c", "cat /home/narek/pk.txt"});
Ici, le "csh" L'interpréteur est lancé avec l'option "-c", qui lui permet d'exécuter la commande spécifiée comme si elle était saisie directement dans le shell csh. Cette approche établit efficacement un environnement shell, permettant l'utilisation de redirections et de tuyaux selon les besoins.
Si csh n'est pas installé sur votre système, vous pouvez le remplacer par bash comme suit :
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!