O que é o arquivo “-”, e por que só pode ver isso?

0

Estou usando o Ubuntu 12. Quando digito no meu terminal stat - , recebo a seguinte saída:

  File: ‘-’
  Size: 0           Blocks: 0          IO Block: 1024   character special file
Device: ch/12d  Inode: 3           Links: 1     Device type: 88,0
Access: (0620/crw--w----)  Uid: ( 1000/   anotherguy)   Gid: (    5/     tty)
Access: 2014-12-19 18:04:40.454800919 -0600
Modify: 2014-12-19 18:04:40.454800919 -0600
Change: 2014-12-19 16:55:48.454800919 -0600
 Birth: -

Não há esse arquivo que eu possa ver com a função ls , e não importa em qual diretório eu estou, stat ainda vê esse "arquivo". No entanto, substituir - por ./- não fornece "nenhum arquivo ou diretório".

Esse comportamento estranho é similar ao uso da função "-" por cd , essencialmente tratando a opção como um argumento, tornando-a o diretório anterior.

    
por anotherguy 20.12.2014 / 01:09

2 respostas

2

- não é um nome de arquivo - programas diferentes lidam com isso de maneira diferente. Por exemplo, cd interpreta - como cd $ OLDPWD, enquanto muitos outros programas tratam - como /dev/stdout ( um pouco mais de informação da resposta selecionada aqui ).

Se você tentar, stat -f - , receberá o seguinte erro:

stat: using ‘-’ to denote standard input does not work in file system mode

Então, o que é isso, stat - ? Eu testei em várias distribuições do Linux, bem como do Mac OS X. stat - é equivalente a stat $(tty) e parece ser uma referência ao arquivo de dispositivo de caractere associado à sua sessão de terminal.

    
por 20.12.2014 / 01:58
1

Embora não esteja em sua página de manual, stat usa a convenção de que - como um nome de arquivo significa entrada padrão (ou, às vezes, saída padrão), portanto você verá que os dois comandos a seguir são equivalentes:

stat ExistingFile
stat - < ExistingFile
    
por 20.12.2014 / 02:01

Tags