Сценарий оболочки cp не работает (но работает в терминале) Mac OS X
Недавно я узнал о сценариях оболочки и был озадачен странной ошибкой:
Мой простой скрипт (test.command):
#!/bin/sh
clear
cd /Users/Stan/Desktop/testFolder
ls
cp "earth.png lol.png"
read -p "Done, press ENTER to finish"
Всякий раз, когда я запускаю скрипт (двойной щелчок по файлу.command), здесь выводится (копируется из окна терминала):
earth.png
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
Copy was done...?
earth.png
Done, press ENTER to finish
СР ВСЕГДА выдает ошибку "использования", и НЕ БУДЕТ копировать что-либо, но теперь, если я вручную запускаю ТОТ ЖЕ точные команды, по порядку в терминале (копия окна терминала):
Stans-Mac-mini:testFolder Stan$ ls
earth.png
Stans-Mac-mini:testFolder Stan$ cp earth.png lol.png
Stans-Mac-mini:testFolder Stan$ ls
earth.png lol.png
Stans-Mac-mini:testFolder Stan$
Файл скопирован без ошибок! Пожалуйста, помогите мне исправить это, я не мог найти какие-либо решения онлайн, помощь очень ценится!
2 ответа
Когда вы цитируете исходные и целевые аргументы, предоставленные cp
как одна строка, он получает только один аргумент.
Команда:
cp "earth.png lol.png"
пытается скопировать один файл с именем "earth.png lol.png"
(который, кстати, является совершенно допустимым именем файла), но затем не может предоставить второй аргумент.
Вместо этого процитируйте каждый отдельный аргумент:
cp "earth.png" "lol.png"
+ Изменить cp
команда
cp "earth.png" "lol.png"
cp
Формат команды: cp <from> <to>
, Ваша команда имеет это как cp "<single-file>"
, И то и другое earth.png
а также lol.png
находятся в кавычках, и это делает его одним файлом. Второй аргумент отсутствует, и это является причиной "ошибки использования"