команда даты, не решая правильно в псевдониме удара

Я пытаюсь настроить способ для меня просто ввести 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):

screenshot

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

Спасибо за чтение/справку. Сервер Ubuntu 16.04.

Править: Вот заключительный псевдоним, который работал:

alias newjournal='nano /home/user/journals/"$(date +%Y)"/"$(date +%F-%H%M).txt"'

Необходимый к двойной кавычке дата управляет в полном единственно заключенном в кавычки псевдониме.

3
задан 8 September 2019 в 18:48

1 ответ

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'

Думают о том определении псевдонима как о трех строках:

  1. Одна единственно заключенная в кавычки строка: 'echo '
  2. Одна неупомянутая строка: $(date +%k%M)
  3. Одна единственно заключенная в кавычки пустая строка: ''
6
ответ дан 1 December 2019 в 15:22

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

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