2009-03-09 8 views
16

ho bisogno di reindirizzare un output di un comando a due file dire file1 e file2 file1 è un nuovo file e file2 è già esistente file in cui ho bisogno di aggiungere l'output ho provatocome reindirizzare un output di un comando a due file

Questo non sta dando i risultati sperati:

command > file1 > file2 
+0

Duplicato: 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

Entrambi questi "duplicati" sono specificamente Linux/bash. Questa domanda è un po 'più utile dal momento che è agnostica del sistema operativo. È particolarmente bello avere tutte le soluzioni in una sola risposta per il confronto, contento che non sia stato chiuso come duplicato e che nessuna mod l'abbia affettato per essere troppo generico o per qualche assurdità. –

risposta

8

Per Windows (cmd.exe):

command > file1 & type file1 >> file2 
+0

Questo non funzionerà a meno che "comando" non sia completato rapidamente, la parte "tipo" non verrà eseguita fino a dopo (ea quel punto potrebbe anche essere una copia). Si potrebbe provare a eseguire "command" in un'altra finestra con una qualche forma di "Start", ma poi la seconda parte fallirà perché i file batch di Windows non hanno un equivalente "tail". Faresti meglio ad andare con powershell per questo lavoro - o il nuovo sottosistema windows bash - o installare git e usarlo bash - o scaricare tee.cmd da qualche parte (avevo una copia di tee.cmd per dos negli anni 80) –

+0

Hai ragione, potrebbe essere una copia e questo non è ottimale nel complesso - ma manca 'tee' non è possibile con cmd.exe. 'tee' è nelle porte di Windows dei programmi di utilità GNU, come quello fornito con git per Windows o Chef, quindi non è impossibile da ottenere. L'intenzione della risposta era scrivere * qualcosa * che emuli questo comportamento in cmd.exe. Altri hanno scritto la variante di Powershell. – Tomalak

13

stai lookin g per il comando 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

supponendo che si sta su un sistema Linux-like, tenta

command | tee file1 >> file2 

tee divide il flusso di output e lo invia a due destinazioni.

0

In Linux, si può fare questo

command | tee file1 >> file2

3

In PowerShell utilizzare tee-object (o il suo tee alias)

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

può anche tee ad una variabile (ad esempio per l'ulteriore elaborazione).

1

Sarà possibile utilizzare il seguente comando. Comando | tee -a file1 file2

Problemi correlati