GNU/Linux >> Linux Esercitazione >  >> Linux

3 trucchi per ottenere più comandi in uscita nella stessa riga

Tre trucchi per ottenere due comandi in uscita in un fila unica. Normalmente due output di comandi saranno sempre separati da un carriage return nel terminale Linux.

Uno dei principali ostacoli nello scripting è che i tuoi output siano formattati bene in base ai requisiti. In Linux/Unix ogni comando stdout il suo output sempre in una nuova riga. Questo è un ostacolo in molte situazioni in cui il programmatore desidera due output, due termini, due variabili in una singola riga, ad esempio il formato CSV. In questo post vedremo come presentare due o più comandi in output in una singola riga.

Leggi anche:Post relativi agli script

Normalmente quando eseguiamo più di un comando, visualizzeranno gli output in righe diverse:

# date ; hostname
Sat Dec 24 01:35:50 EDT 2016
testsrv2

# echo text1; echo text2; echo text3
text1
text2
text3

Nell'esempio sopra, i comandi hanno output per riga. Realizzeremo tutti gli output in una riga usando i trucchi seguenti.

Trucco 1:

Utilizzo della funzione di traduzione. Come ho detto prima, ogni output di comando è accompagnato da un ritorno a capo. Tradurremo il ritorno a capo con il carattere di tabulazione, quindi otterremo due o più comandi in uscita in una singola riga.

# (date; hostname) |tr '\n' '\t'
Sat Dec 24 01:36:22 EDT 2016    testsrv2

# (echo text1; echo text2; echo text3) |tr '\n' '\t'
text1   text2   text3

Bypassando gli output per tradurre la funzione abbiamo ottenuto un output di riga singola. Qui abbiamo indicato tr funzione per tradurre tutti i ritorni a capo (\n ) nella scheda (\t ).

Se desideri eseguire l'output in formato CSV (valore separato da virgola), sostituisci tab con una virgola e lo otterrai.

# (date; hostname) |tr '\n' ','
Sat Dec 24 01:43:09 EDT 2016,testsrv2,

# (echo text1; echo text2; echo text3) |tr '\n' ','
text1,text2,text3,

Puoi osservare una virgola finale che mostra che l'output di ogni comando termina con \n e quindi viene sostituito da ,

Trucco 2:

Definindo ogni output di comando come una variabile. Qui memorizzeremo l'output di ciascun comando in una variabile e quindi faremo eco a quelle variabili in una singola riga.

# mydate=`date`

# myname=`hostname`

# echo $myname $mydate
testsrv2 Sat Dec 24 01:46:04 EDT 2016

Qui abbiamo memorizzato l'output del comando data e hostname in mydate e myname variabili. Nell'ultimo comando, abbiamo fatto eco a entrambe le variabili con uno spazio intermedio. Si noti che l'output dei comandi può essere memorizzato in una variabile eseguendo il comando utilizzando i backtick (esecuzione in linea)!

Trucco 3:

Riprendendo gli output di esecuzione in linea. Esecuzione in linea, ovvero utilizzando i backtick per eseguire comandi all'interno di un altro comando. Useremo questo trucco per fare eco alle uscite in una singola riga.

# echo "`date` `hostname`"
Sat Dec 24 01:50:36 EDT 2016 testsrv2

Nell'esempio sopra, in primo luogo, abbiamo eseguito comandi e ottenuto output. Ma quelle uscite vengono inserite nel comando echo. Quindi il comando echo li classifica in una singola riga.

# echo "`echo text1` `echo text2` `echo text3`"
text1 text2 text3

Prendi nota del fatto che abbiamo eseguito ogni comando tra virgolette separate.


Linux
  1. Output dell'"ultimo" comando?

  2. Qual è la differenza nell'ottenere l'output del comando usando `command`e $(command) in Shell??

  3. $_ Vs!$. Ultimo argomento del comando precedente e reindirizzamento dell'output?

  4. Ottieni il complemento del risultato di un comando Ls?

  5. Ottieni gli ultimi 4 caratteri dell'output da standard out

Trucchi di formattazione per il comando data di Linux

Come modificare il colore di output di "Echo" in Linux

5 dei comandi più noiosi in Linux

Esempi di comandi echo Linux

Ottieni la prima riga dell'output di un comando di shell

Aggiungi un'interruzione di riga all'output del comando