2012-02-02 6 views
26

In sostanza, desidero che l'output del terminale sia un messaggio seguito da data e ora, ad esempio "Ciao, oggi è -dateandtime-".Come aggiungere la data del comando UNIX a un'istruzione echo

Così l'eco può eseguire il primo bit, e la data può eseguire l'ultimo, ma solo separatamente, come posso metterli insieme (in un unico comando) in modo che escano insieme.

Come

eco ciao là

-nuovo Comando

data

lo fa, ma non in una sola riga. È il pipelining della risposta?

risposta

50

Questo lo farà:

echo "Hi, today is $(date)" 
+0

Grazie mille. : D –

+0

+1 solo su principal principale perché hai usato $() invece di backtick (ma la soluzione di mimisbrunnr è IMO più corretta) –

3
echo Hello there, today is `date` 

È inoltre possibile formattare l'output di data utilizzando modificatori come:

echo Hello there, today is `date +%D` 

Vedi man date per un elenco completo dei modificatori.

+0

Funziona come un incantesimo, grazie. –

8

La data avrà una stringa di formato arbitrario.

> date +"Hi, today is - %a %b %e %H:%M:$S %Z %Y" 
    Hi, today is - Thu Feb 2 03:28: CET 2012 
+0

Il tuo comando non produrrà ciò che mostri, ma qualcosa del tipo: "Ciao, oggi è - Gio 2: 03:28: CET 2012" – jlliagre

+0

sì vero, ho modificato la stringa di formato, ho dimenticato di applicare patch all'output – zellio

0

apice inverso farà il trucco:

echo "Hi, today is" `date` 
1

Per questo particolare problema, la soluzione di mimisbrunnr è la strada giusta da percorrere. Per la domanda generale su come aggiungere dati a un eco, alcune tecniche comuni sono:

 
$ echo 'Hi, today is ' | tr -d '\012'; date 
Hi, today is Wed Feb 1 18:11:40 MST 2012 
$ echo -n 'Hi, today is '; date 
Hi, today is Wed Feb 1 18:11:43 MST 2012 
$ printf 'Hi, today is '; date 
Hi, today is Wed Feb 1 18:11:48 MST 2012