長南です。 # 同じ話題が続いている間は、スレッドをつなげておいてください。 NIDA さんのメールを誤読しているような気もするのですが……。 NIDA さんのメールより [vine-users:071604] > > 形としては、たとえば端末から > "検索、キーワード, ~/txt" > と入力した場合は、 > "検索、キーワード, ~/txt" > を引数にして ~/bin/hoge.pl を呼び出して、hoge.pl の中から、 > "~/bin/kensaku.pl キーワード ~" > を 呼び出す、...というような感じです。 > # 区切り文字には、"、", ",", " " などを使います。 「検索」「時刻合わせ」「アップロード」、どう打ち込もうと、hoge.pl を 呼び出したいということですね。 面白いことをお考えになっていると思います。しかし、コマンドラインの 最初の単語はコマンド名でしょう(if のようなキーワードや変数名である こともありますけれど)。つまり、「検索」であれ、「時刻合わせ」であれ、 「アップロード」であれ、コマンドラインの最初にそう打ち込めば、そういう 名前のコマンドが実行されてしまう。 そこで、「検索」「時刻合わせ」「アップロード」という、どの名前でも hoge.pl を実行したいのなら、hoge.pl を「検索」「時刻合わせ」などの リンク先とし、呼び出された名前によって別のプログラムを実行するように hoge.pl を作ればよさそうです。 シェルスクリプトによる簡単な例: $ ln -s hogehoge 検索 $ ln -s hogehoge 時刻 $cat hogehoge #!/bin/sh cmd=${0##*/} if [ $cmd = "検索" ] then echo "検索です" elif [ $cmd = "時刻" ] then echo "時刻合わせです" else echo "hogehoge です" fi > 今のところ、 > alias 検索='~/bin/kensaku.pl' > として、 > kensaku.pl を呼び出し、STDIN から > "キーワード、~" > というようにパラメータを渡しているんですが、 > "検索、キーワード, ~/txt" > というようにコマンドとパラメータを 1 度の入力でできるなら、 > そっちの方がはやいかなと。 この例だけなら、コマンドラインの引数を利用するように kensaku.pl を書いて おけばすむのではないでしょうか。 # 区切り文字の方はわかりません。上の例なら、「キーワード」以降は # perl スクリプトの方で処理すればよいでしょうが、コマンド名の # 「検索」と引数の間の区切りを空白以外にするにはどうすればよいのか。 # 区切りは「空白、タブ」にしておくのが、一番無難だと思いますが。 -- 長南洋一