GNU/Linux >> Tutoriales Linux >  >> Linux

¿La configuración en Bash para Globbing, para controlar si * coincide con los archivos de puntos?

Recientemente me sorprendí cuando hice algo como
mv ./* ../somedirectory
y encontré que archivos como .gitignore no se movieron.

Hago la mayor parte de mi trabajo en zsh en OS X, y esta sorpresa me mordió en bash en CentOS. Probé bash en OS X y encontré el mismo comportamiento:* no coincide con los archivos de puntos. Esto me parece muy indeseable, pero aparentemente es el valor predeterminado de bash. (Por lo que recuerdo, también puede ser el valor predeterminado de zsh, pero es posible que lo haya cambiado hace años en mi .zshrc y haya olvidado que alguna vez funcionó de manera diferente).

¿Cómo puedo configurar bash para que se comporte como esperaba:para que * coincida con todos los archivos y no ignore los archivos de puntos?

En caso de que esto no esté del todo claro, he aquí cómo reproducirlo

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

Respuesta aceptada:

Golpe

Como ya notó, bash no coincidirá con un . al comienzo del nombre o una barra inclinada. Para cambiar la coincidencia con respecto al punto, debe configurar el dotglob opción - man bash:

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

Para habilitarlo/configurarlo con bash use shopt , por ejemplo:

shopt -s dotglob

Para zsh también puede usar dotglob opción pero tendrás que usar setopt para habilitarlo, por ejemplo:

setopt dotglob

Linux
  1. ¿Cuál es el propósito de la palabra clave "do" en Bash For Loops?

  2. ¿Es posible que la finalización de Bash pase por las alternativas?

  3. Obtener todos los archivos excepto los archivos en matriz:¿Bash?

  4. Linux:¿obtener archivos para la fecha actual en Linux?

  5. Imprimir fecha para el lunes de la semana actual (en bash)

4 herramientas Markdown para la línea de comandos de Linux

Sugerencias para enumerar archivos con ls en la línea de comandos de Linux

Bash For Loop:la guía más práctica

El Bash FOR Loop explicado y simplificado

Elimine todos los archivos excepto los 3 más nuevos en bash script

¿Cómo cambiar la resolución de Bash para una máquina virtual Debian?