rm recursão só funciona para baixo correto?
rm -r x yirá excluir xe ytudo dentro deles (se forem diretórios), mas não seus pais ou qualquer coisa fora deles.
Em execução: sudo rm -R *.QTFSexcluirá todos os arquivos * .QTFS no diretório atual e seus filhos, correto?
Não. Ele excluirá todos os arquivos nomeados *.QTFS, todos os arquivos recursivamente dentro dos diretórios chamados *.QTFSe os próprios diretórios. Se você quiser esse outro comportamento de exclusão, use find -delete.
O diretório atual, como exibido por, ls -lhatambém contém .e ..links para a falta de uma palavra melhor; então, por que a recursão não os segue na árvore de diretórios? Existe um limite artificial no aplicativo rm, ou .e ..não são coisas reais?
É um limite artificial de rm.
No entanto, não é tão artificial - é a única maneira de funcionar. Se rmseguissem os ..links principais , todos rm -rremoveriam todos os arquivos do sistema, seguindo todos os ..links até o final /. rmvê as entradas ..e .em cada diretório quando lista o conteúdo e as ignora explicitamente por esse motivo.
Você pode tentar isso sozinho, de fato. Execute rm -r .e a maioria das rmimplementações se recusará a agir, relatando um erro explicitamente:
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(essa mensagem é do GNUrm ; outros são semelhantes). Quando encontra essas entradas implicitamente, e não como argumentos explícitos, apenas as ignora e continua. Esse comportamento é exigido pelo POSIX . No GNU rme em muitos dos BSDs, é fornecido automaticamente pela fts_readfamília de funções de passagem pela hierarquia.
ou .e ..não são coisas reais?
.e geralmente.. são entradas de diretório reais, embora isso seja específico do sistema de arquivos. Eles quase sempre serão apresentados como se fossem entradas reais para todo o código do usuário, independentemente. Muitos programas (e não apenas ) casos especiais de comportamento para capturar ou impedir recursões descontroladas ou indesejáveis.rm