在Linux命令行下,我们经常需要在一个目录下执行某些操作在跳转到另外的目录下,也就是使用我们熟悉的cd命令,基本上接触过命令行的人,第一个认识的命令都是cd,了解cd命令会对我们工作效率有个提高,但是你真的了解它吗?
一、cd命令
格式:
cd [选项] [参数]
我们常用的就是cd后面直接加参数,也就是目录。 单其实参数和选项一样都是可选的。
cd ~ 和 cd (不加任何参数)都能直接切换到用户的主目录下面。
cd常用的选项只有-P
cd -P dir 如果dir是一个链接目录,则会跳转到dir指向的原目录。
常用技巧:
1.我们可以配置CDPATH环境变量
export CDPATH=.:~/dvp:~/workspace
这样的话cd不仅在当前目录搜索,也会在~/dvp和~/workspace目录下搜索。如果不配置 .(当前目录),系统会自动添加到CDPAHT 的结尾,也就是说如果当前目录和~/dvp都有这个文件夹,会优先进入~/dvp目录下的文件夹。
2.cd -
切换到上次所在目录
二、pushd和popd命令
cd 命令的局限在于,如果需要在多个固定的文件夹之间来回跳转,cd命令就显得费事起来。两个文件夹之间可以用cd -,但是超过两个,我们就可以用pushd和popd命令。
pushd就是将一个目录压入一个栈,popd是将一个目录弹出栈。我可以跳转到栈中的任意一个路径,这对那些长路径很有意义。下面介绍它们的用法:
1.pushd
pushd语法格式:
pushd [-n] [dir]
pushd [-N|+N]
-n是固定选项,N代表数字。如果开启-n选项,则表示将目录压入栈,但不跳转。
如果没有输入dir,则默认将当前目录压入栈顶。
pushd +N 表示跳转栈中第N个路径,且将此路径压入到栈顶(从左往右,从0开始)
pushd -N 表示跳转到第N个路径,且将次路基压入到栈顶 (从右往左,从0开始)
可以看到pushd 和pushd +1 是等价的。
其实 pushd -n +N|-N 也是可以的,在我的电脑上会将但前目录压入栈,然后将第+N或-N个目录删除。
2.popd
popd语法格式:
popd [-n] [+N|-N]
值得一提的是,popd 不加任何选项参数会将栈顶元素弹出,然后跳转到新的栈顶元素目录。
-n 选项同pushd,将栈中元素弹出,但不跳转目录。
3.dirs
dirs是查看目录栈中的元素,此命令主要是结合上面两个命令使用。如果压入栈中元素过多,记不准确时可以使用,格式如下:
dirs [-clpv] [+N] [-N]
-c:删除目录栈中所有的记录
-l:以完整格式显示
-p:一个目录一行的方式显示
-v:每一行目录来显示目录栈的内容,每个目录前加上编号
如果不加上+N或-N则会将栈中所有元素打印出来。