- ベストアンサー
echoとaliasの併用について
- echoとaliasの併用方法や省略方法について教えてください。
- WindowsとUbuntuでの異なる環境でのcygwinとtcshの使用方法について教えてください。
- クリップボードにテキストを渡す方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
すでに回答がありますが、aliasは文字列置換じゃ無くて、コマンドの置き換えですので、コマンド名の位置にある文字列しか認識しません。 alias clip 'cat >/dev/clipboard' して、 echo test | clip するくらいでしょうか。 しかしなぜにtcsh?? cygwinにしてもubuntuにしても、標準でbashがあるはず。bashの方がずっと高機能ですよ。
その他の回答 (2)
- geshon
- ベストアンサー率61% (44/72)
alias clip '> /dev/clipboard' として、コマンドライン上は % clip echo hoge としてください。 % > /dev/clipboard echo hoge と展開され、% echo hoge > /dev/clipboard と同じになります。 リダイレクションは、行頭にあっても機能します。 csh 系だけでなく、sh系でも同様です。 % clip echo hoge | sed "s/h/H" などとしたいときは、 % clip ( echo hoge | sed "s/h/H" ) としてください。これは alias の展開が | などの解釈のあとに 行われるためリダイレクションの解釈を明確にするためです。 どうしても末尾に付けたい場合は、シェル変数か環境変数を使いますが、 set clip=' > /dev/clipboard' として、 % echo hoge $clip としても hoge > /dev/clipboard と表示されるだけです。この場合は % eval echo hoge $clip と入力しなくてはいけません。あんまり使い勝手が良くないですね。
お礼
お礼が遅くなり失礼しました。 丁寧なご回答ありがとうございます。 リダイレクションが行頭にあっても機能するのは知りませんでした。。。 ご回答いただいたように、やりようによっていくつか方法はあるものの、 やはり、aliasだけでなんとかしようとするのは、どこかで無理がでそうですね。 大変参考になりました。 ありがとうございました。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
aliasは引数の部分だけ展開するとか「汎用には出来ない」ので、各コマンドごとにaliasを設定するしかない。 alias echo '\echo \!* > /dev/clipboard' alias cat '\cat \!* > /dev/clipboard' 上記のようにして、echoコマンドをechoに、catコマンドをcatにエイリアスする。 エイリアスを使いたくない時はコマンド名の頭に\を付けて実行する。 % \echo foo bar foo bar % \cat foobar.txt
お礼
お礼が遅くなり失礼しました。 素早いご回答ありがとうございました。 ご回答いただいた方法だと、 日常的にechoやcatを使う時に問題が起きそうですね。 もう少し検討してみます。
お礼
お礼が遅くなり失礼しました。 ご回答いただいた方法で割り当てるのが、 最もシンプルで良いようです。 tcshを使っているのは、 私の周りのlinux先輩が使っていたためで、 なんとなく教えてもらう過程で使っていました。 ただところどころtcshの限界を感じるようにもなってきたので、 現在はシェルの変更を考えています。 bashもlinux標準で素晴らしいと思うのですが、 bashを覚え直すのもzshを覚え直すのも同じかと思い、 ひとまずはzshに切り替え予定です。