¿Hay alguna diferencia entre las secuencias {1,2,3}y {1..3}?
Por ejemplo si tengo algunos archivos
file.1
file.2
file.3
y los quiero catjuntos ¿es seguro usarlos cat file.{1..3} > file?
Lo que sé es que cat file.*>filepodría causar problemas porque el shell puede expandir los archivos de forma aleatoria a veces (creo que esto depende de los inodes, ¿no?)

cat file.[123] >filefile.*no depende de los inodes. Siempre los ordena lexicográficamente, lo que podría depender de su configuración de localización.file.{1..3}que se expande a los tres si existen o no.caterroresfile.[123] not foundo algo muy útil.Respuestas:
{1..3}y{1,2,3}producen el mismo resultado, pero de manera diferente.En general,
{n1..n2}(que fue primero dezsh,bashykshcopiado más tarde) donden1yn2son números enteros que producen todos los números entren1yn2. Mientras{x,y,z}producen tres personajesx,yyz.En su caso, es seguro usar
cat file.{1..3} > fileAhora, en el caso de
cat file.*>file, usó el globbing de shell , que produce el inicio de todos los nombres de archivofile.y el resultado se ordenará según el orden de clasificación en el entorno local actual.Todavía está a salvo, pero ya no cuando tiene más de 10 archivos.
{1..10}le dará1 2 3 4 5 6 7 8 9 10. Mientras que con globbing, obtendrás1 10 2 3 4 5 6 7 8 9fuente
La diferencia es que una es una lista y la otra una secuencia.
{1,2,3}expande a tres elementos específicos,1,2, y3.{1..3}se expande a la lista de números entre uno y tres. En este caso particular, son iguales y puede usar cualquiera de los dos.file.*se expandirá a todos los archivos y directorios en el directorio actual cuyo nombre comienza confile.. Si solo tienesfile.1,file.2yfile.3eso también es equivalente a los otros dos.En cuanto a que causa problemas, no veo por qué. Tal vez estés pensando en
Eso, sin embargo, es un tema completamente diferente. El único otro problema que se me ocurre es que su shell podría no enumerar los archivos en el orden correcto. Por ejemplo:
Para resolver eso, puede usar en
zshlugar debash(ver aquí para más detalles):En general, los tres enfoques no son lo mismo. Depende de lo que quieras hacer. En los casos en que los tres devuelven la misma salida, sí, puede usar cualquiera de ellos. No hace ninguna diferencia. Todas estas expansiones las realiza el shell y suceden antes de pasarlas a cualquier comando que las use.
fuente
*si tuviera más o igual a 10 archivos, si dependiera del orden correcto?ARG_MAXarchivos, pero eso será mucho más que 10.cat *no está bien definida. El resultado depende del shell y del entorno. Ver el comentario de Sebastian ..txtresolver el problema confile.*?Son iguales, pero depende de la versión de bash que haya instalado si están disponibles.
Desde esta página:
fuente