⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirfuncs

📁 linux下bash的源码
💻
字号:
## Directory manipulation functions from the book 'The Korn Shell'# Modified for use with bash Mon Apr 18 08:37 1994 by# Ken Konecki (kenk@wfg.com)## Modified by Chet Ramey## This could stand to have calls to `select' added back in# alias integer="declare -i"integer  _push_max=${CDSTACK-31} _push_top=${CDSTACK-31}unalias cd# alias cd=_cd# Display directory stack -- $HOME display as ~dirs(){    dir="${PWD#$HOME/}"     case $dir in    $HOME) dir=\~ ;;    /*) ;;    *) dir=\~/$dir ;;    esac    integer i=_push_top    integer n=1    echo "$n) $dir"    while let "i < $_push_max"    do       n=n+1       eval "echo \$n\) \$_push_stack_$i"       i=i+1    done}# Change directory and put directory on front of stackcd(){    typeset dir=    integer n=0 type=4 i    case $1 in    -|-1|2) # cd -	n=_push_top type=1	;;    -[1-9]|-[1-9][0-9]) # cd -n	n=_push_top+${1#-}-1 type=2	;;    1) # keep present directory	echo "$PWD"	return	;;    [2-9]|[1-9][0-9]) # cd n	n=_push_top+${1}-2 type=2	;;    *)	if let "_push_top <= 0"; then	    type=3 n=_push_max	fi	;;    esac    if let "type < 3"; then	if let "n >= _push_max"; then	    echo cd: Directory stack not that deep	    return 1	else	    eval dir=\${_push_stack_$n}	fi    fi    case $dir in    ~*) dir=$HOME${dir#\~} ;;    esac    cd2 ${dir:-$@} > /dev/null || return 1    dir=${OLDPWD#$HOME/}    case $dir in    $HOME)	dir=\~ ;;    /*) 	;;    *) 		dir=\~/$dir ;;    esac    case $type in    1) # swap first two elements	eval _push_stack_$_push_top=\$dir ;;    2|3) # put $dir on top and shift down by one until top	i=_push_top	unset _dirlist	while let "i < $_push_max" ; do	    eval _dirlist=\"\$_dirlist \$_push_stack_$i\"	    i=i+1	done	i=_push_top	for dir in "$dir" ${_dirlist} ; do	    let "i > n" && break	    eval _push_stack_$i=\$dir	    i=i+1	done	;;    4) # push name	_push_top=_push_top-1;	eval _push_stack_$_push_top=\$dir	;;    esac    echo "$PWD"}# Menu-driven change directory commandfunction mcd{    dirs    echo -n "Select by number or enter a name: "    read    cd $REPLY}# Emulate ksh cd substitutioncd2(){    case "$#" in    0)	builtin cd "$HOME" ;;    1)  builtin cd "$1" ;;    2)  newDir=$(echo $PWD | sed -e "s:$1:$2:g")	case "$newDir" in	$PWD)	echo "bash:: cd: bad substitution" >&2 ; return 1 ;;	*)	builtin cd "$newDir" ;;	esac ;;    *)  echo "bash: cd: wrong arg count" 1>&2 ; return 1 ;;    esac} 	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -