Почему печать dc разделяется на длинное число

То, что вы ищете, это Ctrl R .

Введите Ctrl R , а затем введите часть нужной команды. Bash отобразит первую подходящую команду. Продолжайте вводить Ctrl R , и bash будет циклически перебирать предыдущие совпадающие команды.

Для поиска в истории назад введите Ctrl S . (Если Ctrl S не работает для вас, это, вероятно, означает, что вам нужно отключить управление потоком XON / XOFF: для этого выполните stty -ixon .)

Это описано в разделе «Поиск» в man bash .

2
08.02.2018, 01:19
2 ответа

Al menos para la implementación GNU de dc, hay un -codificado duro DEFAULT_LINE_MAXde 70 caracteres -aunque eso puede anularse configurando una variable de entorno DC_LINE_LENGTH. dedc/numeric.c:

559 static int out_col = 0;
560 static int line_max = -1;       /* negative means "need to check environment" */
561 #define DEFAULT_LINE_MAX 70
562 
563 static void
564 set_line_max_from_environment(void)
565 {
566         const char *env_line_len = getenv("DC_LINE_LENGTH");
567         line_max = DEFAULT_LINE_MAX;
568         errno = 0;
569         if (env_line_len) {
570                 char *endptr;
571                 long proposed_line_len = strtol(env_line_len, &endptr, 0);
572                 line_max = (int)proposed_line_len;
573 
574                 /* silently enforce sanity */
575                 while (isspace(*endptr))
576                         ++endptr;
577                 if (*endptr || errno || line_max != proposed_line_len
578                                         || line_max < 0 || line_max == 1)
579                         line_max = DEFAULT_LINE_MAX;
580         }
581 }
582 

Entonces

$ dc
999999999999999999999999999999999999999999999999999999999999999999999999
p
999999999999999999999999999999999999999999999999999999999999999999999\
999
q

pero

$ DC_LINE_LENGTH=0 dc
999999999999999999999999999999999999999999999999999999999999999999999999
p
999999999999999999999999999999999999999999999999999999999999999999999999
q
$ 
4
27.01.2020, 21:50

Los terminales son tradicionalmente de 80x24 (más o menos )y en un campo de juego de este tipo, las líneas largas que se envuelven pueden ser problemáticas, lo que probablemente explica la tradición de Unix de envolver líneas largas y marcar dichas líneas envueltas con un \.

Este es un límite muy antiguo, dc(1)en la fuente Versión 6 AT&T UNIX contiene:

dc1.s:ll:   70.         /line length

(Alguien en computación retro podría decirle en detalle por qué las filas largas son un problema; uno podría sospechar que las impresoras de línea en ese entonces pueden no haber tenido una función mágica de envoltura -de líneas largas -, por lo que para que algo se imprima correctamente, realmente tendría que caber en la página...)

5
27.01.2020, 21:50

Теги

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