добавление второй команды в скрипт Python с аргументами

У меня есть псевдоним для сценария Python, который в основном конвертирует некоторые файлы в другой формат, и я хочу иметь возможность удалить некоторый промежуточный формат, который этот сценарий генерирует как последующий процесс после запуска сценария Python.

Мой псевдоним для моего скрипта Python выглядит следующим образом:

alias convert='python /filepath/convert.py'

Я запускаю его в каталоге, содержащем файлы, которые я хочу конвертировать:

convert *.RW2

Сценарий преобразует все файлы .RW2 в файлы .tiff, но создает промежуточный файл .dng, который мне не нужно хранить, это временный файл.

Как бы я просто добавил удаление к псевдониму? Если я изменяю псевдоним, он, кажется, мешает аргументам для сценария .py, например, это не работает:

alias convert='python /filepath/convert.py && rm *.dng'

0
задан 9 July 2019 в 15:45

1 ответ

Вероятно, "самый чистый" способ решить это состоит в том, чтобы изменить convert.py сценарий для чистки после себя.

Псевдоним является простым текстовым заменяющим макросом - таким образом, Ваш пример расширится до чего-то как

python /filepath/convert.py && rm *.dng file1.RW2 file2.RW2 file3.RW2 ...

который будет очевидно неправильным. Для чего-либо более сложного, чем простая текстовая замена необходимо использовать функцию оболочки вместо этого напр.

convert() {
  python /filepath/convert.py "$@" && rm -- *.dng
}

или возможно

convert() {
  python /filepath/convert.py "$@"
  for f; do 
    rm -- "${f%.*}.dng"
  done
}

(хотя можно хотеть выбрать другое имя, так как уже существует команда ImageMagick с именем convert).

См. также Псевдонимы - способный передать аргументы?

3
ответ дан 24 October 2019 в 00:26

Другие вопросы по тегам:

Похожие вопросы: