Come posso creare una cartella denominata come la data corrente in bash

1

Quindi sto scherzando nel mio .bashrc facendo diversi alias e giocando con il mio prompt. Sto cercando ora di creare un alias che si sposterà in una directory specifica, creare una nuova directory in base alla data e creare un nuovo file. Tutto in uno alias. Ecco cosa ho fatto ...

export DATE="$( date +%d-%b )"
alias hw='cd ~/Java/Homework/257; mkdir $DATE; cd $DATE; vim'

Ora se esco ed eseguo hw Client.java dovrebbe spostarsi in ~/Java/Homework/257/27-Jan/ e aprire un nuovo file chiamato Client.java in vim. Funziona tutto magnificamente tranne che la variabile data non funziona correttamente. Mi sposta nella directory ~ / Java / Homework / 257 e crea due directory. Una data chiamata e un'altra chiamata +% d-% b e inserisce il file Client.java nella directory della data.

Ho pensato che la mia esportazione di date non funzionasse, ma quando digito $ DATE al prompt dei comandi mi dà 27-Jan come dovrebbe. Quindi qualcuno sa cosa potrebbe effettivamente causare questo? Un mio amico ha fatto qualcosa di molto simile a questo usando una stringa di formato leggermente diversa per la data e il suo funziona bene. L'unica cosa che ho di diverso sul mio computer è il bash-completion di homebrew, ma non vedo come ciò influirebbe sul mio appuntamento ...

    
posta CaldwellYSR 27.01.2012 - 08:23
fonte

3 risposte

2
export DATE="$( date +%d-%b )"

Devi effettivamente eseguirlo. Altrimenti si assegna semplicemente un valore stringa. Poiché ti mancano virgolette attorno al $DATE , saranno interpretate come due argomenti separati, date e +%d-%b .

    
risposta data 27.01.2012 - 08:44
fonte
2

Prova a definire go come funzione in .bashrc o .alias :

go() {
    DATE=$(date +%d-%b)
    mkdir "$DATE"
    cd "$DATE"
    vim "$1"
}

Ciò garantisce che la data venga determinata ogni volta che si utilizza il comando e non solo quando si effettua l'accesso / avvio di bash.

    
risposta data 27.01.2012 - 08:49
fonte
1

Sulla falsariga delle altre risposte: è necessario eseguire il comando date. Probabilmente la soluzione più semplice sarebbe quella di cambiare le tue virgolette per tornare indietro:

export DATE='date +%d-%b'
    
risposta data 27.01.2012 - 19:58
fonte

Leggi altre domande sui tag