Мне часто нужно создавать папки, которые начинаются с текущей даты.
Например, 190627_ABCD.
Я попытался создать команду псевдонима, которая получает дату для печати:
a newf 'mkdir `date '+%y%m%d'_`+='
Но это приводит к печати + = в конце, которую я пытался использовать как инструкция для объединения.
Идея в том, что я могу добавить ABCD в команду. Поэтому, чтобы получить 190627_ABCD, я набираю в оболочке:
newf ABCD
Но это не работает для меня. Благодарен за любую помощь!
Как объяснено в Написание псевдонимов в csh и tcsh , вы можете использовать расширение истории (поскольку в csh расширение истории происходит до расширения псевдонимов):
myhost:~> alias newf 'mkdir -v `date "+%y%m%d_\!:1"`'
myhost:~> newf ABCD
mkdir: created directory '190627_ABCD'
Если вы хотите, чтобы ваш псевдоним также принимал несколько аргументов, используйте расширение истории !*
и 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'