3

レンジャーファイルマネージャーranger-cdに使用される機能を、次のような魚のシェルに移植しようとしています。

function ranger-cd {
    tempfile='/tmp/chosendir'
    /usr/bin/ranger --choosedir="$tempfile" "${@:-$(pwd)}"
    test -f "$tempfile" &&
    if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
        cd -- "$(cat "$tempfile")"
    fi
    rm -f -- "$tempfile"
}

# This binds Ctrl-O to ranger-cd:
bind '"\C-o":"ranger-cd\C-m"'

(この関数は、レンジャー ファイル マネージャーに一時ファイルを提供し、最後にアクセスしたディレクトリを格納します。これにより、レンジャーの終了後にそのディレクトリに移動できます。)

これまでに行ったことは次のとおりです。

function ranger-cd
    set tempfile '/tmp/chosendir'
    /usr/bin/ranger --choosedir=$tempfile (pwd)
    test -f $tempfile and
    if cat $tempfile != echo -n (pwd)
        cd (cat $tempfile)
    end
    rm -f $tempfile
end

function fish_user_key_bindings
        bind \co ranger-cd
end

この関数を使用すると、次のようになります。

test: unexpected argument at index 2: 'and'
     1  /home/gokcecat: !=: No such file or directory
cat: echo: No such file or directory
cat: /home/gokce: Is a directory

上記のコードにはまだ複数のエラーがあると思います。誰かがこれに対する実用的な解決策を持っていますか?

4

4 に答える 4