操作directory stack一共需要3个命令:

dirs 、pushd、popd

  • dirs: 显示当前目录栈
  • pushd: 把目录压栈
  • popd: 把目录弹栈

dirs

显示目录栈内容,如果没有被pushd过,或者popd到底了,此时dirs会显示当前目录,就等价于pwd了

-c 清空目录栈

-l 不显示~开头的目录

[root@localhost ~]# dirs
~ ~ /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
[root@localhost ~]# dirs -l
/root /root /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1

-p 显示目录栈,每个条目占一行

[root@localhost ~]# dirs -p
~
~
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1

-v 显示目录栈,每个条目占一行,并且用序号标出条目在栈中的标号

[root@localhost ~]# dirs -v
~
~
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1

如果想把~替换掉,不能-vl一起使用。这个命令比较怪,虽有单个选项不能组合写。

[root@localhost ~]# dirs -vl
-bash: dirs: -vl: invalid number
dirs: usage: dirs [-clpv] [+N] [-N]
[root@localhost ~]# dirs -v -l
/root
/root
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1

pushd

上面说到dirs显示目录栈内容。即使目录栈被popd到底,提示:

[root@localhost dir1]# popd
-bash: popd: directory stack empty

目录栈实际上并没有空,此时执行dirs还是能看到目录(和pwd一样了)。如果此时pushd dir,在目录栈中dir是排在之前pwd显示目录之前的。

此时执行pushd不带参数,不带路径,会提示:

[root@localhost /]# pushd
-bash: pushd: no other directory

因为此时目录栈中只有一个目录,没办法两个目录兑换位置

pushd  dir :将dir加到directory stack栈顶。入栈的过程中也会显示之前已经在栈里面的内容。并且入栈后,还会切换到这个目录(-n可以阻止这种行为)

[root@localhost dir3]# cd /tmp/dir4
[root@localhost dir4]# pushd .
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1

pushd :如果不加参数,把栈顶2个条目对换位置

[root@localhost dir4]# dirs -p
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1
/
[root@localhost dir4]# pushd
/tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1 /
[root@localhost dir3]# dirs -p
/tmp/dir3
/tmp/dir4
/tmp/dir2
/tmp/dir1
/

pushd +N :将(从上到下,以0开始)第几个移到栈顶

pushd -N  :将(从下到上,以0开始)第几个移到栈顶

[root@localhost dir3]# dirs -v
/tmp/dir3
/tmp/dir4
/tmp/dir2
/tmp/dir1
/
[root@localhost dir3]# pushd +
/tmp/dir4 /tmp/dir2 /tmp/dir1 / /tmp/dir3
[root@localhost dir4]# dirs -v
/tmp/dir4
/tmp/dir2
/tmp/dir1
/
/tmp/dir3
[root@localhost dir4]# pushd -
/ /tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1
[root@localhost /]# dirs -v
/
/tmp/dir3
/tmp/dir4
/tmp/dir2
/tmp/dir1

popd

不加参数时,默认行为弹出栈顶目录并且换到该目录。使用-n可以不切换目录

popd +N :将(从上到下,以0开始)第几个删除,栈中原有条目位置不变

popd -N  :将(从下到上,以0开始)第几个删除,栈中原有条目位置不变

[root@localhost dir4]# dirs -v
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1
/
[root@localhost dir4]# popd +
/tmp/dir4 /tmp/dir2 /tmp/dir1 /
[root@localhost dir4]# dirs -v
/tmp/dir4
/tmp/dir2
/tmp/dir1
/
[root@localhost dir4]# popd -
/tmp/dir4 /tmp/dir2 /
[root@localhost dir4]# dirs -v
/tmp/dir4
/tmp/dir2
/

除了目录栈用于切换目录,还可以使用Autojump和bd


上面高级目录切换技术,即使最小化安装Linux也有。后面2中技术,需要单独安装

Autojump

Autojump使用Python编写

自动补完不算什么,一键直达目录才是终极神器!

bd

bd:快速返回某级父目录而不用冗余地输入 “cd ../../..”

Linux路径切换命令——directory stack的更多相关文章

  1. Linux 路径与命令搜寻顺序

    以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』: 由 alias 找到该命令来运行: 由 bash 内建的 (builtin) 命令来运行: 透过 $PATH 这个变量的顺序搜 ...

  2. Linux | 浏览(切换)目录命令

    例出目录和文件 --> ls ls 命令是最常用的 Linux 命令之一,ls 是 list 的缩写,表示:列出 在 Linux 中 ls 命令用于列出文件和目录 一些常用的参数 ls -a # ...

  3. linux 底层 基础命令 路径信息

    z基础命令: 打印 :echo "hello world“ 切换目录   cd  / 显示当前路径     pwd 显示 目录下所有文件     ls 显示所有文件包括隐藏文件    ls ...

  4. Linux桌面与命令行切换

    1.首先在安装Linux的时候是选则Desktop桌面方式安装 2.切换命令 2.1快捷键:Ctrl+Alt+F1    切换到桌面模式 Ctrl+Alt+F3    切换到命令行模式

  5. Linux - 系统路径加入命令

    系统路径加入命令 本文地址: http://blog.csdn.net/caroline_wendy 1. 在根文件夹建立bin文件夹: $mkdir bin 2. 改动".bash_pro ...

  6. linux 前台后台程序切换命令总结

    1.在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行 root@Ubuntu$ ./tcpserv01 & 2.如果程序正在前台运行,可以使用 Ctrl ...

  7. Linux下ls命令显示符号链接权限为777的探索

    Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录 ...

  8. 例解 Linux 下 Make 命令

    Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...

  9. Linux系统常用命令权威指南

    <一>线上查询及帮助命令(2)1.man man [选项] [命令] 查看命令帮助,命令的词典,更复杂的还有info,但不常用. #man cd-a 显示所有的手册页,不只是显示第一个-f ...

随机推荐

  1. iOS-NSBundle、NSArray、NSDictionay

    NSBundle.NSArray.NSDictionay 读取plist文件 NSDictionary  *dict= [NSDictionary dictionaryWithContentsOfFi ...

  2. laravel的ORM转为原生sql

    注:mysql测试成功,mongoDB测试失败//将laravel的ORM转为原生sql $SubProfits为laravel的ORM对象 $SubProfits = model::where('i ...

  3. 当你登录Github要求你邮箱验证身份,但是你的邮箱登录不了?

    事情发送在两天前,我如标题所示......,它给出的tyningling@163我真的不知道什么时候注册的了,尝试了N个密码登录不上,验证密保吧,看到手机号突然想起来,这是拿以前同学的手机号注册的.. ...

  4. 最新 珍岛java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.珍岛等10家互联网公司的校招Offer,因为某些自身原因最终选择了珍岛.6.7月主要是做系统复习.项目复盘.LeetCode ...

  5. linux防火墙学习

    iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分.可以直接配置,也可以通过许多前端和图形界面配置.语法: iptables(选项)(参数)1,命令选项-t<表 ...

  6. UIPath工具取得多个文件的方法

    下图是取得某个路径下的多个文件的做法.取得Excel文件的第一个sheet页[workBook.GetSheets(0)]

  7. 日常工作问题解决:配置NTP服务器以及一些常见错误解决

    1.配置NTP服务端 环境:redhat 6.5 服务器主机名 ip地址 说明 server 192.168.57.20 NTP服务端 client 192.168.57.21 NTP客户端 搭建说明 ...

  8. 【LOJ】#3020. 「CQOI2017」小 Q 的表格

    #3020. 「CQOI2017」小 Q 的表格 这个的话求出来\(g = gcd(a,b)\) 会修改所有gcd为g的位置 我们要求\((g,g)\)这个位置的数一定是\(g^{2}\)的倍数 之后 ...

  9. (转)从0移植uboot (二) _uboot启动流程分析

    ref:https://www.cnblogs.com/xiaojiang1025/p/6496704.html 经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够 ...

  10. ActiveMQ Queue示例

    一.Queue 发送 public class JmsSend { public static void main(String[] args) throws JMSException { Conne ...