![在 tcsh 中创建一个以日期作为名称一部分的文件夹](https://linux22.com/image/913538/%E5%9C%A8%20tcsh%20%E4%B8%AD%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E4%BB%A5%E6%97%A5%E6%9C%9F%E4%BD%9C%E4%B8%BA%E5%90%8D%E7%A7%B0%E4%B8%80%E9%83%A8%E5%88%86%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我经常需要创建以当前日期开始的文件夹。
例如 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'