我需要偶尔使用当前时间戳作为文件名的文件。我会这样做:
touch `date "+%Y-%m-%d_%H-%M"`.txt
Run Code Online (Sandbox Code Playgroud)
但是,我想为此定义一个别名。当我尝试添加到 bashrc 时:
alias td="touch `date \"+%Y-%m-%d_%H-%M\"`.txt"
Run Code Online (Sandbox Code Playgroud)
结果是文件名在整个会话期间是相同的,因为在登录期间只计算了一次“日期..”...
仅当我调用别名时,如何才能让命令展开?或者我必须为此使用一个函数?
谢谢
shell 扩展包含alias
命令的命令行并将类似的内容传递td=touch 2010-09-17_21-54.txt
给alias
命令。您需要保护别名定义中的特殊字符不被扩展。最简单的方法是使用单引号而不是双引号:
alias td='touch `date "+%Y-%m-%d_%H-%M"`.txt'
Run Code Online (Sandbox Code Playgroud)
然后td
是touch `date "+%Y-%m-%d_%H-%M"`.txt
根据需要的别名。
虽然这不是问题,但我建议使用$(…)
而不是`…`
,以避免复杂命令的困难(反引号具有神秘且不可移植的引用规则,而美元括号直观地工作):
alias td='touch $(date "+%Y-%m-%d_%H-%M").txt'
Run Code Online (Sandbox Code Playgroud)