2017-11-07 8 views
2

私はfishを使い始めました。私はfishと普通のbash(私はmac端末を使っています)に大きな違いがあることを理解しています。魚に存在するものがあれば削除してください

一部の私のエイリアスが動作しないため、修正できませんでした。しかし、私は次のことを修正することはできません。基本的には、指定された拡張子に一致するすべてのファイルを削除したいと思います。

ただし、一致しないファイルが最初に出現したときにエラーが発生します。

私の質問は以下のとおりです。

  1. (好ましくは1つのライナーを)存在する場合、私はファイルを削除することができます任意の方法はありますか?
  2. 概念的に間違っていますか?

任意のポインタが役立ちます。

+1

書かれているように、エイリアスは定義されたときにグロブを展開します。 "="の後ろの部分を引用する必要があります。 – faho

答えて

7

フィッシュバージョン2.3.0以降では、for,setおよびcountを除くすべてのコマンドで、グロブの一致を解除するコマンドは実行されず、エラーが出力されます。魚の関数のためだけの構文糖であるあなたは、これが2番目のコマンドが必要なので、それは代わりに、エイリアスの完全な関数であるべき

set -l files *.aux *.log # and so on 

で変数に一致するファイルを割り当てるべきであることを意味

(とにかく):あなたが一致するファイルが存在しない場合、すべてrmを実行しないようにしたい場合は

function texclr 
    set -l files *.aux *.log *.out *.spl *.bbl *.synctex.gz *.blg *.lof *.lot *.tdo *.toc *.idx *.nav *.snm *.a* *.g* *.l* *.ist *.run.xml *-blx.* *.fff *.bcf 
    rm -v $files 
end 

(醜いエラーメッセージを回避するために)、あなたはset -q files[1]; and rm -v $filesを使用することができます。

+0

私は同じ方向に考えていました。 – novice

関連する問題