abbat/ydcmd

Подстановка имени файла в путь папки для загрузки

Closed this issue · 4 comments

DX37 commented

Только что столкнулся с одним неприятным обстоятельством: как обычно я пользуюсь cp, написал ydcmd put file.jar Dir/dir, ожидая что файл загрузится в эту папку. Вместо этого у меня снеслась ВСЯ папка dir, даже не попав в корзину.
Я теперь знаю, что надо было писать примерно так: ydcmd put file.jar Dir/dir/file.jar. Но, может, исправить эту ошибку на будущее?

abbat commented

Очень жаль, что вы потеряли файлы перезаписав их, но в данном случае программа повела себя именно так, как задумывалось. Для того, чтобы положить файл в директорию с тем же именем можно использовать следующий синтаксис (обратите внимание на слеш / в конце, который и указывает на то, что файл нужно положить в директорию):

$ ydcmd put file.jar Dir/dir/

Так же, для того, чтобы удаление (намеренное или ненамеренное) приводило к удалению в корзину, необходимо использовать параметр --trash в командной строке или добавить trash = 1 в конфигурационный файл ~/.ydcmd.cfg:

$ ydcmd --trash put file.jar Dir/dir
$ ydcmd ls trash:/
<перезаписанная директория переместится в корзину>
DX37 commented

Хм, про добавление trash в конфиг не был в курсе.
Ладно, спасибо за ответ. Ваша программа очень пригодилась для скрипта 😀

Сейчас столкнулся с точно такой же ситуацией. Не указал в конце /, в результате скрипт удалил всю папку. ИМХО, необходимо в скрипке учитывать такой момент (имею ввиду отсутствие слеша в конце) , потому что в стандартных утилитах, типа mv,cp и т.п. слеш не обязателен и мы по привычке пишем без него.

думаю попробовать написать bash_completion скрипт, который бы при нажатии на TAB заполнял аргументы как нужно. Перед заполнением скрипту придется отправлять запросы типа команды ydcmd.py ls и фильтровать ее вывод. Ему нужно будет понимать что является файлом и что директорией