Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

longueur max d'une ligne en cli ???

20 réponses
Avatar
pere.noel
si je fais un ps -wax je remarque que certaines lignes sont trouquées
(d'après moi), expérimentalement la longueur max d'une ligne semble être
131 chars, ce qui me paraît peu.

y a t'il un moyen de changer ça, une var d'environnement ?
--
une bévue

10 réponses

1 2
Avatar
pere.noel
Une bévue wrote:

y a t'il un moyen de changer ça, une var d'environnement ?


RTFM man ps, c'est l'argument -w qu'il faut suppromer...
--
une bévue

Avatar
Eric Levenez
Le 7/10/06 8:02, dans <1hmtvl1.3flwlq9qayx3N%,
« Une bévue » a écrit :

si je fais un ps -wax je remarque que certaines lignes sont trouquées
(d'après moi), expérimentalement la longueur max d'une ligne semble être
131 chars, ce qui me paraît peu.


Bien sûr tu as fais "man ps" avant de poster ici ta question et bien sûr tu
as vu la limite que -w donne, et bien sûr tu as vu que tu pouvais faire -ww
pour avoir une taille illimitée, et bien sûr tu comprends que la commande ps
n'a rien à voir avec le titre de ton message qui parle d'une taille max de
ligne sous shell. Hein, n'est-ce pas ? :-)

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
pere.noel
Eric Levenez wrote:


Bien sûr tu as fais "man ps" avant de poster ici ta question et bien sûr tu
as vu la limite que -w donne, et bien sûr tu as vu que tu pouvais faire -ww
pour avoir une taille illimitée, et bien sûr tu comprends que la commande ps
n'a rien à voir avec le titre de ton message qui parle d'une taille max de
ligne sous shell. Hein, n'est-ce pas ? :-)


reqarques que je me suis auto-répondu...
--
une bévue

Avatar
Eric Levenez
Le 7/10/06 10:30, dans
<1hmu2i0.1yvvqoe1nifrN%, « Une bévue »
a écrit :

reqarques que je me suis auto-répondu...


En disant qu'il fallait supprimer le w alors qu'il fallait le doubler...

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
pere.noel
Eric Levenez wrote:


En disant qu'il fallait supprimer le w alors qu'il fallait le doubler...


ouais mais ça m'a suffit, en fait j'ai été troublé non pas par man:ps
mais par la sortie sur la "console" TextMate qui donne (du point de vue
de la longueur des lignes) un résultat différent de ce que donne le
terminal et je me suis énervé après ça voila tout...
--
une bévue

Avatar
bertrand.NOSPAM.lupart
le titre de ton message qui parle d'une taille max de
ligne sous shell. Hein, n'est-ce pas ? :-)


[Rien à voir avec ps, mais en rapport avec le sujet]

Certains softs en cli utilisent la variable d'environnement COLUMNS pour
connaître le nombre de colonnes et adapter l'affichage.
Lynx et fink/dpkg par exemple. Je n'ai pas d'exemple en tête de softs
livrés en standard qui le fassent (s'il y en a).

Affichage 80 colonnes:
----8<----8<----8<----8<----
# echo $COLUMNS
80

# dpkg -l |grep freetype219-
ii freetype219-sh 2.1.9-1 TrueType font rendering library,
shared libs
---->8---->8---->8---->8----

Affichage 100 colonnes:
----8<----8<----8<----8<----
# COLUMNS0 dpkg -l |grep freetype219-
ii freetype219-shlibs 2.1.9-1 TrueType font rendering
library, shared libs
---->8---->8---->8---->8----


Cette variable est mise à jour avec le redimensionnement des fenêtres de
Terminal.app.

--
Bertrand

Avatar
Eric Levenez
Le 10/10/06 15:05, dans
<1hmyi4k.69lmbby4i2dqN%, « Bertrand
LUPART » a écrit :

le titre de ton message qui parle d'une taille max de
ligne sous shell. Hein, n'est-ce pas ? :-)


[Rien à voir avec ps, mais en rapport avec le sujet]

Certains softs en cli utilisent la variable d'environnement COLUMNS pour
connaître le nombre de colonnes et adapter l'affichage.
...
Cette variable est mise à jour avec le redimensionnement des fenêtres de
Terminal.app.


En pratique, les programmes n'utilisent pas ces variables d'environnement.
L'émulateur de terminal (Terminal.app sous Mac OS X) indique au noyau un
changement de taille de fenêtre par un ioctl du type TIOCSWINSZ. Le noyau va
alors envoyer le signal SIGWINCH au groupe de processus dépendant du pseudo
tty, et ces programmes liront la nouvelle taille en utilisant l'ioctl
TIOCGWINSZ. Le shell lancé par Terminal.app positionnera alors COLUMNS et
LINES en conséquence.

Les variables COLUMNS et LINES sont là, pour une compatibilité avec de très
vieux programmes. C'était un moyen de forcer une taille quand la base
termcap ou terminfo n'avait pas l'info ou pas la bonne (c'était avant X10 et
X11).

Mais bon tout cela n'a pas beaucoup de rapport avec le sujet car celui-ci
parle d'un interpréteur en ligne de commande ("cli" sic), et que "ps" n'est
pas un interpréteur. Et même si "ps" cale son affichage en fonction de la
largeur de fenêtre, il ne le fait pas par COLUMNS mais par un ioctl de type
TIOCGWINSZ (comme tout logiciel moderne).

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
bertrand.NOSPAM.lupart
En pratique, les programmes n'utilisent pas ces variables d'environnement.
L'émulateur de terminal (Terminal.app sous Mac OS X) indique au noyau un
changement de taille de fenêtre par un ioctl du type TIOCSWINSZ. Le noyau va
alors envoyer le signal SIGWINCH au groupe de processus dépendant du pseudo
tty, et ces programmes liront la nouvelle taille en utilisant l'ioctl
TIOCGWINSZ. Le shell lancé par Terminal.app positionnera alors COLUMNS et
LINES en conséquence.


Intéressant.
On peut faire quelque chose d'équivalent avec DISPLAY?
Lorsque X11 est lancé, toutes les instances de Terminal.app seraient
averties de la valeur du nouveaux display.

Les variables COLUMNS et LINES sont là, pour une compatibilité avec de très
vieux programmes. C'était un moyen de forcer une taille quand la base
termcap ou terminfo n'avait pas l'info ou pas la bonne (c'était avant X10 et
X11).

Mais bon tout cela n'a pas beaucoup de rapport avec le sujet car celui-ci
parle d'un interpréteur en ligne de commande ("cli" sic), et que "ps" n'est
pas un interpréteur. Et même si "ps" cale son affichage en fonction de la
largeur de fenêtre, il ne le fait pas par COLUMNS mais par un ioctl de type
TIOCGWINSZ (comme tout logiciel moderne).


Effectivement, dans un terminal 80 colonnes "ps" et "COLUMNS%0 ps"
donnent le même résultat.

Par contre, "lynx", "top", "fink" réagissent aux valeurs de COLUMNS et
de LINES. J'en déduit qu'ils n'utilisent pas le mécanisme que tu
décrits.

"netstat" quant à lui semble afficher sur 80 colonnes, quoi qu'il
arrive.

--
Bertrand

Avatar
Eric Levenez
Le 11/10/06 14:50, dans
<1hn1rhn.1ivvxh91kmidzmN%, « Bertrand
LUPART » a écrit :

En pratique, les programmes n'utilisent pas ces variables d'environnement.
L'émulateur de terminal (Terminal.app sous Mac OS X) indique au noyau un
changement de taille de fenêtre par un ioctl du type TIOCSWINSZ. Le noyau va
alors envoyer le signal SIGWINCH au groupe de processus dépendant du pseudo
tty, et ces programmes liront la nouvelle taille en utilisant l'ioctl
TIOCGWINSZ. Le shell lancé par Terminal.app positionnera alors COLUMNS et
LINES en conséquence.


Intéressant.
On peut faire quelque chose d'équivalent avec DISPLAY?


DISPLAY est juste une variable shell utilisée pour trouver le serveur X par
défaut pour une application à son lancement.

Lorsque X11 est lancé, toutes les instances de Terminal.app seraient
averties de la valeur du nouveaux display.


Je ne vois pas le rapport entre une application X11 et Terminal.app qui est
un programme Mac OS X natif.

Les variables COLUMNS et LINES sont là, pour une compatibilité avec de très
vieux programmes. C'était un moyen de forcer une taille quand la base
termcap ou terminfo n'avait pas l'info ou pas la bonne (c'était avant X10 et
X11).

Mais bon tout cela n'a pas beaucoup de rapport avec le sujet car celui-ci
parle d'un interpréteur en ligne de commande ("cli" sic), et que "ps" n'est
pas un interpréteur. Et même si "ps" cale son affichage en fonction de la
largeur de fenêtre, il ne le fait pas par COLUMNS mais par un ioctl de type
TIOCGWINSZ (comme tout logiciel moderne).


Effectivement, dans un terminal 80 colonnes "ps" et "COLUMNS%0 ps"
donnent le même résultat.

Par contre, "lynx", "top", "fink" réagissent aux valeurs de COLUMNS et
de LINES. J'en déduit qu'ils n'utilisent pas le mécanisme que tu
décrits.


De vieux programmes ou pas au goût du jour. "top" réagit quand même au
SIGWINCH, même s'il le fait bizarrement si COLUMNS a été forcé. Pour "fink"
et "lynx", je n'ai pas regardé.

"netstat" quant à lui semble afficher sur 80 colonnes, quoi qu'il
arrive.


"netstat" n'a pas besoin de tronquer l'affichage alors il n'a pas besoin
d'utiliser COLUMNS ou SIGWINCH. Et c'est une bonne chose car la troncature
des affichages est très emmerdante je trouve.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Vincent Lefevre
Dans l'article <C151A960.871AA%,
Eric Levenez écrit:

Les variables COLUMNS et LINES sont là, pour une compatibilité avec
de très vieux programmes. C'était un moyen de forcer une taille
quand la base termcap ou terminfo n'avait pas l'info ou pas la bonne
(c'était avant X10 et X11).


C'est aussi utile quand le programme n'est pas directement connecté
à un terminal, par exemple quand la sortie est envoyée dans un pipe,
même si le bout du pipe est connecté à un terminal (e.g., grep ou
filtre de colorisation). En tout cas, il y a une différence sous
Linux (par exemple pour "ps -aef" et "ps -aef | cat"), mais pas sous
Mac OS X!

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

1 2