Los emparejamientos son "el alfabeto latino", 1 a 26 (y luego el resto relevante de ASCII también ).
Ctrl -C da ETX, valor de byte 3 (0x03
,000000011
); C
es ASCII 67 (0x43
,010000011
). Voltee el bit 7 (sume/reste 64 )para pasar de uno a otro. SUB es el valor de byte 26, y así sucesivamente, como se indica en la página de Wikipedia que mencionas en orden desde 1 -26 y A -Z.
Los otros controles C0 corresponden a Ctrl y otros caracteres no -alfabéticos :NUL es Ctrl -@ ,ya que @
es ASCII 64, y[
(91 )corresponde a ESC (27 ), y así sucesivamente hasta que presione espacio.
ASCII define estos bytes con esas etiquetas y (algo )significado, al igual que Unicode, y muchos otros estándares de codificación. El uso de Ctrl para voltear ese bit está determinado por el terminal o el controlador de entrada, pero el nombre "caracteres de control" sugiere bastante cómo se produce ese emparejamiento. Tendrán la misma correspondencia entre letra y byte en cualquier sistema que siga esta tradición.
Por otro lado, muchos de los controles ASCII y sus secuencias de teclas no se usan o se usan para propósitos diferentes a los previstos originalmente, al menos en sistemas modernos similares a Unix -. Ctrl -C y Ctrl -D siguen siendo razonablemente paralelos en el efecto que tienen, pero Ctrl -V generalmente se usa para iniciar entrada literal en estos días en lugar de inactividad síncrona, por ejemplo, y nunca he visto un separador de grupo en la naturaleza.
Ваша команда
exec > $LOG $LOG_I 2>&1
не будет работать, так как это то же самое, что и
exec $LOG_I > $LOG 2>&1
То есть, он попытается exec
выполнить команду, заданную раскрытием $LOG_I
без кавычек.
Чтобы поместить данные в несколько файлов, вам придется их дублировать. Это делается с помощью tee
.
Например,
log1="/tmp/logfile-1.txt"
log2="/tmp/logfile-2.txt"
exec > >( tee "$log1" >"$log2" ) 2>&1
При этом используется подстановка процесса для вызова tee
для стандартного потока вывода. Утилита tee
брала ввод и сохраняла его в $log1
, а затем перенаправляла его копию в$log2
(tee
и всегда производила копию своего ввода на своем стандартном выходе, но вы также могли использоватьtee "$log1" "$log2" >/dev/null
). Затем мы перенаправляем наш стандартный поток ошибок в то же место, что и наш стандартный вывод, чтобы tee
мог дублировать его таким же образом.
Чтобы добавить к обоим журналам, вы должны использовать
exec > >( tee -a "$log1" >>"$log2" ) 2>&1