ls выводит несколько столбцов, даже если отправлен в grep с помощью zml-конфигурации grml

Я просто решил отдать Zsh против Bash и наткнулся на какое-то неудобное поведение, о котором я не мог найти ничего в сети:

Если вы выполните ls | grep foo ls | grep foo в Bash, ls содержит только один файл на строку, так что grep выводит только соответствующие файлы. Кажется, что-то (и поскольку я не мог найти что-либо в конфиге, я думаю, что это должен быть сам код Bash), опция -1 передается в ls .
zsh, однако, не делает эту магию: если вы передадите ls без дополнительных параметров grep , он сделает именно это, и вы также получите результат, который случайно появился в той же строке, что и совпадение.

Моя идея достичь поведения Bash в zsh заключалась бы в определении того, будет ли вывод ls передаваться в grep и определить что-то вроде псевдонима для таких случаев. Но я не уверен, как и если это вообще возможно.

Обновление. Как показано ниже, Bars не делает ничего особенного, и это действительно ls который должен работать таким образом, если выход не переходит к терминалу.

Тем не менее, вот что со мной происходит:

 > ls abcdefgh bash$ ls | grep b b zsh> ls | grep b abcdefgh 

Я смог воспроизвести это на Ubuntu 11.10 с zsh 4.3.11 и GNU coreutils 8.5, а также на машине Debian Squeeze с zsh 4.3.10.

Обновление 2: при исследовании немного больше, я обнаружил, что эта ошибка появляется только при активном grml .zshrc . Там должно быть что-то, что открывает терминал для вывода, если он подключен. Кто-нибудь знает, что искать?

2 Solutions collect form web for “ls выводит несколько столбцов, даже если отправлен в grep с помощью zml-конфигурации grml”

Согласно документации ls , это поведение является неотъемлемой ls команды ls :

 `-1' `--format=single-column' List one file per line. This is the default for `ls' when standard output is not a terminal. 

Когда трубопровод переходит в другой процесс с | , stdout не должно быть tty. bash не делает ничего особенного.

Во всех моих тестах, используя zsh версии 4.3.15 на Linux и zsh 4.3.11 на OS X, ls ведет себя так же, как и при zsh как в bash . Если вы действительно считаете, что видите другое поведение, обновите свой вопрос с помощью (a) версии zsh которую вы используете, и (b) полного примера проблемы, показывая как фактическое содержимое каталога, так и конкретную командную строку, которую вы использование.

.zshrc к ответственной линии в .zshrc , я мог понять это сам:

На самом деле это намного проще, чем какой-то виртуальный терминал для трубопроводов. Ошибка возникает из строки 1477 конфигурации grml, которая выглядит так:

 alias ls='ls -b -CF '${ls_options:+"${ls_options[*]} "} 

Поэтому команда ls явно не вызывается напрямую, а через псевдоним. И этот явно активирует вывод столбца через опцию -C .

  • Показать содержимое символической ссылки
  • zsh завершение: меню и однозначный префикс с одной вкладкой?
  • Код ошибки на подсказке
  • Завершить только в начале слова
  • Мой терминал MacOSX не показывает текущий каталог
  • zsh history - полный путь
  • Как установить HOSTNAME в zsh?
  • В zsh, какая разница между &! и & |
  • zsh - полностью расширяет двоичный путь на вкладке <tab>
  • Как отключить автозаполнение для sudo ...?
  • Как манипулировать переменной awk NF в zsh?
  • Interesting Posts

    установить дату истечения срока действия учетной записи в будущем

    датчики – не обнаруживают мой вентилятор

    Является ли ядро ​​Linux затронутым пейджингом?

    SSH не прослушивает порт 443

    Как получить список всех «псевдонимов» файла (включая каталог типов) эффективно?

    Управление выпуском в командной строке после завершения процесса раздвоения

    История зеркального баста

    Почему я иногда вижу «INIT: version 2.88 reloading» в консоли?

    как предупреждать о пользовательских квотах пользователя ftp в оболочке / sbin / nologin?

    Беспроводная поддержка Realtek 8723be, PC-BSD

    Сбой в разрешениях файлов и каталогов для акций Samba

    Как я могу правильно распаковать ZIP-архив файлов с ивритскими именами?

    Как установить программное обеспечение в моем Linux-окне, когда у меня нет доступа root (sudo)?

    Настройка vhost для субдомена

    идентифицировать все сломанные / конфликтующие rpm's и исправить их * правильно * Fedora 23, persistent usb

    Linux и Unix - лучшая ОС в мире.