トップページunix
981コメント260KB

zsh その4

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。05/02/02 20:03:26
zshのスレその4です。

過去スレ
zsh入門
http://pc.2ch.net/test/read.cgi/unix/990283346/
zsh入門 パート2
http://pc3.2ch.net/test/read.cgi/unix/1036324177/
zsh その3
http://pc5.2ch.net/test/read.cgi/unix/1080002786/

>>2-3リンク
0454名無しさん@お腹いっぱい。2006/03/28(火) 23:20:07
perl -le 'print for (a .. d)'
0455名無しさん@お腹いっぱい。2006/04/09(日) 17:17:32
>>442
bash ならもっと簡単にやる方法あるよ:
bash -c 'for i in {a..e} ; do ; command $i ; done'
0456名無しさん@お腹いっぱい。2006/04/09(日) 17:56:03
>>455
それはbash3と断るべきだな。現状まだbash2の方が多いし、bash2ではできない。

それより、zshは {1..5}は展開できるのに、{a..e}が展開できないのってなんか中途半端。
0457名無しさん@お腹いっぱい。2006/04/09(日) 18:09:41
すまん、純粋な好奇心で聞くのだが、 bash3 では {aa..zz}とかみたいなこと
は出来るの?
あるいは {a..aa} とかはどうなるの?

一文字限定でもあった方が便利ではあるだろうが。
0458名無しさん@お腹いっぱい。2006/04/09(日) 23:49:01
bash のスレで聞いたら?
0459名無しさん@お腹いっぱい。2006/04/09(日) 23:55:17
>>457
できないよ
0460名無しさん@お腹いっぱい。2006/04/14(金) 21:37:30
ttp://www.freedesktop.org/wiki/Software/BadSoftware

そろそろここのリストから消えそうだね
0461名無しさん@お腹いっぱい。2006/04/16(日) 10:42:22
>最終更新日時 2005-08-12 22:30:57
0462名無しさん@お腹いっぱい。2006/04/19(水) 20:05:10
4.3系は日本語入力可能だね
0463名無しさん@お腹いっぱい。2006/04/19(水) 21:03:10
portsにはまだこないの?
0464名無しさん@お腹いっぱい。2006/04/20(木) 02:27:27
portsってことはBSD系だよね?unstable版とかって選べないの?
ちなみにソースなら ttp://www.zsh.org/pub/ ここにあるよ
0465名無しさん@お腹いっぱい。2006/04/21(金) 03:44:27
portsがunstable版だもの
0466名無しさん@お腹いっぱい。2006/04/23(日) 19:15:09
Ports tree unfrozen はとっくにしてるんだよねえ。
0467名無しさん@お腹いっぱい。2006/04/23(日) 20:20:34
なかなかアップデートされないportsはパッチを作ってsend-prで
送りつけてやるのがいいよ。
0468名無しさん@お腹いっぱい。2006/04/25(火) 13:16:33
ports まだ?
0469名無しさん@お腹いっぱい。2006/04/25(火) 21:54:38
早く送りつけろよ
0470名無しさん@お腹いっぱい。2006/04/25(火) 22:43:20
ってか send-pr されてるじゃん。自分で作って損した。
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/95970

0471名無しさん@お腹いっぱい。2006/05/01(月) 16:58:29
>>470
0472名無しさん@お腹いっぱい。2006/05/01(月) 17:26:55
ports きた。 4.3.2
0473名無しさん@お腹いっぱい。2006/06/03(土) 18:44:04
cygwin の package にはこないんかのう。sjis が扱えるとウハウハなんじゃが。ま、いま cygwin つかってないけど。
0474名無しさん@お腹いっぱい。2006/06/09(金) 22:32:03
すべてのコマンドで実行時間(sys,real)を表示するにはどうしたらいいのでしょう?
precmd内から何らかの方法で値を取得し表示できるのが理想なのですが…。

すべてのコマンドにtime -o /tmp/hogeを頭につけてそれを取得する、という方法でも結構です。

REPORTTIME=0にTIMEFMTだと出ないときがあるので何とかしたいのです。
0475sage2006/06/10(土) 03:55:58
accouting を on にすれば? man acct
0476名無しさん@お腹いっぱい。2006/06/21(水) 02:35:14
なんかzsh 4.3.2でacroreadの補完がおかしくなったんだけど俺だけ?
0477名無しさん@お腹いっぱい。2006/06/21(水) 14:18:03
おなじく acroread おかしい。補完しようとするとなんかごちゃごちゃ出てきて,
_acroread:12: no such file or directory: Gtk-WARNING
とか言われる。tcsh では問題ないのに。
0478名無しさん@お腹いっぱい。2006/06/21(水) 14:31:53
4.3.2 というか、 acroread の 7.x のときに上手く動かないっつー問題。
いつになったら直るのかなあ。

>>365-368 あたりを読んでみ。
04794762006/06/21(水) 17:55:28
それとは別件。なぜか別のシェルを上げたら使えたので
何か変なsetoptでも知らないうちにしちゃったのかも。
それが影響するcompletion関数というのも勘弁だけど。
0480名無しさん@お腹いっぱい。2006/07/12(水) 16:20:40
すみません質問があるのですが、以下のようにして ls の結果を less にパイプして
表示するようにしたいのですが、以下のやり方だと引数を入れたとき引数が less の
引数として認識されてしまい、ls の引数として認識させることができません。

alias -g L='| /usr/local/bin/jless'
alias ls="ls -alG L"


csh 等では以下のようにして同等の機能を持たせられるので、zsh でも同じこと
はできると思うのですが、やり方を知っている方がおられましたら教えていただけないでしょうか?

ls [オプション] [ファイル名] | less -e
alias ls "/bin/ls \!* | less -e"
0481名無しさん@お腹いっぱい。2006/07/12(水) 16:43:09
ls() { /bin/ls ${1+"$@"} | less -e }
0482名無しさん@お腹いっぱい。2006/07/12(水) 16:51:43
>>481
いまどき ${1+"$@"} なんてしなくても "$@" で桶。
0483名無しさん@お腹いっぱい。2006/07/12(水) 16:58:57
そうなの?
0484名無しさん@お腹いっぱい。2006/07/12(水) 21:33:38
そうよ
0485名無しさん@お腹いっぱい。2006/07/12(水) 23:46:50
いまどきもなにも、このスレに書くってことはzsh限定でしょ。"$@"すら$*でよいのでは。

04864802006/07/13(木) 01:17:09
>>481
そのように設定をし、ちゃんと動作することを確認いたしました。
質問にお答えいただき、どうもありがとうございます。
0487名無しさん@お腹いっぱい。2006/07/15(土) 23:09:45
bindkey -v
を使っているんですが、
emacs bindでいうところの、再帰履歴検索がやりたくて、

bindkey "^R" history-incremental-search-backward
bindkey "^S" history-incremental-search-forward

と書いたのですが、Ctl-Rは効くのですが、Ctl-Sが効きません。
何故ダメなのかを教えてください。

もしくは、他の方法でもいいので、
bindkey -v の状態で、再帰履歴検索をやる方法を教えてください。
0488名無しさん@お腹いっぱい。2006/07/15(土) 23:37:43
http://www.itmedia.co.jp/help/tips/linux/l0612.html
これじゃないの
0489名無しさん@お腹いっぱい。2006/07/16(日) 00:18:19
ビンゴです!
どうもありがとうございました。
0490名無しさん@お腹いっぱい。2006/08/03(木) 00:16:10
インクリメンタル検索って再帰履歴検索っていうんだ
初めて知ったかも
0491名無しさん@お腹いっぱい。2006/08/03(木) 07:35:22
どこの用法だよその謎訳語
0492名無しさん@お腹いっぱい。2006/08/03(木) 19:21:26
"再帰履歴検索" の検索結果 1 件中 1 - 1 件目 (0.29 秒)

このスレしかヒットしねぇ('A`)
0493名無しさん@お腹いっぱい。2006/08/06(日) 02:36:57
再帰履歴検索 で検索した結果 1〜10件目 / 約54,800件 - 0.46秒

ahooクオリティ(・∀・)
0494名無しさん@お腹いっぱい。2006/08/07(月) 00:10:45
timeコマンドの出力をリダイレクトでつかまえたい場合、どうすればいいんでしょうか?

% time hoge
とした時の、hogeコマンドの出力は /dev/null に、
timeコマンドの出力は >output などとしてファイルに出力したいのですが。

time hoge を実行するだけのシェルスクリプトを書いておけば、
以下のようにして望んだ結果を得られるのですけど。
% cat hoge.sh
time hoge
% ./hoge.sh >/dev/null 2> output
0.012
0495名無しさん@お腹いっぱい。2006/08/07(月) 00:43:47
(time hoge > /dev/null) 2> a
04964942006/08/07(月) 03:43:48
おお!
なんかすごい基本的なことだったのかもしれませんが、ありがとうございます。
0497名無しさん@お腹いっぱい。2006/08/07(月) 16:47:31
time はコマンドじゃなくて予約語。
0498名無しさん@お腹いっぱい。2006/08/07(月) 19:57:51
( )じゃなくて{ }でもよかった
0499名無しさん@お腹いっぱい。2006/08/07(月) 22:11:10
GNUのtimeもきっと/usr/binあたりにあるでそ
0500名無しさん@お腹いっぱい。2006/08/09(水) 12:34:49
ない
0501名無しさん@お腹いっぱい。2006/08/09(水) 13:25:35
>>499
>>494 は GNU time の話ではない。
0502名無しさん@お腹いっぱい。2006/08/16(水) 01:03:00
http://lists.debian.or.jp/debian-users/200608/msg00104.html
日本語特有の設定ってある?
ロケールと print_eight_bit くらいだとおもうんだけど
0503名無しさん@お腹いっぱい。2006/08/16(水) 04:17:04
ヒドス
ttp://hiki.ex-machina.jp/zsh/index.cgi?MessageBoard
0504名無しさん@お腹いっぱい。2006/08/16(水) 08:36:54
ワロタ
0505名無しさん@お腹いっぱい。2006/08/16(水) 21:03:15
>>502
そいつは日本語特有の設定というより、
日本語で書かれた資料を切望しているように見えるんだが。
0506名無しさん@お腹いっぱい。2006/09/14(木) 00:24:17
cygwin版4.3.2キター
0507名無しさん@お腹いっぱい。2006/09/16(土) 02:36:00
まじでかぁあぁあ
でもいまcygwinいれらんね〜
0508名無しさん@お腹いっぱい。2006/09/25(月) 12:46:33
(bash 3.1.17)
$ bar=bar
$ echo ${bar/#/foo}
foobar
$ echo ${bar/%/foo}
barfoo

(zsh 4.3.2)
$ bar=bar
$ echo ${bar/#/foo}
foobar
$ echo ${bar/%/foo}
bar

どうして?バグ?
0509名無しさん@お腹いっぱい。2006/09/27(水) 13:27:58
zsh スレの過疎ぶりにワラタ

# グローバルエイリアスを my-expand-abbrev 用の連想配列 に追加する
# 注意:現状ではうまく動いているようだが、おかしくなっても知らない
function abbrev-with-global-aliases() {
local globals="$(alias -g|tr '=' ' ')"
local backup="$(alias -L)"
unalias -m '*'
eval 'myabbrev+=( '$globals' )'
eval $backup
}
abbrev-with-global-aliases
0510名無しさん@お腹いっぱい。2006/09/29(金) 09:02:55
これだけでよかった。死ね俺

# グローバルエイリアスを myaddrev に追加
myabbrev+=( ${==${(kv)galiases}} )
0511名無しさん@お腹いっぱい。2006/10/02(月) 21:26:17
生きろよ
0512名無しさん@お腹いっぱい。2006/10/05(木) 15:43:08
なにこの過疎スレ
0513名無しさん@お腹いっぱい。2006/10/08(日) 21:39:06
zshイイと思うけどなあ
bash+bash-completionじゃボロボロで使いモノにならんよ
Fedora Core 6ではzsh-4.3.2また見送りか
0514名無しさん@お腹いっぱい。2006/10/08(日) 22:09:14
今も昔もインストールすればいいだけ
0515名無しさん@お腹いっぱい。2006/10/09(月) 02:17:27
bashの中途半端振りはいつもいやになるな
% command >& log
すらできないし
はよ駆逐されてくれ
0516名無しさん@お腹いっぱい。2006/10/09(月) 02:35:46
>>515
zshが全部でデフォルトシェルにならない限り無理。

bashはbashでいいと思うけど。
zshと比較する気は無い。
0517名無しさん@お腹いっぱい。2006/10/14(土) 02:02:32
command.com = ミゼット
ash = ムーブ
csh = キューブ
ksh = マーチ
cmd.exe = フィット
tcsh = シビック
bash = カローラ
zsh = ステップワゴン
powershell.exe = ボンドカー
0518名無しさん@お腹いっぱい。2006/10/14(土) 10:31:09
zshはチューリング コンプリートですか?
0519名無しさん@お腹いっぱい。2006/10/14(土) 12:33:04
scshの評価もキボンヌ
0520名無しさん@お腹いっぱい。2006/10/14(土) 17:54:47
$(ls)などはexpand-or-completeで展開できますが
alias を展開することはできますか
0521名無しさん@お腹いっぱい。2006/10/14(土) 18:10:29
which
0522名無しさん@お腹いっぱい。2006/10/14(土) 19:54:00
global alias だとエラーメッセージにおきかえられてしまいます
global alias でも使える方法はありますか?
0523名無しさん@お腹いっぱい。2006/10/15(日) 21:41:19
"^Xa" is _expand_alias
0524名無しさん@お腹いっぱい。2006/10/16(月) 06:04:57
m(_________________________________)m
0525名無しさん@お腹いっぱい。2006/10/16(月) 16:40:22
平謝り
0526名無しさん@お腹いっぱい。2006/10/24(火) 16:35:29
bash = たろう
tcsh = はなこ
zsh = じろう
0527名無しさん@お腹いっぱい。2006/11/04(土) 15:43:13
zstyle ':completion:*:default' menu select true
の ^F, ^B, ^N, ^P での移動が
bindkey '^P' history-beginning-search-backward-end
bindkey '^N' history-beginning-search-forward-end
これを設定してるせいで ^N, ^P が履歴検索になってしまいます。
補完候補の選択時は履歴検索にならないようにする方法はありますか?
0528名無しさん@お腹いっぱい。2006/11/06(月) 04:32:14
>>527
なんか色々考えたけど、これが手っ取り早いかな。
bindkey -M menuselect '^P' up-line-or-history
bindkey -M menuselect '^N' down-line-or-history

ところで、マルチライン編集をする機会があるなら、
history-beginning-search-{backward,forward}-end よりも
{up,down}-line-or-beginning-search の方が便利だと思う。
05295272006/11/08(水) 17:36:25
>>528
ありがとうございます。
しかし、「no such keymap `menuselect'」と出て上手くいきません…。
ちょっとマニュアル読んで調べてみます。
05305272006/11/08(水) 18:19:03
zsh起動して
bindkey -M menuselect '^N' down-line-or-history
と、やると「no such keymap 'menuselect'」とエラーになってしまう。
だけど、いったん補完リストを出してからやると、ちゃんと設定できる。
何故だ…orz
05315272006/11/08(水) 18:52:26
解決しました。
zmodload zsh/complist で先に読み込まなきゃいけないんですね。
>>528
>{up,down}-line-or-beginning-search の方が便利だと思う。
こっちの方が良さそうです。ありがとうございました。
0532名無しさん@お腹いっぱい。2006/11/11(土) 03:24:11
ちなみに俺はこうしてる

zmodload zsh/complist

bindkey -M menuselect "^V" forward-word
bindkey -M menuselect "^[<" beginning-of-history
bindkey -M menuselect "^[>" end-of-history
bindkey -M menuselect "^[v" backward-word
bindkey -M menuselect "^M" .accept-line

最後の行はなんで入れたか覚えてない
0533名無しさん@お腹いっぱい。2006/11/11(土) 14:35:43
俺はこうしてる

zmodload zsh/complist

bindkey -M menuselect '^n' down-line-or-history
bindkey -M menuselect '^p' up-line-or-history
bindkey -M menuselect '^o' accept-and-infer-next-history
0534名無しさん@お腹いっぱい。2006/11/23(木) 14:34:03
どんなコマンドを実行したときも自動的に標準出力のログ
をとってくれるような設定ってありませんか?
0535名無しさん@お腹いっぱい。2006/11/23(木) 14:45:25
>>534
man 1 script
man 1 tee
0536名無しさん@お腹いっぱい。2006/11/23(木) 14:46:52
>>534
script?
0537名無しさん@お腹いっぱい。2006/11/23(木) 14:59:13
makeした後とかで「teeしとけばよかった」と思うことがあるので、
どんなコマンドうったときも自動的にteeしてくれるようなものが
あるといいと思ったのですが、viとかを考えるとけっこう難しいですね。
scriptは常用するにはちょっとうざいです。
0538名無しさん@お腹いっぱい。2006/11/23(木) 15:05:35
>>537
kterm -sl 10000 とか???
スクロール保存行を多くとっておけばいいじゃん。

どーでもいいけど、質問は zshとどう関係あるんだよ??
0539名無しさん@お腹いっぱい。2006/11/23(木) 15:26:25
だから、loginしたときに自動でteeでもscriptでも走らせればいいじゃんって
ことじゃないの?
0540名無しさん@お腹いっぱい。2006/11/23(木) 15:30:19
teeだと viが使えなくなる。
scriptだと大げさ。知らずに使ってると巨大なファイルができるかも。

よって、今のところ kterm -sl 10000 が最適解か?
0541名無しさん@お腹いっぱい。2006/11/23(木) 15:38:38
screen 使っとけば?

# xscript (だっけ?) 思い出した。
0542名無しさん@お腹いっぱい。2006/11/24(金) 04:26:30
補完機能がすごいらしいしcsh系のへんなとこがないらしいので最近 chsh した初心者です。
まだ分からないことだらけですが、これからお世話になります。
こんな環境です。
FreeBSD 5.4-RELEASE-p6, X Window System Version 6.9.0, kterm: version 6.2.0.ext02

早速質問です。

mplayer についての記述が以下にありました。
/usr/local/share/zsh/4.3.2/functions/Completion/X/_mplayer
ここにmfilesの候補として*.flvがないため、入れたいのですが、
どこ(どのファイル)にどう記述するのが正しい方法ですか。

latex だと *.tex が補完の候補にあがりますが platex については記述がないみたいです。
そこで locate zsh |grep -i latex してみたところ、結果が空でした。
latex と同じものを補完してくれればいいのですが、どうすべきですか。

似た問題がいくつかあります。初歩的な質問ですがどうぞよろしく。
0543名無しさん@お腹いっぱい。2006/11/24(金) 04:48:30
>>542
/usr/local/share/zsh/4.3.2/functions/Completion/X/_mplayer

- "*.(#i)(avi|mp3|mpg|mpe|mpeg|m1v|m2p|m2v|mov|asf|vob|mjpg|wma|wmv|asx|qt|rm|mkv|mka|ogm|ogg|wav)(-.)" && ret=0
+ "*.(#i)(avi|mp3|mpg|mpe|mpeg|m1v|m2p|m2v|mov|asf|vob|mjpg|wma|wmv|asx|qt|rm|mkv|mka|ogm|ogg|wav|flv)(-.)" && ret=0
試してないけどこんな感じ?

/usr/local/share/zsh/4.3.2/functions/Completion/Unix/_tex

#compdef tex latex slitex pdflatex jadetex pdfjadetex platex
とか書いてない?
0544名無しさん@お腹いっぱい。2006/11/24(金) 05:44:47
>>543

早速有難うございました!

二つともうまくゆきました。

ホームディレクトリに何か作ることを想像しましたが、
/usr/local/share/zsh/4.3.2/ 以下のファイルをを直接直してもいいのですね。
デスクトップ使用なので個人的には問題ありません。
ただ zsh のバージョンアップの際に注意しないといけないですね。

バージョンアップに左右されない書き方や、管理者でない場合のことも知りたいです。

ディレクトリ名を打つと cd するのがデジャビュ的になつかしいです。
MS-DOS 用のソフトで見たのか、記憶はさだかでありませんが、なつかしいです。
0545名無しさん@お腹いっぱい。2006/11/24(金) 07:23:27
zshはいい加減正式版をリリースしてくれないと泣いちゃうよ?
0546名無しさん@お腹いっぱい。2006/11/24(金) 13:06:39
>> 544
platexに関しては
% compdef _tex platex
で_texの補完ルールをplatexに適用できる
0547名無しさん@お腹いっぱい。2006/11/24(金) 15:42:55
>>544
>596 名前: 名無しさん@お腹いっぱい。 投稿日: 02/07/21 06:49
> 1. ~/.zfunc というディレクトリをつくる
> 2.$fpath に ~/.zfunc を加える(.zshrc 等には PATH と同じように書けばOK)
> 3.以下のファイルを _mplayer という名前で ~/.zfunc 以下にセーブする
> 4.あとは ~/.zcompdump をいったん消してから zsh を立ち上げなおしてくだちい
>
> == _mplayer ここから===============================================
> #compdef mplayer
>
> _arguments -R \
> '-h[オプションの一覧]' \
> '-V[冗長モード]' \
> '*:Movie File:_files -g \*.\(\#i\)\(mp3\|mpeg\|mpg\|avi\|wmv\)'
> ==ここまで=========================================================
> オプションはたいぎいので書いてません。
私もこういう設定は~/以下に置きたいので、上のを試してみたんですけど、tabを押すと
_main_complete:1: _main_complete: function definition file not found
というエラーが出て補完が効かないです。
0548名無しさん@お腹いっぱい。2006/11/24(金) 19:57:20
みなさんのお蔭でだいぶ見えてきました。伏して謝します。
以下御報告。

>>546
おお、これはいろんな場面で役に立ちますね!
% compdef _dvi dvipdfmx
あと、うしろにargumentたくさん取れるみたいですね。
% compdef _tex platex jbibtex

>>547
大きなヒントになりました。ほとんどそのままですが以下の方法でできました。
% mkdir ~/.zfunc
% cd ~/.zfunc
% cp /usr/local/share/zsh/4.3.2/functions/Completion/X/_mplayer ./

ファイルを編集して .zshrc に次の行を追加。
fpath=(~/.zfunc $fpath)

引用に「PATH と同じように書けばOK」とありますが、以下ではNGでお書きのエラーが出ました。
fpath="$fpath:~/.zfunc"
fpath="$fpath;~/.zfunc"
05495472006/11/24(金) 22:00:53
>>548
fpath="~/.zfunc "$fpath
はだめで(自分はこうやってて、だめだった)
fpath=(~/.zfunc $fpath)
だとうまくいくんですね。
なんでだろう?
0550名無しさん@お腹いっぱい。2006/11/24(金) 23:14:58
()は配列。前者は文字列にセットしちゃうからだめ。

FPATH="~/.zshfunc:$FPATH"
でもよい。
05515472006/11/25(土) 00:10:24
>>550
お答えありがとうございます。
すっきりしました。
0552名無しさん@お腹いっぱい。2006/12/15(金) 13:37:16
zshのデフォルトのプロンプトにcsh/tcshと同じ % が使われてるのはどうして?
0553名無しさん@お腹いっぱい。2006/12/15(金) 18:47:06
普通 % だから
0554名無しさん@お腹いっぱい。2006/12/15(金) 19:37:26
>>552
csh/tcshからの移行組に対するリハビリモードだから。
社会復帰できたらちゃんと PS1='$ ' に設定するのが望ましい。
■ このスレッドは過去ログ倉庫に格納されています