在 tcsh 中创建一个以日期作为名称一部分的文件夹

在 tcsh 中创建一个以日期作为名称一部分的文件夹

我经常需要创建以当前日期开始的文件夹。

例如 190627_ABCD。

我试图创建一个别名命令来获取要打印的日期:

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

但这会导致在最后打印出 +=,而我试图将其用作连接指令。

我的想法是,我可以在命令中添加 ABCD。因此,为了获取 190627_ABCD,我在 shell 中输入:

newf ABCD

但它对我不起作用。非常感谢您的帮助!

答案1

正如解释的那样在 csh 和 tcsh 中编写别名,您可以使用历史扩展(因为在 csh 中,历史扩展发生在别名扩展之前):

myhost:~> alias newf 'mkdir -v `date "+%y%m%d_\!:1"`'
myhost:~> newf ABCD
mkdir: created directory '190627_ABCD'

答案2

如果您希望别名也接受多个参数,请使用历史扩展!*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'

相关内容