bash + запись стандартного вывода и ошибки в оба журнала

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); Ces 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.

2
19.03.2019, 22:06
1 ответ

Ваша команда

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
3
27.01.2020, 22:08

Теги

Похожие вопросы