Se necesitan dos patrones globales para cubrir todos los posibles “archivos punto”: .[^.]*
y ..?*
.
La primera coincide con todas las entradas de directorio con dos o más caracteres donde el primer carácter es un punto y el segundo carácter no es un punto. El segundo recoge entradas con tres o más caracteres que comienzan con ..
(esto excluye ..
porque solo tiene dos caracteres y comienza con .
, pero incluye entradas (poco probables) como ..foo
).
chmod g+w .[^.]* ..?*
Esto debería funcionar bien en la mayoría de las conchas y es adecuado para las secuencias de comandos.
Para el uso interactivo regular, los patrones pueden ser demasiado difíciles de recordar. En esos casos, su caparazón podría tener una forma más conveniente de omitir .
y ..
. zsh siempre excluye .
y ..
de patrones como .*
. Con bash, debe usar la variable de shell GLOBIGNORE.
# bash
GLOBIGNORE=.:..
echo .*
quizás debería definir GLOBIGNORE en una de sus de bash archivos de personalización (por ejemplo .bash_profile
/o .bash_login
.bashrc
). Tenga cuidado, sin embargo, acostumbrarse a esta personalización si a menudo usa otros entornos. Si ejecuta un comando como chmod g+w .*
en un entorno al que le falta su personalización, inesperadamente terminará incluyendo .
y ..
en su comando.
Además, se pueden configurar las conchas para incluir archivos “punto” en los patrones que no empiezan con un punto explícita (por ejemplo *
).
# zsh
setopt glob_dots
# bash
shopt -s dotglob
# show all files, even “dot files”
echo *
En realidad, ese GLOBIGNORE es bueno. Puedes hacerlo temporalmente con '(GLOBIGNORE = ..; echo. *)' Si no quieres que sea permanente. +1 por esa pequeña información solo. – paxdiablo
Existe una advertencia con el englobador '. [^.] * ..? *' Donde generalmente se quejará de que no coinciden las partes ...? *, A menos que compre nullglob. – pixelbeat