今天开始,我计划每周介绍一个或者与之相关的一类Linux/Unix命令,除基本使用外,更倾向于该这些命令的奇技淫巧。欢迎大家捧场,多做补充。Linux的使用是一个经验积累的过程,更是一种投资。分享是一种美德,愿大家多行善、多积德,帮助别人的同时,也为自己攒点人品。现在就开始!
我想,cd命令很可能是每一个Linuxer的第一个命令吧,当然还有可能是ls命令。cd,即Change Directory,将当前工作目录切换至目标目录,基本使用方法是:
cd wdir # 切换至当前目录下的wdir目录,使用相对路径 cd /home/chris # 使用绝对路径 |
特殊目录
为了能够较快的切换目录,Linux下定义了一些特殊的名称或者变量,他们代表着特殊的目录。
1 2 3 4 5 6 7 8 | cd .. # 至上级目录,即父目录,根目录/的父目录为其本身 cd . # 至当前目录,即未改变目录,.在某些情况下很是有用 cd ~ # 至当前登录用户的用户目录,如/home/ivan cd # 同上 cd $HOME # 同上 cd ~Chris # 至Chris同学的用户目录,即/home/Chris cd - # 至最近离开的目录,很常用 cd !$ # !$为上一个命令中的最后一个参数 |
使用别名alias
alias命令可以定义别名,Shell会将以后执行的命令中alias的第一个参数替换为第二个参数然后执行:
1 2 | alias short="longlong -a long" short # 等同于longlong -a long |
利用alias,可以使我们更快的输入一些常用的但比较长的命令,这当然也适用于cd命令。为了不用每次有执行alias定义别名,我们应该把这些别名放入shell的配置文件中,比如.bashrc和.bash_profile,当shell(这里假定是bash)启动时会自动执行其中的命令。下面列出我常用的一些别名,仅供参考:
1 2 3 4 5 6 7 8 9 | alias ll='ls -lh' alias la='ls -A' alias l='ls -CF' alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias -- -='cd -' # --指示命令选项已经结束,下面全都是参数,否则=会被当作选项 alias bl='bc -l' # calculator with compute library. bind 'set completion-ignore-case on' # 使shell的Tab自动补全忽略字母的大小写 |
使用$CDPATH
$CDPATH是bash的标准环境变量,它保存着cd命令默认搜索的一些目录,类似于$PATH变量。它是一组由分号:分隔的目录的路径组成的。
举例来说,我的工作目录为/home/Wdir,其下有很多不同类的目录,比如Cpp、Site、ACM、APUE、LaTeX等等。每次我都需要执行cd Wdir/ACM进入ACM目录,甚是麻烦。如果我把/home/Wdir加入到$CDPATH变量中,我就可以通过cd ACM直接进入ACM目录了。我的$CDPATH=’/:./:~/Wdir:/var:/media’,同样地,我们需要把这个设置写入到.bashrc中,把该环境变量导出(export):
export CDPATH='/:./:~/Wdir:/var:/media' |
Update!!!(2010-05-30)
介绍一个新命令,保准你从未听说过,但它实现的操作你应该一直都在使用,这个命令就是mkcd。其实它不是一个命令,而是一个shell函数:
1 2 3 4 5 6 7 8 9 10 11 | # mkcd: mkdir, then cd mkcd() { if [ $# = "1" ] then mkdir -p "$1" cd "$1" else echo "Usage: mkcd folder" fi } |
很简单,相信你一看就知道它能做什么了。
你需要做的就是把这个函数丢进你的.bashrc,然后
1 | source ~/.bashrc # 重新加载,使.bashrc立即生效 |
注意
任何东西都不可滥用。过度的使用alias可能会造成名字的混乱,向$CDPATH添加过多的目录有时也会让你吃尽苦头。
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Be the first to comment on this entry.