Bash ile mevcut çalışma dizinine basıp çıkarmanın bir yolu var mı? Yazmayı denedim bash;cd dir; ./dostuff;exit;
ama şu anki dizin dir
.
Bash ile mevcut çalışma dizinine basıp çıkarmanın bir yolu var mı? Yazmayı denedim bash;cd dir; ./dostuff;exit;
ama şu anki dizin dir
.
Yanıtlar:
Var pushd
vepopd
Bash ziyaret ettiğiniz dizinlerin geçmişini tutacaktır, sadece sormanız gerekiyor. Bash, geçmişi bir yığında depolar ve yığını yönetmek için push ve popd komutlarını kullanır.
Örnek:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
Arama bash
, kendi girişi olan yeni bir alt kabuk başlatır; diğer komutların hiçbiri çıkana kadar çalıştırılmaz. Parens ile çalıştırılacak komutları çevreleyen yeni bir alt kabuk da başlatacak, ancak içindeki komutları çalıştıracaktır.
( cd dir ; ./dostuff )
Birden fazla dizin geçmişi seviyesine ihtiyacınız yoksa, şunları da yapabilirsiniz:
cd foo
# do your stuff in foo
cd -
pushd
/ İle karşılaştırıldığında popd
, bunun cd foo
başarısız olması durumunda yanlış dizinde kalmanızın dezavantajı vardır cd -
.
(Muhtemelen cd -
dış senaryolarda daha kullanışlıdır. “Hadi olduğum yere geri dönelim.”)
Dizin değişikliklerimi takip etmek için takma adı kullanıyorum, böylece 'cd' kullandığım yere geri dönebildiğim bir yerde 'cd' ya da 'cd ..' vb.
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
yeterince sağlam mı? yığından yalnızca son 10 öğeyi çıkarmış gibi görünüyor.
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.