- 1
- 2
~ >>> ls -1 text.txt | xargs cat
cat: ''$'\033''[0m'$'\033''[00;32mtext.txt'$'\033''[0m': No such file or directory
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
~ >>> ls -1 text.txt | xargs cat
cat: ''$'\033''[0m'$'\033''[00;32mtext.txt'$'\033''[0m': No such file or directory
Ну охуеть теперь.
zsh c подстветкой синтаксиса бля.
кастую СёмаРиал, объясни, что надо сделать с терминфо
bormand 18.02.2021 13:13 # 0
bormand 18.02.2021 13:17 # 0
vistefan 18.02.2021 13:29 # 0
bormand 18.02.2021 13:32 # 0
vistefan 18.02.2021 13:35 # 0
А если вручную его ставить, то тоже можно в принципе добиться настройками такого алиаса, наверное (там такая запускается ncurses прога с чекбоксами после установки)
Хотя, подчёркиваю, там не --color=always было, а просто --color интерптерируется как always, так что проблема может быть и глубже
Надо поискать, на кого грешить
guest6 18.02.2021 13:37 # 0
так что always это по умолчанию.
Помотри файлы профиля (я не знаю как он у zsh называется, ну тот, что у bash ``profile``), там где-то
vistefan 18.02.2021 13:38 # 0
guest6 18.02.2021 13:48 # 0
vistefan 18.02.2021 13:39 # 0
guest6 18.02.2021 13:47 # 0
можно переустановить zsh, попросив явно спросить тебя про все измененные конфиги, и тогда ты узнаешь, насрал ли ты, или по умолчанию так было
``
apt-get --reinstall -o Dpkg::Options::="--force-confask" install zsh
``
bormand 18.02.2021 13:50 # 0
guest6 18.02.2021 13:50 # 0
bormand 18.02.2021 13:54 # 0
vistefan 18.02.2021 14:06 # 0
guest6 18.02.2021 13:20 # +1
покажи
``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
bormand 18.02.2021 13:24 # 0
Откуда ты все эти команды знаешь?
P.S. На убунте показало aliased to `ls --color=auto'.
vistefan 18.02.2021 13:28 # 0
vistefan 18.02.2021 13:28 # 0
guest6 18.02.2021 13:29 # 0
Про нее даже статья есть
https://en.wikipedia.org/wiki/Type_(Unix)
Интересно, что type есть в sh и bash, а в ksh нету.
Зато везде есть ``command -V``, лол.
bormand 18.02.2021 13:36 # 0
guest6 18.02.2021 13:42 # 0
всё это есть в 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
bormand 18.02.2021 13:52 # 0
MAPTbIwKA 18.02.2021 15:35 # 0
Например, как догадаться о существовании опции ``-mount`` у ``find`` (она позволяет не пересекать границы файловых систем) или о sticky bit у каталога (он запрещает удалять чужие файлы даже если есть права на запись в каталог) или о том же process substituion, представляющем stdout команды как файл?
Пока сидишь на горшке -- читаешь маны или книжечки про всякое говно, оно и откладывается в голове
vistefan 18.02.2021 13:27 # 0
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"
Fike 18.02.2021 14:38 # 0
спустя некоторое время оказалось, что надо отдельно ставить bash-completion
vistefan 18.02.2021 14:47 # 0
Desktop 18.02.2021 13:32 # 0
% type ls
ls is /bin/ls
guest6 18.02.2021 13:33 # 0
bormand 18.02.2021 13:33 # 0
Fike 18.02.2021 14:39 # 0
bormand 18.02.2021 14:49 # 0
Fike 18.02.2021 15:25 # 0
Desktop 18.02.2021 13:36 # 0
guest6 18.02.2021 13:45 # 0
``ls --color``
а потом просто ``ls``
отличается?
bormand 18.02.2021 13:47 # 0
guest6 18.02.2021 13:50 # 0
bormand 18.02.2021 13:51 # 0
MAPTbIwKA 18.02.2021 15:06 # 0
MAKAKA 21.02.2021 05:42 # +1
https://linux.die.net/man/1/dircolors
в дебиане например в профайле он читает файлы из ``.dircolors``, можно раскрасить себе .php файлы коричневый цвет, например
Desktop 18.02.2021 13:58 # 0
% ls --color
ls: illegal option -- -
bormand 18.02.2021 14:03 # 0
Desktop 18.02.2021 14:05 # 0
я думаю, это ls, патченный эпплом, как и всё остальное у них
vistefan 18.02.2021 14:09 # 0
Desktop 18.02.2021 14:11 # 0
bormand 18.02.2021 14:09 # 0
Desktop 18.02.2021 14:15 # 0
MAPTbIwKA 18.02.2021 15:08 # 0
но если ls у них от freebsd, то вероятно -G
MAPTbIwKA 18.02.2021 15:08 # 0
что у тебя за процентик? это не баш?
Desktop 18.02.2021 15:20 # 0
С -G раскрасило, да.
MAPTbIwKA 18.02.2021 15:26 # 0
Desktop 18.02.2021 15:32 # 0
Вывод: некуй гуглить, надо читать маны
Fike 18.02.2021 15:34 # 0
guest6 18.02.2021 15:37 # 0
А у линукса (точнее у гну) И те И другие, но не целиком
hormand 20.02.2021 22:06 # 0
hormand 21.02.2021 13:25 # 0