LinuxÒÁµéÔ°ÂÛ̳'s Archiver

dearvoid ·¢±íÓÚ 2007-1-19 09:58

¡¾Ô­´´¡¿compspec for cd

cd Õâ¸öÃüÁî´ó¼Ò¿Ï¶¨¶¼ºÜÊìϤÁË, ÓÐʱºò½øÈëµ½Ò»¸öºÜÉîµÄĿ¼ÖÐ, È»ºóÏë»Øµ½ËûµÄµÚ N ¼¶¸¸Ä¿Â¼Ê±, ×ÜÊÇÒªÇúöà ../../../.. , ºÜÊÇ·³ÈË, Ϊ´Ë, °³Ð´ÁËÒ»¸ö compspec, Èç¹ûÄãÒªÏòÉÏÌø N ¼¶Ä¿Â¼, Ö»ÐèÒªÊäÈë N+1 ¸öµã (`.'), È»ºó°´Ò»Ï TAB ¼ü, ÕâЩµãµã¾Í»á×Ô¶¯»»³ÉÏìÓ¦µÄ ../../../.. , ·½±ãÁËÐí¶à
[font=Courier][code]
#! /bin/bash
#
# File: compspec.cd
#

_cd()
{
    local CMD=$1
    local CUR=$2
    local PRE=$3

    local len=${#CUR}
    if [ $len -lt 3 -o "${CUR/.../}" = "$CUR" ]; then
        return
    fi

    local i nDots newCur next
    for ((i = 0, nDots = 0; i < len; ++i)); do
        next=${CUR:i:1}
        if [ "$next" != . ]; then
            newCur="$newCur$next"
            nDots=0
        else
            if ((++nDots > 2)); then
                newCur="$newCur/.."
            else
                newCur="$newCur."
            fi
        fi
    done
    COMPREPLY[0]="$newCur"
    COMPREPLY[1]="$newCur/dummy"
}

complete -d -F _cd cd
[/code][/font]

[[i] ±¾Ìû×îºóÓÉ dearvoid ÓÚ 2007-10-16 21:29 ±à¼­ [/i]]

li-jiahuan ·¢±íÓÚ 2007-1-19 10:08

²»Çå³þÈçºÎʹÓÃ
ÎÒÊÇ source ÁË¡£¡£¡£

dearvoid ·¢±íÓÚ 2007-1-19 10:12

Ó÷¨Ê¾Àý:
[font=Courier][quote]
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[17832 0][/color] [color=red]; source compspec.cd
[/color][color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[17832 0][/color] [color=red]; complete -p cd
[/color]complete -d -F _cd cd
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp)-
[17832 0][/color] [color=red]; cd openldap-2.3.32/doc/man/man3/
[/color]# ½ÓÏÂÀ´ÎÒÏë½øÈë openldap-2.3.32/ ÏÂµÄÆäËüĿ¼
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp/openldap-2.3.32/doc/man/man3)-
[17832 0][/color] [color=red]; cd ....  # ´Ëʱ°´ TAB ¼ü
[/color][color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp/openldap-2.3.32/doc/man/man3)-
[17832 1][/color] [color=red]; cd ../../..  # ÔÙ°´¼¸´Î TAB ¼ü
[/color][color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp/openldap-2.3.32/doc/man/man3)-
[17832 0][/color] [color=red]; cd ../../../
[/color]build/     clients/   contrib/   doc/       include/   libraries/ servers/   tests/
[color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp/openldap-2.3.32/doc/man/man3)-
[17832 0][/color] [color=red]; cd ../../../clients/
[/color][color=blue]-(dearvoid@LinuxEden:tty3)-(~/tmp/openldap-2.3.32/clients)-
[17832 0][/color] [color=red]; o
[/color][/quote][/font]
Áí×¢: Ö»ÒªÄãµÄÊäÈëÖк¬ÓÐÁ¬ÐøÁ½¸öÒÔÉϵĵãµã, Õâ¸ö compspec ¾ÍÆð×÷ÓÃ

[[i] ±¾Ìû×îºóÓÉ dearvoid ÓÚ 2007-10-16 21:30 ±à¼­ [/i]]

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.