2012-05-28 14 views
18

Assomiglia set tabstop=4 in VIM, ma non so come impostarlo in bashCome impostare 4 scheda spazio in bash

ad esempio:

echo -e "1234567890\t321\n1\t2\n123\t1" 

uscita in corrente:

1234567890  321 
1  2 
123  1 

voglio output come questo:

1234567890 321 
1 2 
123 1 

Si può dimostrare in qualsiasi luogo, proprio come cat somefile o php -r 'echo "\t123";'

Come posso impostare la larghezza scheda in bash?

+0

Sembra come se non si può cambiare (che è le risposte che ho trovato). Potresti invece fare degli spazi, ma suppongo che tu sappia che: p – keyser

risposta

38

Questa non è una proprietà del guscio (o php o gatto). È il tuo terminale che gestisce l'output.

Utilizzare il comando tabs per modificare il comportamento:

$ tabs 4 

$ echo -e "a\tb"  
a b 
$ tabs 12 

$ echo -e "a\tb" 
a   b 

(tabs è specificato in POSIX e uscita sopra è "falsificate": è ancora un carattere di tabulazione tra i due lettere.)

+3

Una nota: = tabs = è specificata in ** Unix ** (POSIX con opzione XSI), non POSIX. I sistemi conformi a POSIX ma non a Unix non sono richiesti per implementare un comando = = tabs =. –

+0

NB: 'tabs' potrebbe non funzionare in alcuni shell' ash' –

+2

Aggiunta: Pager "less" non è interessato, quindi utilizzare "less -x4"; Per "git diff" usa "git config --global core.pager 'less -x4'" – Mikl

1

È possibile impostare intervalli regolari o irregolari utilizzando l'utilità tabs. Funzionerà sia che tu stia facendo il tuo output, usando cat per produrre un file che include già schede o utilizzando l'output di un programma che non controlli.

Tuttavia, se si controlla l'output, è preferibile utilizzare printf anziché echo e formattare le stringhe anziché le schede.

$ printf '%-12s%8.4f %-8s%6.2f\n' 'Some text' 23.456 'abc def' 11.22 
Some text 23.4560 abc def 11.22 
$ format='%*s%*.*f %*s%*.*f\n' 
$ printf "$format" -12 'Some text' 8 4 23.456 -8 'abc def' 6 2 11.22 
Some text 23.4560 abc def 11.22 

meno che non si desidera che qualcun altro sia in grado di controllare l'output del programma utilizzando l'utilità tabs.

0

È possibile utilizzare setterm per impostare questo

setterm -regtabs 4 

ho messo nel mio .bash_profile ma la sua non bash collegati specificamente

Problemi correlati