alias cd4="cd ../../../.."
alias cd5="cd ../../../../.."
技巧 3:用一条语句执行―mkdir‖和―cd‖命令
有时候当你需要新建一个目录后,希望马上进入到这个目录中去(cd),你可以按照下面的方法
去做。
# mkdir -p /tmp/subdir1/subdir2/subdir3
# cd /tmp/subdir1/subdir2/subdir3
# pwd
/tmp/subdir1/subdir2/subdir3
如果将 mkdir 和 cd 操作在一个单独的命令中实现会不会很棒呢?试着将如下代码加
入./.bash_profile 并重新登录。
$ vi .bash_profile
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\"";
}
好了,现在看一下吧,mkdir 和 cd 已经可以在一个命令行中实现了。
# mkdircd /tmp/subdir1/subdir2/subdir3
[注: 该命令在创建目录后并自动切换到该目录下]
# pwd
/tmp/subdir1/subdir2/subdir3
技巧 4:用―cd -‖在最近访问的两个目录之间切换
你可以用“cd -”在最近访问的两个目录之间进行切换,如下所示:
# cd /tmp/very/long/directory/structure/that/is/too/deep
# cd /tmp/subdir1/subdir2/subdir3
# cd -# pwd
/tmp/very/long/directory/structure/that/is/too/deep
# cd -# pwd
/tmp/subdir1/subdir2/subdir3
# cd -# pwd
/tmp/very/long/directory/structure/that/is/too/deep
技巧 5:用―dirs‖、―pushd‖、―popd‖来操作目录栈
你可以将目录压入目录栈,也可以稍后将该目录弹出。在随后的示例中,将会用到以下三个命
令:
* dirs:显示目录栈
* pushd:将目录压入目录栈
* popd:将目录弹出目录栈
dirs 命令显示当前所在目录及目录栈中的内容。即使目录栈为空,dirs 也会显示当前所在的目
录,示例如下:
# popd
-bash: popd: directory stack empty
# dirs
~
# pwd
/home/ramesh
如何使用 pushd 和 popd 呢?让我们先创建一些临时的目录然后把他们压入目录堆栈中去。
# mkdir /tmp/dir1
# mkdir /tmp/dir2
# mkdir /tmp/dir3
# mkdir /tmp/dir4
# cd /tmp/dir1
# pushd .
# cd /tmp/dir2
# pushd .
# cd /tmp/dir3
# pushd .
# cd /tmp/dir4
# pushd .
# dirs
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
[注:显示的第一个目录名总会是当前所在的目录,而不是显式压入堆栈里的内容]
此时,目录堆栈就包含以下内容:
/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1
最后被压入的目录会在堆栈的顶端。当你执行“popd”,系统就会跳转到栈顶的目录中,并且
从堆栈中把它清除掉。正如上面所展示的,最后压入堆栈的是/tmp/dir4,所以当进行一次
popd 时,就会跳转到/tmp/dir4 目录下同时从堆栈中将它移除。如下所示:
# popd
# pwd
/tmp/dir4
[注:执行完上 popd 命令之后,目录栈包括以下目录
/tmp/dir3
/tmp/dir2
/tmp/dir1]
# popd
# pwd
/tmp/dir3
[注:执行完上 popd 命令之后,目录栈包括以下目录]
/tmp/dir2
/tmp/dir1]
# popd
# pwd
/tmp/dir2
[注:执行完上 popd 命令之后,目录栈包括以下目录
/tmp/dir1]
# popd
# pwd
/tmp/dir1
[注:执行完上 popd 命令之后,目录栈包括以下目录]
# popd
-bash: popd: directory stack empty
技巧 6:用―shopt –s cdspell‖自动纠正―cd‖命令的目录名输入错误
使用"shopt -s cdspell"可以自动修正 cd 时拼写错误的目录名。如果你在输入时经常犯些错
误,这个命令是很有用的。详见以下示例:
# cd /etc/mall
-bash: cd: /etc/mall: No such file or directory
# shopt -s cdspell
# cd /etc/mall
# pwd
/etc/mail
[注: 当我错误的把 mail 敲成了 mall,用这个命令 mall 就自动被换成了
mail]