2010-08-02 13:42
dirs、pushd、popd指令
一、目录栈指令
目录栈是用户最近访问过的系统目录列表,并以堆栈的形式管理。栈中的内容与Shell环境变量DIRSTACK的值对应
1、dirs
1)功能
显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)
2)语法
(1)格式:dirs [-clpv] [+n] [-n]
(2)选项
-c 删除目录栈中的所有记录
-l 以完整格式显示
-p 一个目录一行的方式显示
-v 每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N 显示从左到右的第n个目录,数字从0开始
-N 显示从右到左的第n个日录,数字从0开始
注意:dirs始终显示当然目录, 再是堆栈中的内容;即使目录堆栈为空, dirs命令仍然只显示当然目录
2、pushd
1)功能
pushd命令常用于将目录加入到栈中,加入记录到目录栈顶部,并切换到该目录;若pushd命令不加任何参数,则会将位于记录栈最上面的2个目录对换位置
2)语法
(1)格式:pushd [目录 | -N | +N] [-n]
(2)选项
目录 将该目录加入到栈顶,并执行"cd 目录",切换到该目录
+N 将第N个目录移至栈顶(从左边数起,数字从0开始)
-N 将第N个目录移至栈顶(从右边数起,数字从0开始)
-n 将目录入栈时,不切换目录
3、popd
1)功能
popd用于删除目录栈中的记录;如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录
2)语法
(1)格式:pushd [-N | +N] [-n]
(2)选项
+N 将第N个目录删除(从左边数起,数字从0开始)
-N 将第N个目录删除(从右边数起,数字从0开始)
-n 将目录出栈时,不切换目录
二、 相关实例
实例一:入栈与出栈
root@Mylinux:~# mkdir /tmp/dir{1,2,3,4}
root@Mylinux:~# for ((i=1;i<=4;i++))
> do
> pushd /tmp/dir${i}
> done
/tmp/dir1 ~
/tmp/dir2 /tmp/dir1 ~
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# dirs
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd(相当于popd +0)
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir3# pushd /tmp/dir4
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd -2
/tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# pushd /tmp/dir3
/tmp/dir3 /tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir3# pushd /tmp/dir2
/tmp/dir2 /tmp/dir3 /tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir2# pushd -1
/tmp/dir1 ~ /tmp/dir2 /tmp/dir3 /tmp/dir4
注意:最左边表示栈顶,最右边表示栈底
实例二:清空栈
root@Mylinux:~# dirs
~ /tmp/dir2 /tmp/dir3 /tmp/dir4 /tmp/dir1
root@Mylinux:~# dirs -c
root@Mylinux:~# dirs
~
实例三:列表形式显示的栈的内容
root@Mylinux:/tmp/dir4# dirs -l -v
0 /tmp/dir4
1 /tmp/dir3
2 /tmp/dir2
3 /tmp/dir1
4 /root
目录栈是用户最近访问过的系统目录列表,并以堆栈的形式管理。栈中的内容与Shell环境变量DIRSTACK的值对应
1、dirs
1)功能
显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)
2)语法
(1)格式:dirs [-clpv] [+n] [-n]
(2)选项
-c 删除目录栈中的所有记录
-l 以完整格式显示
-p 一个目录一行的方式显示
-v 每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N 显示从左到右的第n个目录,数字从0开始
-N 显示从右到左的第n个日录,数字从0开始
注意:dirs始终显示当然目录, 再是堆栈中的内容;即使目录堆栈为空, dirs命令仍然只显示当然目录
2、pushd
1)功能
pushd命令常用于将目录加入到栈中,加入记录到目录栈顶部,并切换到该目录;若pushd命令不加任何参数,则会将位于记录栈最上面的2个目录对换位置
2)语法
(1)格式:pushd [目录 | -N | +N] [-n]
(2)选项
目录 将该目录加入到栈顶,并执行"cd 目录",切换到该目录
+N 将第N个目录移至栈顶(从左边数起,数字从0开始)
-N 将第N个目录移至栈顶(从右边数起,数字从0开始)
-n 将目录入栈时,不切换目录
3、popd
1)功能
popd用于删除目录栈中的记录;如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录
2)语法
(1)格式:pushd [-N | +N] [-n]
(2)选项
+N 将第N个目录删除(从左边数起,数字从0开始)
-N 将第N个目录删除(从右边数起,数字从0开始)
-n 将目录出栈时,不切换目录
二、 相关实例
实例一:入栈与出栈
root@Mylinux:~# mkdir /tmp/dir{1,2,3,4}
root@Mylinux:~# for ((i=1;i<=4;i++))
> do
> pushd /tmp/dir${i}
> done
/tmp/dir1 ~
/tmp/dir2 /tmp/dir1 ~
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# dirs
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd(相当于popd +0)
/tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir3# pushd /tmp/dir4
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd +1
/tmp/dir4 /tmp/dir2 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# popd -2
/tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir4# pushd /tmp/dir3
/tmp/dir3 /tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir3# pushd /tmp/dir2
/tmp/dir2 /tmp/dir3 /tmp/dir4 /tmp/dir1 ~
root@Mylinux:/tmp/dir2# pushd -1
/tmp/dir1 ~ /tmp/dir2 /tmp/dir3 /tmp/dir4
注意:最左边表示栈顶,最右边表示栈底
实例二:清空栈
root@Mylinux:~# dirs
~ /tmp/dir2 /tmp/dir3 /tmp/dir4 /tmp/dir1
root@Mylinux:~# dirs -c
root@Mylinux:~# dirs
~
实例三:列表形式显示的栈的内容
root@Mylinux:/tmp/dir4# dirs -l -v
0 /tmp/dir4
1 /tmp/dir3
2 /tmp/dir2
3 /tmp/dir1
4 /root
本文介绍Linux下使用dirs、pushd及popd命令管理目录栈的方法,包括各命令的基本用法及选项说明,并通过实例演示了如何进行目录的入栈、出栈及栈的清空等操作。
4282

被折叠的 条评论
为什么被折叠?



