目录栈

-- TOC --

bash默认会记住用户上一次进入的目录,通过cd -命令就可以返回,连续调用此命令,可以在两个目录间来回切换。

$ cd ~/sources/
xinlin@K:~/sources$ cd -
/home/xinlin/test
xinlin@K:~/test$ cd -
/home/xinlin/sources
xinlin@K:~/sources$ cd -
/home/xinlin/test

注意与cd ~区分开来!

如果希望记住更多目录,就需要用到目录栈功能,入栈pushd,出栈popd

xinlin@K:~/test$ mkdir -pv a/b/c/d/e/f/g
mkdir: created directory 'a'
mkdir: created directory 'a/b'
mkdir: created directory 'a/b/c'
mkdir: created directory 'a/b/c/d'
mkdir: created directory 'a/b/c/d/e'
mkdir: created directory 'a/b/c/d/e/f'
mkdir: created directory 'a/b/c/d/e/f/g'
xinlin@K:~/test$ pushd a
~/test/a ~/test
xinlin@K:~/test/a$ pushd b
~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b$ pushd c
~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c$ pushd d
~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d$ pushd e
~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e$ pushd f
~/test/a/b/c/d/e/f ~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e/f$ pushd g
~/test/a/b/c/d/e/f/g ~/test/a/b/c/d/e/f ~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e/f/g$ popd
~/test/a/b/c/d/e/f ~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e/f$ !!
popd
~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e$ !!
popd
~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d$ !!
popd
~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c$ !!
popd
~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b$ popd
~/test/a ~/test
xinlin@K:~/test/a$ popd
~/test

!!用于直接执行上一个命令。

dirs命令可以用于显示目录栈的所有内容:

$ pushd a
~/test/a ~/test
xinlin@K:~/test/a$ pushd b
~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b$ pushd c
~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c$ pushd d
~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d$ pushd e
~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e$ dirs
~/test/a/b/c/d/e ~/test/a/b/c/d ~/test/a/b/c ~/test/a/b ~/test/a ~/test
xinlin@K:~/test/a/b/c/d/e$ dirs -c
xinlin@K:~/test/a/b/c/d/e$ dirs
~/test/a/b/c/d/e

dirs -c清空目录栈。

dirs -pdirs -v显示目录栈更清爽!

pushd命令可以实现目录栈的rotate,具体参考pushd --help

popd命令可以实现删除目录栈的内容,具体参考popd --help

本文链接:https://cs.pynote.net/sf/linux/shell/202201251/

-- EOF --

-- MORE --