Mac之Shell命令

Shell實(shí)際上是一個(gè)命令解釋器,它解釋由用戶輸入的命令并且把它們送到內(nèi)核。

簡單介紹一下Mac系統(tǒng)下如何使用Shell命令開發(fā)終端軟件,首先簡單寫一個(gè)界面,頂部的文本框輸入待執(zhí)行的Shell命令,選擇;選擇默認(rèn)目錄按鈕表示Shell命令執(zhí)行的目錄,點(diǎn)擊Shell命令即可執(zhí)行命令。效果如下,我們選擇了Desktop,然后執(zhí)行了ls,在底部的文本框內(nèi)顯示了桌面所有的文件(不包括隱藏的文件)

181538893679_.pic_hd.jpg

選擇目錄的代碼如下,選擇完成后,記錄當(dāng)前選擇的path

 NSOpenPanel *openPanel = [NSOpenPanel openPanel];
openPanel.canChooseDirectories = YES;
NSInteger result = [openPanel runModal];
if(result == NSModalResponseOK) {
    _currentUrl = openPanel.URL;
}

NSTask執(zhí)行Shell命令

 self.task = [[NSTask alloc] init];
 self.task.arguments =@[@"-l", @"-c",      self.shellTextview.stringValue];
 self.task.launchPath = @"/bin/bash";
 self.task.currentDirectoryURL = _currentUrl;

然后創(chuàng)建NSPip接收NSTask的輸入,同時(shí)接收異常輸出

NSPipe *outPip = [[NSPipe alloc] init];
[self.task setStandardOutput:outPip];
    
NSPipe *errorPip = [[NSPipe alloc] init];
[self.task setStandardError:errorPip];
    
[self.task launch];
[self.task waitUntilExit];

將輸入結(jié)果轉(zhuǎn)換成NSString顯示

NSData *outData = [[outPip fileHandleForReading] availableData];
[outPip.fileHandleForReading readInBackgroundAndNotify];
    
NSData *errorData = [[errorPip fileHandleForReading] availableData];
[errorPip.fileHandleForReading readInBackgroundAndNotify];
    
NSString *outString = [[NSString alloc] initWithData:outData encoding:NSUTF8StringEncoding];
NSString *errorString = [[NSString alloc] initWithData:errorData encoding:NSUTF8StringEncoding];
    
if(outString.length > 0) {
   self.resultTextView.textColor = [NSColor blackColor];
    self.resultTextView.string = outString;
    }

效果如下:


Screen Shot 2018-10-07 at 2.37.37 PM.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容