GNU/Linux >> Linux Esercitazione >  >> Linux

L'impostazione in Bash per il globbing, per controllare se * corrisponde ai file Dot?

Di recente sono rimasto sorpreso quando ho fatto qualcosa come
mv ./* ../somedirectory
e ho trovato file come .gitignore non sono stati spostati.

Faccio la maggior parte del mio lavoro in zsh su OS X e questa sorpresa mi ha morso in bash su CentOS. Ho provato bash su OS X e ho riscontrato lo stesso comportamento:* non corrisponde ai file dot. Questo mi sembra molto indesiderabile, ma a quanto pare è l'impostazione predefinita di bash. (Potrebbe essere anche l'impostazione predefinita zsh per tutto ciò che ricordo, ma potrei averlo cambiato anni fa nel mio .zshrc e aver dimenticato che ha mai funzionato in modo diverso.)

Come posso configurare bash in modo che si comporti come previsto:affinché * corrisponda a tutti i file e non ignori i file dot.

Nel caso in cui ciò non fosse affatto chiaro, ecco come riprodurlo

cd /tmp
mkdir {t,d}est
touch test/{.,}{1,2,3,4,5,6,7}
ls -hal test
mv test/* dest
ls -hal test     # notice dot files are still there
ls -hal dest     # notice only some files were mv'ed

Risposta accettata:

Bash

Come hai già notato, bash non corrisponderà a un . all'inizio del nome o una barra. Per modificare la corrispondenza relativa al punto è necessario impostare il dotglob opzione – man bash:

dotglob If set, bash includes filenames beginning with a `.'  in
    the results of pathname expansion.

Per abilitarlo/impostarlo con bash usa shopt , ad esempio:

shopt -s dotglob

Per zsh puoi anche usare il dotglob opzione ma ma dovrai usare setopt per abilitarlo, ad esempio:

setopt dotglob

Linux
  1. Suggerimenti Bash per tutti i giorni dalla riga di comando

  2. Come verificare la presenza di file di grandi dimensioni nella console

  3. Tieniti aggiornato - Bash For, While, Until Esempi di loop

  4. Come cambio la directory in Git Bash con Git per Windows?

  5. Come modificare la risoluzione di Bash per una VM Debian?

4 Strumenti di markdown per la riga di comando di Linux

Suggerimenti per elencare i file con ls nella riga di comando di Linux

Bash For Loop – La guida più pratica

Il ciclo Bash FOR spiegato e semplificato

Stampa la data per il lunedì della settimana corrente (in bash)

Elimina tutti i file tranne i 3 più recenti nello script bash