魚:エイリアスのスペース

魚:エイリアスのスペース

スペースを含むディレクトリの実行可能ファイルにエイリアスを追加しようとしています。たとえば、

alias myfile="/home/ben/test case/myfile"

今これは私が望む方法で拡張されていません(/home/ben/test実行可能ファイルだと思います)。 Bashでは追加の引用符を追加できます。

alias myfile="'/home/ben/test case/myfile'"

残念ながら、これは魚では動作しません。私は何をすべきですか?

答え1

魚の他の名前ただ包装紙組み込み機能、これはPOSIXシェルとの以前のバージョンとの互換性のために存在します。動作しaliasませんでしたfishPOSIX エイリアス

POSIXに対応したい場合はalias使用する必要があります略語、に追加されました。フィッシュ 2.2.0:

abbr -a myfile "'/home/ben/test case/myfile'"

または:

abbr -a myfile "/home/ben/test\ case/myfile"

答え2

この回答はコメントエリアから移動されました。

aliasは素朴です機能この名前(および)を使用して関数を生成することに慣れるためにバグがあることは驚くべきことではevalありません。私の考えでは、魚の関数を書く方法を学ぶのが良いと思います。

与えられた例では、次の行に変換されますeval

function myfile --wraps /home/ben/test; /home/ben/test case/myfile $argv; end

したがって、alias myfile="'/home/ben/test case/myfile'"次のような愚かな出力を提供するので、使用することも役に立ちません。--wraps 'home/ben/test; '/home/ben/test case/myfile'(その孤独な一重引用符を見てください!)

したがって、関数を直接書いてみると、魚が言葉にならない音なので、相互作用の楽しさと親近感を破壊することがわかります。

function myfile --wraps '/home/ben/test case/myfile'; '/home/ben/test case/myfile' $argv; end

実際にこれをテストしておらず、構文を正しく理解した場合にのみ機能します。

実際にf??????-id??tic-shell組み込まれた機能を初めて読んだときは、40分で十分でした。

答え3

残念ながらあなたはそうでした。魚に昆虫、スペースを含むエイリアスが壊れています。

とにかく代替アイテムを書くのはとても簡単です。

function myfile
    /home/ben/test\ case/myfile $argv;
end
funcsave myfile

これは新しい関数を定義し(myfile)、すべてのコマンドライン引数を使用してターゲットを実行するように設定し、()$argv自動ロードのために関数を保存します(funcsave)。

他の回答で指摘したように、短縮コマンドabbrエイリアスを定義する別のオプションですが、あなたの場合は、関数(エイリアス)が実際にはより役に立つと思います。

関連情報