GNU/Linux >> Linux Esercitazione >  >> Linux

Converti le schede in spazi nel terminale Linux con il comando Espandi

Il dibattito sull'uso di tab e spazi nella programmazione è senza fine.

Sebbene tu preferisca utilizzare sempre le schede, è probabile che le tue linee guida di codifica suggeriscano l'utilizzo di spazi.

Ma se hai già utilizzato le schede ovunque nel tuo programma e devi convertire quelle schede in spazi in modo che il revisore consenta il tuo codice, sei nel posto giusto.

In questo tutorial, ti mostrerò come convertire le schede in spazi in un file di testo nella riga di comando di Linux.

Utilizzo del comando expand per convertire le schede in spazi nella riga di comando di Linux

Sto usando questo file di testo di esempio che è un semplice programma C++ per controllare i numeri pari e dispari. Questo è il contenuto del file:

Puoi scaricare questo file da qui se vuoi esercitarti con il comando mentre segui questo tutorial.

Verifica se il tuo file di testo ha delle schede

Ci sono diversi modi per farlo. Il metodo più semplice che trovo è usare il comando cat.

Puoi usare il comando cat con l'opzione -T e visualizzerai tutte le schede come ^I sullo schermo (stdout).

cat -T tab_file

Puoi vedere la posizione delle schede nel file.

#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;
}

Converti le schede in spazi con il comando espandi

Se usi il comando di espansione su un file, convertirà tutte le schede in un blocco di 8 spazi e visualizzerà l'output sullo schermo.

expand tab_file

Ma non è molto conveniente, vero? Difficilmente vedrai i cambiamenti qui. Un'idea migliore sarebbe quella di salvare l'output in un altro file.

expand tab_file > space_file

Ora se vedi il file usando il comando cat, non troverai più nessuna scheda.

Riduci il numero di spazi

Come accennato nella sezione precedente, per impostazione predefinita, una scheda è uguale a 8 spazi. Sembrerebbe super strano se il tuo codice ha un'indentazione così grande.

La cosa buona è che puoi cambiare la dimensione dello spazio predefinita con l'opzione -t.

expand -t N tab_file

Ad esempio, se devi modificare ciascuna scheda in 2 spazi, puoi utilizzare il comando di espansione in questo modo:

expand -t2 tab_file > space_file

Converti solo le tabulazioni iniziali in spazi

Spesso nei programmi, vorresti solo convertire le schede iniziali, ovvero le schede all'inizio della riga. Non vuoi toccare le schede tra le righe che fanno effettivamente parte del codice.

Espandi fornisce anche questa opzione. Se desideri convertire solo le schede iniziali in spazi, utilizza l'opzione –i .

Se continuiamo con l'esempio precedente, ecco come sarebbe il comando:

expand -t2 -i tab_file > space_file

Converti le schede in spazi e salvalo nel file originale

In tutti gli esempi precedenti, hai salvato il file convertito in un nuovo file. Ma se il tuo obiettivo è pulire il tuo codice convertendo le schede negli spazi dei file di programma esistenti, vorresti che l'output fosse salvato nel file originale stesso.

Per farlo, puoi usare il comando spugna. La spugna "assorbe" l'intero input standard prima di scriverlo in output. Questo è estremamente utile quando stai cercando di modificare e salvare lo stesso file.

Ora, il comando sponge potrebbe non essere disponibile sul tuo sistema. Dovrai installare il pacchetto moreutils. Dovrebbe essere disponibile

Sulle distribuzioni basate su Ubuntu/Debian, puoi usare questo comando per installare moreutils:

sudo apt install moreutils

Una volta installato, puoi usarlo nella seguente funzione:

expand -t2 -i tab_file | sponge tab_file

Converti le schede in spazi in tutti i file corrispondenti in una directory

Finora tutto ciò che hai appreso era applicabile a un singolo file. Ma se hai un progetto che ha diversi file di programma e vuoi convertire le schede in spazi in tutti loro, dovrai essere un po' più intelligente qui.

Ciò che abbiamo imparato finora può essere combinato con i magnifici comandi find ed exec.

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

Il comando precedente trova tutti i file che terminano con estensione cpp, passa questi file al comando expand e il comando expand scrive l'output nei file originali con l'aiuto del comando sponge.

Potresti pensare che usare il comando sed sarebbe stato più facile a questo punto, ma è tutta una tua scelta.


Linux
  1. Converti file audio con questo versatile comando Linux

  2. Comando Tee Linux con esempi

  3. Linux tty Command Tutorial per principianti (con esempi)

  4. Comando JQ in Linux con esempi

  5. Come convertire un PDF in JPG con la riga di comando in Linux?

Comando Curl in Linux con esempi

Echo Command in Linux con esempi

Comando IP Linux con esempi

Comando Tr in Linux con esempi

15 Comando Linux ps con esempi

Comando CD Linux con esempi