A opção -F para ls

5

Para o comando ls

   -F, --classify
          append indicator (one of */=>@|) to entries

Wikipedia diz que * representa executável e / dir. Arquivos regulares não são seguidos por nenhum dos símbolos acima.

Mas * segue o arquivo de texto e o arquivo pdf também. Eles são executáveis?

Os indicadores -F sempre significam o mesmo que o primeiro campo em -rwxrwx--- ?

Parece que não há diferença entre os hardlinks e os arquivos nos indicadores -F ou no primeiro campo em -rwxrwx--- . Como você os distingue?

Obrigado.

    
por Tim 27.07.2014 / 05:44

1 resposta

10

ls -F :

Write a ( '/' ) immediately after each pathname that is a directory, an ( '*' ) after each that is executable, a ( '|' ) after each that is a FIFO, and an at-sign ( '@' ) after each that is a symbolic link.

O GNU ls inclui sinais adicionais :

... ‘=’ for sockets, ‘>’ for doors

= também está presente nos principais BSDs ( FreeBSD , OpenBSD , NetBSD , OS X ). Todos esses, exceto o OpenBSD, também incluem % para whiteouts. A maioria dos Unices comerciais inclui = , mas não é padrão.

Um * aparecerá após um arquivo se estiver marcado como executável - isto é, se o bit executável estiver definido. Isso não significa necessariamente que você poderia realmente executar o arquivo. Você pode remover o bit executável do chmod -x ; geralmente você não quer que arquivos de texto e PDF sejam executáveis, então você pode fazer isso. Os arquivos executáveis também terão o x em ls -l output.

Para os outros:

  • / indica um diretório, o que é bastante simples.
  • | indica um FIFO, que é um pipe nomeado feito com mkfifo (os dados podem ser escrito e lido novamente uma vez).
  • @ indica um link simbólico feito com ln -s , que é um alias para outro caminho .
  • = indica um socket, um arquivo especial para se comunicar com outros processos.
  • > para portas é outro recurso de comunicação entre processos de alguns sistemas.
  • % para whiteouts indica um arquivo especial usado para marcar exclusões feitas nas camadas superiores de uma pilha do sistema de arquivos union.

Um "arquivo normal" é o que você considera convencionalmente como um arquivo, no qual você pode gravar dados e ler mais tarde. Alternativamente, você pode pensar nisso como algo que não esteja em uma das categorias acima.

Links físicos não são diferenciados de outros arquivos, seja em ls -F output ou de outra forma. Na verdade, você pode pensar em cada arquivo como um link rígido para si mesmo. Você pode examinar o número de links para um determinado arquivo na saída ls -l . O segundo campo é o número de links:

-rw-r--r-- 3 root root  92766 Feb 20 11:42 test.txt

Este arquivo tem três links. Nenhum deles é o link "principal", e você não pode dizer qual é o original de forma alguma. Se você excluir um, a contagem diminuirá, mas os outros ainda se referirão ao mesmo arquivo.

Todos os indicadores -F diferentes de * mapeiam em um dos valores do primeiro campo da saída do modo em ls -l , mas há adicional valores que podem aparecer também, especialmente b para dispositivos de bloco, c para dispositivos de caractere e outros indicadores específicos do sistema.

    
por 27.07.2014 / 06:03

Tags