linux: pushd、popd与dirs用法详解

本文详细介绍了bashshell中的pushd(增加目录到堆栈并切换)、popd(删除并切换到上一级目录)和dirs(查看目录堆栈)命令,包括它们的语法、参数、功能及使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


pushd

描述

将目录添加到目录堆栈顶部。

  • 将目录添加到目录堆栈顶部,切换当前工作目录到该目录。
  • 旋转目录堆栈,使堆栈的新顶部成为当前工作目录。
  • 没有参数时,交换目录堆栈的前两个目录。

语法

pushd: pushd [-n] [+N | -N | dir]
    Add directories to stack.

    Adds a directory to the top of the directory stack, or rotates
    the stack, making the new top of the stack the current working
    directory.  With no arguments, exchanges the top two directories.

    Options:
      -n	Suppresses the normal change of directory when adding
    		directories to the stack, so only the stack is manipulated.

    Arguments:
      +N	Rotates the stack so that the Nth directory (counting
    		from the left of the list shown by `dirs', starting with
    		zero) is at the top.

      -N	Rotates the stack so that the Nth directory (counting
    		from the right of the list shown by `dirs', starting with
    		zero) is at the top.

      dir	Adds DIR to the directory stack at the top, making it the
    		new current working directory.

    The `dirs' builtin displays the directory stack.

    Exit Status:
    Returns success unless an invalid argument is supplied or the directory
    change fails.

参数

-n    抑制添加目录引起的当前工作目录变化。
+N	把正数第N个放到栈顶(从栈顶0开始)
-N	把倒数第N个放到栈顶(从栈底0开始)
-n	不切换,只压栈
dir	要推送的目录

例子

# 添加目录到堆栈,改变了当前工作目录。
[smaller ~]$ dirs
~
[smaller ~]$ pushd ~/Desktop
~/Desktop ~
[smaller Desktop]$ 
# 添加目录到堆栈,当前工作目录不变
[smaller ~]# dirs 
~ 
[smaller ~]# pushd -n ~/Desktop
~ ~/Desktop 
[smaller ~]# pushd -n ~/Pictures 
~ ~/Pictures ~/Desktop  # 因为当前目录不变,所以栈顶的还是~

# 调整顺序
[smaller ~]# pushd +1 
~/Pictures ~/Desktop ~ 
[smaller ~]# pushd -1 
~/Desktop ~ ~/Pictures 
[smaller ~]# pushd 
~ ~/Desktop ~/Pictures

popd

描述

把目录弹栈,就是从栈里删除。不带任何参数,模式删除栈顶,即最上面的目录,并将当前目录更改为栈顶目录。

语法

popd: popd [-n] [+N | -N]
    Remove directories from stack.

    Removes entries from the directory stack.  With no arguments, removes
    the top directory from the stack, and changes to the new top directory.

    Options:
      -n	Suppresses the normal change of directory when removing
    		directories from the stack, so only the stack is manipulated.

    Arguments:
      +N	Removes the Nth entry counting from the left of the list
    		shown by `dirs', starting with zero.  For example: `popd +0'
    		removes the first directory, `popd +1' the second.

      -N	Removes the Nth entry counting from the right of the list
    		shown by `dirs', starting with zero.  For example: `popd -0'
    		removes the last directory, `popd -1' the next to last.

    The `dirs' builtin displays the directory stack.

    Exit Status:
    Returns success unless an invalid argument is supplied or the directory
    change fails.

参数

-n	不切换,只出栈
+N	把正数第N个删除(从栈顶0开始)
-N	把倒数第N个删除(从栈底0开始)

例子

smaller:/tmp/dir4# popd(相当于popd +0)
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~

smaller:/tmp/dir3# pushd /tmp/dir4
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~

smaller:/tmp/dir4# popd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 ~

smaller:/tmp/dir4# popd -2
/tmp/dir4 /tmp/dir1 ~

dirs

描述

显示/清除 目录堆栈中的记录

语法

dirs [-clpv] [+N] [-N]
    Display directory stack.

    Display the list of currently remembered directories.  Directories
    find their way onto the list with the `pushd' command; you can get
    back up through the list with the `popd' command.

    Options:
      -c	clear the directory stack by deleting all of the elements
      -l	do not print tilde-prefixed versions of directories relative
    		to your home directory
      -p	print the directory stack with one entry per line
      -v	print the directory stack with one entry per line prefixed
    		with its position in the stack

    Arguments:
      +N	Displays the Nth entry counting from the left of the list
    		shown by dirs when invoked without options, starting with
    		zero.

      -N	Displays the Nth entry counting from the right of the list
    		shown by dirs when invoked without options, starting with
    		zero.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

参数

-c    清空目录堆栈。
-l    堆栈内以~开头的目录在显示时展开。
-p    将目录堆栈内的每一个目录按行显示。
-v    将目录堆栈内的每一个目录按行显示并在每行前加上堆栈内的位置编号。
+N(可选):不带参数执行dirs命令显示的列表中,左起的第N个目录将被显示。(从0开始计数)
-N(可选):不带参数执行dirs命令显示的列表中,右起的第N个目录将被显示。(从0开始计数)

例子

# 添加目录到堆栈
[smaller ~]$ dirs
~
[smaller ~]$ pushd -n ~/Desktop
~ ~/Desktop
[smaller ~]$ pushd -n ~/Pictures
~ ~/Pictures ~/Desktop
[smaller ~]$ pushd -n ~/bin
~ ~/bin ~/Pictures ~/Desktop

# 选项和参数的示例
[smaller ~]$ dirs -l
/home/user2 /home/user2/bin /home/user2/Pictures /home/user2/Desktop
[smaller ~]$ dirs -p
~
~/bin
~/Pictures
~/Desktop
[smaller ~]$ dirs -v
0  ~
1  ~/bin
2  ~/Pictures
3  ~/Desktop
[smaller ~]$ dirs +2
~/Pictures
[smaller ~]$ dirs -2
~/bin
[smaller ~]$ dirs -c
[smaller ~]$ dirs
~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallerFL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值