Shell is a computer program that takes command from humans or from other programs and executes them. It can be a command line and graphical both. Mostly we use the command line to execute commands. On Linux, it is known as a Bash shell, and on windows known as cmd and power shell.
In many situations, while doing application development using Java we need to execute commands using the undelaying shell. For this Java provides class ProcessBuilder
and Runtime.getRuntime().exec
method.
ProcessBuilder class provides overloaded methods for setting commands, execution path, and error redirection methods.
Here are some examples of using the process builder class.
Ping Example using Windows powershell or cmd
public class PingCommandExample {
public static void main(String[] args){
ProcessBuilder pb = new ProcessBuilder();
// Ping 5 times, can use cmd or powershell both
// pb.command("cmd.exe", "/c", "ping -n 5 google.com");
pb.command("powershell", "/c", "ping -n 5 google.com");
try {
// Using processbuilder
// Process process = pb.start();
// Using Runtime.getRuntime().exec method
Process process = Runtime.getRuntime().exec("powershell /c ping -n 5 google.com");
BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// wait to complete underlying command execution
int exitCode = process.waitFor();
System.out.println("\nTerminated with error code : " + exitCode);
} catch (IOException ex) {
ex.printStackTrace();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
Output
Pinging google.com [142.250.192.78] with 32 bytes of data:
Reply from 142.250.192.78: bytes=32 time=30ms TTL=119
Reply from 142.250.192.78: bytes=32 time=27ms TTL=119
Reply from 142.250.192.78: bytes=32 time=27ms TTL=119
Reply from 142.250.192.78: bytes=32 time=27ms TTL=119
Reply from 142.250.192.78: bytes=32 time=32ms TTL=119
Ping statistics for 142.250.192.78:
Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 27ms, Maximum = 32ms, Average = 28ms
Terminated with error code : 0
In the same way, you can execute Linux and Unix commands.