操作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. sublime Text3文件路径提示功能

    1>启动sublime Text3编辑器: 2> 点开菜单“preferences”——“package control”: 3>在弹出的下拉框中选择“install package ...

  2. iOS-NSURLConnection异步发送 HTTP请求

    - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { NSString *new = [searchBar.text stri ...

  3. hupu面试

    1.mybatis更新一条数据时,如果某字段为空,则不更新它,使用默认值? <update id="updateProduct" parameterType="Pr ...

  4. JS选中和取消选中checkbox

    document.getElementsByTagName("input")[0].checked = 0;//不选择 document.getElementsByTagName( ...

  5. electron node.js 在 vscode 设置 调试 Debug

    在当前工程下,添加一个 .vscode/launch.json 文件 { // Use IntelliSense to learn about possible attributes. // Hove ...

  6. Spark简介 --大数据

    一.Spark是什么? 快速且通用的集群计算平台 二.Spark的特点: 快速:Spark扩充流行的Mapreduce计算模型,是基于内存的计算 通用:Spark的设计容纳了其它分布式系统拥有的功能, ...

  7. Selenium绕过登录的实现

    1.使用命令行启动Chrome:Mac:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome -remote-debugging ...

  8. Elasticsearch集群搭建笔记(elasticsearch-6.3.0)

    # 检查Java版本 java -version # 安装Elasticsearch,所有节点均安装并解压 wget https://artifacts.elastic.co/downloads/el ...

  9. 【CodeForces】1172E. Nauuo and ODT

    题解 看了一遍题解(以及代码)但是没写代码-- 后来做梦的时候忽然梦到了这道题--意识到我需要补一下-- 这道题就是,对于每种颜色,把没有染成这种颜色的点标成黑点,然后计算每个联通块的平方 然后每个点 ...

  10. CentOS7.0 yum安装 docker

    一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . root 用户登录操作! 通过  ...