Forum Linux.débutant Taille définie du terminal pour une commande donnée

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
5
nov.
2020

Bonjour,
Est-il possible d'avoir une taille définie pour le terminal et uniquement lors d'une commande donnée.
J'ai un alias et quand je tape m cela exécute une commande dont je voudrais voir le résultat en entier en largeur. Pour cela mon terminal doit avoir une largeur de y.
Comment faire? Si c'est possible…
Merci.

  • # Variable COLUMS

    Posté par  (site web personnel) . Évalué à 3.

    Sans réglage particulier, voici les dimensions de mon terminal :

    kibi@armor:~$ echo $COLUMNS
    115
    kibi@armor:~$ echo $LINES
    25
    

    Listons les paquets :

    kibi@armor:~$ dpkg -l
    …
    ii  zonecheck              3.0.5-3          all              DNS configuration checker
    ii  zsh                    5.3.1-4+b3       amd64            shell with lots of features
    ii  zsh-common             5.3.1-4          all              architecture independent files for Zsh
    

    La même chose avec une largeur plus faible :

    kibi@armor:~$ COLUMNS=80 dpkg -l
    …
    ii  zonecheck      3.0.5-3      all          DNS configuration checker
    ii  zsh            5.3.1-4+b3   amd64        shell with lots of features
    ii  zsh-common     5.3.1-4      all          architecture independent files fo
    

    ou plus importante :

    kibi@armor:~$ COLUMNS=200 dpkg -l
    …
    ii  zonecheck                                    3.0.5-3                     all                         DNS configuration checker
    ii  zsh                                          5.3.1-4+b3                  amd64                       shell with lots of features
    ii  zsh-common                                   5.3.1-4                     all                         architecture independent files for Zsh
    

    Debian Consultant @ DEBAMAX

    • [^] # Re: Variable COLUMS

      Posté par  (site web personnel) . Évalué à 2.

      J'ai failli oublier | cat. Les commandes peuvent changer de comportement quand la sortie est redirigée. cat permet d'avoir une commande « neutre », mais toute autre commande ferait l'affaire.

      Debian Consultant @ DEBAMAX

      • [^] # Re: Variable COLUMS

        Posté par  (Mastodon) . Évalué à 2.

        Tant qu'on ait sur le sujet, saurais-tu comment, côté application on peut savoir qu'on a été redirigé et du coup changer le comportement ? Il y a un appel système pour ça ?

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: Variable COLUMS

          Posté par  (site web personnel) . Évalué à 4.

          Tu peux t'en rendre compte toi-même en comparant un strace (avec les bonnes options) sur ls et sur ls|cat :

          15427 ioctl(1, TCGETS, {c_iflags=0x4500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
          15427 ioctl(1, TIOCGWINSZ, {ws_row=64, ws_col=238, ws_xpixel=0, ws_ypixel=0}) = 0
          

          quand on a affaire à un TTY, et :

          15431 ioctl(1, TCGETS, 0x7ffcc2edfff0)  = -1 ENOTTY (Inappropriate ioctl for device)
          15431 ioctl(1, TIOCGWINSZ, 0x7ffcc2ee00a0) = -1 ENOTTY (Inappropriate ioctl for device)
          

          quand ça n'est pas le cas.

          Plus d'infos dans tty_ioctl(4).

          Note to self: En vérifiant la référence, je découvre avec amusement que la structure winsize possède deux champs inutilisés :

          struct winsize {
              unsigned short ws_row;
              unsigned short ws_col;
              unsigned short ws_xpixel;   /* unused */
              unsigned short ws_ypixel;   /* unused */
          };

          Debian Consultant @ DEBAMAX

          • [^] # Re: Variable COLUMS

            Posté par  (Mastodon) . Évalué à 2. Dernière modification le 06 novembre 2020 à 07:33.

            Nickel, merci bcp.

            En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Variable COLUMS

      Posté par  . Évalué à 1.

      Merci, mais en fait mon problème est différent. La commande est pour afficher la météo avec curl -H "Accept-Language: fr" wttr.in/Bordeaux
      et je voudrais que le résultat affiché soit lisible sans que j'ai à redimensionner manuellement ma fenêtre…donc que la fenêtre du terminal s'ouvre avec une largeur prédéfinie et uniquement quand je fais cette commande.

      arnauld

      • [^] # Re: Variable COLUMS

        Posté par  . Évalué à 3. Dernière modification le 05 novembre 2020 à 21:56.

        Bonjour

        Peut-être avec la ligne de commandes suivante :

        printf "\033[8;42;125;t"; curl -H "Accept-Language: fr" wttr.in/Bordeaux

        • [^] # Re: Variable COLUMS

          Posté par  . Évalué à 1.

          Merci, la commande seule marche bien et fait ce que je veux. Mais quand je la mets comme alias dans mon .zshrc avec
          alias m="printf "\033[8;42;125;t"; curl -H "Accept-Language: fr" wttr.in/Bordeaux"
          alors le terminal ne s'agrandit pas.

          arnauld

          • [^] # Re: Variable COLUMS

            Posté par  . Évalué à 3.

            essaye plutôt avec :

            alias m='printf "\033[8;42;125;t"; curl -H "Accept-Language: fr" wttr.in/Bordeaux'
            • [^] # Re: Variable COLUMS

              Posté par  . Évalué à 1.

              Parfait, merci beaucoup!!

              arnauld

            • [^] # Re: Variable COLUMS

              Posté par  . Évalué à 1.

              Donc il faut utiliser ' et non pas " ?? Pourtant avec mes autres alias " ne pose pas de problèmes…

              arnauld

              • [^] # Re: Variable COLUMS

                Posté par  . Évalué à 4. Dernière modification le 06 novembre 2020 à 14:56.

                Ou alors, tu fais comme ça :

                alias m="printf '\033[8;42;125;t'; curl -H 'Accept-Language: fr' wttr.in/Bordeaux"

                Voir aussi : https://abs.traduc.org/abs-5.0-fr/ch05.html

              • [^] # Guillemets

                Posté par  . Évalué à 3.

                Mais quand je la mets comme alias dans mon .zshrc avec
                alias m="printf "\033[8;42;125;t"; curl -H "Accept-Language: fr" wttr.in/Bordeaux"
                alors le terminal ne s'agrandit pas.

                Tu ne peux pas imbriquer comme ça des guillemets dans des guillemets (si seulement c’était des guillemets français, avec le fermant différent de l’ouvrant…).

                Le second guillemet, après printf, ferme simplement le premier et \033[8;42;125;t n’est pas quoté. Donc le premier point‐virgule termine la commande alias.

                Cela dit, tu peux mixer les guillemets avec les apostrophes comme suggéré par MicP ou quoter les guillemets internes avec des antislashs :

                alias m="printf \"\033[8;42;125;t\"; curl -H \"Accept-Language: fr\" wttr.in/Bordeaux"

                « Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.