¿El comportamiento de .*incluir .y ..definir en LSB o POSIX o alguna otra especificación?
Citando de la especificación Single Unix versión 2, volumen "Comandos y utilidades", §2.13.3 :
Si un nombre de archivo comienza con un punto (
.), el período debe coincidir explícitamente utilizando un punto como primer carácter del patrón o inmediatamente después de un carácter de barra diagonal. (...) No se especifica si un período explícito en una lista de coincidencia de expresiones de paréntesis, como[.abc]puede coincidir con un período inicial en un nombre de archivo.
No hay ninguna excepción que haga que el segundo período en .., o la cadena vacía que sigue al único período en ., no coincida con el comodín en .*. Por lo tanto, el estándar dice que .*coincide .y.. , por muy molesto que sea.
El pasaje anterior describe el comportamiento del shell ( shcomando). La sección sobre la globfunción de biblioteca C hace referencia a este pasaje.
El lenguaje es exactamente el mismo en la versión 3 , también conocida como POSIX: 2001 e IEEE 1003.1-2001, que es lo que implementan la mayoría de los sistemas actuales.
Dash, bash y ksh93 cumplen con POSIX. Pdksh y zsh (incluso debajo emulate sh) no.
En ksh, puede .*omitir .y ..configurar FIGNORE='.?(.)', pero esto tiene el efecto secundario de *incluir archivos de puntos. O puede configurar FIGNORE='.*', pero luego .*no coincide con nada.
En bash, puede .*omitir .y ..configurar GLOBIGNORE='.:..', pero esto tiene el efecto secundario de *incluir archivos de puntos. O puede configurar GLOBIGNORE='.*', pero luego .*no coincide con nada.
bashno siempre cumple con POSIX. solo cuando se invoca comosh.Probablemente te refieres a la funcionalidad en bash expansion sobre globignore. Por defecto, la coincidencia de expansión bash. y ... pero leyendo al hombre:
Puede configurar la variable
GLOBIGNORE=.:..para que cuando escriba algo como esto:solo está eliminando el directorio actual. El estándar POSIX solo especifica eso. es el directorio actual y ... en el padre del directorio actual. El significado especial de. * Es interpretado por bash u otros shells (o programas como grep).
fuente
La página de manual de Linux hace referencia a POSIX.2, 3.13.
fuente
man,man globo las páginas de manual para estar presentes? No pude encontrar hombre aquí (para mi sorpresa).Por lo que puedo decir, el LSB 4.1 no requiere
bashy solosh.Para
shello sigue POSIX (con una extensión menor no relevante).fuente