Shell文件操作: pushd,popd,dirs

脚本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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,466评论 9 467
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,203评论 2 33
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 4,027评论 7 54
  • 先介紹下,Holy同學,典型的現實主義者,但是你又沒有辦法因為她的現實而去否認她說的一切,,應了那句話—讓人又愛又...
    香蕉苹果阅读 223评论 0 0