0

我只是认为我可以方便地“cd”到我存储一些文件的目录,即。

[admin@local /]$ cd /usr/bin/somefile.pl

据我所知,官方的“cd”命令不起作用。

所以我写了这样的东西:

main () {
    if [[ "${1}" =~ "(.+/)*(.*){1}" ]] && [ -f "${1}" ] ; then
            `\cd ${1%/*}`
    elif [ -f "${1}" ] ; then
            exit 0
    else ; `\cd ${1}`
    fi
}
main ${1}

我将此 cd.sh 别名为“cd”命令:

alias cd='source /somepath/cd.sh'

这不起作用。

我尝试使用eval "\cd xxx"而不仅仅是\cd xxx;

如何修复我的脚本?

4

2 回答 2

3

重写 感觉是个坏主意cd,所以我会建议一个稍微不同的命令,fcd

fcd() { cd -- "$(dirname -- "$1")"; }

$ fcd /usr/bin/somefile.pl
$ pwd
/usr/bin

或者使用参数扩展来保存调用dirname

fcd { cd -- "${1%/*}"; }
于 2012-05-18T14:51:25.990 回答
0
cd() {
    DN="$(dirname "$1")"
    if [[ -d "$1" ]]; then
        builtin cd "$1"
    elif [[ -d "$DN" ]]; then
        builtin cd "$DN"
    else
        echo "$* or $DN: No such directories"
        return 1
    fi
    return 0
}
于 2012-05-18T14:57:34.700 回答