Con bash c'è un modo per spingere e far apparire l'attuale directory di lavoro? Ho provato a scrivere bash;cd dir; ./dostuff;exit;
ma la directory corrente è ora dir
.
Con bash c'è un modo per spingere e far apparire l'attuale directory di lavoro? Ho provato a scrivere bash;cd dir; ./dostuff;exit;
ma la directory corrente è ora dir
.
Risposte:
C'è pushd
epopd
Bash manterrà una cronologia delle directory che visiti, devi solo chiedere. Bash memorizza la cronologia in uno stack e utilizza i comandi pushd e popd per gestire lo stack.
Esempio:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
La chiamata bash
avvia una nuova subshell, che ha il suo input; nessuno degli altri comandi verrà eseguito fino alla sua uscita. Circondando i comandi da eseguire con le parentesi verrà avviata anche una nuova subshell, ma eseguirà i comandi al suo interno.
( cd dir ; ./dostuff )
Se non hai bisogno di più livelli di cronologia delle directory, puoi anche fare:
cd foo
# do your stuff in foo
cd -
Rispetto a pushd
/ popd
, questo ha lo svantaggio che se cd foo
fallisce, si finisce nella directory sbagliata con cd -
.
(Probabilmente cd -
è più utile script esterni. "Torniamo dove ero appena.")
Uso l'alias per tenere traccia delle modifiche alla mia directory in modo da "cd" da qualche parte posso solo tornare a dove stavo usando "cd.", Oppure tornare indietro due usando "cd ..", ecc .;
alias pushdd="pushd \$PWD > /dev/null"
alias cd='pushdd;cd'
alias ssh='ssh -A'
alias soc='source ~/.bashrc'
#below to go back to a previous directory (or more)
alias popdd='popd >/dev/null'
alias cd.='popdd'
alias cd..='popdd;popdd'
alias cd...='popdd;popdd;popdd'
alias cd....='popdd;popdd;popdd;popdd'
#below to remove directories from the stack only (do not 'cd' anywhere)
alias .cd='popd -n +0'
alias ..cd='popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0'
..cd
abbastanza robusto? sembra che rimuova solo gli ultimi 10 oggetti dalla pila.
pushd Saves the current directory on the top of the directory stack and then cd to dir. With no arguments, pushd exchanges the top two directories.