長いコマンドのエイリアスを指定すると、そのコマンドの一部のみが取得されます。

長いコマンドのエイリアスを指定すると、そのコマンドの一部のみが取得されます。

次の有効なコマンドがあります。

ls -la | awk '$5 > 2'

私はすべてのもののエイリアスを見つけようとしています。素朴な方法を試してみると、次のようになります。

alias ll "ls -la | awk '$5 > 2'"

これはうまくいきません。

ドル記号を避けようとすると、コマンドの一部のみが表示されますllls -la | awk $5

このエイリアスを目的の方法で定義するにはどうすればよいですか?

答え1

エイリアスが単純なコマンドよりも複雑な場合は、シェル関数を使用してください。

lz () {
    ls -la | awk '$5 > 2'
}

...またはエイリアスでよりシンプルで適切なコマンドを見つけます。

alias lz='find . -maxdepth 1 -size +2c -ls'

マニュアルにはbash次の内容が含まれています。

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

関連:なぜ`ls`を解析しないのですか?

答え2

脱出、平等

$ alias ll="ls -la | awk '\$5 > 2'"
$ alias|grep ll                                       
ll='ls -la | awk '\''$5 > 2'\'

関連情報