Passei algum tempo com a dircolors
página do manual hoje e consegui ajustar as cores para vários elementos do sistema de arquivos. [diretórios, pastas, links]
Também notei que os diretórios que são montados em outros sistemas de arquivos não são o mesmo mapeamento que os diretórios. Além disso, não consigo encontrar uma maneira de mapeá-los porque eles não parecem ser mapeados por dircolors
nada. As seguintes pastas são montadas e aparecem em azul escuro com um sublinhado:
~/data -> /dev/sdb1 (secondary SSD)
/mnt/contoso/files -> DFS Share: //contoso.local/files
/mnt/contoso/projects -> DFS Share: //contoso.local/projects
Eu mudei:
di
: diretórioln
: linkso
: tomadado
: porta
Mas nenhuma delas alterou as cores desses diretórios montados. Imprimi tudo dircolors --print-ls-colors
na tentativa de encontrar qual configuração correspondia à cor desses diretórios montados. Como você pode ver, nenhuma das opções corresponde à cor dos diretórios montados. Existe outra ferramenta responsável por colorir diretórios montados, além de LS_COLORS
/ dircolors
?
Estou surpreso em descobrir que ainda não há um mapeamento para eles aqui, parece o escopo adequado, para mim, para procurar por isso.
Não há opção no GNU
ls
para identificar diretórios¹ que são pontos de montagem.Determinar se um arquivo é um ponto de montagem envolve comparar o id do dispositivo com o do diretório pai², o que não é algo
ls
que faz. Omountpoint
comando faz.ls
expõe as informações relatadas porstat()
/lstat()
/statx()
(todos os atributos dos inodes, como tipo, tamanho, timestamp, propriedade, permissões...), os alvos de symlinks (readlink()
) sobre a presença de outros atributos de segurança, como ACLs ou capacidades, embora geralmente não detalhes sobre eles. O GNUls
no Linux pode fornecer o contexto de segurança do SELinux / SMACK. Mas é só isso.Destes, apenas um subconjunto pode ser usado como base para colorir, principalmente nome e
stat()
informações.Se estiver usando
zsh
, o que você pode fazer é marcar pontos de montagem de diretório em uma listagem de diretórios anexando/
a eles em uma função qualificadora glob e não adicionar a opção-p
/ ou o qualificador do zsh (que são adicionados a todos os diretórios):-F
ls
M
/
Então use por exemplo
ls -ld -- *(+mark_mountpoints)
em vez dels -l
.Aqui, em
/
, que dá:Parece que você não pode definir uma cor para esses arquivos com um final
/
.Em alguns sistemas, você pode ter uma ideia se um diretório é um ponto de montagem adicionando a
-i
opção que exibe o número do inode.Por exemplo, em sistemas baseados em Linux, o número de inode do diretório raiz de um sistema de arquivos ext4 geralmente é 2, e o de um tmpfs e FS virtual é 1. Para outros tipos de sistemas de arquivos, YMMV.
Onde
boot
está o ponto de montagem de um FS ext4,tmp
/dev
de um tmpfs,proc
/sys
de um FS virtual e/
(.
e..
nessa listagem) de um subvol FS btrfs (aqui com 256 como o número do inode).¹ ou outros tipos de arquivos como pontos de montagem não precisam ser diretórios; por exemplo, você pode vincular e montar arquivos sobre outros arquivos.
² ou calcular o caminho completo e comparar com o conteúdo,
/proc/self/mounts
o que também não é infalível.