• Linux路径切换命令——directory stack


    操作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
    View Code

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

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

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

    [root@localhost ~]# dirs -v
     0  ~
     1  ~
     2  /tmp/dir4
     3  /tmp/dir3
     4  /tmp/dir2
     5  /tmp/dir1
    View Code

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

    [root@localhost ~]# dirs -vl
    -bash: dirs: -vl: invalid number
    dirs: usage: dirs [-clpv] [+N] [-N]
    [root@localhost ~]# dirs -v -l
     0  /root
     1  /root
     2  /tmp/dir4
     3  /tmp/dir3
     4  /tmp/dir2
     5  /tmp/dir1
    View Code

    pushd

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

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

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

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

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

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

    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
    View Code

    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
    /
    View Code

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

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

    [root@localhost dir3]# dirs -v
     0  /tmp/dir3
     1  /tmp/dir4
     2  /tmp/dir2
     3  /tmp/dir1
     4  /
    [root@localhost dir3]# pushd +1
    /tmp/dir4 /tmp/dir2 /tmp/dir1 / /tmp/dir3
    [root@localhost dir4]# dirs -v
     0  /tmp/dir4
     1  /tmp/dir2
     2  /tmp/dir1
     3  /
     4  /tmp/dir3
    [root@localhost dir4]# pushd -1
    / /tmp/dir3 /tmp/dir4 /tmp/dir2 /tmp/dir1
    [root@localhost /]# dirs -v
     0  /
     1  /tmp/dir3
     2  /tmp/dir4
     3  /tmp/dir2
     4  /tmp/dir1
    View Code

    popd

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

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

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

    [root@localhost dir4]# dirs -v
     0  /tmp/dir4
     1  /tmp/dir3
     2  /tmp/dir2
     3  /tmp/dir1
     4  /
    [root@localhost dir4]# popd +1
    /tmp/dir4 /tmp/dir2 /tmp/dir1 /
    [root@localhost dir4]# dirs -v
     0  /tmp/dir4
     1  /tmp/dir2
     2  /tmp/dir1
     3  /
    [root@localhost dir4]# popd -1
    /tmp/dir4 /tmp/dir2 /
    [root@localhost dir4]# dirs -v
     0  /tmp/dir4
     1  /tmp/dir2
     2  /
    View Code

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


     

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

    Autojump

    Autojump使用Python编写

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

    bd

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

  • 相关阅读:
    VS2012 窗口布局, update1 和 英语语言包 离线安装方法
    C/C++ 笔记
    MFC学习笔记
    理解虚基类、虚函数与纯虚函数的概念
    ffmpeg使用
    gif制作 & word2007插入gif
    WIN8电脑开机怎么进入安全模式啊?
    vs2012 win8 64 visual assistX 中文 ??
    21 获取文件大小的方法
    20 线程中添加超时的方法
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9172273.html
Copyright © 2020-2023  润新知