Вы не можете объединить VirtualHost
на одном IP-адресе и порту без каких-либо ServerName
или ] ServerAlias
настройки, с тем, в котором они есть. Вы можете запустить apachectl -S
, чтобы узнать, что Apache на самом деле думает об этой конфигурации.
Предполагая, что вы знаете все 20 доменных имен, используемых для доступа к виртуальному хосту по умолчанию, решение состоит в том, чтобы просто перечислить их все с помощью ServerName
/ ServerAlias
. Если вы этого не сделаете, вы можете, например, привязать новый к другому IP-адресу и / или порту.
Количество цветов, доступных для tput, определяется как tput цветов
.
Чтобы увидеть 8 основных цветов (которые используются setf
в терминале urxvt и setaf
в терминале xterm):
$ printf '\e[%sm▒' {30..37} 0; echo ### foreground
$ printf '\e[%sm ' {40..47} 0; echo ### background
И обычно называются так:
Color #define Value RGB
black COLOR_BLACK 0 0, 0, 0
red COLOR_RED 1 max,0,0
green COLOR_GREEN 2 0,max,0
yellow COLOR_YELLOW 3 max,max,0
blue COLOR_BLUE 4 0,0,max
magenta COLOR_MAGENTA 5 max,0,max
cyan COLOR_CYAN 6 0,max,max
white COLOR_WHITE 7 max,max,max
Чтобы увидеть расширенные 256 цветов (как используется setaf
в urxvt):
$ printf '\e[48;5;%dm ' {0..255}; printf '\e[0m \n'
Если вам нужны числа и упорядоченный вывод:
#!/bin/bash
color(){
for c; do
printf '\e[48;5;%dm%03d' $c $c
done
printf '\e[0m \n'
}
IFS=$' \t\n'
color {0..15}
for ((i=0;i<6;i++)); do
color $(seq $((i*36+16)) $((i*36+51)))
done
color {232..255}
16 миллионов цветов требуют довольно много кода (некоторые консоли не могут отображать это).
Основные сведения:
fb=3;r=255;g=1;b=1;printf '\e[0;%s8;2;%s;%s;%sm▒▒▒ ' "$fb" "$r" "$g" "$b"
fb
- это перед / зад
или 3/4
.
Простой тест на способность вашей консоли отображать такое количество цветов:
for r in {200..255..5}; do fb=4;g=1;b=1;printf '\e[0;%s8;2;%s;%s;%sm ' "$fb" "$r" "$g" "$b"; done; echo
Он представит красную линию с очень небольшим изменением тона слева направо. Если это небольшое изменение заметно, ваша консоль поддерживает 16 миллионов цветов.
Каждый r
, g
и b
представляет собой значение от 0 до 255 для RGB (красный, зеленый, синий).
Если ваш тип консоли поддерживает это, этот код создаст таблицу цветов:
mode2header(){
#### For 16 Million colors use \e[0;38;2;R;G;Bm each RGB is {0..255}
printf '\e[mR\n' # reset the colors.
printf '\n\e[m%59s\n' "Some samples of colors for r;g;b. Each one may be 000..255"
printf '\e[m%59s\n' "for the ansi option: \e[0;38;2;r;g;bm or \e[0;48;2;r;g;bm :"
}
mode2colors(){
# foreground or background (only 3 or 4 are accepted)
local fb="$1"
[[ $fb != 3 ]] && fb=4
local samples=(0 63 127 191 255)
for r in "${samples[@]}"; do
for g in "${samples[@]}"; do
for b in "${samples[@]}"; do
printf '\e[0;%s8;2;%s;%s;%sm%03d;%03d;%03d ' "$fb" "$r" "$g" "$b" "$r" "$g" "$b"
done; printf '\e[m\n'
done; printf '\e[m'
done; printf '\e[mReset\n'
}
mode2header
mode2colors 3
mode2colors 4
Чтобы преобразовать шестнадцатеричное значение цвета в (ближайший) индекс цвета 0-255:
fromhex(){
hex=${1#"#"}
r=$(printf '0x%0.2s' "$hex")
g=$(printf '0x%0.2s' ${hex#??})
b=$(printf '0x%0.2s' ${hex#????})
printf '%03d' "$(( (r<75?0:(r-35)/40)*6*6 +
(g<75?0:(g-35)/40)*6 +
(b<75?0:(b-35)/40) + 16 ))"
}
Используйте его как:
$ fromhex 00fc7b
048
$ fromhex #00fc7b
048
Чтобы найти номер цвета, используемый в формате цветов HTML :
#!/bin/dash
tohex(){
dec=$(($1%256)) ### input must be a number in range 0-255.
if [ "$dec" -lt "16" ]; then
bas=$(( dec%16 ))
mul=128
[ "$bas" -eq "7" ] && mul=192
[ "$bas" -eq "8" ] && bas=7
[ "$bas" -gt "8" ] && mul=255
a="$(( (bas&1) *mul ))"
b="$(( ((bas&2)>>1)*mul ))"
c="$(( ((bas&4)>>2)*mul ))"
printf 'dec= %3s basic= #%02x%02x%02x\n' "$dec" "$a" "$b" "$c"
elif [ "$dec" -gt 15 ] && [ "$dec" -lt 232 ]; then
b=$(( (dec-16)%6 )); b=$(( b==0?0: b*40 + 55 ))
g=$(( (dec-16)/6%6)); g=$(( g==0?0: g*40 + 55 ))
r=$(( (dec-16)/36 )); r=$(( r==0?0: r*40 + 55 ))
printf 'dec= %3s color= #%02x%02x%02x\n' "$dec" "$r" "$g" "$b"
else
gray=$(( (dec-232)*10+8 ))
printf 'dec= %3s gray= #%02x%02x%02x\n' "$dec" "$gray" "$gray" "$gray"
fi
}
for i in $(seq 0 255); do
tohex ${i}
done
Используйте его как («основной» - это первые 16 цветов, «цвет» - основная группа, «серый» - это последние серые цвета):
$ tohex 125 ### A number in range 0-255
dec= 125 color= #af005f
$ tohex 6
dec= 6 basic= #008080
$ tohex 235
dec= 235 gray= #262626
С zsh и в терминале, подобном xterm
( xterm
и терминалы на основе vte
, например ] gnome-terminal
, xfce4-terminal
... по крайней мере), вы можете сделать:
$ read -s -t1 -d $'\a' $'c?\e]4;125;?\a' && echo "${c##*;}"
rgb:afaf/0000/5f5f
Эквивалент bash:
read -s -t1 -d $'\a' -p $'\e]4;125;?\a' c && echo "${c##*;}"
(вы хотите, чтобы escape-последовательность запрашивала цвет, который должен быть отправлено после дисциплина терминала echo
отключена (с -s
), иначе ответ будет отображаться дисциплиной линии половину времени, следовательно, отправка это как часть приглашения read
( var? prompt
в zsh, как в ksh, -p prompt
в bash)).
, чтобы получить определение цвета 125 (здесь как спецификация RGB, каждое число представляет собой интенсивность красного, зеленого и синего компонентов в виде шестнадцатеричного числа от 0 до FFFF).
Вы можете сделать то же самое для первых 16 цветов с помощью команды xtermcontrol
:
$ xtermcontrol --get-color1
rgb:cdcd/0000/0000
Короткий ответ заключается в том, что вы можете найти в Интернете таблицы цветов и сопоставить их по номеру цвета.
Длинный ответ заключается в том, что правильное отображение зависит от терминала -
125
- это параметр управляющей последовательности, называемой setaf
в описании терминала. tput
не придает числа особого значения. На самом деле это зависит от конкретного эмулятора терминала.
Некоторое время назад ANSI определила коды для 8 цветов, и было две схемы их нумерации. В некоторых описаниях терминалов они представлены как пары setf / setb
или setaf / setab
. Поскольку последний имеет оттенок «цвета ANSI», вы увидите, что он используется чаще. Первый (setf / setb) поменял порядок для красного / синего, как указано в FAQ ncurses Почему поменялись местами красный / синий? , но в любом случае схема была создана для простой нумерации цветов.Между этими числами и содержимым RGB нет предопределенной связи.
Для конкретных эмуляторов терминала существуют предопределенные цветовые палитры, которые можно достаточно легко перечислить - и их можно запрограммировать с использованием этих управляющих последовательностей. Не существует соответствующих стандартов , и вы увидите различия между эмуляторами терминала, как указано в FAQ xterm . Мне не нравится этот оттенок синего .
Однако условность часто путают со стандартами. При разработке xterm за последние 20 лет он включил цвета ANSI (8), адаптировал цвета aixterm
(16), добавил расширения для 88 и 256 цветов. Многое из этого было принято другими разработчиками для различных эмуляторов терминала. Это кратко изложено в FAQ по xterm . Почему бы не сделать «xterm» равным «xterm-256color»? .
Исходный код xterm включает сценарии для демонстрации цветов, например, с использованием тех же управляющих последовательностей, которые использовал бы tput
.
Вы также можете найти этот вопрос / ответ полезным: Значения RGB для цветов в расширенном индексе цветов Ansi (17-255)
Утилитаtput
использует таблицу поиска из 256 -цветов для печати 8 -битных escape-последовательностей ANSI (, начинающихся с Esc и[
)который использует возможности терминала , поэтому эти управляющие последовательности можно интерпретировать как цвета. Это предустановленный -набор из 256 цветов, обычно используемых в графических картах.
Для печати всех 256 цветов в терминале попробуйте следующий -лайнер:
for c in {0..255}; do tput setaf $c; tput setaf $c | cat -v; echo =$c; done
Подсказка :Добавить | column
к списку столбцов.
Эту таблицу поиска по 256 -цветам также можно найти на странице Википедии следующим образом:
$TERM
переменной Проверьте свою среду с помощью:tput colors
Если вы используете совместимуюxterm
консоль, ваш $TERM
может содержать что-то вродеxterm*
:
echo $TERM
xterm
tput colors
8
Дальнейшие демонстрации не будут работать :вы получите изображение, похожее на:
, если только вы не установите для него значениеxterm-256color
:
export TERM=xterm-256color ; reset
tput colors
256
(Вы даже можете попытаться запустить это после установки export TERM=xterm-mono
;)
tput
В зависимости от протокола термина, используемого вашей консолью, последовательность может быть:\e[38;5;XXXm
или \e[3XXXm
, где XXX
соответствует номеру ansi.
Чтобы убедиться, что вы используете правильную последовательность ANSI, вы должны использовать tput
.
Что касается escape-кода ANSI Википедии , я написал это:
#!/bin/bash
for ((i=0; i<256; i++)) ;do
echo -n ' '
tput setab $i
tput setaf $(( ( (i>231&&i<244 ) || ( (i<17)&& (i%8<2)) ||
(i>16&&i<232)&& ((i-16)%6 <(i<100?3:2) ) && ((i-16)%36<15) )?7:16))
printf " C %03d " $i
tput op
(( ((i<16||i>231) && ((i+1)%8==0)) || ((i>16&&i<232)&& ((i-15)%6==0)) )) &&
printf "\n" ''
done
Может отображать что-то вроде:
tput
в качестве фонового процесса ... Затем, поскольку я ненавижу запускать более 200 форков в маленьком скрипте, я написал это:
#!/bin/bash
# Connector fifos directory
read TMPDIR < <(mktemp -d /dev/shm/conn_shell_XXXXXXX)
fd=3
# find next free fd
nextFd() { while [ -e /dev/fd/$fd ];do ((fd++)) ;done;printf -v $1 %d $fd;}
tputConnector() {
mkfifo $TMPDIR/tput
nextFd TPUTIN
eval "exec $TPUTIN> >(LANG=C exec stdbuf -o0 tput -S - >$TMPDIR/tput 2>&1)"
nextFd TPUTOUT
eval "exec $TPUTOUT<$TMPDIR/tput"
rm $TMPDIR/tput
rmdir $TMPDIR
}
myTput() { echo -e "$1\ncr" 1>&$TPUTIN && IFS= read -r -d $'\r' -u $TPUTOUT $2
}
tputConnector
myTput op op
myTput "setaf 7" grey
myTput "setaf 16" black
fore=("$black" "$grey")
for ((i=0; i<256; i++)) ;do
myTput "setab $i" bgr
printf " %s%s %3d %s" "$bgr" "${fore[ i>231 && i<244||(i<17)&& (i%8<2)||
(i>16&&i<232)&&((i-16)%6*11+(i-16)/6%6*14+(i-16)/36*10)<58
? 1 : 0 ]}" $i "$op"
(( ((i<16||i>231) && ((i+1)%8==0)) || ((i>16&&i<232)&& ((i-15)%6==0)) )) &&
printf "\n" ''
done
Только с 1 вилкой! Тот же результат, но примерно в 10 раз быстрее!
Если первый скрипт запускается за ~1,12 секунды на моем столе, то на моем raspberry -pi он занимает до ~47,4 секунды!!
В то время как второй скрипт выполняется за ~0,11 секунды на моем столе и ~4,97 секунды на моей малине.