Usando o comando tail para criar um arquivo

0

Isso é o que eu fiz usando o comando tail . Quando tento enviar o arquivo para a tela, o arquivo está vazio.

~]$ tail > AFS2F1
PASSES ALL DATA FROM INPUT TO OUTPUT
PASSES ONLY SPECIFIED COLUMNS
PASSES NUMBER OF SPECIFIED LINES AT BEGINNING
COMBINES COLUMNS
ARRANGES DATA IN SEQUENCE
PASSES NUMBER OF SPECIFIED LINES AT THE END OF DATA
TRANSLATES ONE OR MORE CHARACTERS
DELETES DUPLICATE LINES
COUNTS CHARACTERS, WORDS, OR LINES
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Há algo de errado com a maneira como estou usando o comando tail?

    
por user1763658 25.02.2013 / 22:36

3 respostas

2

tail só produzirá as últimas 10 linhas. Então, de uma forma ou de outra, você terá que dizer que acabou de digitar, para saber quais linhas (as 10 últimas) produzir.

Se você pressionar CTRL-C (o caractere intr padrão na maioria dos sistemas), um sinal SIGINT será enviado para ele, o que irá matá-lo. Por não ter visto o final da entrada no momento em que você o matou, ele não terá tido a oportunidade de escrever nada ainda, então ele morrerá sem produzir nada.

O caminho terminal para indicar o final da entrada (quando o terminal está no modo canônico ) é inserir o caractere eof (por padrão Ctrl -D na maioria dos sistemas) em uma linha vazia.

Em seguida, tail detectará que o final da entrada está sendo atingido e emitirá as 10 últimas linhas que recebeu.

    
por 25.02.2013 / 22:44
2

O problema é que o programa tail armazena em buffer seu arquivo de entrada até obter uma condição eof , depois imprime as últimas linhas (10 por padrão). O mais provável é que você o interrompa com a combinação ctrl-c que o encerra, portanto, a cauda não tem chance de imprimir as linhas coletadas. Se você usa ctrl-d , então você efetivamente envia o caractere end-of-file para o fluxo de entrada da cauda, então ele irá imprimir as linhas coletadas.

    
por 25.02.2013 / 22:46
1

Sim, você deve fornecer uma entrada para tail , então:

tail file > newfile

Se você quiser usar STDIN:

cat file | tail > newfile

ou

 head > new_file < file

ou

tail > AFS2F1<<EOF
PASSES ALL DATA FROM INPUT TO OUTPUT
PASSES ONLY SPECIFIED COLUMNS
PASSES NUMBER OF SPECIFIED LINES AT BEGINNING
COMBINES COLUMNS
ARRANGES DATA IN SEQUENCE
PASSES NUMBER OF SPECIFIED LINES AT THE END OF DATA
TRANSLATES ONE OR MORE CHARACTERS
DELETES DUPLICATE LINES
COUNTS CHARACTERS, WORDS, OR LINES
ABCDEFGHIJKLMNOPQRSTUVWXYZ
EOF
    
por 25.02.2013 / 22:38

Tags