centos 6.3 comando bug [cp] [fechado]

1

echo "aaa" > abc.1.txt echo "bbb" > abc.2.txt cp abc *

linux sem erro

erro mesmo comando [cp abc.1.txt abc.2.txt]

cp abc. * = cp abc.1.txt abc.2.txt

por quê?

    
por user262450 24.11.2017 / 04:27

1 resposta

1

Isso não é um bug, é o comportamento pretendido para a expressão de variável de shell.

Como ulrich-schwarz afirmou corretamente, a expansão da variável acontece antes que o comando cp seja executado. Você tem dois arquivos que atendem à condição de expresion abc* e, portanto, são expandidos para seus nomes completos.

De fato, se você criar um terceiro arquivo abc.3.txt , ele tentará usar os três arquivos como parâmetros para cp .

Você pode verificar tudo isso se definir o modo de depuração ( set -x ) antes de executar o comando, que mostra cada comando real à medida que é executado, após a expansão ocorrer. Lembre-se de desativar o modo de depuração ( set +x ) quando terminar.

$ 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
    
por 24.11.2017 / 10:02

Tags