4

Мне нужно время от времени касаться файла с текущей меткой времени в качестве имени файла. Я бы сделал так:

touch `date "+%Y-%m-%d_%H-%M"`.txt

Тем не менее, я хотел бы определить псевдоним для этого. Когда я пытаюсь добавить в bashrc это:

alias td="touch `date \"+%Y-%m-%d_%H-%M\"`.txt"

В результате имя файла остается неизменным на протяжении всего сеанса, поскольку `date ..` вычисляется только один раз при входе в систему ...

Как я могу получить команду расширения только при вызове псевдонима? Или я должен использовать функцию для этого?

Спасибо

1 ответ1

6

Оболочка раскрывает командную строку, содержащую команду alias и передает что-то вроде td=touch 2010-09-17_21-54.txt в команду alias . Вам необходимо защитить специальные символы в определении псевдонима от раскрытия. Самый простой способ - использовать одинарные кавычки вместо двойных кавычек:

alias td='touch `date "+%Y-%m-%d_%H-%M"`.txt'

Тогда td является псевдонимом для touch `date "+%Y-%m-%d_%H-%M"`.txt по желанию.

Хотя здесь это не проблема, я рекомендую использовать $(…) вместо `…` , чтобы избежать трудностей со сложными командами (обратные кавычки имеют тайные и непереносимые правила цитирования, тогда как долларовые скобки работают интуитивно):

alias td='touch $(date "+%Y-%m-%d_%H-%M").txt'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .