腳本Demo:Github地址
一、兩個(gè)目錄之間切換:cd -
cd - 的作用是可以回到前一個(gè)目錄,

"-"等同于 $OLDPWD變量。$OLDPWD變量就是bash所記錄的前一個(gè)目錄,用cd -或cd $OLDPWD都可以在最近所操作的兩個(gè)目錄之間進(jìn)行切。
二、多個(gè)目錄之間切換 pushd popd dirs
pushd:切換到作為參數(shù)的目錄,并把原目錄和當(dāng)前目錄壓入到一個(gè)虛擬的堆棧中;如果不指定參數(shù),則會(huì)回到前一個(gè)目錄,并把堆棧中最近的兩個(gè)目錄作交換
popd: 彈出堆棧中最近的目錄
dirs: 列出當(dāng)前堆棧中保存的目錄列表
dirs說明:
1、 -p參數(shù)可以每行一個(gè)目錄的形式顯示堆棧中的目錄列表;-v參數(shù)可以在目錄前加上編號(hào)
2、 有 -v時(shí),不添加 -p也可以每行一個(gè)目錄的形式顯示
3、 最近壓入堆棧的目錄位于最上面

例:
# 跳轉(zhuǎn)到腳本所在目錄
pushd `dirname $0` > /dev/null
#另一種寫法:cd $(dirname "$0");``等同于$()
working_path=`pwd`
popd > /dev/null
cd ${working_path}
dirname命令可以取給定路徑的目錄部分。這個(gè)命令一般把它用在shell腳本中,用于取得腳本文件所在目錄,然后將當(dāng)前目錄切換過去。Linux下還有一個(gè)命令是basename,它與dirname相反,是取得文件名稱部分。
"> /dev/null" : 首先表示標(biāo)準(zhǔn)輸出重定向到空設(shè)備文件,也就是不輸出任何信息到終端,說白了就是不顯示任何信息。
> :代表重定向到哪里,例如:echo "123" > /home/123.txt表示將輸出的123重定向到文件123.txt中
popd把堆棧頂端的目錄從堆棧中刪除,并切換于位于新的頂端的目錄
pushd和popd都可以只影響堆棧而不切換目錄.使用-n參數(shù)
dirs用 -c參數(shù)清空目錄堆棧
執(zhí)行:
" . "指向當(dāng)前目錄,如果你的腳本處于當(dāng)前目錄下,你可以用下面命令執(zhí)行:
./yourscript.sh