Qual é a diferença entre “ls” e “ls -p”? [fechadas]

1

Alguém pode me dizer qual é a diferença entre os comandos ls e ls -p no Linux?

    
por gurupal singh 21.07.2017 / 17:39

4 respostas

6

A opção -p adiciona um / no final dos diretórios, o que ajuda a detectar facilmente qual das saídas é um diretório e qual é um arquivo.

Uma opção semelhante a -p é -F , que usa esses caracteres para indicar:

  • / - > diretórios
  • @ - > links simbólicos
  • | - > arquivos fifo (pipes nomeados).

Por outro lado, ls não faz nada disso.

Essas opções são úteis quando você não usa uma opção como --color ou seu terminal não suporta a colorização da saída.

$ ls
block   dm-1    hwrng

É difícil dizer qual é o diretório e qual é o arquivo, certo? Então:

$ ls -p
block/   dm-1    hwrng

Agora posso dizer que block é um diretório.

    
por Ravexina 21.07.2017 / 17:52
4

ls -p adiciona / após os nomes das pastas, ls não.

    
por Florian Diesch 21.07.2017 / 17:41
1

De man ls (que tem documentação de todos os comandos do Linux)

ls

   ls - list directory contents

ls -p

   -p, --indicator-style=slash
          append / indicator to directories
    
por Abhishek Soni 21.07.2017 / 17:44
0

Se você não notar o efeito de -p , deverá verificar a que ls está com um alias.

Como outros já disseram, ls -p faz com que os nomes dos diretórios sejam mostrados com um / à direita. No entanto, às vezes, as pessoas perguntam sobre quais bandeiras, como -p e -F , podem parecer não ter efeito.

Normalmente, o efeito é claramente aparente:

ek@Io:~/tmp$ ls
directory  regular-file
ek@Io:~/tmp$ ls -p
directory/  regular-file

No entanto, é comum que os usuários tenham um alias de shell ls que adiciona opções. Se uma dessas opções for -p ou outra opção que adicione a barra final aos nomes de diretório , adicionar -p não fará diferença alguma.

No Ubuntu, type ls geralmente mostra ls is aliased to 'ls --color=auto' . (Esse alias é fornecido por alias ls='ls --color=auto' no arquivo .bashrc do usuário, que é copiado de /etc/skel quando a conta do usuário é criada.) Quando um usuário executa ls em um prompt do shell interativo, ele é substituído por ls --color=auto .

Se -p parecer não ter efeito quando você passá-lo para ls , tente executar type ls ou alias ls . (Como é possível, embora raro, ter uma função de shell para ls , type é mais confiável do que alias para descobrir o que está acontecendo aqui.) Isso pode revelar que você tem um ls alias que inclui -p , --indicator-style=slash , -F ou --classify .

Existem algumas maneiras de ignorar expansão de alias:

command ls
\ls
/bin/ls

Esse terceiro comando é equivalente apenas se o executável ls for /bin/ls . Isso é quase sempre o caso; só seria diferente se um segundo executável ls fosse adicionado em outro lugar. Execute type -a ls para ver.

    
por Eliah Kagan 21.07.2017 / 18:23