Příkaz echo automaticky přidá nový řádek na konec. To je skvělé.
Ale co když chcete zobrazit pouze prázdný nový řádek? Nebo pokud chcete vypsat něco, co obsahuje nový řádek?
Dobrou zprávou je, že echo vám umožňuje použít znak nového řádku \n
k vytištění nového řádku na stejném výstupním řádku, pokud použijete -e
možnost:
echo -e "Name\nAddress\nPhone Number"
Pokud spustíte výše uvedený příkaz, získáte tento výstup:
Name
Address
Phone Number
To je hezké, že? Pojďme se na to podívat podrobněji.
Zobrazit nový řádek s příznakem -e příkazu echo (doporučeno)
Nový řádek je termín, který používáme k označení, že aktuální řádek skončil a text bude pokračovat od řádku pod aktuálním řádkem. Ve většině systémů podobných UNIXu \n
se používá k určení nového řádku. Označuje se jako znak nového řádku.
Příkaz echo je ve výchozím nastavení deaktivován výklad zpětného lomítka uniká. Pokud se tedy pokusíte zobrazit nový řádek pomocí escape sekvence '\n', zaznamenáte problém.
$ echo Hello\nworld
Hellonworld
$ echo 'Hello\nworld'
Hello\nworld
Nefunguje ani uzavření textu do jednoduchých uvozovek jako řetězcový literál.
To nebyl očekávaný výstup. Chcete-li skutečně vytisknout nový řádek, můžete pomocí příznaku '-e' sdělit příkazu echo, že chcete povolit interpretaci úniků zpětného lomítka.
$ echo -e 'Hello\nworld'
Hello
world
Pěkné, to je to, co hledáte.
Dovolte mi několik dalších způsobů, jak zobrazit znak nového řádku.
echo proměnná obsahující nový řádek
Řetězec můžete uložit do proměnné bash a poté jej echo pomocí příznaku '-e'.
$ str="Hello\nworld"
$ echo -e $str
Hello
world
Použijte znak '$' místo příznaku -e
Symbol dolaru „$“ se v bash nazývá „rozšiřující“ znak. Toto je znak, který jsem použil v předchozím příkladu k odkazování na hodnotu proměnné v shellu.
Pokud se pozorně podíváte na úryvek níže, uvědomíte si, že rozšiřující znak v tomto případě uchovává dočasnou hodnotu.
$ echo Hello$'\n'world
Hello
world
Nebo můžete použít celý řetězec jako 'dočasnou proměnnou':
$ echo $'Hello\nworld'
Hello
world
Raději bych použil -e
vlajka však.
ozvěte svou ozvěnu a vytiskněte něco s novým řádkem
Když odešlete část textu, příkaz echo automaticky přidá nový řádek (a zde je návod, jak tomu můžete zabránit) na konec vašeho textu.
To znamená, že můžete zřetězit více příkazů echo dohromady a vytvořit nový řádek.
$ echo Hello; echo world
Hello
world
Použijte printf k tisku nového řádku v prostředí Bash
printf je další nástroj příkazového řádku, který v podstatě tiskne text do terminálu, ale také vám umožňuje formátovat text.
Použití je velmi jednoduché a podobné echo, ale o něco spolehlivější a konzistentnější.
$ printf 'Hello\nworld\n'
Hello
world
Podle očekávání máte nový řádek bez použití jakýchkoli příznaků.
Závěr
Osobně bych preferoval zůstat u parametru -e nebo použít příkaz printf pro zobrazení nových řádků ve výstupu. Doporučuji vám udělat totéž, ale neváhejte experimentovat.