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.