cd nella directory precedente senza l'eco del nome della directory


9

Questa risposta mi ha dato cd -come scorciatoia per passare alla mia directory precedente in Bash. Ha un grosso problema: stampa la directory in cui cambia, sprecando il mio spazio sullo schermo, poiché quella directory viene quindi ripetuta nel prompt nella riga successiva.

So di poterlo fare cd $OLDPWD, menzionato anche in quella risposta, cd - >/dev/nullma è molto più digitante.

Nella bashpagina man dice:

... oppure se - è il primo argomento e la modifica della directory ha esito positivo, il nome di percorso assoluto della nuova directory di lavoro viene scritto nell'output standard.

Come posso fare per -non essere il primo argomento? Usando uno degli cdargomenti opzionali? Un altro modo per sopprimere l'eco o minimizzare la digitazione senza la necessità di definire funzioni / alias su ogni macchina con cui lavoro?


Praticamente la stessa domanda qui ...
don_crissti

Risposte:


12

cdprende in considerazione solo il primo argomento, ignorando tutti gli altri. Nessuna delle opzioni influenza l'eco del percorso precedente (forse il documentato -@ha quell'effetto, ma questa è un'opzione non valida sul mio sistema).

Se non vuoi usare un alias / funzione, che potrebbe darti ancora meno caratteri da digitare cd -o da reindirizzare /dev/null, il mio suggerimento è di iniziare a usare la speciale espansione della tilde in bash:

cd ~-

Dalla bashpagina man:

Se il prefisso tilde è un `~ - ', il valore della variabile di shell OLDPWD, se impostato, viene sostituito.

Questa sembra essere un'altra area in bashcui è stato creato un significato speciale. L'espansione di Tilde normalmente funziona su $ DIRSTACK, manipolato / investigato da pushd, popde dirspuò essere usato anche in altri comandi ( cp ~-/somefile .) e se lo hai usato pushdpuoi usare ~N(dove N è un numero di livelli respinti) per arrivare a queste directory (per cdo altri comandi).


A proposito se hai account su più macchine e supponendo che tu usi ssh per accedere ad essi da un unico posto, dovresti considerare di aggiungere a ~/.bashrc:

if [ -f ~/.bash_common ]; then
    . ~/.bash_common
fi

e quindi avere uno script sulla macchina di lavoro che utilizza scpper "spingere" bash_commonsu ciascuna di quelle macchine. In questo modo è possibile aggiungere e condividere funzionalità comuni su più macchine con un sovraccarico minimo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.