Я пытаюсь настроить способ для меня просто ввести newjournal
, и называют новую запись журнала year-month-date-time.txt
создается в a year
подкаталог в ~/documents/journals
.
У меня есть настроенный как псевдоним с помощью следующего:
alias newjournal='nano /home/username/documents/journals/'$(date +%Y)'/'$(date +%F-%k%M).txt''
Таким образом, подпапка года решает правильно, и по-видимому также - первая половина команды даты. Испытанное добавление псевдонима с sudo
, не помог.
Проблема: По некоторым причинам, когда я делаю эту команду временная стоимость (%k
) твердость к несколько минут назад... или возможно в прошлый раз, когда нано выполнил это имя файла, возможно, это назвало старый буфер?
Когда я выхожу из системы, это делает корректный файл, затем я сохраняю, ожидаю несколько минут и попробовал еще раз, и это редактирует старый файл вместо того, чтобы делать новый. Даже если я удаляю старый файл, он создает новый файл со старым именем файла (неправильное время).
Вот снимок экрана того, что я пытаюсь объяснить. Здесь я создаю newjournal, сохраняю в нано в течение секунды или двух из выполнения команды, печатаю корректную дату/время, перечисляю файл, который был создан. Отметьте неправильное время имени файла (1249, как соединено к 13:11):
Так или иначе это могло бы быть что-то простое, но я попробовал различные методы в псевдониме, такие как помещение двойных кавычек вокруг всего этого и выхода правильно, единственного заключения в кавычки, выхода и интервала, и т.д.
Спасибо за чтение/справку. Сервер Ubuntu 16.04.
Править: Вот заключительный псевдоним, который работал:
alias newjournal='nano /home/user/journals/"$(date +%Y)"/"$(date +%F-%H%M).txt"'
Необходимый к двойной кавычке дата управляет в полном единственно заключенном в кавычки псевдониме.
date
команды оценены , когда Вы объявляете псевдоним .
Вот псевдоним в качестве примера t
:
$ alias t="echo \"$(date +%k%M)\""
$ alias t
alias t='echo "1357"'
можно зафиксировать это при помощи одинарных кавычек:
$ alias t='echo "$(date +%k%M)"'
$ alias t
alias t='echo "$(date +%k%M)"'
Для большего количества информации, см. Различие между одинарными и двойными кавычками в <час> Bash
Или если команда не должна быть псевдонимом, используйте функцию вместо этого:
$ function t { echo "$(date +%k%M)"; }
$ declare -f t
t ()
{
echo "$(date +%k%M)"
}
Или сценарий:
#!/bin/sh
echo "$(date +%k%M)"
<час> $ alias t='echo '$(date +%k%M)''
$ alias t
alias t='echo 1400'
Думают о том определении псевдонима как о трех строках:
'echo '
$(date +%k%M)
''