2009-03-09 20 views
16

Potrzebuję przekierować wyjście polecenia do dwóch plików, powiedz plik1 i plik2 plik1 jest nowym plikiem, a plik2 jest jużistniejącym plikiem, gdzie muszę dołączyć wyjście próbowałemjak przekierować wyjście polecenia do dwóch plików

To nie daje oczekiwanych rezultatów:

command > file1 > file2 
+0

Duplikat: http://stackoverflow.com/questions/76700/whats-a-simple-method-to-dump-pipe-input-to-a-file-linux, http: // stackoverflow.com/questions/418896/how-to-redirect-output-to-a-file-and-stdout –

+0

Obie te "dupki" to w szczególności Linux/bash. To pytanie jest bardziej przydatne, ponieważ jest agnostyczne. Szczególnie dobrze jest mieć wszystkie rozwiązania w jednej odpowiedzi dla porównania, cieszę się, że nie została zamknięta, ponieważ dupe i żadne mody nie pocięły jej za to, że są zbyt ogólne lub takie bzdury. –

Odpowiedz

8

dla Windows (cmd.exe):

command > file1 & type file1 >> file2 
+0

To nie zadziała, jeśli "command" nie zakończy się szybko, część "type" nie zostanie wykonana dopiero po (i w tym momencie może równie dobrze być kopią). Możesz spróbować uruchomić "polecenie" w innym oknie z pewną formą "Start", ale wtedy druga część się nie powiedzie, ponieważ pliki wsadowe Windows nie mają odpowiednika "ogona". Lepiej byłoby po prostu użyć programu powershell do tej pracy - lub nowego podsystemu windows bash - lub zainstalować git i użyć jego bash - lub pobrać gdzieś .cmd skądś (miałem kiedyś kopię tee.cmd dla dos w latach 80-tych) –

+0

Masz rację, może to być kopia i nie jest to optymalne ogólnie - ale brakuje 'tee' nie jest możliwe z cmd.exe. 'tee' znajduje się w portach Windows narzędzi GNU, takich jak ten, który jest dostarczany z git dla Windows lub Chef, więc nie jest to niemożliwe. Intencją odpowiedzi było napisanie * czegoś *, które emuluje to zachowanie w cmd.exe. Inni napisali wariant Powershell. – Tomalak

13

Jesteś lookin g dla polecenia tee.

$ echo existing >file2 
$ date | tee file1 >> file2 
$ cat file2 
existing 
Mon Mar 9 10:40:01 CET 2009 
$ cat file1 
Mon Mar 9 10:40:01 CET 2009 
$ 
2

Zakładając, że jesteś na systemie Linux-like, spróbuj

command | tee file1 >> file2 

tee rozdziela strumień wyjściowy i wysyła go do dwóch miejsc.

0

W Linuksie, można to zrobić

command | tee file1 >> file2

3

W PowerShell używać tee-object (lub jego tee alias)

command | tee first-file | out-file second-file 

Może również tee do zmiennej (na przykład w celu dalszego przetwarzania).

1

Będzie to możliwe za pomocą następującego polecenia. polecenie | tee -a plik1 plik2

Powiązane problemy