Как показывает опыт, всегда выключайте fakeraid (RAID, который объявляется в BIOS, но на самом деле выполняется драйвером ОС). Fakeraid только существует по двум причинам:
Нет никакого преимущества fakeraid по Linux RAID, единственные недостатки, такие как уверенность в определенном драйвере и аппаратных средствах.
С некоторыми материнскими платами (или более точно с некоторыми BIOS RAID), Вы не можете выключить режимы RAID, если диски содержат допустимую подпись RAID. Необходимо вытереть эту подпись. Начальная загрузка с CD Linux и нуля первые несколько килобайтов и последние несколько килобайтов диска (или целого диска, если у Вас есть свободное время). Обратите внимание, что это удалит все данные по диску; если Вы захотите сохранить некоторые данные, то Вам, вероятно, будет нужна более сложная стратегия, включающая временно удаление дисков (или включение их в портах SATA не-RAID). Затем перезагрузка и возвращается в BIOS, и необходимо видеть дополнительную опцию, которая позволяет Вам действительно выключить RAID.
Возможно, с tput, проверьте доступное количество цветов,
ncolors=$(tput colors)
if [[ $ncolors -ge 8 ]];then
# colors available
fi
Цвета tty являются характеристикой терминала, на котором показывают текст. Почти все терминалы сегодня обрабатывают escape-последовательность ANSI, таким образом, можно сойти с рук колоризация текст при генерации, но необходимо действительно сделать это, когда это записано (возможно, под управлением пользователя в конце записи). Например, настроенная пользовательская окраска для Вашего текста для Вашего пейджера).
Возможный метод обнаружения, работаете ли Вы непосредственно от эмулятора терминала, или если вывод пишется в файл журнала вместо этого, должен использовать readlink
:
if [[ $(readlink -f /dev/stdout) =~ '^/dev/pts/' ]]; then
# colors available
fi
Это должно обычно работать над современным Linux с udev и procfs. Я не уверен, существует ли что-то более портативное. Это использует специальный оператор регулярного выражения удара =~
, таким образом, это будет только работать с ударом.
Альтернатива, как кто-то еще уже объяснил, для использования tty >/dev/null
; в Вашем случае, хотя, можно только интересоваться стандартным выводом и не стандартным входом, таким образом, Вы захотите сделать свой стандартный вывод стандартным входом tty
:
if tty <&1 >/dev/null; then
# colors available
fi
Это отключило бы цвета, когда Вы работаете ./myscript.sh >>log_file
, но включите им, когда Вы будете работать ./myscript.sh
.
Я рекомендовал бы использовать [[ $(tput colors) -ge 8 ]]
также, так, чтобы, когда переменная среды TERM
установлен на dumb
, цвета не будут произведены.
Если Вы действительно пишете, что файл журнала с раскрашивает его, можно все еще считать его; необходимо будет использовать что-то как less -r
или multitail -cT ansi
от эмулятора терминала с цветной поддержкой все же.
tput
только проверяет переменную $TERM, она не обнаружит при использовании программы в конвейере. Общепринятая практика имеет тенденцию быть, чтобы проверить еслиstdout
TTY также:tty(1)
Ваш друг. Что-то какif tty >/dev/null 2>/dev/null && [[ $(tput colors) -ge 8 ]]; then ...
работал бы хорошо. – Alexios 25.03.2013, 13:08if [[ $ncolors -gt 2 && $ncolors -lt 8 ]]; then what?; fi
– l0b0 25.03.2013, 17:26