2013-08-19 16 views
5

Ho uno script di shell che chiama matlab in un ciclo for.Evita il timestamp della cronologia dei comandi matlab

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

Ora se apro il mio MATLAB cronologia dei comandi conterrà un breve timestamp per ogni volta che ho rilasciato function_call nel ciclo for. Per esempio dopo l'esecuzione del ciclo per 10 differenti i di, mio ​​MATLAB cronologia dei comandi simile a questa

%-- 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 --% 

Questo non è molto utile ed è ingombra la mia cronologia dei comandi. C'è un modo per evitare che la cronologia dei comandi aggiunga una riga ogni volta che Matlab viene lanciato dal mio script di shell?

risposta

4

Si può mettere questo script nel file startup.m per rimuovere quelle linee all'avvio di 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 

Il file che contiene la storia si trova nella cartella di preferenza prefdir e chiamato history.m. Il resto è un'espressione regolare che corrisponde a quelle righe alla fine del file. Inserisco tutte le variabili nello script in una struttura in modo che sia possibile cancellarle tutte tramite clear H. H.stat = viene utilizzato per evitare la creazione della variabile ans.

+0

Purtroppo non ho il permesso di scrittura su/usr/local/MATLAB/R2012a/toolbox/local/che credo sia dove dovrebbe essere localizzato startup.m. Speravo in un'opzione che potessi passare dallo script della shell per impedirmi di scrivere su history.m. – ivan

+2

'startup.m' non deve essere posizionato in' toolbox \ local'. Può essere posizionato nella cartella di avvio MATLAB (la cartella in cui ci si trova all'avvio di MATLAB). Inoltre, quando si avvia MATLAB come da uno script di shell, è possibile specificare la cartella di avvio direttamente con l'opzione '-sd'. Quindi puoi inserire lo script dalla risposta in quella cartella e farlo eseguire * only * quando esegui MATLAB dallo script della shell, ma non in modo interattivo. –

Problemi correlati