GNU/Linux >> Znalost Linux >  >> Linux

Převeďte karty na mezery v terminálu Linux pomocí příkazu Expand

Debata o používání tabulátorů a mezer v programování je nekonečná.

I když možná dáváte přednost neustálému používání tabulátorů, je pravděpodobné, že vaše pokyny pro kódování doporučují používat mezery.

Ale pokud jste již ve svém programu použili tabulátory všude a potřebujete tyto tabulátory převést na mezery, aby recenzent povolil váš kód, jste na správném místě.

V tomto tutoriálu vám ukážu, jak převést tabulátory na mezery v textovém souboru v příkazovém řádku Linuxu.

Použití příkazu expand k převodu tabulátorů na mezery v příkazovém řádku Linuxu

Používám tento ukázkový textový soubor, což je jednoduchý program C++ pro kontrolu lichých a sudých čísel. Toto je obsah souboru:

Tento soubor si můžete stáhnout odtud, pokud si chcete tento příkaz procvičit při sledování tohoto návodu.

Zkontrolujte, zda váš textový soubor obsahuje karty

Existuje několik způsobů, jak to udělat. Nejjednodušší metodou, kterou najdu, je použití příkazu cat.

Můžete použít příkaz cat s volbou -T a zobrazí všechny karty jako ^I na obrazovce (stdout).

cat -T tab_file

Umístění karet můžete vidět v souboru.

#include
using namespace std;
int main()
{
^Iint n;
^Icout << “Enter a number:^I“;
^Icin >> n;
^I
^Iif (n%2 == 0) {
^I^Icout<<n<< “is an even Number”;
^I}
^Ielse
^I^Icout<<n<< “is an odd Number”;
^Ireturn 0;
}

Převést tabulátory na mezery pomocí příkazu expand

Pokud na soubor použijete příkaz expand, převede všechny karty na blok po 8 mezerách a zobrazí výstup na obrazovce.

expand tab_file

Ale to není moc pohodlné, že? Změny zde téměř neuvidíte. Lepší nápad by bylo uložit výstup do jiného souboru.

expand tab_file > space_file

Pokud nyní soubor uvidíte pomocí příkazu cat, nenajdete již žádné karty.

Snižte počet mezer

Jak jsem zmínil v předchozí části, ve výchozím nastavení je tabulátor roven 8 mezerám. To by vypadalo super divně, kdyby váš kód měl tak velké odsazení.

Dobrá věc je, že můžete změnit výchozí velikost prostoru pomocí volby -t.

expand -t N tab_file

Pokud například musíte změnit každou kartu na 2 mezery, můžete použít příkaz expand takto:

expand -t2 tab_file > space_file

Převést pouze úvodní tabulátory na mezery

V programech byste často chtěli převést pouze úvodní karty, tj. karty na začátku řádku. Nechcete se dotknout tabulátorů mezi řádky, které jsou ve skutečnosti součástí kódu.

Rozbalit poskytuje také tuto možnost. Pokud chcete převést pouze úvodní tabulátory na mezery, použijte možnost –i .

Pokud budeme pokračovat v předchozím příkladu, zde je, jak by příkaz vypadal:

expand -t2 -i tab_file > space_file

Převést tabulátory na mezery a uložit je do původního souboru

Ve všech výše uvedených příkladech jste uložili převedený soubor do nového souboru. Ale pokud je vaším cílem vyčistit kód převedením tabulátorů na mezery existujících programových souborů, budete chtít, aby byl výstup uložen do samotného původního souboru.

K tomu můžete použít příkaz houba. Houbička „nasákne“ celý standardní vstup, než jej zapíše na výstup. To je mimořádně užitečné, když se pokoušíte změnit a uložit stejný soubor.

Nyní nemusí být příkaz houba ve vašem systému dostupný. Budete muset nainstalovat balíček moreutils. Mělo by být k dispozici

V distribucích založených na Ubuntu/Debianu můžete použít tento příkaz k instalaci moreutils:

sudo apt install moreutils

Po instalaci jej můžete použít v následující funkci:

expand -t2 -i tab_file | sponge tab_file

Převést tabulátory na mezery ve všech odpovídajících souborech v adresáři

Doposud to, co jste se naučili, platilo pro jeden soubor. Ale pokud máte projekt, který má několik programových souborů a chcete převést tabulátory na mezery ve všech z nich, budete muset být trochu chytřejší.

To, co jsme se dosud naučili, lze kombinovat s úžasnými příkazy find a exec.

find . -name '*.cpp' -type f -exec bash -c 'expand -t 4 "$0" | sponge "$0"' {} \;

Výše uvedený příkaz najde všechny soubory končící příponou cpp, předá tyto soubory příkazu expand a příkaz expand zapíše výstup do původních souborů pomocí příkazu sponge.

Možná si myslíte, že použití příkazu sed by v tuto chvíli bylo jednodušší, ale je to čistě vaše volba.


Linux
  1. Převádějte zvukové soubory pomocí tohoto všestranného příkazu Linux

  2. Linux Tee Command s příklady

  3. Linux tty Command Tutorial pro začátečníky (s příklady)

  1. Rozšíření Linuxu Command Tutorial pro začátečníky (s příklady)

  2. JQ Command v Linuxu s příklady

  3. Jak převést PDF do JPG pomocí příkazového řádku v Linuxu?

  1. wc Linux Command s příklady

  2. 5 použití příkazu mv v linuxovém terminálu

  3. Jak mohu převést mezery na karty ve Vimu nebo Linuxu?