Создайте папку с датой как часть имени в tcsh

Мне часто нужно создавать папки, которые начинаются с текущей даты.

Например, 190627_ABCD.

Я попытался создать команду псевдонима, которая получает дату для печати:

a newf 'mkdir `date '+%y%m%d'_`+='

Но это приводит к печати + = в конце, которую я пытался использовать как инструкция для объединения.

Идея в том, что я могу добавить ABCD в команду. Поэтому, чтобы получить 190627_ABCD, я набираю в оболочке:

newf ABCD

Но это не работает для меня. Благодарен за любую помощь!

2
задан 27 June 2019 в 20:46

2 ответа

Как объяснено в Написание псевдонимов в csh и tcsh , вы можете использовать расширение истории (поскольку в csh расширение истории происходит до расширения псевдонимов):

myhost:~> alias newf 'mkdir -v `date "+%y%m%d_\!:1"`'
myhost:~> newf ABCD
mkdir: created directory '190627_ABCD'
2
ответ дан 27 June 2019 в 20:46

Если вы хотите, чтобы ваш псевдоним также принимал несколько аргументов, используйте расширение истории !* и foreach для их циклического перебора:

foreach name (!*)
  mkdir -v `date +%y%m%d_"$name"`
end

Пример

myhost:~> alias newf 'foreach name (\!*)\
? mkdir -v `date +%y%m%d_"$name"`\
? end'
myhost:~> alias
newf    foreach name (!*)
mkdir -v `date +%y%m%d_"$name"`
end
myhost:~> newf a b
mkdir: created directory '190627_a'
mkdir: created directory '190627_b'
1
ответ дан 27 June 2019 в 20:46

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

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