パラメータを持つ bash エイリアスの名前変更関数

パラメータを持つ bash エイリアスの名前変更関数

私はbashが成功せずに買収を受け入れるように一日中努力してきました。私が見つけることができる最も近い参照は次のとおりです。

エイリアスにパラメータを渡すには?

私が実行している場合:

rename -v -n 's/^the.//' * 

それは私が必要とするものを正確に実行しますが、「the」を受け取るエイリアスに置き換えたいと思います。ランタイム文字列。これを行う方法はありますか?

どんなアイデアでも大歓迎です!

私は成功せずにこれを試しました。

alias rp="_rp(){ rename 's/"$1"//' *; unset -f _rp; }; _rp"

ベストアンサー1

エイリアスにはパラメータを使用できません。 (次に項目を追加できますが、これを行うと状況が複雑になります。)マニュアルページには次のようなものがあります。man bash)それらについて次のように言います。

各単純コマンドの最初の単語(引用符がない場合)を調べて、エイリアスがあるかどうかを確認します。その場合、その単語はエイリアスのテキストに置き換えられます。 [...]

代替テキストにパラメータを使用するメカニズムはありません。パラメータが必要な場合は、シェル関数を使用する必要があります。 [...]

ほとんどすべての目的で、エイリアスはシェル関数に置き換えられます。

したがって、エイリアスの代わりに関数を使用する必要があります。

rp() { rename "s{$1}{}" *; }    # No "{}" characters in the substitution

使用法

rp 'the.'    # Quotes optional but recommended. Remember . represents any character

おすすめ記事