IMHO você está fazendo algo simples desnecessariamente complexo. Por que não apenas fazer algo simples como.
NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"
cd "$(mkdir -v "$(date -R)"|sed s+.'(.*)'.*)"
Isso serve para criar um diretório chamado $(date -R)
. Eu poderia simplesmente cd $(date -R)
, mas o culpado é que a data pode mudar desde que o comando anterior foi executado ( mkdir
).
Portanto, quero analisar sua saída para determinar o nome da pasta criada. Como faço para corrigir o código? Atualmente, exibe >
prompt, indicando que uma cotação está faltando.
A alteração de '
para \'
não altera o resultado. Se você tem uma maneira melhor de fazer isso, por favor diga.
IMHO você está fazendo algo simples desnecessariamente complexo. Por que não apenas fazer algo simples como.
NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"
Com o bash, você pode usar expansão do histórico também:
mkdir "$(date -R)" && cd !#:^
A parte sed
no seu comando está bastante quebrada. Tente isto:
sed -e "s/.*\'\(.*\)'.*//"
Se você deseja frequentemente mkdir
e cd
em uma etapa, tente esta função (bash-only):
mdc () { mkdir "$@" && cd "${!#}"; }
Ele apenas envolve mkdir
. Use-o como mdc [mkdir options] newdir
e certifique-se de que newdir
seja o último.
Um ponto lateral: você não precisa usar sed
para a saída de date
, porque o date
possui algumas boas ferramentas de formatação. Se você passar a data de uma string começando com '+', então você pode usar os códigos de formatação de strftime .
$ date '+%Y-%m-%d_%H-%M-%S'
Eu pessoalmente usaria algo classificável para o nome do diretório, o que significa que eu nunca usaria "Fri" como uma parte inicial do nome.