Cela ressemble à set tabstop=4
dans VIM, mais je ne sais pas comment le définir dans bash
par exemple:
echo -e "1234567890\t321\n1\t2\n123\t1"
sortie actuelle:
1234567890 321
1 2
123 1
Je veux une sortie comme ça:
1234567890 321
1 2
123 1
Il peut être affiché n'importe où, comme cat somefile
ou php -r 'echo "\t123";'
Comment puis-je définir la largeur de l'onglet dans bash?
Ce n'est pas une propriété de votre shell (ou php ou chat). C'est votre terminal qui gère la sortie.
Utilisez la commande tabs
pour modifier le comportement:
$ tabs 4
$ echo -e "a\tb"
a b
$ tabs 12
$ echo -e "a\tb"
a b
(tabs
est spécifié dans POSIX et la sortie ci-dessus est "falsifiée": c'est toujours un caractère de tabulation entre les deux lettres.)
Vous pouvez définir des intervalles réguliers ou irréguliers à l'aide de l'utilitaire tabs
. Cela fonctionnera que vous fassiez votre propre sortie, en utilisant cat
pour générer un fichier qui contient déjà des onglets ou en utilisant la sortie d'un programme que vous ne contrôlez pas.
Toutefois, si vous contrôlez votre sortie, il est préférable d'utiliser printf
au lieu de echo
et de formater des chaînes au lieu de tabulations.
$ 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
Sauf si vous souhaitez que quelqu'un d'autre puisse contrôler la sortie de votre programme à l'aide de l'utilitaire tabs
.
Vous pouvez utiliser setterm pour régler ceci
setterm -regtabs 4
Je le mets dans mon .bash_profile mais ce n'est pas bash lié spécifiquement