Я пытаюсь настроить способ, чтобы я просто набирал «newjournal», а новая запись журнала со специальной строкой year-month-date-12hourclocktime.txt создается в подкаталоге «year» в моем папка журналов в «документах», внутри домашней папки.
Я настроил его как псевдоним, используя следующее:
alias newjournal='nano /home/username/documents/journals/'$(date +%Y)'/'$(date +%F-%k%M).txt''
Таким образом, вложенная папка года правильно решает и, похоже, делает первую половину команды date.
Проблема: по какой-то причине, когда я делаю эту команду, значение времени (% k) разрешается несколько минут назад ... или, может быть, последнее время nano запускало это имя файла, может быть, это называется старым буфером? Когда я выхожу из файла, он делает правильный файл, затем я сохраняю, подожду несколько минут и повторю попытку, и он редактирует старый файл вместо создания нового. Даже если я удалю старый файл, он создаст новый файл со старым именем файла (неправильное время).
Вот скриншот того, что я пытаюсь объяснить. Здесь я создаю новый журнал, сохраняя nano в течение секунды или двух из команды, печатаю правильную дату / время, перечислим созданный файл. Обратите внимание на неправильное время имени файла (1249, как указано в 13:11):
В любом случае, это может быть что-то простое, но я пробовал разные методы в псевдониме как положить двойные кавычки вокруг всего этого и убежать должным образом, одинарные кавычки, экранирование и интервал и т. д.
Спасибо за чтение / помощь. Сервер Ubuntu 16.04.
Команды 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)"
}
$ alias t='echo '$(date +%k%M)''
$ alias t
alias t='echo 1400'
Подумайте об этом определении псевдонимов как о трех строках:
Одна строка с одной кавычкой: 'echo ' Одна строка без кавычек: $(date +%k%M) Один одиночный кавычек string: ''Команды 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)"
}
$ alias t='echo '$(date +%k%M)''
$ alias t
alias t='echo 1400'
Подумайте об этом определении псевдонимов как о трех строках:
Одна строка с одной кавычкой: 'echo ' Одна строка без кавычек: $(date +%k%M) Один одиночный кавычек string: ''Команды 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)"
}
$ alias t='echo '$(date +%k%M)''
$ alias t
alias t='echo 1400'
Подумайте об этом определении псевдонимов как о трех строках:
Одна строка с одной кавычкой: 'echo ' Одна строка без кавычек: $(date +%k%M) Один одиночный кавычек string: ''