2013-08-19 4 views
5

for 루프에서 matlab를 호출하는 쉘 스크립트가 있습니다.matlab 명령 히스토리 타임 스탬프 피하기

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

지금 내 명령 기록에는 for 루프에서 function_call을 실행할 때마다 짧은 시간 스탬프가 포함됩니다. 10 다른 I 년대의 루프를 실행 한 후 예를 들어, 내 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 --% 

처럼이 매우 유용 아니고, 클러 내 명령 내역 보인다. 내 셸 스크립트에서 matlab을 실행할 때마다 명령 기록에서 회선을 추가하지 않도록 할 수 있습니까?

답변

4

당신은 MATLAB을 시작할 때 그 라인을 제거하기 위해 startup.m 파일에이 스크립트를 넣을 수 있습니다 :

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 =은 변수가 생성되지 않도록하기 위해 사용됩니다.

+0

불행히도 나는/usr/local/MATLAB/R2012a/toolbox/local /에 대한 쓰기 권한이 없기 때문에 startup.m이 있어야 할 곳이라고 생각한다. 내가 쉘 스크립트에서 전달하여 history.m에 쓰는 것을 막을 수있는 옵션을 기대했다. – ivan

+2

'startup.m'은'toolbox \ local'에있을 필요가 없습니다. MATLAB 시작 폴더 (MATLAB이 시작될 때 사용중인 폴더)에있을 수 있습니다. 또한 쉘 스크립트에서와 같이 MATLAB을 시작할 때'-sd' 옵션을 사용하여 시작 폴더를 직접 지정할 수 있습니다. 따라서 쉘 스크립트에서 MATLAB을 실행할 때 * 해당 * 폴더에서 대답의 스크립트를 배치하고 대화식으로 실행할 수는 없습니다. –