- ベストアンサー
Bashシェルスクリプト findのエイリアスに引数を渡すにはどうすれ
Bashシェルスクリプト findのエイリアスに引数を渡すにはどうすれば良いのでしょうか? $ alias a="ls $1 -a" $ a dir . .. ls_nara_ok $ alias a="find $1 -type d" $ a dir find: pathes must precede expression: a lsではうまく行くのに、findではエラーとなってしまいます。 どうすればスクリプト(エイリアス)内のfindに引数を渡せるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
いや、ls も うまくいってないです。 コマンドラインから > alias a="ls $1 -a" とした時点で""が展開されます。 $1には何も入っていない(echo $1 としてみればわかる)ので、この文は alias a="ls -a" となります。 a dir として ls dir -a を実行してるつもりなのでしょうが、 実際には ls -a dir が実行されています。 (linux等で採用されている)GNUのlsでは ls dir -a でも ls -a dir でも同じ表示になるので「正しい」と思ったのでしょう。 lsの正式な書式は「 ls [OPTION ...] [FILE ...] 」であり、他のlsでは、一つでもファイル/ディレクトリ名と認識されたら、それ以降の引数は-で始まっていてもファイル/ディレクトリ名と判定されます。よって ls dir -aは ls: -a: No such file or directory となります(-aというファイルが無い場合) bashでは、aliasの途中に引数を渡すようなことはできません。 そのような使いかたをするなら、functionで定義したり、シェルスクリプトにしたりしてください。
その他の回答 (2)
- t_nojiri
- ベストアンサー率28% (595/2071)
findの構文間違えてません? パス(ディレクトリ)が無いと、指摘されてますよ。 find http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html エラーメッセージ訳しただけですけど。
お礼
質問文のエラーメッセージ間違えてました > find: pathes must precede expression: a > find: pathes must precede expression: dir です
- SaKaKashi
- ベストアンサー率24% (755/3136)
alias a='find -type d' で a dir ではいかが。
お礼
$ a dir find: pathes must precede expression: dir
お礼
ありがとうございます! 詳しくご解説いただきまして、よくわかりました。 ありがとうございました!!