我经常需要创建以当前日期开始的文件夹。
例如 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'