Linux sin errores

Linux sin errores

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 cpse 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.txtintentará utilizar los tres archivos como parámetros para cp.

Puede verificar todo esto si configura el set -xmodo 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

información relacionada