Quando você coloca o * entre aspas, ele espera que seja o nome literal do arquivo em vez de fazer uma expansão correspondente a todas. Basta tirar as aspas e isso vai funcionar. Além disso, confira superuser.com, que é onde as perguntas são assim.
Estou usando o seguinte comando em uma máquina Mac OS X:
cp "/Users/username/Desktop/silverlock-dev/silverlock/../3rdparty/botan-build-desktop/src/libBotan*" "/Users/username/Desktop/silverlock-dev/silverlock-build-desktop/silverlocklib/../bin"
No entanto, obtenho:
cp: /Users/username/Desktop/silverlock-dev/silverlock/../3rdparty/botan-build-desktop/src/libBotan*: No such file or directory
Existem claramente 4 arquivos nesse diretório chamados:
libBotan.1.0.0.dylib
libBotan.1.0.dylib (symlink to first file)
libBotan.1.dylib (symlink to first file)
libBotan.dylib (symlink to first file)
Se eu soletrar o nome completo do arquivo no comando copy, ele funcionará bem, mas eu preciso poder usar curinga como parte de um processo de compilação. Lógica e razão me dizem que isso deve funcionar sem problemas. Estou sentindo falta de algo simples?
Quando você coloca o * entre aspas, ele espera que seja o nome literal do arquivo em vez de fazer uma expansão correspondente a todas. Basta tirar as aspas e isso vai funcionar. Além disso, confira superuser.com, que é onde as perguntas são assim.
Quando o shell expande curingas em sua linha de comando, ele primeiro é dividido em espaços, e expande curingas. Os nomes de arquivos expandidos (que podem conter espaços) são passados como um argumento completo para o comando ( cp
).
Observe que o comando ( cp
neste caso) nunca vê as aspas que você usa na linha de comando do shell e não divide seus próprios argumentos nos espaços. Ele recebe uma lista de strings não citadas, cada uma das quais pode conter espaços.