2013-08-19 48 views
5

Tôi có một tập lệnh shell gọi matlab trong vòng lặp for.Tránh dấu thời gian lịch sử lệnh MATLAB

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

Bây giờ nếu tôi mở MATLAB lịch sử lệnh của mình sẽ chứa dấu thời gian ngắn cho mỗi lần tôi phát hành function_call trong vòng lặp. Ví dụ sau khi chạy vòng lặp cho 10 i khác nhau, lịch sử lệnh matlab của tôi trông giống như thế này

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

Điều này không hữu ích và nó cắt lịch sử lệnh của tôi. Có cách nào để tránh lịch sử lệnh từ việc thêm một dòng mỗi lần MATLAB được khởi chạy từ tập lệnh shell của tôi không?

Trả lời

4

Bạn có thể đặt kịch bản này trong tập tin startup.m bạn để loại bỏ những dòng khi MATLAB bắt đầu:

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 

Các tập tin có chứa lịch sử nằm trong thư mục sở thích prefdir và đặt tên history.m. Phần còn lại là biểu thức chính quy khớp với các dòng đó ở cuối tệp. Tôi đặt tất cả các biến trong kịch bản vào một cấu trúc để tôi có thể xóa tất cả chúng bằng clear H. H.stat = được sử dụng để tránh tạo ra biến số ans.

+0

Thật không may tôi không có quyền ghi vào/usr/local/MATLAB/R2012a/hộp công cụ/địa phương/mà tôi tin là nơi startup.m sẽ phải được đặt. Tôi đã hy vọng cho một tùy chọn tôi có thể vượt qua từ kịch bản shell để ngăn chặn nó từ văn bản để history.m ở tất cả. – ivan

+2

'startup.m' không cần phải được đặt trong' hộp công cụ \ local'. Nó có thể được đặt trong thư mục khởi động MATLAB của bạn (thư mục bạn đang ở trong khi MATLAB bắt đầu). Ngoài ra, khi bạn bắt đầu MATLAB như bạn làm từ một kịch bản lệnh shell, bạn có thể chỉ định thư mục khởi động trực tiếp với tùy chọn '-sd'. Vì vậy, bạn có thể đặt kịch bản từ câu trả lời trong thư mục đó và có nó thực thi * chỉ * khi bạn chạy MATLAB từ kịch bản lệnh shell, nhưng không tương tác. –

Các vấn đề liên quan