Con bash, ¿hay alguna manera de empujar y hacer estallar el directorio de trabajo actual? Intenté escribir bash;cd dir; ./dostuff;exit;
pero el directorio actual es ahora dir
.
Con bash, ¿hay alguna manera de empujar y hacer estallar el directorio de trabajo actual? Intenté escribir bash;cd dir; ./dostuff;exit;
pero el directorio actual es ahora dir
.
Respuestas:
Hay pushd
ypopd
Bash mantendrá un historial de los directorios que visite, solo tiene que preguntar. Bash almacena el historial en una pila y usa los comandos pushd y popd para administrar la pila.
Ejemplo:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
La llamada bash
inicia una nueva subshell, que tiene su propia entrada; ninguno de los otros comandos se ejecutará hasta que salga. Rodeando los comandos que se ejecutarán con parens también se iniciará una nueva subshell, pero ejecutará los comandos dentro de ella.
( cd dir ; ./dostuff )
Si no necesita múltiples niveles de historial de directorio, también puede hacer:
cd foo
# do your stuff in foo
cd -
En comparación con pushd
/ popd
, esto tiene la desventaja de que si cd foo
falla, termina en el directorio incorrecto con cd -
.
(Probablemente cd -
sea más útil fuera de los guiones. "Volvamos a donde estaba").
Utilizo el alias para realizar un seguimiento de los cambios de mi directorio, así que para 'cd' en algún lugar puedo volver a donde estaba usando 'cd.', O regresar dos usando 'cd ..', etc.
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
lo suficientemente robusto? parece que solo elimina los últimos 10 elementos de la 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.