В дополнение к какой сказанный cjm, если значение $?
0, затем предыдущий процесс действительно обычно завершался (или успешно). Иначе была некоторая ошибка.
То же, записанное для zsh намного более чистым способом:
#!/bin/zsh
typeset -A names
names[no]="global default"
names[fi]="normal file"
names[di]="directory"
names[ln]="symbolic link"
names[pi]="named pipe"
names[so]="socket"
names[do]="door"
names[bd]="block device"
names[cd]="character device"
names[or]="orphan symlink"
names[mi]="missing file"
names[su]="set uid"
names[sg]="set gid"
names[tw]="sticky other writable"
names[ow]="other writable"
names[st]="sticky"
names[ex]="executable"
for i in ${(s.:.)LS_COLORS}
do
key=${i%\=*}
color=${i#*\=}
name=${names[(e)$key]-$key}
printf '\e[%sm%s\e[m\n' $color $name
done
Необходимо выйти =
в ${i%=*}
потому что иначе суффиксный шаблон =*
подвергается =
расширение, таким образом, =
интерпретируется как название команды. Это - причина * not found
ошибка.
Zsh не разделяет слова на подстановках переменных по умолчанию, таким образом, $LS_COLORS
расширяется до отдельного слова. Иметь for
цикл воздействует на разделенные от двоеточия части $LS_COLORS
, использовать for i in $=LS_COLORS
. Или более идиоматически в zsh, не использовать IFS
но вместо этого укажите явно, как разделить: for i in ${(s.:.)LS_COLORS}
.
Синтаксис ${!x}
означать “значение переменной, имя которой $x
” характерно для удара. Zsh имеет эквивалентную конструкцию, P
флаг расширения параметра: ${(P)x}
.
LS_COLORS
и =
потребности, которых оставят в шаблонах замены.
– Stéphane Gimenez
15.09.2011, 03:54
\n
пространством в концеprintf
для компактности, возможно. – Stéphane Gimenez 15.09.2011, 03:27zsh
какsh
Ваш используют некоторый режим эмуляции. Любой вызов Ваш сценарий какzsh ./test_color_scheme
или добавьте двойные кавычки вокруг$color
и$name
. – Stéphane Gimenez 02.11.2011, 14:35rs
,ca
иmh
это не включено выше. Можно ли сказать мне, где найти их расширения?Спасибо. – chandra 24.10.2012, 08:13dircolors -p
rs=reset, ca=capability, mh=multi-hard_link – weldabar 03.11.2013, 22:16