![Linux sin errores](https://rvso.com/image/122432/Linux%20sin%20errores.png)
echo "aaa" >abc.1.txt echo "bbb" >abc.2.txt cp abc*
Linux sin errores
error mismo comando [cp abc.1.txt abc.2.txt]
cp abc.* = cp abc.1.txt abc.2.txt
¿por qué?
Respuesta1
Eso no es un error, es el comportamiento previsto para la expresión de variables de shell.
Como ha dicho correctamente ulrich-schwarz, la expansión variable ocurre antes de que cp
se ejecute el comando. Tienes dos archivos que cumplen con la condición de la expresión abc*
, por lo que se expande a sus nombres completos.
De hecho, si crea un tercer archivo, abc.3.txt
intentará utilizar los tres archivos como parámetros para cp
.
Puede verificar todo esto si configura el set -x
modo de depuración () antes de ejecutar el comando, que le muestra cada comando real a medida que se ejecuta, después de que ocurre la expansión. Recuerde desactivar el modo de depuración ( set +x
) una vez que termine.
$ echo "aaa" >abc.1.txt
$ echo "bbb" >abc.2.txt
$ ls
abc.1.txt abc.2.txt
$ set -x
$ cp abc*
+ cp abc.1.txt abc.2.txt
$ cat abc.2.*
+ cat abc.2.txt
aaa
$echo "ccc" > abc.3.txt
+ echo ccc
$ cp abc*
+ cp abc.1.txt abc.2.txt acb3.txt
cp: target «acb3.txt» is not a directory
$ cat abc.2.*
+ cat abc.2.txt
aaa
$ cat abc*
+ cat abc.1.txt abc.2.txt abc.3.txt
aaa
aaa
ccc
$ set +x
+ set +x