Algumas questões sobre o comando pr

3

Alguém pode, por favor, responder abaixo da questão.

Nota: (Desde que eu sou incapaz de copiar e colar da minha caixa virtual do linux para windows, eu tenho que usar screenshots em alguns lugares, por favor me desculpe por isso)

Cite meu livro didático

$ cat -n /etc/ profile | pr -d | lpr

The result should be a printout that might be handy for taking notes on the configuration file. One caveat, though: If the file contains lines that approach or exceed 80 characters in length, the result can be single lines that spill across two lines. The result will be disrupted page boundaries. As a workaround, you can set a somewhat short page length with -l and use -f to ensure that the printer receives form feeds after each page:

$ cat -n /etc/ profile | pr -dfl 50

Então, o cenário acima significa exceder 80 caracteres em uma única linha? Se sim, eu já tentei um cenário; onde eu tenho uma linha com 100 caracteres e não pude notar qualquer diferença com ou sem argumento dfl no comando pr. Abaixo estão as imagens.

com dfl

Semdfl

A única diferença entre os dois comandos é o espaço duplo devido ao argumento -d. Espero que esteja claro na minha pergunta acima. Por favor, deseje que alguém explique a citação do manual onde menciona como lidar com o cenário de advertência?

    
por LoveWithMaths 08.04.2018 / 12:34

1 resposta

4

As impressoras de linha (e alguns terminais de impressão) nos primeiros anos do Unix foram projetadas para imprimir 66 linhas por página, com 80 ou 132 colunas em um tipo de letra de largura fixa por linha, em formulários de papel contínuo. lpr não formatou seu argumento stdin ou file; coube a outros programas, como pr ou nroff , fazer a formatação. (O lpr também pode enviar a saída de troff para um fototetróptero).

Para acomodar a dobra entre as páginas e fornecer as margens superior e inferior que a maioria das pessoas prefere, após cada 56 linhas de entrada irá inserir 5 linhas em branco para servir como uma margem inferior e 4 linhas em branco mais uma linha de cabeçalho para servir como margem superior. Se a opção -f for fornecida, então, na parte inferior de cada página, pr produzirá um formfeed em vez de 5 linhas em branco. Uma impressora normalmente pode processar um formfeed, que salta mecanicamente para o topo da próxima página, mais rápido do que uma série de linhas em branco. [Existe um programa, cujo nome esqueci, que formata o código-fonte C e insere um formfeed antes do início de cada função, de modo que cada função comece no topo de uma nova página quando você a imprime.]

As impressoras de linha normalmente não envolvem linhas que são maiores que a largura da página para a qual foram projetadas. Mas a impressão de terminais e terminais de exibição (e emuladores de terminal, que são predominantes atualmente) pode envolver ou não linhas longas, dependendo da configuração. (Mais precisamente, você pode configurar o que acontece quando um caractere é impresso na coluna mais à direita: mantenha o cursor / cabeça de impressão nessa última coluna ou mova-o para a primeira coluna da próxima linha). A maioria das pessoas prefere embrulhar para não perder informações.

pr não fez originalmente nenhuma quebra de linha longa; algumas versões mais recentes, ou você pode usar o programa fmt como um filtro. No entanto, pr suporta um comprimento de página configurável (a opção -l ), portanto, se você estiver usando um terminal ou impressora que envolva linhas, poderá estimar um comprimento de página menor que resultará em 56 linhas reais ou menos por página sendo enviada e diga pr para usar isso.

Isso é o que o seu exemplo fez; ele disse pr para assumir que uma página tem 50 linhas de texto em vez de 56. Se você acabar com mais ou menos de 6 linhas extras devido à quebra, você não quer que pr insira suas linhas em branco Isso eliminará o alinhamento das páginas seguintes; você quer que ele produza um formfeed, por isso eles adicionaram a opção -f em seu exemplo.

    
por 08.04.2018 / 17:38