Não há propriedade em um arquivo que indique que ele está oculto. As primeiras versões do Unix tinham um comando ls
que ocultava arquivos cujo nome começa com .
(“arquivos de ponto”) e essa tradição ficou. O comando ls
, por padrão, oculta arquivos cujo nome começa com .
e mostra todos os outros arquivos.
Alguns gerenciadores de arquivos gráficos ocultam arquivos cujo nome começa com .
, como ls
, porque é o que muitos usuários esperam. O Gnome lançou uma nova convenção, que é a de que os diretórios podem conter um arquivo chamado .hidden
, que contém uma lista de arquivos a serem ocultados (um nome de arquivo por linha, nenhum padrão permitido).
Você não mencionou qual gerenciador de arquivos usou, é possível que ele tenha regras diferentes para ocultar arquivos. Se opencv.sh~
estiver oculto, isso segue regras decididamente não padronizadas, portanto você não pode reclamar legitimamente que ls
não está seguindo essas regras fora do padrão.
Adicionar ~
no final de um nome de arquivo é a convenção para um arquivo de backup. Ou seja, opencv.sh~
é uma versão anterior de opencv.sh
, criada pelo seu editor quando você salvou opencv.sh
.
A versão GNU de ls
suporta uma opção -I
para ignorar padrões extras (além de arquivos de ponto). Se você quiser ocultar os arquivos de backup de ls
, poderá criar um alias que adicione -I "*~"
às opções ls
:
alias ls='ls -I "*~"'
(mais qualquer outra opção desejada, por exemplo, alias ls='ls -I "*~"' --color
para usar cores para indicar tipos de arquivo). Coloque essa linha no seu .bashrc
, .zshrc
ou qualquer outro arquivo de inicialização usado pelo seu shell.