2013-01-10 26 views
7

Tôi đã có một kịch bản mà viết vào một tập tin, như vậy:Tôi có cần mèo để viết một heredoc vào một tập tin không?

cat >myfile <<EOF 
some lines 
and more lines 
EOF 

nhưng tôi không chắc chắn cho dù đây là một Sử dụng ích của Cát hay không ...

+0

Trông hoàn toàn ổn, bạn cảm thấy gì với nó? – fge

+1

Chỉ những người thích chơi Thẻ Ưu tiên UUOC bất cứ khi nào có thể, bạn không phải sợ "mèo". –

Trả lời

4

Thậm chí nếu điều này có thể không phải là một UUOC, nó có thể là hữu ích để sử dụng tee thay vì:

tee myfile <<EOF 
some lines 
and more lines 
EOF 

Đó là ngắn gọn hơn, cộng với không giống như các nhà điều hành chuyển hướng nó có thể được kết hợp với sudo nếu bạn cần phải viết để các tệp có quyền root.

+0

Không phải điều này cũng ghi tiêu chuẩn không? Trong hầu hết các trường hợp, điều này không được mong muốn. –

+0

True - nếu bạn không muốn điều đó, hãy thêm '> dev/null' vào cuối dòng đầu tiên. Xem thêm [bình luận này] (http://stackoverflow.com/questions/2953081/how-can-i-write-a-here-doc-to-a-file-in-bash-script/17093489#comment24896950_17093489). – Livven

2

Nó không phải là thực sự là một UUOC. Bạn cũng có thể làm tương tự với echo:

echo "this is line 
this is another line 
this is the last line" > somefile 
1

UUOC là khi bạn sử dụng cat khi không cần thiết. Như trong:

cat file | grep "something" 

Thay vào đó bạn có thể làm điều đó whithout mèo:

grep "something" file 

Look here cho định nghĩa ban đầu của UUOC.

1

Trong zsh nó là một UUOC vì:

>myfile <<EOF 
some lines 
and more lines 
EOF 

trình tốt.

+0

Bạn đang sử dụng trình bao nào? Không hoạt động ở đây với bash 4.2.39 – jgr

+1

Zsh. Phấn này lên đến một đặc tính zsh khác. – cmh

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