Как сохранить исходный код .bashrc от удаления escape-символов в моей команде псевдонимов с регулярным выражением? - PullRequest
0 голосов
/ 05 апреля 2019

Я использую систему HPC / HTC с плановым режимом работы, и она генерирует журналы отправленных заданий, которые выглядят так: "submit.job.o738523" или "submit.job.e385723".

IРаньше в моем .bashrc была команда псевдонима для удобного удаления этих файлов, например: alias rmlogs='rm *.[oe]* && rm *.p[oe]*' Добавление «p» перед [oe] относится к программе рабочего процесса, которая делает журналы отложенных заданий.К сожалению, это может удалить важные вещи, такие как «setup.exe», поэтому я хотел что-то более конкретное

После долгих испытаний и скорбей я придумал этот псевдоним: alias rmlogs='find ./ -maxdepth 1 -type f -regextype sed -regex '.\+\.[p]*[oe]\+[0-9]\+' -delete'

, который я тестировал наРабота.

К сожалению, когда я запускаю новую оболочку и исходный код .bashrc, команда rmlogs превращается в это: alias rmlogs='find ./ -maxdepth 1 -type f -regextype sed -regex .+.[p]*[oe]+[0-9]+ -delete'

, который не удаляет эти надоедливые файлы журнала.

Итак, что я спрашиваю: есть ли способ получить псевдоним, чтобы сохранить команду как есть?

Или, альтернативно, есть другой способ найти и удалить эти надоедливые файлы (возможно, с помощью функции)

1 Ответ

2 голосов
/ 05 апреля 2019

Вы почти всегда хотите использовать функцию вместо псевдонима:

rmlogs () {
  find ./ -maxdepth 1 -type f -regextype sed -regex '.+.[p]*[oe]+[0-9]+' -delete
}

Это позволяет избежать всего уровня цитирования в дополнение к другим проблемам (например, невозможность предоставить аргументы для псевдонима).

...