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 に答える