Bash関数を1行エイリアスとして書く

Bash関数を1行エイリアスとして書く

エイリアスとしてどのように書くことができますか?

p() {
    DIR=~/projects/$@
    pushd "$DIR"
}

私が知っている限り、これはxargsではなくPushdにstdinを接続することです。

alias p="xargs printf ~/projects/%s | pushd"

おそらく関数として良いでしょう。しかし、一行で書いて正しいパイプを取得する方法を知っていると、何かを学ぶことができるようです。

答え1

@AndreasWieseが述べたように、エイリアスを使用してこれを行うことはできません。エイリアスはスペースで区切られた引数を追加するため、単純な方法でaliasコマンドに接続することはできません。

機能に関するコメント:この機能を使用する理由は何ですか$@?を使用する必要があります$1。複数の引数()を使用して関数を呼び出すと、不明なディレクトリエラー(p a b cが発生する可能性があります。b: command not found

関連情報