2013-01-10 11 views
7

Mam skrypt, który zapisuje do pliku, tak jak poniżej:Czy muszę kota, aby napisać heredoc do pliku?

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

ale nie jestem pewien, czy to jest bezużyteczny Zastosowanie kot lub nie ...

+0

Wygląda doskonale, co czujesz, że jest z nim nie tak? – fge

+1

Po prostu ludzie lubią grać kartę wyższości UUOC, gdy tylko jest to możliwe, nie musisz bać się "kota". –

Odpowiedz

4

Nawet jeśli ten nie może być UUOC, to może być przydatne do korzystania tee zamiast:

tee myfile <<EOF 
some lines 
and more lines 
EOF 

To bardziej zwięzły, plus w odróżnieniu od operatora przekierowania może być łączony z sudo jeśli trzeba pisać pliki z uprawnieniami root.

+0

Czy to również nie zapisuje na standardowe wyjście? W większości przypadków nie jest to pożądane. –

+0

Prawda - jeśli tego nie chcesz, dodaj "> dev/null' na końcu pierwszej linii. Zobacz także [ten komentarz] (http://stackoverflow.com/questions/2953081/how-can-i-write-a-here-doc-to-a-file-in-bash-script/17093489#comment24896950_17093489). – Livven

2

Nie naprawdę UUOC. Można również zrobić to samo z echa:

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

UUOC jest podczas korzystania cat gdy nie jest potrzebny. Jak w:

cat file | grep "something" 

Zamiast tego można zrobić whithout cat:

grep "something" file 

Look here do oryginalnej definicji UUOC.

1

W zsh jest UUOC ponieważ:

>myfile <<EOF 
some lines 
and more lines 
EOF 

działa dobrze.

+0

Jaką powłokę używasz? Nie działa tutaj z bashem 4.2.39 – jgr

+1

Zsh. Chalk to do innej idiosynkasy zsh. – cmh

Powiązane problemy