2013-08-19 11 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でクリアできるようにします。変数ansの作成を避けるためにH.stat =が使用されます。

+0

残念ながら、私は/ usr/local/MATLAB/R2012a/toolbox/local /に書き込み権限を持っていません。これは、startup.mを置かなければならない場所だと思います。私はシェルスクリプトから渡すことができるオプションを期待していました。 – ivan

+2

'startup.m'は' toolbox \ local'に置く必要はありません。これは、MATLABスタートアップフォルダ(MATLAB起動時のフォルダ)にあります。さらに、シェルスクリプトのようにMATLABを起動する場合は、 '-sd'オプションを使用してスタートアップフォルダを直接指定することができます。したがって、シェルスクリプトからMATLABを実行したときに*対話的に実行するのではなく、そのフォルダ内の応答からスクリプトを配置して* only *を実行させることができます。 –

関連する問題