LINUX.ORG.RU

(вопрос на засыпку) Различное поведение sort в zsh и bash.


0

1

День добрый, может кто ответит на вопрос:

asm@localhost dir % zsh
asm@localhost dir % sort --version
sort (GNU coreutils) 8.20
Packaged by Gentoo (8.20 (p1.0))
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert.
asm@localhost dir % ls  | sort
02_testifle.txt
a_testfile.txt
b_testfile.txt
z_testfile.txt
01_testfile.txt
asm@localhost dir % bash
asm@localhost ~/dir $ sort --version
sort (GNU coreutils) 8.20
Packaged by Gentoo (8.20 (p1.0))
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert.
asm@localhost ~/dir $ ls | sort
01_testfile.txt
02_testifle.txt
a_testfile.txt
b_testfile.txt
z_testfile.txt

Почему одна и та же утилита работает по разному в bash и zsh?

★★

LC_* разные в разных шеллах?

akk ★★★★★
()

Как только написал, понял ответ:

asm@localhost dir % ls --color=none | sort                                                                                                                                                                                          /home/asm/dir
01_testfile.txt
02_testifle.txt
a_testfile.txt
b_testfile.txt
z_testfile.txt
asm@localhost dir % ls  | sort                                                                                                                                                                                                      /home/asm/dir
02_testifle.txt
a_testfile.txt
b_testfile.txt
z_testfile.txt
01_testfile.txt

Всем спасибо.

Баг крылся в .zshrc:

alias ls="ls --color"
вместо
alias ls="ls --color=auto"

ASM ★★
() автор топика
Последнее исправление: ASM (всего исправлений: 1)
Ответ на: комментарий от ASM

Баг крылся в .zshrc:

да. Потому-что это нужно выставлять в другом месте:

Use the dircolors command to set it.

тогда это будет шелло/алиасо независимо.

drBatty ★★
()
Ответ на: комментарий от drBatty

Ерунду какую-то понаписали. dircolors помогает выставить LS_COLORS.

Без --color=auto(или always) комманда ls вне зависимости от LS_COLORS не будет выдавать цвет.

Что-то вы недокопипастили:

man 1 ls

Using color to distinguish file types is disabled both by default and with --color=never. With --color=auto, ls emits color codes only when standard output is connected to a terminal. The LS_COLORS environ‐ ment variable can change the settings. Use the dircolors command to set it.

ASM ★★
() автор топика
Ответ на: комментарий от ASM

Хотя сама комманда:

ls | sort несколько странная так как:

man 1 ls

Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

ASM ★★
() автор топика
Ответ на: комментарий от ASM

Что-то вы недокопипастили:

ИМХО дефолтное поведение color должно изменяться там же, где и dircolor работает.

ls | sort несколько странная

ну оно потому обычно и никогда не ставится в allways, а ставится в never или чаще в auto. Зачем ТС эти грабли себе подложил - я не знаю.

drBatty ★★
()
Ответ на: комментарий от drBatty

У меня LC_COLORS выставляется в единственном правильном, на мой взгляд, месте: в .zshrc.

ну оно потому обычно и никогда не ставится в allways

То-то оно и не логично, когда --color[=WHEN] по умолчанию в always.

ASM ★★
() автор топика
Ответ на: комментарий от ASM

То-то оно и не логично, когда --color[=WHEN] по умолчанию в always.

да? А я вот по другому понял:

Using color to distinguish file types is disabled both by default and with --color=never.

У меня LC_COLORS выставляется в единственном правильном, на мой взгляд, месте: в .zshrc.

может оно и правильно, но мне лень. Патрег заповедовал в /etc/profile.d/coreutils-dircolors.{,c}sh

# Slackware color ls profile script for /bin/sh-like shells.

# Set up LS_OPTIONS environment variable.
# This contains extra command line options to use with ls.
# The default ones are:
#  -F = show '/' for dirs, '*' for executables, etc.
#  -T 0 = don't trust tab spacing when formatting ls output.
#  -b = better support for special characters
OPTIONS="-F -b -T 0"

# COLOR needs one of these arguments:
# 'auto' colorizes output to ttys, but not pipes.
# 'always' adds color characters to all output.
# 'never' shuts colorization off.
COLOR=auto
...
drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.