para el bucle en las lists bash carpetas punto y doble punto

for f in ~/common/.*; do echo $f done 

Las inputs enumeradas son,

 /home/sk/common/. #undesinetworking /home/sk/common/.. #undesinetworking /home/sk/common/.aliasrc 

Y estoy poniendo un hack feo para omitir el procesamiento . y .. para evitar esto,

 if [[ $f == '/home/sk/common/.' || $f == '/home/sk/common/..' ]]; then true else --do the ops fi 

¿Hay una opción de shell que oculte las dotted folders ? Estoy enfrentando este problema con ls -a también.

Aquí hay un método que usa el extglob de bash:

 shopt -s extglob for f in .!(|.); do echo "$f" done 

Con extglob el patrón !(pattern-list) coincide con cualquier cosa, excepto para el patrón dado. El patrón en el ejemplo dice que coincide con todo lo que comienza . y no es seguido por nada u otro solo . .

Usando find

 find ~/common -type f -name ".*" -print0 | \ while read -d $'\0' file; do \ echo $file; \ done 

o con find y IFS

 find ~/common -type f -name ".*" -print0 | \ while IFS= read -rd '' file; \ do echo $file; \ done 

La forma portátil de hacer esto es con una statement de case , y no está de más recortar un poco el glob.

 for f in ~/common/.?*; do case $f in (*/..) ;; (*) : do something w/ "$f" esac done 

Querías decir:

 ls -A 

también puedes usar

 ls -Al 

Esto no includeá la list. y … (es la capital A que hace eso). a mostrará una list de todos, y A enumerará casi todo, casi todas las causas. y … no están en la list.

EDITAR: Lo anterior está dirigido a su segunda pregunta, donde dice que tiene el mismo problema con ls -a

Necesita modificar su patrón global (actualmente * ), probablemente esté buscando {[^.],.?}* , Entonces

 for f in ~/common/.{[^.],.?}*; do echo "$f" done 

.*[!.]

 for f in ~/common/.*[!.]; do echo $f done 

Te daré todo .[...]foo pero no . y ..

Además: aquí está para excluir files de enlace simbólico:

 for f in ~/common/.*[!.]; do [[ -L $f ]] || echo $f done 

.nota: cambio || a && si solo desea hacer eco de los files de enlaces simbólicos.

 find . -maxdepth 1 -type f | while read f do ls -la "$f" done