Quand je suis dedans, vim
je peux changer la taille de l'onglet avec la commande suivante:
:set ts=4
Est-il également possible de définir la taille des onglets pour la cat
sortie des commandes?
la source
Quand je suis dedans, vim
je peux changer la taille de l'onglet avec la commande suivante:
:set ts=4
Est-il également possible de définir la taille des onglets pour la cat
sortie des commandes?
La première commande émule ici la mise en forme que vous voyez dans vim
. Il étend intelligemment les tabulations au nombre équivalent d'espaces, sur la base d'un paramètre tab-STOP (ts) de toutes les 4 colonnes.
printf "ab\tcd\tde\n" |expand -t4
Production
ab cd de
Pour conserver les onglets sous forme d' onglets et définir les positions d' ARRÊT d' onglet sur toutes les 4 colonnes, vous devez modifier la façon dont l'environnement fonctionne avec un tab-char (tout comme vim le fait avec la :set ts=4
commande)
Par exemple, dans le terminal, vous pouvez définir l'onglet STOP sur 4 avec cette commande;
tabs 4; printf "ab\tcd\tde\n"
Production
ab cd de
expand
(à partir du package coreutils) ettabs
(à partir du package ncurses), (2). et la signification de ts est [ T ] ab [ S ] hautUtilisez simplement le code suivant:
Où n est le nombre d'espaces auxquels vous souhaitez que les tabulations correspondent également. Afin de ne pas avoir à le faire chaque fois que vous démarrez le shell, tout simplement modifier votre
.bash_profile
dans~/
et ajoutez la ligne ci - dessus à la fin du fichier.Pour plus d'informations sur la commande tabs, reportez-vous à:
la source
ls
sorties peuvent ne pas être correctement alignées).Il n'y a aucune notion de tabulations ou de tabulations
cat
; le programme canalise simplement les entrées vers la sortie et traite les onglets comme tout autre caractère. Si le périphérique de sortie se trouve être un terminal, les onglets seront traités en fonction du comportement que le terminal est configuré pour fournir.Les systèmes implémentant POSIX.1 ont une commande appelée
tabs(1)
qui ajustera le concept du terminal sur la façon dont les onglets doivent être affichés. Dépendre d'une disposition d'onglet particulière n'est pas considéré comme une bonne idée, car quelqu'un peut envoyer votre fichier à un autre appareil tel qu'une imprimante qui ne fera pas ce que vous vouliez.Lorsque vous réglez
ts
dansvim
(ou ordinairevi
), tout ce que vous faites est la façon dont le réglage l'éditeur interprète les caractères de tabulation lors de l' affichage. Cela n'a aucune incidence sur ce qui finit dans le dossier.la source
Sur la base des réponses et des exemples ci-dessus, il semblerait que la commande réelle que l'OP voulait était ...
cat somefile | expand -t4
Cela fonctionne pour moi sur Red Hat 6.4.
la source
Pour développer les réponses déjà données, vous
expand
pouvez également prendre une liste de positions de tabulation. Ceci est utile si la longueur du contenu des diverses colonnes varie beaucoup.Je suis tombé sur cette exigence aujourd'hui quand je voulais rendre la sortie de
openssl ciphers
plus lisible:Utiliser uniquement
expand -t31
ferait exploser la largeur de la sortie d'environ 100 caractères à plus de 160 caractères.la source
column
:openssl ciphers -v 'HIGH' | column -t
De nombreux terminaux prennent en charge la définition de taquets de tabulation variables. Ceux qui sont vt100, linux et / ou prennent en charge la norme EMCA-48 font, la plupart des termes sur la prise en charge de la taille des onglets de configuration Linux: xterm et famille (uxterm, urxvt) xfce4-terminal, luit, Terminal, SecureTTY, entre autres.
J'ai donc écrit un script il y a quelques années pour définir mes onglets lors de la connexion à tous les 2 espaces - utilisé pour utiliser 4, puis 3 pendant un court instant, et maintenant à 2 ....
Alors maintenant, si je «cat» un fichier, les onglets du fichier se développeront selon les paramètres de mon terminal.
Si je suis passé par vim ou plus, ils font leur propre extension d'onglet, mais beaucoup d'utilitaires utilisent des onglets.
Inclut le script ici pour référence et / ou usage personnel:
J'espère que cela aide...
la source
Selon la page de manuel, le chat ne peut pas le faire seul. Mais vous pouvez par exemple exécuter la sortie de cat through
tr
filter pour remplacer les tabulations par le nombre d'espaces que vous souhaitez:remplacera le caractère de tabulation par deux espaces.
Mise à jour: comme indiqué dans les commentaires de ce post, cela ne fonctionne pas . Néanmoins, je garde la réponse comme un exemple de la façon de ne pas le faire.
la source
'\t'
un seul espace, peu importe le nombre d'espaces entre la deuxième paire de guillemets' '
tr
ne fonctionne pas de cette façon .. chaque octet d'arg 1 est remplacé par chaque octet correspondant d'arg 2 ..... Imprime doncprintf '\t' |tr '\t' 'ळ'
un seul octet dont la valeur hexadécimale est\xE0
.. qui est le premier octet des trois UTF-8 octets codés qui composent le caractèreळ
(dont la valeur Unicode CodePoint est U + 0933)