Beri bash i ebash / Говнокод #27263 Ссылка на оригинал

0

  1. 1
  2. 2
~ >>> ls -1 text.txt | xargs cat
cat: ''$'\033''[0m'$'\033''[00;32mtext.txt'$'\033''[0m': No such file or directory

Ну охуеть теперь.

zsh c подстветкой синтаксиса бля.
кастую СёмаРиал, объясни, что надо сделать с терминфо

Запостил: vistefan vistefan, (Updated )

Комментарии (56) RSS

  • --color=never или --color=auto добавь в аргументы ls. А вот какого хуя оно по-умолчанию включено -- вопрос открытый, возможно переменная какая-то или алиас кое-кто накрутил.
    Ответить
    • З.Ы. У меня на убунте ls по-умолчанию заалиасено на ls --color=auto и при редиректе никаких цветов нету. Походу в твоём дистрибе какой-то ебанат прописал always вместо auto.
      Ответить
    • ну ты понел, дефолтный зсш алиас без авто почему-то
      Ответить
      • Странно, я вот сейчас на убунте zsh запустил, вообще ничего про color'ы нету (ls is /bin/ls). Видимо или в дистрибе косяк или ты сам накрутил в конфиге да не заметил.
        Ответить
        • косяк в манджарном преднастроенном zsh (я его не менял)
          А если вручную его ставить, то тоже можно в принципе добиться настройками такого алиаса, наверное (там такая запускается ncurses прога с чекбоксами после установки)
          Хотя, подчёркиваю, там не --color=always было, а просто --color интерптерируется как always, так что проблема может быть и глубже

          Надо поискать, на кого грешить
          Ответить
          • --color[=WHEN]
                          colorize  the output; WHEN can be 'always' (default if omitted),
                          'auto', or 'never'; more info below

            так что always это по умолчанию.

            Помотри файлы профиля (я не знаю как он у zsh называется, ну тот, что у bash ``profile``), там где-то
            Ответить
            • обычно .zshrc и ещё что-то более глобальное в /etc что сорсится в rc, профайла у зсш я не припомню
              Ответить
              • Commands are then read from $ZDOTDIR/.zshenv.  If the shell is a  login
                       shell,  commands  are  read from /etc/zprofile and then $ZDOTDIR/.zpro‐
                       file.  Then, if the  shell  is  interactive,  commands  are  read  from
                       /etc/zshrc  and then $ZDOTDIR/.zshrc.  Finally, if the shell is a login
                       shell, /etc/zlogin and $ZDOTDIR/.zlogin are read.
                Ответить
            • куда смотреть-то понятно, надо выяснить, то что там насрано — оно чьё, зшевское или манджаровское
              Ответить
              • а твой манджаро на дебе?

                можно переустановить zsh, попросив явно спросить тебя про все измененные конфиги, и тогда ты узнаешь, насрал ли ты, или по умолчанию так было
                ``
                apt-get --reinstall -o Dpkg::Options::="--force-confask" install zsh
                ``
                Ответить
                  • тогда вопросы к пакману видимо
                    Ответить
                    • Ну что-то мне намекает, что файлы с дефолтными переменными и алиасами мейнтейнеры дистриба наполняют, а не разрабы шеллов.
                      Ответить
  • я не знаю, встроенный ли в ``ls`` у zsh или обычный, гнушный, из coreutils.
    покажи

    ``type ls``

    Обычный ls во всех известных мне cсистемах умеет делать подсветку (LS_COLORS итд).

    однако ls обычно знает, куда смотрит его stdout: в терминал, или в пайп к другой программе. Он проверяет это посредством ``isatty(3)``, передавая туда stdout.

    Так вот если stdout связан с пайпом, то он конечно ничего не красит.
    А если с терминалом, то он использует terminfo для раскраски.

    гнушный ls имеет опцию --color=always, чтобы писать цветом даже тогда, когда нет терминала

    Вот реализация
    https://github.com/wertarbyte/coreutils/blob/master/src/ls.c#L1892
    Документация есть в мане по ``ls(1)``

    Так что либо ls это встроенная команда zsh (и тогда нужно читать ман зиша), либо гнушному ls передают color=always.

    Это мы узнаем, когда ты сделаешь type ls
    Ответить
    • > type

      Откуда ты все эти команды знаешь?

      P.S. На убунте показало aliased to `ls --color=auto'.
      Ответить
      • не помню уже, в какой-то книжечке вычитал.

        Про нее даже статья есть
        https://en.wikipedia.org/wiki/Type_(Unix)

        Интересно, что type есть в sh и bash, а в ksh нету.

        Зато везде есть ``command -V``, лол.
        Ответить
        • Я команды самого шелла практически не знаю. В основном только условные операторы да всякие bg/fg.
          Ответить
          • что, и expr? и set? и, извиняюсь, trap?

            всё это есть в man bash на самом деле, но он размером примерно с Войну и Мир.

            Есть хороший хауту
            https://tldp.org/LDP/abs/html/
            там описывается, например, process substitution, про который не все знают.
            Его всё таки приятнее читать.

            Еще я помню читал вот такую книжку
            https://readli.net/linux-i-unix-programmirovanie-v-shell-rukovodstvo-razrabotchika/
            и вроде как раз ``type`` подрезал оттуда. Она древняя, но годная.

            Кстати, bg/fg (это "job control" называется) изначально появился в csh на BSD: у AT&T в sh его не было.
            А потом bash и ksh его подрезали из csh
            Ответить
            • expr, set и trap юзал конечно. Но я по большей части гуглил нужные мне на практике команды, книги по шеллу никогда не доводилось читать.
              Ответить
              • В голове нужно иметь reverse index, иначе трудно будет узнать, что что-то вообще можно сделать.

                Например, как догадаться о существовании опции ``-mount`` у ``find`` (она позволяет не пересекать границы файловых систем) или о sticky bit у каталога (он запрещает удалять чужие файлы даже если есть права на запись в каталог) или о том же process substituion, представляющем stdout команды как файл?

                Пока сидишь на горшке -- читаешь маны или книжечки про всякое говно, оно и откладывается в голове
                Ответить
      • не помню уже, в какой-то книжечке вычитал.

        Про нее даже статья есть
        https://en.wikipedia.org/wiki/Type_(Unix)

        Интересно, что type есть в sh и bash, а в ksh нету.

        Зато везде есть ``command -V``, лол.
        Ответить
    • Ты совершенно прав, в zsh по дефолту
      type ls
      ls is an alias for ls --color
      а в баше
      type ls
      ls is aliased to `ls --color=auto'

      Вот именно из-за отсутствия auto zsh и не убирал эскейпы при передаче в xargs.

      Помогло alias ls="ls --color=auto"
      Ответить
      • я примерно так же потел и возмущался по поводу "а куда это мой башевский автокомплит делся?"
        спустя некоторое время оказалось, что надо отдельно ставить bash-completion
        Ответить
        • Ну тут-то другое дело, тут могут скрипты сломаться, или говно в файл насраться. Автокомплит это хуйня по сравнению.
          Ответить
      • хм, и аутпут ls не цветной по умолчанию штоли?
        Ответить
        • Да, у меня в убунте на изкоробочном zsh точно так же, не цветное. А для баша был цветной алиас. Короче умолчания очень сильно зависят от дистриба, походу.
          Ответить
          • насколько помню, этот алиас всегда задавался в .bashrc/.bash_profile, так что тут может быть еще куча ада, связанного с /etc/skel
            Ответить
            • А вот нахрена, кстати, они всю эту кастомизацию добавляют в скелет, а не в глобальный профайл? Его же потом обновить невозможно, когда юзер уже создан.
              Ответить
              • Я вообще вспоминаю всю эту хуйню только когда у меня появляется необходимость оправдать свое желание кому-нибудь уебать.
                Ответить
        • Вообще цвета в аутпуте есть, по крайней мере, у некоторых тулзов
          Ответить
          • зайди в папку с кучей файлов, и сделай

            ``ls --color``
            а потом просто ``ls``

            отличается?
            Ответить
            • Только лучше в папку с кучей других папок и файлов. А то в убунте, к примеру, обычные файлы дефолтным цветом подсвечены, по ним не видно работают ли цвета.
              Ответить
                • то же самое.

                  я думаю, это ls, патченный эпплом, как и всё остальное у них
                  Ответить
                  • Ага, а файлы подсвечиваются регуляркой, парсит сам эмулятор свой буфер /green
                    Ответить
                    • I don't care в любом случае, у меня основной шелл это xonsh, а там всё подсвечивается, как надо
                      Ответить
                  • Ну тут надо не забывать, что мак это бсд а не гну. А у бсд и гну тулы довольно сильно отличаются.
                    Ответить
                    • ну bash же они взяли из гну, я думал и core utils тоже

                      но если ls у них от freebsd, то вероятно -G
                      Ответить
                • Говорили же про zsh весь тред, откуда баш?

                  С -G раскрасило, да.
                  Ответить
                  • понятно, заначит у apple дейстительно использует freebsdшные утилиты.
                    Ответить
                    • Ну это кстати частая подстава: ищешь про какую-нибудь команду, а у тебя в итоге с мартышками из интернетов ключи не совпадают

                      Вывод: некуй гуглить, надо читать маны
                      Ответить
                      • и тут я вспоминаю, что так и не почитал про ключи ps
                        Ответить
                        • ))ps вообще смешной. У BSD одни ключи. У SystemV другие.
                          А у линукса (точнее у гну) И те И другие, но не целиком
                          Ответить
            • Не нажимай на кнопки, если тебе не известно их назначение.
              Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8