1 名前:名無しさん@お腹いっぱい。 [02/11/03 20:49] パート2ですよ,にーさん
855 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/20 14:14] すんません。 特定のキー動作にシェルスクリプトを割り当てたりとかできますか? "C-c C-c"とかに割り当てるとかなんですが...
856 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/20 15:01] よくわからんがシェルスクリプトに限るのか? 例えば Esc-C-o で ls を実行したければ bindkey -s '^[^o' 'ls\n' などとすればいいけど
857 名前:855 mailto:sage [03/12/20 20:22] >>856 いや、教えてくださった方法で問題ないです。 ありがとうございました。助かりました。
858 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/23 15:18] cdで補完対象をdirectoryだけにしようと思って、 compctl -g *(/) cd したところ、.で始まるdirectoryが補完できなくなっちゃいました。 .から始まるものも含めてすべてのdirectoryをcdの補完対象にするには どうすればいいでしょう?
859 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 02:11] >>858 compctl じゃなくて compsys 使ったらどうでしょ。 autoload -U compinit compinit だけで良いはず。 自分とこははこれで .から始まるディレクトリも 補完候補に出ます。 もちろん、ディレクトリ以外は候補に出ません。
860 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 02:19] メモリどか食いするので嫌
861 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 09:54] compctl -g '*(/) .*(/)' cd
862 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 11:48] 今まで馬鹿馬鹿しくて誰も答えなかったのか(w
863 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 19:32] zsh は簡単なスペルチェックとかもしてくれるんですね。
864 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 15:30] 860は資源の有効活用という言葉を知らないんだろうきっと。 貧乏性なのかな
865 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 16:20] >>864 zshの魅力は補完だけじゃないのよ globのためだけに使ってる。 補完はtcsh程度にできればいいや → compsys巨大すぎ 必要ないのも混ってる し無駄 → じゃあcompctlで → 設定まんどくせ tcshは設定楽でバリバリ補完できるのに、zshはまんどくさい 楽しようとする とバカみたいにメモリ食う 起動遅い screenを愛用してシェルを湯水のように 使う身としては、それはイタイ。 tcshはglobが貧弱。 そもそもc shellが気にいらない。 kshの補完みたく、ファイルの拡張子みないでテキトーに補完にしてくれるだ けでも十分。 むしろ勝手に判断して、必要なものが補完されなかったり 不要な物が補完されたりするのがウザい。 そのくせメモリ食い。バカじゃないかと思う。 誰がそんなもん使うか。
866 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 16:23] >>864 資源の無駄使いが好きな香具師はWindowsでも使えばよろし
867 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 17:06] compctlの定義と自作関数の定義でzshrcが埋めつくされて メモリもバカ食い 起動も激遅になったら compsysのありがたみがわかる。 ただ、そうでもなければ compsysみたいな重いものつかわなくても幸せになれる。
868 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/31 18:59] zsh は ウ ン コ !
869 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 00:25] モード行っていうの?コマンドを入力するところ。そこに 日本語を何文字か入力してからバックスペースで削除する と1文字ずつちゃんと消せなかったり、プロンプトまで消 されちゃったりして困るんだけどこれって解決法あります か?
870 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 01:46] パッチを書く
871 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 01:48] >>869 www.ono.org/software/zsh-euc/
872 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 19:49] >>871 おお。さんきゅー。パッチあててみます。
873 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/05 15:34] >>872 うまくいきました。 wiki に書いておいたほうがいいかな?
874 名前: ◆zshibaTAok mailto:sage [04/01/17 21:12] 1000get
875 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/22 16:06] >>811 > I think Apress are planning to announce its official forthcomingness in December. いまは1月ですが?
876 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/25 22:59] 偉い人教えて。 対話式のシェルで動作させているとき、標準エラー出力だけを常に色つき(例えば赤)で 表示させることって、zsh のようなシェルで出来るの? ぜひうちの zsh でやってみたいんだが。
877 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/26 08:12] >>876 フィルタ書いて常に使うとか。
878 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/26 10:58] >>876 エラーが発生したら色眼鏡をかけるとか。
879 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/26 11:42] モニタに赤セロハン貼っとけ。
880 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/27 02:00] >>877 その、「フィルタ書いて常に使う」っていうのが、 どのように設定すればいいのかイメージできないんですが。 >>879 それじゃ全部エラー出力に見えます。
881 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/27 12:45] 簡単にやるとしたらこんな感じかな。ただ、端末周りを扱うプログラムで支障が あるかもね。 % cat ./tored tored () { local line while read line; do print "\e[31;1m$line\e[0m" done } % source ./tored % perl -e 'printf STDERR "this is stderr.\n"' this is stderr. % perl -e 'printf STDERR "this is stderr.\n"' | tored this is stderr. % perl -e 'printf STDERR "this is stderr.\n"' 2>&1 | tored this is stderr. % exec 2> >(tored) % perl -e 'printf STDERR "this is stderr.\n"' this is stderr. # 色は省略しています
882 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/28 22:34] 876の宿題が…
883 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/31 02:53] 876は納得したのか
884 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/31 14:06] >>883 いや、出来てないです。 すみません、遅くなって。 まだ自分自身の試行錯誤が足りないようです。
885 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/31 15:16] 881に書いてあるやん
886 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/31 15:50] >>885 その >>881 を自分でやってみるという「試行錯誤が足りない」ということ。
887 名前:名無しさん@お腹いっぱい。 [04/01/31 23:35] stdoutの最後に改行がついてないとき、最後の行が消えます。 % echo -n 'foo' % みたいな。 どうすればいいでしょうか?
888 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/31 23:40] dengaku.org/~naoki/zsh/FAQ-J/zshfaq-j.html
889 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/31 23:47] zshの拡張ファイル名生成機能を使って ある文字列を含まない名前を選びだすことって出来ますかね? カレントディレクトリ以下にある物を列挙する場合 echo * hoge huga foo bar その中からhoge hugaだけを除きたい場合(zsh 3.1.xで使えてた方法) echo *^(hoge|huga) なぜか4.x.xではこの方法が使えなくなってしまって こうしても、hoge hugaは除外されずに表示されてしまいます。
890 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 00:03] ~
891 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 01:06] >>890 では駄目なのだよ かといってブラケットで囲むのもだめ 正規表現もだめ なぜか文字列の扱いがダメになってるのでどうしても必要なら perl使え
892 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 01:09] *~*hoge*~*fuga*
893 名前:名無しさん@お腹いっぱい。 mailto:extendedglob [04/02/01 01:14] >>891 info zsh
894 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 01:18] >>892 サンクスコ 逐一入力するのがマンドクサそうなので スクリプト化して使うことにしまつ
895 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 02:09] echo ^*(hoge|huga) じゃないのか
896 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 02:11] あるいは echo *~(hoge|huga)
897 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 02:14] >>895 > echo ^*(hoge|huga) じゃないのか また、新しい、shell を実装してしまった人が出てきたようですね。
898 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 02:48] option の設定によって挙動が違うんじゃないのか
899 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 02:50] 拡張ファイル名生成機能 extended glob と明記されてるから大丈夫 ksh互換モードにしてたらシラネ。 パターンに影響及ぼしそうなオプションは他にないからね。
900 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 02:52] > echo ^*(hoge|huga) これは冗長だった。 echo ^(hoge|huga) でよかった
901 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 03:32] >>900 は文字がよめない もしくは3文字タイプしたら1つ前のレスの内容を忘れる
902 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 04:08] なんだ、この噛み合ってないやりとりは(w
903 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/01 11:10] $ setopt extended_glob $ echo ^h* bar foo $ unsetopt extended_glob $ echo ^h* zsh: no matches found: ^h*
904 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 01:48] <0-5> みたいなグロブって、桁数は関係ないのね。 ちょっとはまった。
905 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 02:23] そういうこともあって、もっぱら{m..n}のファイル生成を使っている
906 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 02:51] ごめん、桁数は関係ないってどういう意味? % touch 1 2 3 4 12 23 45 67 123 345 ~/s % ls <0-5> ~/s 1 2 3 4 % ls <0-15> ~/s 1 12 2 3 4 % ls <0-100> ~/s 1 12 2 23 3 4 45 67 これで期待通りなんだけど。
907 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 02:52] あ、後ろの ~/s は RPROMPT なので無視してください。
908 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 03:02] % touch 001 2 003 4 05 % ls <001-005> # 001 と 003 だけ出てほしい 001 003 05 2 4 こんな感じ
909 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 03:24] >>908 ありが その例では % ls 00<0-5> でいいけどね。 3桁の数字にマッチさせるのはこうかなー % ls <0-9><0-9><0-9> こうでもできた % ls <-><-><->
910 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 04:41] > ls 00<0-5> > ls <0-9><0-9><0-9> > <-><-><-> どれも同じ話だが、既出のように 0004 なんかも含まれてしまうし、 一番下は何桁でもマッチしてしまう。 数字3桁の globbing は [0-9][0-9][0-9] とでもするしかないのでは。
911 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 04:42] > 一番下は 真中もだった
912 名前:909 mailto:sage [04/02/05 05:30] 全然理解してないことがばればれですた。 <0-9>は0から9までにマッチするが 前に0が1個以上ついていた場合それも含める 例えば 1 01 001 0001 <0-9><0-9><0-9>はそれが3個なので 3000040001とかにもマッチしてしまう <-><-><->は3桁以上のすべての数字にマッチ であってるよね?
913 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 22:09] globに、migemo使えたら便利な事もあるかも。 % echo path/to/%M|nihongo|.mp3 みたいな感じで。 # 表記法に関するツッコミは無しでたのむ。
914 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 22:30] それで何とechoされることを期待してるの?
915 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 22:32] path/to/日本語.mp3 じゃない?
916 名前:914 mailto:sage [04/02/05 22:41] あ、globだから、そこにあるファイル名しだいか。 場合によっては path/to/にほんご.mp3 path/to/ニホンゴ.mp3 path/to/日本語.mp3 ね。重そう。
917 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/05 23:23] >>916 そういう関数書いて 内部でperl使って上手い事ごまかせばいけるかも migemoを使って素直にできるかどうかはわからんわ
918 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/06 09:46] > globに、migemo使えたら便利な事もあるかも。 jetさんのTODOにそれっぽいのはあるね。 ttp://www.gyve.org/~jet/kogiku/
919 名前:名無しさん@お腹いっぱい。 [04/02/08 22:48] 誰かGentoo Linuxのportage用の補完コマンド書いてくれませんか? 自分でやろうとしてもわからないんで。 希望としては emerge net-www/mozilla さらには emerge net-www/mozilla/mozilla-1.4.1.ebuild のように カテゴリ/名前(/バージョン) みたいに出来ると良いです。
920 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/08 23:32] >>918 Gentooスレに行け /usr/share/zsh/site-functions/_portage ついでにこれも読め
921 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/11 20:11] >>919 スレ違いだけど ttp://bugs.gentoo.org/attachment.cgi?action=view&id=22624
922 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/11 20:20] >>921 ガイスツ
923 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/11 20:40] zope.jp/misc/zopeweekend3/ > 近々レポート、写真などを公開する予定です まだー?
924 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/11 20:41] 誤爆すまん
925 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/11 21:14] >>924 ○ ノ|) _| ̄|○ <し ○ <ダメ人間 ノ|) _| ̄|○ <し
926 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/14 21:34] UNIX USER あんまり買う気はしない雑誌だけど、zshの連載があったから気になる。 なんで UNIX USER のDVDは「特集」しか収録してないんじゃ? っと、こんなところで言うことでもないか。
927 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/26 00:26] ls -1 |egrep `echo $1 |migemo -t egrep /usr/share/migemo/migemo-dict` こういうことすると $1 のローマ字に対応する file のリストを migemo で抽出できるんですが、 これをうまく使えば zsh で migemo 補完が可能になると思います。 が、zsh の補完のメカニズムがさっぱりわかりません。 _w3m などいくつか参考にしてみましたが、どうも全体像が理解できませんでした。 僕もこれからいろいろ調べるつもりですが、 どなたか詳しい方、ささっと枠組でも作って下さったりしないでしょうか。
928 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/26 00:57] 死ね
929 名前:927 mailto:sage [04/02/26 02:11] いやあ、面白いアイデアだと思ったんで、 自分で実装できなくても誰かやる人いないかなと思ったんで。 くれくれ君に見えたんならすみません。
930 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/26 12:47] てゆーか何に使いたいの? % ls -1 |egrep `echo $1 |migemo -t egrep /usr/share/migemo/migemo-dict` 使用法: grep [オプション]‥‥ 文字列パターン [ファイル]‥‥ 詳しくは`grep --help'を実行してください。 % となるが
931 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/26 13:15] いや、ファイル名の補完に使いたいのだろう、それは
932 名前:927 mailto:sage [04/02/26 15:35] >>930 $1 の所に何か文字を入れなきゃ駄目です。 例えば % ls -1 あいうえお.sh 愛人.txt aiko.dic aho.max baka.mix というディレクトリでは、ai という文字で補完すると % ls -1 |egrep `echo ai |migemo -t egrep /usr/share/migemo/migemo-dict` あいうえお.sh 愛人.txt aiko.dic こういう結果が出ます。この出力を補完のリストに使えないかということです。 % cat ai(ここで C-i すると) % cat ai あいうえお.sh 愛人.txt aiko.dic こんな風に補完の候補が出るような。 僕個人は日本語ファイル名はほとんど付けないんですが、 単にできたら面白いなと思っただけです。
933 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/26 19:25] あぁ、migemoつきemacsのdiredモードみたいに使いたいわけね
934 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/27 17:40] 927製の zmodload migemo 待ちsage
935 名前:927 mailto:sage [04/02/28 01:00] できなくはなさそうですが、 C-i するたびに補完のリストを動的に作り直す必要があるので、 単純に compadd では駄目みたいです。 compadd 以外のやり方を知らないので、つまってます。 あと補完の候補が複数ある時、 % cat ai あいうえお.sh 愛人.txt aiko.dic こういう出力を期待してましたが、 % cat ai \M-5\M-k\M-N\M-A\M-7\M-W\M-;.sh \M-5\M-k\M-N\M-A\M-7\M-W\M-;.txt aiko.dic こんな風に出てしまう。これは zsh を直さないと無理っぽいです。 >>933 emacs の shell とか eshell とかでならもっと作りやすいかも知れません。 でも自分は shell-mode 使わないからなあ。
936 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/28 02:03] 後者は setopt printeightbit という話じゃないの
937 名前:927 mailto:sage [04/02/28 02:41] おー、すばらしい。
938 名前:927 mailto:sage [04/02/28 02:42] おー、すばらしい。ありがとう。
939 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/28 19:57] うわさの zsh 本はどうなったの?
940 名前:名無しさん@お腹いっぱい。 [04/03/02 03:35] ~/hoge/foo.log ~/hoge/foo.error ~/hoge/foo.today ~/hoge/foo.yesterday というファイルを元に動く bar というコマンドがあって、 $ bar log $ bar error $ bar today $ bar yesterday という風に foo を無くした引数を指定します。この引数を補完させたいのですが 何か良い手はありませんでしょうか? zshの補完機能は便利だけどややこしいですね。
941 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/02 05:24] 至極単純にやるとすれば、こんな感じ。 _bar () { compadd ~/hoge/foo.*(:t:e) } compdef _bar bar
942 名前:940 mailto:sage [04/03/04 04:47] なるほど。ありがとう。 精進します。
943 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/07 03:05] compaddってググっても殆ど情報ないんだが マイナーなのか?
944 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/07 03:15] というかzsh自体、評判の割に日本語の情報が全然ないと思う。 自分が書ければ書くんだけど、compaddとか分からんからなぁ
945 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/07 17:48] UnixUser の連載の記事は、compsys を見通すには、なかなかまとまっていて 丁度良かった。
946 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/09 09:45] a
947 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/19 22:46] pc.2ch.net/test/read.cgi/unix/1075033822/548 > これ以上はzshスレで。 えーと、やりたいこと書きますね。=() は知っていますけど、この場合は使え ませんよね。 #! /usr/local/bin/zsh -f cd /service/smtpd/log/main TODAY=`date -d yesterday +%Y-%m-%d` WORK=(make-temp-file "/tmp/work") grep -h SBL *.s current | tai64nlocal | grep $TODAY > $WORK echo >> $WORK grep -h SBL *.s current | tai64nlocal | grep $TODAY | gawk '{ print $4 }' | sort -nu | dnsfilter >> $WORK for i in `grep -h SBL *.s current | tai64nlocal | grep $TODAY | gawk '{ print $4 }' | sort -nu`; do echo >> $WORK echo % whois $i >> $WORK whois $i >> $WORK done mailsubj "[rblsmtpd] $TODAY" giko@example.com < $WORK rm -f $WORK
948 名前:名無しさん@お腹いっぱい。 [04/03/19 22:50] ついでに、4.2.0 age
949 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/20 00:06] 要は一時ファイルくらいを作ってほしいということなのか。 zsh は関係ないな
950 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/20 01:00] emacs の with-temp-buffer とか便利だよね。 まあ shell では自分でウニクなtmpfile 作る function 作ればいいんじゃないの。
951 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/20 07:27] >>947 > えーと、やりたいこと書きますね。=() は知っていますけど、この場合は使え > ませんよね。 ? 素直に使えるよ? > WORK=(make-temp-file "/tmp/work") ちゃんと理解しているならこうはしないと思うけど。 #!/usr/local/bin/zsh -f WORK==(true) echo WORK=$WORK echo hoge >> $WORK echo moge >> $WORK echo --- cat $WORK echo --- # rm -f $WORK
952 名前:951 mailto:sage [04/03/20 07:35] あと、ふつうはこういうのはパイプでつなげるね。 ( grep ほにゃらら grep はにゃらら てんてんてん ) | mailsubj なんとやら てな具合に。
953 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/21 01:02] あーん、今さっき、間違えて $HOME 以下をすべて消してしまったよう。 せっかく確認のプロンプトが出たのに、反射的に y 押しちゃった。 深刻な被害は無かったけど、こんな僕のためにも確か、 rm * コマンドを cp * /tmp/trash に変えてくれるようなscript か alias があったはず。 誰かスマートなサンプルを頼む。 出来れば、/tmp/trash/20040321_010023/* とかに cp されるほうが良い。
954 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/21 01:10] >>953 rmstar?
955 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/21 01:11] >>953 こんなかんじか? function rm { mkdir -p /tmp/trash`date +%m%d` mv "$*" /tmp/trash`date +%m%d` }