cd "$(mkdir -v "$(date -R)"|sed s+.`(.*)'.*)"
这是为了创建一个名为 的目录$(date -R)
。我可以简单地 cd $(date -R)
,但问题是自运行上一个命令以来日期可能会发生变化(mkdir
)。
因此我想解析其输出以确定所创建目录的名称。我该如何更正代码?目前它显示>
提示,表示缺少引号。
更改'
为\'
不会改变结果。如果您有更好的方法,请说出来。
答案1
恕我直言,你把简单的事情变得毫无必要地复杂化了。为什么不做点简单的事情呢?
NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"
答案2
使用 bash,你可以使用历史扩展也:
mkdir "$(date -R)" && cd !#:^
答案3
您的命令中的部分sed
内容相当糟糕。尝试以下操作:
sed -e "s/.*\`\(.*\)'.*/\1/"
如果您经常想要在一个步骤中mkdir
完成cd
此操作,请尝试此(仅限 bash)功能:
mdc () { mkdir "$@" && cd "${!#}"; }
它只是环绕着mkdir
。像 一样使用它mdc [mkdir options] newdir
并确保newdir
最后使用。
答案4
附言:你不需要使用sed
来输出date
,因为date
它本身就有一些很好的格式化工具。如果你传递一个以“+”开头的字符串,那么你可以使用来自的格式化代码时间字符串。
$ date '+%Y-%m-%d_%H-%M-%S'
我个人会使用可排序的内容作为目录名称,这意味着我永远不会使用“Fri”作为名称的早期部分。