24/06/2022

BASH pushd, popd, dirs

Script yazarken kimi zaman çeşitli directoryler arasında gidip gelmek zorunda kalabiliyoruz. İşte sürekli kullandığımız klasörleri mini bir stack a kaydedip oradan çağırmamıza yarazan 3 adet komut pushd, popd ve dirs.

Dirs aslında basit stack i listeliyor.

pushd ile stack a bir mutlak path ekliyoruz ve oraya “cd ” yapıyoruz.

popd ilede stackten en baştaki path ı çıkarıyoruz ve oraya “cd” yapıyoruz.

Önce default mode

$ dirs -l -v
 0  /home/can

Simdi pushd ile ekleyelim.

~$ pushd /etc/skel/
/etc/skel ~
/etc/skel$

Görüldüğü üzere hem stack i yazdı “/etc/skel ~” hemde oraya “cd” yaptıç Eğer “cd” yapmasını istemiyorsak “-n” opsiyonunu kullanabiliriz.

/etc/skel$ pushd -n /var/log/
/etc/skel /var/log/ ~
/etc/skel$

Şimdi dirs ile bir daha bakalım.

/etc/skel$ dirs -l -v
 0  /etc/skel
 1  /var/log/
 2  /home/can

Bu listede herhangi bir path a geri dönmek istersek “+N” opsiyonunu kullanıyoruzç

/etc/skel$ pushd +2
~ /etc/skel /var/log/
~$

popd ise opsiyonsuz olarak kullanıldığında listenin en başındaki path ı listeden siliyor ve oraya “cd” yapıyor.

opsiyon olarak -n kullanırsak ilginç bir şekilde listenin ikinci elamanını siliyor ama “cd” yapmıyor.

~$ dirs -l -v
 0  /home/can
 1  /etc/skel
 2  /var/log/
~$ popd -n
~ /var/log/
~$ dirs -l -v
 0  /home/can
 1  /var/log/

Doğrudan listeden birşey silmek için aynı “pushd” gibi “+N” opsiyonunu alabilir.

~$ popd +1
~
~$

Leave a Reply