ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

linux: pushd、popd与dirs用法详解

linux: pushd、popd与dirs用法详解

文章目录

  • pushd
    • 描述
    • 语法
    • 参数
    • 例子
  • popd
    • 描述
    • 语法
    • 参数
    • 例子
  • dirs
    • 描述
    • 语法
    • 参数
    • 例子


pushd

描述

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

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

语法

pushd: pushd [-n] [+N | -N | dir]Add directories to stack.Adds a directory to the top of the directory stack, or rotatesthe stack, making the new top of the stack the current workingdirectory.  With no arguments, exchanges the top two directories.Options:-n	Suppresses the normal change of directory when addingdirectories to the stack, so only the stack is manipulated.Arguments:+N	Rotates the stack so that the Nth directory (countingfrom the left of the list shown by `dirs', starting withzero) is at the top.-N	Rotates the stack so that the Nth directory (countingfrom the right of the list shown by `dirs', starting withzero) is at the top.dir	Adds DIR to the directory stack at the top, making it thenew current working directory.The `dirs' builtin displays the directory stack.Exit Status:Returns success unless an invalid argument is supplied or the directorychange 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, removesthe top directory from the stack, and changes to the new top directory.Options:-n	Suppresses the normal change of directory when removingdirectories from the stack, so only the stack is manipulated.Arguments:+N	Removes the Nth entry counting from the left of the listshown 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 listshown 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 directorychange 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.  Directoriesfind their way onto the list with the `pushd' command; you can getback 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 relativeto your home directory-p	print the directory stack with one entry per line-v	print the directory stack with one entry per line prefixedwith its position in the stackArguments:+N	Displays the Nth entry counting from the left of the listshown by dirs when invoked without options, starting withzero.-N	Displays the Nth entry counting from the right of the listshown by dirs when invoked without options, starting withzero.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
~
返回列表