pushd,popd,dirs–Bash实现
2012-03-05 21:32
288 查看
#!/bin/bash #实现pushd popd dirs功能 #mypush函数实现pushd命令的功能,每次支持压栈一个目录 #缺省目录是当前目录,所有目录保存在_DIR_STACK变量中, #以:做为分隔符。 function mypush() { REQ="$1" #接受参数1是目录参数 REQ="${REQ:-.}" #如果参数1是空,则 if [ ! -d $REQ ]; then #如果参数是非目录 echo "$REQ is not a directory" return 1 fi if cd "$REQ" ; then #切换目 _DIR_STACK="`pwd`:$_DIR_STACK"; #把参数添加到_DIR_STACK变量中 mydirs #显示栈中的目录 else echo "ERROR : Cannot change to directory $REQ." return 1 fi unset REQ } function mypopd() { _DIR_STACK=$_DIR_STACK mydirs TEMP_PATH=`echo $_DIR_STACK | cut -d: -f1` #指定_DIR_STACK中的第一个项(目录) if [ ! -z "$TEMP_PATH" ]; then #判断目录是否为空,若是空,则说明栈是空 if cd "$TEMP_PATH" ; then _DIR_STACK=`echo $_DIR_STACK | cut -d: -f1 --complement` #保存除了第一个目录外剩下的目录 else echo "Error : change directory failed !" return 1 fi else echo "Error : Stack is empty ! " return 1 fi } #mydirs函数是dirs命令的实现代码 function mydirs() { OLDIFS="$IFS" #保存原先的分隔符号 IFS=":" #指定分隔符号是: for i in $_DIR_STACK do printf "$i \t" #打印出栈中目录 done IFS="$OLDIFS" }通过$
source stack.sh来执行脚本
mypush [路径]
来进行压栈操作
mydirs 来显示栈中目录项目
mypop 直接压出栈中最上面一个目录
相关文章推荐
- [linux][bash]让切换目录更方便: pushd,popd,dirs,cd -
- [linux][bash]让切换目录更方便: pushd,popd,dirs,cd -
- [Linux]:linux [bash]切换目录更方便: pushd,popd,dirs,cd
- 【Bash百宝箱】shell目录栈(dirs、pushd、popd)
- [bash]让切换目录更方便: pushd,popd,dirs,cd -
- [bash]让切换目录更方便: pushd,popd,dirs,cd -
- pushd,popd,dirs,cd - 的使用
- 使用pushd、popd和dirs来重定义cd命令
- dirs\pushd\popd命令用法
- pushd,popd及dirs命令
- pushd popd dirs
- Linux中pushd、popd和dirs
- 让切换目录更方便: pushd, popd, dirs, cd -
- linux shell pushd popd dirs命令
- 方便的目录转换-----pushd、popd、dirs
- dirs、pushd、popd指令
- dirs\pushd\popd命令用法
- linux 命令之 pushd、popd、dirs,以及栈的基础知识
- pushd,popd,dirs,cd -让切换目录更方便
- Linux 切换目录更方便: pushd,popd,dirs,cd