Предположим, что следующая строка является вашим примером.
bundle exec thor migrator:export /var/tmp/backups --after "2016-12-22 00:00:00 -0700"
Вы можете использовать подстановку команд для этой работы.
bundle exec thor migrator:export /var/tmp/backups --after "$(date --iso) 00:00:00 -0700"
Но я бы скорее рекомендовал поместить вашу команду в отдельный сценарий оболочки и запустить сценарий оболочки из cron
.
Один из способов добиться этого:
!
, где вы должны написать команду, которая будет выбрана на стандартном вводе. Вы можете использовать команду|
для передачи части файла через другую программу, но эта часть всегда состоит как минимум из двух строк. Вы можете взломать его вместе с метками и tail
, хотя:
tail -n 1 |...
, где ...
— любая команда, которая будет получать эту строку в качестве стандартного ввода. tail -n 1
даст нам только вторую строку, которая нас интересует. ...
делает с этой строкой то, что хочет.
Если вы хотите использовать строку в качестве аргумента команды вместо стандартного ввода, вы можете использовать xargs
или другую оболочку:
tail -n 1 | xargs ls -l
Если эта команда что-то отображает, она не останется видимой на экране, но вы можете снова передать ее в less
:
tail -n 1 | xargs ls -l | less
Это будет вложенныйless
:вы выйдете из него, а затем вернетесь в исходный less
и сможете повторить процесс.
Если команда каким-то образом интерактивна, как текстовый редактор, и не хочет, чтобы ее стандартный ввод был вертикальной чертой или нулем,вы можете использовать процессsh
в середине, чтобы запустить команду и снова открыть tty:
xargs sh -c 'vim "$@" < /dev/tty' sh
BSD xargs
также имеет опцию -o
, позволяющую делать то же самое.