2013-08-19 187 views
5

我有一個shell腳本,在for循環中調用matlab。避免matlab命令歷史時間戳

for i in ${list}; do 
    nohup matlab -minimize -nodesktop -nosplash function_call(i, other_variables); 
done 

現在如果我打開matlab,我的命令歷史記錄將包含每次我在for循環中發出function_call的簡短時間戳記。例如運行環路10個不同的我的,我的MATLAB命令歷史記錄看起來像這樣

%-- 08/19/2013 02:41:23 PM --% 
%-- 08/19/2013 02:53:11 PM --% 
%-- 08/19/2013 03:11:52 PM --% 
%-- 08/19/2013 03:12:58 PM --% 
%-- 08/19/2013 03:17:44 PM --% 
%-- 08/19/2013 03:24:51 PM --% 
%-- 08/19/2013 03:30:36 PM --% 
%-- 08/19/2013 03:35:33 PM --% 
%-- 08/19/2013 03:43:21 PM --% 
%-- 08/19/2013 04:04:31 PM --% 

這不是很有用,而且雜波我的命令歷史記錄。有沒有辦法避免命令歷史上每次從我的shell腳本啓動matlab時添加一行?

回答

4

你可以把這個腳本在startup.m文件MATLAB啓動時刪除這些行:

H.file = fullfile(prefdir, 'history.m'); 
copyfile(H.file, [H.file '.bak'], 'f'); 
H.log = fileread(H.file); 
H.handle = fopen(H.file, 'w'); 
H.stat = fwrite(H.handle, regexprep(H.log, '(%-- [^%]* --%(\n|\r)*)*', '')); 
H.stat = fclose(H.handle); 
clear H 

包含歷史位於首選項文件夾prefdir並命名history.m文件。其餘的是一個正則表達式,它匹配文件末尾的那些行。我將腳本中的所有變量放入結構中,以便我可以通過clear H清除它們。 H.stat =用於避免創建變量ans

+0

不幸的是,我沒有對/ usr/local/MATLAB/R2012a/toolbox/local /的寫入權限,我相信這是startup.m必須定位的地方。我希望能夠從shell腳本中傳遞一個選項,以防止它寫入history.m。 – ivan

+2

'startup.m'不需要位於'toolbox \ local'中。它可以位於您的MATLAB啓動文件夾中(當您啓動MATLAB時您所在的文件夾)。另外,當您像從shell腳本那樣啓動MATLAB時,您可以直接使用'-sd'選項指定啓動文件夾。因此,您可以從該文件夾中的答案放置腳本,並使其僅在從shell腳本運行MATLAB時執行* only *,而不是交互式執行。 –