bash mover arquivos ocultos, redefinir dotglob?

3

Eu queria mover todos os arquivos, inclusive começando com ponto (oculto) e pastas (recursivamente).

Então eu usei os seguintes comandos

shopt -s dotglob nullglob
mv ~/public/* ~/public_html/

e funcionou.

Mas eu preciso redefinir qualquer coisa depois de fazer shopt -s dotglob nullglob ? Não muda como os comandos como mv operam? Porque eu gostaria que mudasse de volta.

    
por krecentas 23.01.2017 / 17:29

3 respostas

2

Sim, você teria que desmarcar essas opções (com shopt -u nullglob dotglob ) depois se quisesse que o comportamento de globalização padrão voltasse ao shell atual.

Você poderia apenas fazer

mv ~/public/* ~/public/.* ~/public_html/

Isso ainda geraria um erro sem nullglob set se um dos padrões não correspondesse a nada, obviamente, mas funcionaria sem precisar definir nenhuma opção. Provavelmente, também diz algo sobre a falha ao renomear . , já que é um diretório, mas isso também não impede que ele mova os arquivos.

Uma opção melhor pode ser usar rsync localmente:

rsync -av ~/public/ ~/public_html/

e, em seguida, exclua ~/public .

    
por 23.01.2017 / 17:37
3

Basta desmarcá-los:

shopt -u dotglob nullglob

don_crissti faz um bom ponto que eu vou elaborar. Não está claro a partir da pergunta se o dotglob ou o nullglob já estavam definidos antes de executar shopt -s para configurá-los. Assim, desligá-los cegamente pode não ser o correto reset para fazer. Configurá-los em um subshell deixaria as configurações do shell atual inalteradas:

( shopt -s dotglob nullglob; mv ~/public/* ~/public_html/ )
    
por 23.01.2017 / 18:18
0

Quaisquer alterações feitas pelo shopt afetarão apenas o shell que você está executando quando você executa o comando. IE, uma vez que você fecha o shell, a mudança desaparece. Então, a menos que você queira manter um shell aberto por um longo tempo (o que alguns fazem, usando screen ou similar) você não precisa se preocupar com isso.

Pessoalmente, eu uso rsync como sugerido por @Kusalananda

    
por 23.01.2017 / 17:53