Com o bash, existe uma maneira de enviar e exibir o diretório de trabalho atual? Eu tentei escrever, bash;cd dir; ./dostuff;exit;
mas o diretório atual é agora dir
.
Com o bash, existe uma maneira de enviar e exibir o diretório de trabalho atual? Eu tentei escrever, bash;cd dir; ./dostuff;exit;
mas o diretório atual é agora dir
.
Respostas:
Existe pushd
epopd
O Bash manterá um histórico dos diretórios que você visita, basta perguntar. O Bash armazena o histórico em uma pilha e usa os comandos pushd e popd para gerenciar a pilha.
Exemplo:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
A chamada bash
inicia um novo subshell, que possui sua própria entrada; nenhum dos outros comandos será executado até que saia. Ao redor dos comandos a serem executados com parens também será iniciado um novo subshell, mas os comandos serão executados dentro dele.
( cd dir ; ./dostuff )
Se você não precisar de vários níveis de histórico de diretório, também poderá:
cd foo
# do your stuff in foo
cd -
Comparado a pushd
/ popd
, isso tem a desvantagem de que, se cd foo
falhar, você acaba no diretório errado cd -
.
(Provavelmente cd -
é mais útil scripts externos. "Vamos voltar onde eu estava.")
Eu uso o alias para acompanhar as alterações no meu diretório, para 'cd' em algum lugar, basta voltar para onde estava usando 'cd.' Ou voltar dois 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
robusto o suficiente? parece que ele remove apenas os últimos 10 itens da pilha.
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.