o que tail + number faz? O que sobre a cabeça

0

Acabei de chamar este comando ls -l | tail +3 . Em primeiro lugar, ls -s, produz 3 linhas, adicionando linhas de tubulação primeira linha e, em seguida, imprime cada nome de arquivo em uma linha separada. Como isso acontece? Não faz sentido.

Além disso, pensei que o nome do arquivo tail exibe as últimas 10 linhas. Como + (e menos) é reproduzido nessa equação?

A mesma coisa sobre a cabeça? Como isso funciona?

    
por Andrei Chikatilo 28.10.2009 / 21:11

3 respostas

6

A partir do tail página de manual :

The tail utility displays the contents of file or, by default, its standard input, to the standard output.

The display begins at a byte, line or 512-byte block location in the input. Numbers having a leading plus ("+") sign are relative to the beginning of the input, for example, "-c +2" starts the display at the second byte of the input. Numbers having a leading minus ("-") sign or no explicit sign are relative to the end of the input, for example, "-n 2" displays the last two lines of the input. The default starting location is "-n 10", or the last 10 lines of the input.

Portanto, no seu caso, tail +3 (o -n está implícito) significa iniciar na terceira linha da entrada ( ls -l ) e imprimir o restante. Por exemplo:

ls -l output:

total 0
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file1
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file2
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file3
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file4
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file5
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file6

ls -l | tail +3 output:

-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file2
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file3
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file4
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file5
-rw-r--r--  1 carl  staff  0 Oct 28 13:18 file6

Mesma saída, apenas com as primeiras linhas removidas.

    
por 28.10.2009 / 21:14
4

Na página de manual:

If the first character of N (the number of bytes or lines) is a '+', print beginning with the Nth item from the start of each file, other- wise, print the last N items in the file. N may have a multiplier suf- fix: b 512, k 1024, m 1024*1024.

    
por 28.10.2009 / 21:15
2

Respondendo:

Firstly, ls -s, produces 3 lines, adding piping strips first line and then prints each file names on a separate line. How does it do that? It doesn't make sense.

A resposta é que os comandos ls examinam sua saída padrão e verificam se ela está conectada a um tty. Se for, então ele formata para fins de exibição. Se não for (por exemplo, a saída é um arquivo ou um pipe), ela imprime uma entrada por linha.

  • A opção ' -C ' força a saída de várias colunas (como se estivesse indo para um terminal).
  • A opção ' -1 ' força a saída de uma coluna (como se estivesse indo para um canal).
por 28.10.2009 / 21:48

Tags