GNU/Linux >> Znalost Linux >  >> Linux

3 triky, jak získat výstup více příkazů ve stejném řádku

Tři triky, jak získat výstup dvou příkazů v jeden řádek. Normálně budou dva výstupy příkazů vždy odděleny carriage returnem v linuxovém terminálu.

Jednou z hlavních překážek ve skriptování je dobře naformátovat výstupy podle požadavků. V Linuxu/Unixu každý příkaz stdout svůj výstup vždy na novém řádku. To je překážka v mnoha situacích, kdy kodér chce dva výstupy, dva termíny, dvě proměnné v jednom řádku, například ve formátu CSV. V tomto příspěvku uvidíme, jak prezentovat výstup dvou nebo více příkazů v jednom řádku.

Přečtěte si také:Skriptování souvisejících příspěvků

Normálně, když provádíme více než jeden příkaz, zobrazí výstupy v různých řádcích:

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

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

Ve výše uvedeném příkladu mají příkazy výstupy na řádek. Pomocí níže uvedených triků provedeme všechny výstupy v jedné řadě.

Trik 1:

Použití funkce překladu. Jak jsem řekl dříve, každý výstup příkazu je doprovázen návratem vozíku. Budeme překládat návrat vozíku se znakem tabulátoru, čímž získáme výstup dvou nebo více příkazů v jednom řádku.

# (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

Vynecháním výstupů pro funkci překladu jsme dosáhli jednořádkového výstupu. Zde jsme dali pokyn tr funkce pro překlad všech návratů vozíku (\n ) na kartu (\t ).

Pokud chcete výstup ve formátu CSV (hodnota oddělená čárkami), nahraďte tabulátor čárkou a získáte ji.

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

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

Můžete pozorovat jednu koncovou čárku, která ukazuje, že každý výstup příkazu končí \n, a proto je nahrazen ,

Trik 2:

Definováním každého výstupu příkazu jako proměnné. Zde uložíme výstup každého příkazu do jedné proměnné a poté tyto proměnné zopakujeme na jednom řádku.

# mydate=`date`

# myname=`hostname`

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

Zde jsme uložili datum a výstup příkazu hostname do mydate a myname proměnné. V posledním příkazu jsme zopakovali obě proměnné s mezerou mezi nimi. Všimněte si, že výstup příkazů lze uložit do proměnné provedením příkazu pomocí backticks (in-line provádění)!

Trik 3:

Ozvěnou in-line výstupů provedení. In-line provádění, tj. použití zpětných značek k provádění příkazů v rámci jiného příkazu. Tento trik použijeme k echo výstupů v jednom řádku.

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

Ve výše uvedeném příkladu jsme nejprve provedli příkazy a získali výstupy. Ale tyto výstupy jsou přiváděny do příkazu echo. Proto je příkaz echo stdout v jednom řádku.

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

Poznamenejte si, že jsme každý příkaz provedli v samostatných zadních uvozovkách.


Linux
  1. Získat doplněk k výsledku příkazu Ls?

  2. Linuxový příkaz echo

  3. CentOS / RHEL :Jak zobrazit příkazy provedené ve výstupu příkazu historie yum

  1. CentOS / RHEL :Jak získat datum a čas provedeného příkazu ve výstupu příkazu historie

  2. Jak připojit výstup do souboru?

  3. Získejte poslední 4 znaky výstupu ze standardního výstupu

  1. Jak přiřadit výstup příkazu proměnné shellu?

  2. Spusťte paralelně více příkazů najednou ve stejném terminálu

  3. Připojte konec řádku k výstupu příkazu