如何 cd 到新创建的目录?

如何 cd 到新创建的目录?
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”作为名称的早期部分。

相关内容