Pushd / popd insanlar bence akıl karıştırıcı olan 'dizin yığınını manipüle eden' komutlar olarak tanımlayarak bu komutları tanımlayarak öğretme eğiliminde olduklarından, beni kavramam uzun zaman aldı.
Ona farklı bir şekilde bakıyorum:
pushd [klasör_adı] - [klasör_adı] cd'üne cd olacak ve [klasör_adı] olan hedefi bir yığın yığında belgeleyecek , yığındaki en üstteki dizin ise her zaman içinde bulunduğunuz klasör olacak
popd - ilk önce sizi yığının en üstündeki dizin kaydına cdler ve sonra yığından kaldırır
dirs - Dirt yığınını yazdırır (en soldaki girişin geçerli dizin olduğu dird Db olarak kabul edilebilir (yığının en üstünde)
Yani en popüler 2 kullanım durumu:
Kullanım durumu 1: Pushd ve popd kullanarak gezinme
root@mypc:/main/$ ls
dir1 dir2 dir3 dir4
root@mypc:/main/$ dirs # prints the current stack
/main
root@mypc:/main/$ pushd dir1 # Will cd to dir1 and document dir1 in dir stack, stack is now:
/main/dir1 /main
root@mypc:/main/dir1$ # I am now in /main/dir1
root@mypc:/main/dir1$ # Now let's go wild and document whatever I want
root@mypc:/main/dir1$ pushd ../dir2
root@mypc:/main/dir2$ # Woo I am in /main/dir2
root@mypc:/main/dir2$ pushd ../dir3
root@mypc:/main/dir3$ # Woo I am in /main/dir3
root@mypc:/main/dir3$ pushd ../dir4
root@mypc:/main/dir4$ # Woo I am in /main/dir4
root@mypc:/main/dir4$ dirs # Now dir stack is:
/main/dir4 /main/dir3 /main/dir2 /main/dir1 /main
Diyelim ki yukarıda belgeledim bu klasörlere geri dönmek istediğimden yukarıdakileri yaptım!
El ile cd yaparsam, üst dizin yığını girişini etkileyeceğimi unutmayın (bu, her zaman geçerli dizindir)
root@mypc:/main/dir4$ cd .. # Now dir stack is:
# (note that /main appear in the leftmost as well which is the top of the stack)
/main /main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$
Şimdi geriye doğru gidelim:
root@mypc:/main$ popd
root@mypc:/main$ # Still in /main since it was at the top of the dir stack
root@mypc:/main$ dirs # Stack is now:
/main/dir3 /main/dir2 /main/dir1 /main
root@mypc:/main$ popd
root@mypc:/main/dir3$ popd # Woo in dir3 now, about to navigate to dir2
root@mypc:/main/dir2$ popd # Woo in dir2, about to navigate to dir1
root@mypc:/main/dir1$ dirs # Stack is now:
/main
Yine ne istersem istediğimi belgeleyebilirim ve sonra başka bir dizine manuel olarak gidebilirim, sonra yığına eklediğim belgelenmiş dizine kolayca geri döneceğim.
2. olayı kullanın: Sayısal yığın dizini kullanarak gezinme
Dird dir4 dir3 dir2 dir1 kullanarak şimdi basılan dirv ile şunu göstereyim:
root@mypc:/main$ dirs -v
0 /main/dir1 (this is the current dir you are in always)
1 /main/dir2
2 /main/dir3
3 /main/dir4
Artık stack dizinini kullanarak dizinleri içeren herhangi bir Linux işlemini yapabilirsiniz:
root@mypc:/main$ cp ~2/temp.txt ~3/new_temp.txt # this will run in the background, something like:
# cp /main/dir2/temp.txt /main/dir3/new_temp.txt
Hatta dir yığınından belirli bir girişi silebilirsiniz:
root@mypc:/main$ popd ~4
"Belgeleme" kelimelerini kullanmanın ya da dir yığınını düşünmenin Db'nin bir tür kavramını basitleştirmesini umuyorum!
cd -
kısaltmak için takma adlarcd ..
vb.).