Shell文件操作: pushd,popd,dirs

1,166 阅读1分钟

脚本Demo:Github地址

一、两个目录之间切换:cd - cd - 的作用是可以回到前一个目录,

目录切换

"-"等同于 $OLDPWD变量。$OLDPWD变量就是bash所记录的前一个目录,用cd -或cd $OLDPWD都可以在最近所操作的两个目录之间进行切。

二、多个目录之间切换 pushd popd dirs

pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中;如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换 popd: 弹出堆栈中最近的目录 dirs: 列出当前堆栈中保存的目录列表

dirs说明: 1、 -p参数可以每行一个目录的形式显示堆栈中的目录列表;-v参数可以在目录前加上编号               2、 有 -v时,不添加 -p也可以每行一个目录的形式显示   3、 最近压入堆栈的目录位于最上面

操作命令

例:

# 跳转到脚本所在目录  
pushd `dirname $0` > /dev/null
#另一种写法:cd $(dirname "$0");``等同于$()

working_path=`pwd`
popd > /dev/null

cd ${working_path}

dirname命令可以取给定路径的目录部分。这个命令一般把它用在shell脚本中,用于取得脚本文件所在目录,然后将当前目录切换过去。Linux下还有一个命令是basename,它与dirname相反,是取得文件名称部分。

"> /dev/null" : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

>  :代表重定向到哪里,例如:echo "123" > /home/123.txt表示将输出的123重定向到文件123.txt中

popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录

pushd和popd都可以只影响堆栈而不切换目录.使用-n参数

dirs用 -c参数清空目录堆栈

执行:

" . "指向当前目录,如果你的脚本处于当前目录下,你可以用下面命令执行: ./yourscript.sh