如何以編程方式運行終端命令?可可應用程序 - NSTask
現在我在做這樣的:
-(IBAction)proceedTapped:(id)sender
{
NSLog(@"%@",[self runCommand:@"cd ~"]);
NSLog(@"%@",[self runCommand:@"ls"]);
}
-(NSString *)runCommand:(NSString *)commandToRun
{
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
NSArray *arguments = [NSArray arrayWithObjects:
@"-c" ,
[NSString stringWithFormat:@"%@", commandToRun],
nil];
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *output;
output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
return output;
}
對於單命令該代碼工作得很好,但對我來說,當我想改變目錄 到〜(家),然後做「LS」這不起作用(它看起來像在兩個不同的終端窗口中運行兩個命令)。 那麼如何在一個終端窗口中運行多個命令? 謝謝。
可能重複[如何在循環中使用NSTask運行終端命令在一致的環境?](http://stackoverflow.com/questions/13217415/how-to-use-nstask-run-terminal-commands-in-循環在一致的環境) –
按照這個http://stackoverflow.com/questions/19038364/nsprocessinfo-returns-different-path-than-echo-path/19050417#19050417 –