Como cd para um diretório recém-criado?

2
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.

    
por nnbvcn 04.08.2011 / 10:02

4 respostas

12

IMHO você está fazendo algo simples desnecessariamente complexo. Por que não apenas fazer algo simples como.

NEWDIR=$(date -R);mkdir "$NEWDIR";cd "$NEWDIR"
    
por 04.08.2011 / 10:09
4

Com o bash, você pode usar expansão do histórico também:

mkdir "$(date -R)" && cd !#:^
    
por 04.08.2011 / 14:33
2

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.

    
por 04.08.2011 / 10:51
1

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.

    
por 05.08.2011 / 17:46

Tags