Комбинация ls, xargs и zcat приводит к суффиксам названия дубликата файла?

Можно сделать что-либо, что Вы хотите с быстрой строкой* - проблематичный аспект заставляет ее отменять ее позже. Я предполагаю, что Вы не хотите каждую строку, которая когда-либо имела подсказку на отображенном в Ваших цветах hilight.

Почти было бы легче удалить строку позже, но затем у Вас нет своей команды. Возможно, удалите подсказку, затем повторяют команду (с псевдоподсказкой как $). У Вас могла быть подсказка, начинаются с курсора ANSI, сохраняют последовательность ESC [s, затем в a precmd восстановите его ESC [u и очистите все после курсора ESC [0J, затем повторите команду (я не вспоминаю, как получить команду изнутри precmd).

*Это - неполный ответ, я не знаю, как сделать его hilight команда в другом цвете фона.

0
22.10.2011, 02:14
2 ответа

Я нашел эту проблему в своей системе вызванной цветом ls. В моем .bash_profile у меня было это:

alias ls="ls --color"

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

$ ls local4.notice-201207* | xargs -n1 -P4 -I{} stat {}
stat: cannot stat `\033[0mlocal4.notice-20120711.gz\033[0m': No such file or directory

Посмотрите на те пустые цветовые коды! Это путало zcat, который попытался добавить суффикс .gz для нахождения файла. Проблема была легко решена путем изменения ls на color=auto, который отключает вывод цвета, когда STDOUT склеивается к другому процессу вместо терминала

alias ls="ls --color=auto"

Удачи!

4
28.01.2020, 02:17
  • 1
    Ничего себе, после такого времени. :-) –  Christoph Wurm 30.08.2012, 22:19

Вы могли бы использовать ОС, где zcat для сжатых файлов, в то время как gzcat для gzipped. В таком случае это должно работать:

   ls -t ssl-access*.gz | xargs -n 1 gzcat

Править:

Я воспроизвел подобное, но не идентичное поведение на Солярисе:

$ ls -t1 *.gz | xargs -n 1 zcat          
c.gz.Z: No such file or directory
b.gz.Z: No such file or directory
a.gz.Z: No such file or directory

На базирующемся распределении Debian (Ubuntu) я не воспроизвожу Вашу проблему.

Это могло бы работать так или иначе:

cat $(ls -t ssl-access*.gz) | zcat

или эквивалент:

zcat <(cat $(ls -t ssl-access*.gz))

или этот более простой, который избегает ненужной кошки

zcat $(ls -t ssl-access*.gz)

Ни один из них не обработает нечетные имена файлов как те со встроенными пробелами.

1
28.01.2020, 02:17

Теги

Похожие вопросы