zsh入門 パート2 ..
[2ch|▼Menu]
36:名無しさん@お腹いっぱい。
02/11/06 16:25
setopt PRINT_CHEESE_BIT

37:名無しさん@お腹いっぱい。
02/11/06 16:35
cygwin の zsh-4.0.4 を rxvt の上で使っているのですが、
コンソールから日本語を入力すると化けてしまいます。
一応、quote すれば日本語ディレクトリに移ることは出来ます。(化けますが)
あと、PROMPT の %~ などが日本語ディレクトリだと化けてしまうのですが、
どうやったら化けなく出来るのでしょうか。

print_eight_bit は設定してあります。

38:名無しさん@お腹いっぱい。
02/11/07 21:13
>>36

下のように、叱られますたYO。

setopt:133: no such option: PRINT_CHEESE_BIT


39:名無しさん@お腹いっぱい。
02/11/07 21:23
zstyle ':completion:*' menu select=10
これでファイルなどの補完をC-f,C-bなどで移動できるんですが、
リターンを一回おしただけではコマンドは実行されず、2回おさなければならないので、
けっこうめんどくさいです。リターン一回で実行できるようにはできませんか?

40:名無しさん@お腹いっぱい。
02/11/08 11:24
すれ違いかもしレンガ、zshラーに聞きたい!!


みなさんんは、zshのおかげで、
findとgrepは使わなくなったとおもふ。

では、最近あえて、find使うのはどんな時でしょうか?





41:名無しさん@お腹いっぱい。
02/11/08 11:58
>>40 に聞きたい!!
**/* で find を使わなくなるのは分かるが、
grep はどうしてお使いにならなくなってしまったのですか?
その秘技を教えて下さい。


42:名無しさん@お腹いっぱい。
02/11/08 15:11
たぶん、>>40が言いたいのは "| grep" ではないかな?
憶測だけど

43:名無しさん@お腹いっぱい。
02/11/08 21:27
findつかわねえから文法しらねえや。zshで何日前という指定じゃなくて
何月何日のファイルと言う風にできたらさらに便利だと思うな

44:名無しさん@お腹いっぱい。
02/11/08 22:00
>>40
ファイルが多すぎる時.

zshで|grepの代わりって何?

45:名無しさん@お腹いっぱい。
02/11/09 01:00
>>40
色々条件つけたい時(日付とか)
zshに依存しないスクリプト書く時

46:名無しさん@お腹いっぱい。
02/11/09 09:34
time の結果をファイルに書き込むにはどうすればいいですか?
man zshmisc すると、standard error に出力するって書いてあるけど、
   time command 2>logfile
としても、command のエラーが記録されるだけで、
測定結果は画面に表示されてしまいます。

47:名無しさん@お腹いっぱい。
02/11/09 15:47
今月のUnix Userの記事はおもしろかったです。
>>46
漏れは/usr/bin/time使ったらできたよ。


48:名無しさん@お腹いっぱい。
02/11/09 21:24
>>47
% /usr/bin/time -o logfile command
でいけました。

どういうわけか、シェルのbuiltin コマンドじゃなきゃイカン
と思い込んでいた。

49:名無しさん@お腹いっぱい。
02/11/09 21:48
>>46 time command 2>&1 >logfile でどうよ?

50:名無しさん@お腹いっぱい。
02/11/10 08:20
>>31 スレ違い
スレリンク(unix板:193番)

51:46 = 48
02/11/10 12:16
>>49
うまいやりかたがみつからない。
descriptor の指定は全部command の一部として解釈されちゃう。

確かに、HDD の読み出し速度を計ろうと思って、

% time cat <largefile >/dev/null

なんてやる時はその方が都合がいいんだろうけどね。

52:名無しさん@お腹いっぱい。
02/11/10 13:21
>>50
ありがとう。できました。

53:名無しさん@Emacs
02/11/10 13:53
>>46
% 2>logfile time command


54:名無しさん@お腹いっぱい。
02/11/10 16:52
>>51
2>logfile time command
でいかかでしょうか

55:名無しさん@お腹いっぱい。
02/11/10 16:53
げっ、何時間も前に書き込みがあったとは。逝ってきます…

56:46
02/11/10 16:55
>>53
なるほど、そういうやり方も許されるのね。
ありがと。

ついでに、
command がエラーを吐く場合に、それをlogfile に書き出したくない場合は、
こんな感じでできるみたい。

% 2>logfile time command 2>/dev/null

57:名無しさん@お腹いっぱい。
02/11/11 11:23
今日更新したファイルだけ
ls
で表示できますか?

58:名無しさん@Emacs
02/11/11 12:00
>>57
すれ違い氏ね

59:名無しさん@お腹いっぱい。
02/11/11 15:51
>>57

% ls *(m0)
で、カレントディレクトリにあるmtimeが0日前のファイルが表示される。

詳しくは、man zshexpn して、"modification time" で検索したあたりを
よく読んでください。


>>58
あんた恥ずかしいよ


60:名無しさん@お腹いっぱい。
02/11/11 20:57
>>59
そういう書き方もあったのか。
*(m-n)はn日まえ以降に更新したファイルで
*(mn)はn日前に更新したファイル
ってことですね。

61:名無しさん@お腹いっぱい。
02/11/11 21:34
しかし、 57 の言う「『今日』更新したファイル」というのは、簡単には
書けない

62:名無しさん@お腹いっぱい。
02/11/11 21:58
ls -lしてgrepかなぁ。

63:名無しさん@お腹いっぱい。
02/11/11 22:04
ls -l|grep "`date|cut -d" " -f2,3`"
cutのデフォルトの区切りってスペースじゃないのかよ!

64:名無しさん@お腹いっぱい。
02/11/12 02:38
GNU date依存かもしれないけど。

echo *(ms-$(($(date +%s) - $(date -d $(date +%D) +%s))))

出来るだけzshの機能に置き換えてみると…、

echo *(ms-$(($(print -Pn %D{%s}) - $(date -d $(print -Pn %D) +%s))))

結局現在時刻以外の時刻をstrftimeに渡すのがzshだけで出来なかったよ。

65:名無しさん@お腹いっぱい。
02/11/12 04:02
>>64
力技で持っていくと
echo *(ms-$[$(print -P '%D{%H}' \* 3600 + '%D{%M}' \* 60 + '%D{%S}')])
かな。

まだ簡単にできるかな? しかし、時刻指定がもうちょっと楽にできればなあ

66:名無しさん@お腹いっぱい。
02/11/12 06:39
もしcronで動かすだけなら
実行時刻を考えればいいだけのような気もしてきた

67:名無しさん@お腹いっぱい。
02/11/12 19:39
>>64
すげー。それがあれば何月何日から何月何日の間に更新されたファイルとかさがせるね。
もっと簡単につかえるようにするにはどうすればいいだろう。

68:名無しさん@お腹いっぱい。
02/11/15 03:55
Emacs21のshell-modeでzshを使ってます
前スレでeshellというshell scriptを書いてそれをESHELLにsetすれば良い
という指摘がありましたが、あれではzshの補完を完全には活かせてません
よね?
どうにかしてこの問題を解決出来ませんでしょうか?

因にterm-modeではファイル名の補完すらできませんでした

69:名無しさん@お腹いっぱい。
02/11/15 17:07
ansi-term で普通に補完できてますが

70:名無しさん@Emacs
02/11/15 17:15
>>69
Me too!

71:68
02/11/16 02:42
>>69
ansi-term良いですね
よろしければ便利な設定とか教えて頂けませんか?
日本語のページが極端に少ないもので…

#やっぱり辞書を片手に英語から?

72:名無しさん@お腹いっぱい。
02/11/16 12:25
>>67
>>65のを使ってこんなのを作ってみた。
# *($(afterNdaysago))または*($(afterNdaysago 0))で今日変更されたファイル
# *($(afterNdaysago 1))で今日か昨日変更されたファイル
afterNdaysago () {
echo ms-$[$(print -P '%D{%H}' \* 3600 + '%D{%M}' \* 60 + '%D{%S}' + "${1:-0}" \* 86400)]
}

何月何日とかの指定が出来るようにするために再度dateを使って
書き直してみたらこんな感じ。

# *($(daterange)) で今日変更されたファイル
# *($(daterange '2 weeks ago')) で最近2週間で変更されたファイル
# *($(daterange 2002-11-01 2002-11-10)) で11月1日から11月10日に変更されたファイル
daterange () {
echo -n ms-$[$(print -Pn %D{%s}) - $(date -d "${1:-$(print -Pn %D)} 0:0:0" +%s)]
[ -n "$2" ] && echo -n ms+$[$(print -Pn %D{%s}) - $(date -d "$2 0:0:0" +%s)]
}


73:67
02/11/16 14:11
>>72
いやー、すごいですねー。

ちょっと気になったことを
${1:-$(print -Pn %D)}の部分なんですが、
URLリンク(dengaku.org)
をみると${1-$(print -Pn %D)}のように:が無くてもいいようですが、違いはなんでしょう?
もう一つ
print -Pn %D{%s}

02-11-16 02-11-16s
となってうまくできなかったのでその部分をdate +%sに置き換えました。

74:65
02/11/16 19:09
>>73
> 02-11-16 02-11-16s
> となってうまくできなかったのでその部分をdate +%sに置き換えました。

zsh のオプション設定によっては、ブレースが更に特別な意味を持つためです。
>>65 で '%D{%H}' などのように quote してあるのはそのためです。
>>72 でも、オプションに左右されないようにそうした方がいいでしょうね。

> ${1-$(print -Pn %D)}のように:が無くてもいいようですが、違いはなんでしょう?

たしか : がなければ null かどうかは問わなかったはずです。
${1-$(print -Pn %D)} で $1 が null だとそのまま null が評価値になります。

75:名無しさん@お腹いっぱい。
02/11/16 22:38
$(( )) -> $[ ] は気がついたから変更してたんだけど、
''は気づいてなかった。

ブレースの解釈に影響があるオプションって何?
と思って探してみたら BRACE_CCL で動作が変わった。

: の有無はzshに限らずshell scriptのFAQという気がする。

76:73
02/11/17 22:16
>>74
ありがとうございます。
>>75
FAQでしたか。すいません。

77:名無しさん@お腹いっぱい。
02/11/29 00:24
さがってるからあげるね。

setopt printexitvalueってやつさ、シェル関数の返り値はおしえてくれないんだね。
例えば
hoge(){
false
}
ってのを実行して$statusは1なんだけど、printexitvalueは教えてくれない。不便だ。

78:名無しさん@お腹いっぱい。
02/12/01 00:08
compctl -g '*.l' + flex lex
と定義してもflexは*.lexファイルしか補完してくれない。
autoload -U compinit
compinit -u
これを実行しなければ問題ないんだが、そう言うわけにはいかないので
だれか教えてください。

79:名無しさん@お腹いっぱい。
02/12/01 17:18
>>78
_flex を ~/.zfunc/ にコピーして input files の部分を書きかえる。
その後 $FPATH=~/.zfunc:$FPATH を .zshenv 等に加える。
そしてzshを起動しなおす。


80:名無しさん@お腹いっぱい。
02/12/01 17:58
>>79
できた。ありがとう。
今までオプションの補完ができるなんてスゲーとか思ってたけど、
_flexとかのファイルに書いてあるだけなのか。

81:名無しさん@お腹いっぱい。
02/12/01 19:40
むしろ_flexとかのファイルに書いてあるから
自由自在にカスタマイズ(のはず)

82:名無しさん@お腹いっぱい。
02/12/07 22:59
age

83:名無しさん@お腹いっぱい。
02/12/09 21:35
%cat dummy
001 aho
002 boke
003 hage

というファイルを
001
002
003

aho
boke
hage
に分けるとき、
cut -f1 dummy>f1
cut -f2 dummy>f2
というのを一気にやりたいですが、どうすればいいでしょう。
<() <()

>f1 >f2
などを使ってできないでしょうか?




84:名無しさん@お腹いっぱい。
02/12/09 21:51
cut -f1 dummy > f1; cut -f2 dummy > f2

いやー、セミコロンって便利♥

85:83
02/12/12 11:11
ぼくは真面目に質問してるのです!!

86:名無しさん@お腹いっぱい。
02/12/12 11:26
>>85
>>84 は真面目に答えてると思うが。

87:84
02/12/12 12:28
>>86
フォローして貰っといてなんだが、別にマジメって程のモンではありませぬ(w

88:名無しさん@お腹いっぱい。
02/12/12 14:16
というか、awk使うべきだろ
この場合

89:名無しさん@お腹いっぱい。
02/12/12 17:37
↑キボン

90:名無しさん@お腹いっぱい。
02/12/12 23:30
>>89
スレ違い

awk '{print $1 > "f1"; print $2 > "f2";}' dummy

91:名無しさん@お腹いっぱい。
02/12/13 00:43
84 の方が短い罠

92:84=90
02/12/13 02:43
そして 84=90 という罠

93:名無しさん@お腹いっぱい。
02/12/13 19:34
オークの中でリダイレクトできるのか。

94:名無しさん@お腹いっぱい。
02/12/15 02:53
zshでの関数定義内において
標準入力をファイルに書き出すには
どのような書き方がありますか?

使い方:
last | x2w

コード:
x2w(){
while read line do
echo >>dummy-memo.txt
done
<略>
}

read line do;〜;done しか思い当たりません。


95:名無しさん@お腹いっぱい。
02/12/16 02:40
短く書くのならcatでいいのでは?

x2w () {
cat >> dummy-memo.txt
}


96:83
02/12/17 14:03
どうもです。

cut -f1 dummy>f1
cut -f2 dummy>f2


cut -f5 dummy>f5

を連続して実行したいのですが、
^1^2
のグローバル置換ありませんか?
^1^2だと
cut -f1 dummy>f2
になります。



97:名無しさん@お腹いっぱい。
02/12/17 14:59
date -3
で今日の日付をhighlight表示させる方法ありませんか?

98:65
02/12/17 16:57
>>96
r 1=2 とか。それよりも for loop を廻した方が早いと思うが
>>97
くだ質へ行きたまえ

99:名無しさん@お腹いっぱい。
02/12/18 01:12
>>96
!:gs/1/2/
はどう?

100:100
02/12/19 02:07
zsh (・∀・)イイ!!

101:名無しさん@お腹いっぱい。
02/12/19 02:29
シェル変数を補完しないようにするにはどうすればよいのでしょう?

102:名無しさん@お腹いっぱい。
02/12/19 08:24
awk --help |grep hoge
grep --help | grep hoge
のようにhelpの出力をgrepしたい時は
| を使うのでしょうか?







103:名無しさん@お腹いっぱい。
02/12/19 09:49
>102
そうですが何か?

104:名無しさん@お腹いっぱい。
02/12/19 10:48
sourceコマンドの補完で質問。
原因不明で、以下のものが動かなくなった。
他のサンプル持ってないので、皆さんの
_source見せてください。
おながいします。


% cat _source
#compdef . source
compadd ~/.zsh.d/.zsh(rc|env) || _files


105:名無しさん@お腹いっぱい。
02/12/19 14:33
あー、グローバルエイリアスってすごいね。
これだけでzshに存在意義を見出させてしまいます。

zsh以外で実現しているシェルってあるの?

106:名無しさん@お腹いっぱい。
02/12/19 17:36
>>102
もしできなかったら
awk --help 2>&1 |grep hoge

>>105
なに設定してる?
漏れは
alias -g I=/dev/stdin
alias -g O=/dev/stdout
alias -g E=/dev/stderr
alias -g N=/dev/null
alias -g L='|less'
alias -g G='|grep'

107:名無しさん@お腹いっぱい。
02/12/19 19:52
foreach i (ココの部分)
      ^^^^^^^^
グローバルエイリアスがいちいち展開されてウザイっす。
例えば、bindkeyでキーバインディングの空き情況を調べる時、
foreach i (w \W i \I);bindkey "^x$i";end
のように展開を避ける必要があって、面倒です。

グローバルエイリアス展開の有無を情況ごとに調整する
オプションありませんか?

108:名無しさん@お腹いっぱい。
02/12/19 20:52
bindkeyを引数なしで実行すればいいのでは?

109:名無しさん@お腹いっぱい。
02/12/19 22:47
>>107
> グローバルエイリアス展開の有無を情況ごとに調整する
> オプションありませんか?
これは自分も以前思ったことがあった。しかし、グローバルエイリアス
の有効・無効を「簡単に」切り替えられる方法は見つけられなかったが、
一応の方法は見つけた。

無効にしたいとき、
disable -a $galiases[(I)*]
有効に戻したいとき
enable -a $dis_galiases[(I)*]

110:名無しさん@お腹いっぱい。
02/12/19 23:36
漏れはグローバルエイリアスって使ったことないんだけども、
それって使い方を間違えているんじゃない?
もっと、衝突しづらい文字列のエイリアスをあてがうのが正しい使い方かと。

111:名無しさん@お腹いっぱい。
02/12/20 00:25
そうでもない

112:名無しさん@お腹いっぱい。
02/12/20 21:55
%echo '
>hoge
>hoge
>ho
ここまで入力して上の行に戻れる?

113:104
02/12/21 02:48




いろいろ調べていますが、結局のところ

% cat _source
#compdef . source
compadd ~/.zsh.d/.zsh(rc|env) || _files

でsourceの補完が聞かなくなった理由が
わかりませんでした。

だれか理由か関連情報ご存知ありませんか?





114:名無しさん@お腹いっぱい。
02/12/22 01:52
zshで、makeなどの出力結果をコンソールに出しながら
標準出力と標準エラー出力をそれぞれ別ファイルに吐き出すことは出来ますか?


115:名無しさん@お腹いっぱい。
02/12/22 03:02
make >LOG.stdout 2>LOG.stderr >& /dev/tty
とか
make >LOG.stdout 2>LOG.stderr |& tee
の方がいいか

116:名無しさん@お腹いっぱい。
02/12/22 03:38
どうもありがとうございます。
shじゃできないけど、zshだと出来るのですね。

117:名無しさん@お腹いっぱい。
02/12/22 23:13
history内部コマンドの表示行数はデフォルトでは10行ですが
変更方法はありませんか?

118:名無しさん@お腹いっぱい。
02/12/22 23:19
おまいら便利なbindkey教えてください。
unix userに載ってたのを書いてみる
accept-and-hold(M-A) コマンドを実行して再び表示する。
transpose-word(M-T) 単語を入れ代える
quote-line(M-') 'でくくる
insert-last-word(M-.) 直前のコマンドの最後の引数を挿入

autoload run-helpをやってもM-h(run-help)でwhereなどの内部コマンドのヘルプが
でてこないのは漏れだけ?

119:名無しさん@お腹いっぱい。
02/12/22 23:21
>>117
たぶんHISTSIZE=10000(byte)

120:名無しさん@お腹いっぱい。
02/12/22 23:22
>>117
勘違いスマソ
alias history='history -20'

121:117
02/12/23 00:09
alias使うと、
% history -m 'hoge*'
などのマッチングが出来ません。

そうすると、
% function history{history 〜}使うしかないのかな?




122:名無しさん@お腹いっぱい。
02/12/23 00:10
>>121
> % history -m 'hoge*'
> などのマッチングが出来ません。

ということにしたいのですね。

123:名無しさん@お腹いっぱい。
02/12/23 01:23
そもそもhistoryコマンドって何に使う?
>>121
grep使えば?

124:名無しさん@お腹いっぱい。
02/12/23 03:01
>>118
> autoload run-helpをやってもM-h(run-help)でwhereなどの内部コマンドのヘルプが
> でてこないのは漏れだけ?
手許では unalias run-help; autoload run-help で内部コマンドのマニュアルが動いている。
もっとも zshbuiltins(1) が先頭から表示されるだけで、それほど便利ではない(w

>>119
単位は byte でないよ。履歴の数そのもの

>>117
history は fc -l の別名だから適当に使い分ければ?

125:名無しさん@お腹いっぱい。
02/12/23 16:35
>>124
run-helpがaliasされてたのですか。おもしろい使い方ですね。
>単位は byte でないよ。履歴の数そのもの
スマソ

126:名無しさん@お腹いっぱい。
02/12/26 01:38
$@, $*の扱いがzshとshで違うのは仕様ですか?

127:名無しさん@お腹いっぱい。
02/12/26 10:12
>>126
どう違う。


128:名無しさん@お腹いっぱい。
02/12/26 21:33
#test.sh
arg.sh $@
arg.sh $*
arg.sh "$@"
arg.sh "$*"

引数の数を表示
#!/bin/sh
#arg.sh
echo $#

sh test.sh 'a b' 'c d'
4
4
2
1
zsh test.sh 'a b' 'c d'
2
2
2
1
勘違いしてたらスマソ>>127
bashは4421になった。

129:名無しさん@お腹いっぱい。
03/01/03 11:52
から揚げ

130:名無しさん@お腹いっぱい。
03/01/03 15:49
うまうま

131:名無しさん@お腹いっぱい。
03/01/03 18:08
zsh を 3.0.8 から 4.0.4 に上げたら job control が変になりました。
具体的には
% less nannoa.txt

として見てるときに kill -STOP `pidof less` して止めたとき、
fg で less をフォアグラウンドにだすと jk では上下せず、
j + return, k + return というように改行キー入れないと動かなくなります。

これ、どのへんの設定を直せばいいんでしょうか。


132:777
03/01/03 19:06
>>826
すんばらしい。
ありがとうございました。


133:名無しさん@お腹いっぱい。
03/01/03 20:16
>>826 に期待がかかるわけだが。

134:826
03/01/03 22:49
>>777
いえいえ、どーいたしまして

135:名無しさん@お腹いっぱい。
03/01/04 13:11
>>131
4.06にしたら?

136:名無しさん@お腹いっぱい。
03/01/07 01:08
>>128
see SH_WORD_SPLIT

% zsh -y test.sh 'a b' 'c d'
4
4
2
1


137:128
03/01/07 19:35
>>136
ありがとうございます。

zshってzshのオプションは補完してくれないのか。

138:名無しさん@お腹いっぱい。
03/01/07 20:04
-o


139:名無しさん@お腹いっぱい。
03/01/11 12:07
日経Linuxでちょろっと取り上げられてたage

140:名無しさん@お腹いっぱい。
03/01/12 12:54
zshrcの置き場所って
~/.zsh/zshrc
で正しいですか?
設定を読み込んでくれないのですが

141:名無しさん@お腹いっぱい。
03/01/12 13:01
>>140
/etc/zshrc

142:名無しさん@お腹いっぱい。
03/01/12 13:17
>>140
~/.zshrc


143:名無しさん@お腹いっぱい。
03/01/12 13:22
>>140
$HOME/.zshrcでいいんじゃない?

144:名無しさん@お腹いっぱい。
03/01/12 13:24
>>140
ドキュメントを読まない方はお断りします。

145:名無しさん@お腹いっぱい。
03/01/12 16:59
>>12 のwikiが無くなってるんだけど、どっかに移転しましたか?

146:140
03/01/13 03:33
140ですが
$HOME/.zshrc
を読み込んでくれません
aliasも有効にならないし
環境変数も有効にならないし
書式がおかしいというエラーも出ません
なんででしょうか
chpassでログインシェルを変更しました
またログインシェルを変更せずとも
ただたんにフォアグラウンドで走らせようとも
関係なく読み込んでくれません
関係ないか
なんででしょうか?

147:140
03/01/13 03:40
ちなみにパーミッションは
-rw-rw-rw-: こんな感じですね
とくに意味は無いですが
そのうち変えます
自分に読み込み権限はあります


148:名無しさん@お腹いっぱい。
03/01/13 10:14
>>147
source $HOME/.zshrc って打ったらどうなる?

149:名無しさん@お腹いっぱい。
03/01/13 11:00
>>147
> -rw-rw-rw-: こんな感じですね

(゚Д゚)ハァ?

150:名無しさん@お腹いっぱい。
03/01/13 13:55
>>140

# $HOME/.zshenv
ZDOTDIR=$HOME
export ZDOTDIR

man zsh に目を通しておきませう


151:150
03/01/13 13:59
あ、 >>150 は zsh 4.0.6 (i686-pc-cygwin) での話なんで、
他の環境では違うのかも...

152:山崎渉
03/01/15 12:53
(^^)

153:名無しさん@お腹いっぱい。
03/01/20 20:56
GUIでアイコンをクリックすると適切なアプリが起動するように、
プロンプトでファイル名をうったら適切なアプリが起動したら便利だと思う。
zshのpreexecとかでできないかな?

preexec(){
if [ -f "$1" ]; then
vi $1
fi
}
と定義して
%.zshrc
とやるとviは起動するんだけど、 そのあとに
zsh: command not found: .zshrc
となる。ちょっとうざい。

154:名無しさん@お腹いっぱい。
03/01/20 21:11
>>153
スクリプトで拡張子見て起動するようにしてみれば?

155:名無しさん@お腹いっぱい。
03/01/21 09:36
>>154
まず magic を見て、次に拡張子の方がいいだろうな。
file の出力を拾うのがいいかな?


156:名無しさん@お腹いっぱい。
03/01/21 18:13
>>154-155
スクリプトだとたとえ1文字にしても
%a hoge.txt
としなければいけない。
%hoge.txt
ってのはやっぱり無理かな。

157:名無しさん@お腹いっぱい。
03/01/21 22:12
bindkeyで適当な関数を割り当てればいいんじゃないかな。
内容はあんまりいい例じゃないかもしれないけどこんな感じで。

function my-accept-line {
emulate -L zsh
local -a cmd; cmd=(${(z)BUFFER})
case "$cmd[0]" in
*.log)
BUFFER="$PAGER $BUFFER"
;;
*)
if [ -z "`whence $cmd[0]`" ]; then
BUFFER="echo $BUFFER"
fi
;;
esac
zle accept-line
}
zle -N my-accept-line
bindkey '^J' my-accept-line

参考にしたのは
URLリンク(dengaku.org)
のrun-fg-editorと
URLリンク(www.zshwiki.org)
のpreexec。

158:名無しさん@お腹いっぱい。
03/01/21 23:31
>>157
カッケー!サンキュウ!

159:158
03/01/22 01:58
よく考えたら補完が使えなくなるのか。うーん。

160:155
03/01/22 09:43
おれはpreexecの中で一時的にaliasを定義したらいいかな?
と思ってやってみたんだが、aliasの展開はpreexecより前
みたいなんだよなー。
ソースをちょっと直せば対応できそうな気がするけど。


161:名無しさん@お腹いっぱい。
03/02/02 14:25
faq っぽいですがよろしくです。

shell> aaa bbbbbbbbbbb ccccc

とかあって、bbbb の中頃にカーソルがあるとします。そこで、
次の単語までジャンプする方法ってありますか?
# つまり ccccc の頭まで。
矢印キー押しっぱなしというのは美しくないので・・

162:名無しさん@お腹いっぱい。
03/02/02 16:10
>>161
ESC f とか ESC b とか

163:名無しさん@お腹いっぱい。
03/02/03 02:15
さんくすです! esc か・・。
ctrl に適当に割り当てられれば便利そうですね。
^F も ^B も日頃使わないからそれに振ってみます ;-)

164:名無しさん@お腹いっぱい。
03/02/03 11:06
>>163
Meta-b(Alt-b) でイくない??

165:名無しさん@お腹いっぱい。
03/02/03 15:09
macos 上のターミナルなので alt は無いです。option キーだと
変な文字が入力されるだけだし・・。ううむ。

166:名無しさん@お腹いっぱい。
03/02/03 23:28
>>161ではありませんが、C-, とか C-. に割り当てることは出来ませんよね?
ってこれは、terminalの問題か...。


167:名無しさん@お腹いっぱい。
03/02/06 23:32
実行しているコマンド名をウィンドウのタイトルに設定したいんですが、そんなこと
可能でしょうか?
Enterでコマンドが投入された直後にそのコマンドラインをウィンドウのタイトルに
設定できればいいと思ったんですが、うまい方法を見つけられませんでした。
実行が終了して元に戻すのはPROMPTでいいんでしょうが。

168:名無しさん@お腹いっぱい。
03/02/07 00:04
>>167
preexec を設定してはどうでしょうか。
cf. URLリンク(www.zsh.org)


169:167
03/02/07 00:45
>>168
そういうフックがあったのですね。ありがとうございました。試してみます。

170:fushianasan
03/02/07 17:49
zshって、tcshとくらべると、
動作速度、メモリの使用量はどうなの?

171:名無しさん@お腹いっぱい。
03/02/08 01:01
>>170
起動はおそい

172:fushianasan
03/02/08 01:06
一回起動しちゃうと、サクサク?

screenとかmlterm多様してると、
シェルのプロセス立ちまくるから、
あんまり重い||遅いとこまる。

tcshマンセーな俺はzshを愛せるだろうか

173:名無しさん@お腹いっぱい。
03/02/08 04:20
こんな感じ
% ps aux |grep '[tcz]sh'
xxx 2172 0.0 0.8 2436 2016 p3 Ss 4:17AM 0:00.14 -zsh (zsh)
xxx 2178 0.0 0.4 1384 996 p3 S 4:17AM 0:00.03 tcsh

うーむ、実質二倍って感じ?

174:名無しさん@お腹いっぱい。
03/02/08 08:58
>>172
一回起動するとサクサク!
screenはdetatchしてatatchすれば起動の遅さは気にならないはず

175:名無しさん@お腹いっぱい。
03/02/08 10:28
486 なマシンだと zsh の方が completion とか明らかに遅かった。ヲレには
耐えられないレベルだったので使用を諦めた記憶がある。

176:fushianasan
03/02/09 00:03
>>173-175
御丁寧にどうも。
とりあえず、つかってみようかと思います。
多機能なぶん、おもいのはしかたないのかなぁ。


177:名無しさん@お腹いっぱい。
03/02/10 18:26
>>175
Pentium/120MHzでもcompletionとか明らかに遅いよ。
でもなんとかつかえる範囲なので使ってるけど。
普段余り触ることのないルータ機だからってものあるけど。

178:fushianasan
03/02/10 22:12
P2/233Mhzでも、微妙に遅いかも…。

使用感ですが、かなりカスタマイズできるようになっていて、
tcshよりも、かなり自由度がたかそうです。

うちのtcshはいじりすぎて、実メモリを1.8Mくらいメモリくっちゃうんで、
zshへの移行もありかなとおもってますが、
.*rcの移行が非常に面倒くさい…。

地道にzshの勉強しながら移行します。

179:名無しさん@お腹いっぱい。
03/02/10 22:53
>>178
2.xでも使ってみれば?
それでも現行のtcshより便利じゃないかな。
ってtcshの事はよく知らないんだけど。


180:名無しさん@お腹いっぱい。
03/02/10 22:57
ソンナワケ(ry

181:名無しさん@Emacs
03/02/11 18:44
>>179
|>!|2.xでも使ってみれば?
|>!|それでも現行のtcshより便利じゃないかな。

ということにしたいのですね?

182:名無しさん@お腹いっぱい。
03/02/12 00:56
>>180,181
いや、おれの.zshrcは2.6の頃から大して変わって
ないからさ(細かい所はいじってるけど)。
最近追加された機能なんて使わなくても十分
便利なんじゃないかな、と思っただけ。


183:名無しさん@お腹いっぱい。
03/02/12 01:49
~/.zshrcって何書いています? キーバインドくらいでしょうか?

私は以前、~/.zshenvには環境変数、~/.zshrcにはシェル変数やエイリアス、
キーバインドの設定を書いていましたが、
rshしたときには ~/.zshrcが読み込まれないみたいなので、
今は全部 ~/.zshenvに書いています。


184:名無しさん@お腹いっぱい。
03/02/12 02:54
ssh だと読み込まれるけど

185:名無しさん@お腹いっぱい。
03/02/12 06:38
rsh host command
では読み込まれない。

rsh host
では読み込まれる。

sshでも一緒。


186:名無しさん@お腹いっぱい。
03/02/12 06:39
Mac OS X 10.2.3 付属の zsh 4.0.4 を使っています。
端末エミュレータ (Terminal.app) で表示言語を UTF-8 にしているのですが、
日本語を入力すると文字化けします(EUC だと文字化けしません)。
zsh で utf-8 を通す方法があったら教えて下さい。

187:名無しさん@お腹いっぱい。
03/02/12 09:40
>>186
「utf-8移行スレ」なんてスレ立てて情報集めてみるのはどう?
各プログラムの utf-8 対応度が知りたい。


188:名無しさん@お腹いっぱい。
03/02/12 20:16
.zshrcってないの?

189:名無しさん@お腹いっぱい。
03/02/12 21:31
ある

190:名無しさん@お腹いっぱい。
03/02/13 03:19
sjisなファイル名はちゃんと補完できないのか?

191:名無しさん@お腹いっぱい。
03/02/13 16:21
なんだか404から406にした時かなり遅くなったように感じますた。

192:名無しさん@お腹いっぱい。
03/02/13 21:31
zsh上でとあるソフトを make install として/usr/bin なんかに入っても
zshを再起動させないとコマンドの補完に含まれないんだけど、なんか設定あるのですか?
逆にPATHの中のコマンドを削除した場合、ずっとそのコマンドが補完対象に含まれるし。

193:名無しさん@お腹いっぱい。
03/02/13 21:34
>>192
rehash

194:_
03/02/14 22:11
zshのオプションに文字列を渡せてそれを実行させてプロンプトに欝って欲しいのですけど
どうしたらできますか?

195:_
03/02/14 22:42
-e -cだと実行した後zsh死んでしまうし。

196:名無しさん@お腹いっぱい。
03/02/14 23:10
>>194
なんでそんなことしたいの?

197:名無しさん@お腹いっぱい。
03/02/17 19:06
hoge.c
int main(){
fprintf(stderr, "err\n");
fprintf(stdout, "out\n");
}
./hogeのエラー出力をerr.txtに標準出力をout.txtに出力して
画面には両方を出力するにはどうすればいい?
./hoge 1>&2 2>&1 2>error.txt 1>out.txt
これで一応できたけど、意味不明。shでもできる方法ない?

198:名無しさん@お腹いっぱい。
03/02/17 23:18
>>197
わかりやすいのがいいのなら、
./hoge > out.txt 2> error.txt |& cat
とか。
197もそうだけど、setopt multios されてないとダメ。
hでは
((./hoge |tee out.txt >&3) 2>&1 |tee error.txt) 3>&1
くらいかな。もっと簡単な方法あるかな?


199:198
03/02/17 23:19
s/hでは/shでは/


200:名無しさん@お腹いっぱい。
03/02/18 00:15
>>198
> ./hoge > out.txt 2> error.txt |& cat
これだと、out.txt に stderr も含まれない?

./hoge > out.txt 2> error.txt >& /dev/tty
なら大丈夫だが、あまり好みではない

201:198
03/02/18 10:51
>>200
あれ、ほんとだ。確認したはずなんだが、頭が寝ていたらしい。
ありがと。
しかし、 |& と >& はふるまいが違うのか。
んなの man 眺めたくらいじゃ気付かんよ・・・

ちなみに/dev/tty使うの嫌いなのは一緒だったりする。


202:197
03/02/18 11:47
>>198-201ありがとうございます。
((./hoge |tee out.txt >&3) 2>&1 |tee error.txt) 3>&1
これすごいですね。もうなにがなんだかってかんじ。

./hoge > out.txt 2> error.txt |& cat
俺もこれためしたんだけど、なんでout.txtに全部入るのかわからなかった。

203:198
03/02/18 14:08
>>202
zshmisc(1) に

`|&' は `2>&1 |' の省略形
`>& word' は `> word 2>&1' の省略形ではない

と書いてある。そこから想像しろという事らしいな。


204:200
03/02/18 16:44
>>201
>あれ、ほんとだ。確認したはずなんだが、頭が寝ていたらしい。
まあ、そういうこともあるね。 実は >>115 を書いたのも自分だったりする(w
このとき、自分もちゃんと確認したつもりだったけどね。同じような質問が
きたので、もう一度動作を確かめて気付いた次第。114 の人に悪いことをした。

>>203
どうも直感的に扱えないのが、嫌なところだね。

/dev/tty を使うのが気に喰わないので、zsh 的に他の解決法はないものかと
思案したところ、こんなのでいけそうだ。

./hege >& >(cat) >out.txt 2>error.txt

でも、綺麗とは言い難い…

205:197
03/02/18 17:42
うわ、既出でしたか。毎日見てるはずなのにな・・・

206:名無しさん@お腹いっぱい。
03/02/20 00:32
tcshの
bindkey -k up history-search-backward
bindkey -k down history-search-forward
みたいな事は、zshで出来るのかな?

これがないと移行する気になれないんだが、
出来る人情報キボン

207:名無しさん@お腹いっぱい。
03/02/20 00:50
>>206
history-search-(back|for)wardならあるけど?
それとも、カーソルキーに割り当てたいの?
up => "^[[A", down => "^[[B" みたい。

208:名無しさん@お腹いっぱい。
03/02/20 00:52
M-xしたときのキーバインドってどう変えるんでしょう?
Emacs風に、"C-a"とか"C-b"使いたいし、
M-[pn]で、M-xでコールした関数の履歴を活用したい...。


209:名無しさん@お腹いっぱい。
03/02/20 01:06
>>206
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end

210:名無しさん@お腹いっぱい。
03/02/20 01:10
>>207,209
サンクス!
これで移行する事ができました。
zsh、おもったより軽くて快適。

イイ!!

211:名無しさん@お腹いっぱい。
03/02/20 13:23
zshがディレクトリのシンボリックを
勝手にリンク先の名前に戻してしまうのですが、
どういう風に設定したらよろしいでしょうか?
意図的に名前をかえてリンクしてあるディレクトリの意味がなくなってしまいました。
お知恵をお貸しください。

212:名無しさん@お腹いっぱい。
03/02/20 13:27
すまそ、
ディレクトリのシンボリックリンクを

でした。

213:211
03/02/20 13:51
自己解決しました。

スレ汚しすまそ。

214:名無しさん@お腹いっぱい。
03/02/20 14:13
>>213
なんだったの?

215:名無しさん@お腹いっぱい。
03/02/20 15:55
>>214

chase_linksがついてたせいで、
hoge-xxx@ hoge/
pwd ~/hoge-xxx/
にしたかったのが、
pwd ~/hoge/
になってたの。

chase_linksを消したらなおった。


216:名無しさん@お腹いっぱい。
03/02/22 17:08
compctl -x 's[-]' -s '`kill -l`' - 'p[*]' -c -- killall
tcshから引き継いだやつなんですが、
compinitしないと動かなんです。
compinitせずに動かす方法はありますか?

217:名無しさん@お腹いっぱい。
03/02/22 17:34
その設定は別に要らんような。killall のデフォルトの補完とそんなに違う?

218:名無しさん@お腹いっぱい。
03/02/22 18:23
必要なんです。
「compinit」しませんから。
非常に重くなるので、compctlで済ませたいです。

219:名無しさん@お腹いっぱい。
03/02/23 13:39
>>218
compinitしとけ。重くなるって、起動だけじゃなくて?

220:名無しさん@お腹いっぱい。
03/02/23 15:10
>>218
[prefix]/share/zsh/[version]/functions/ から要らない補完関数消したら?

221:名無しさん@お腹いっぱい。
03/02/23 17:45
レスどうも。
根本的な解決にならないようですので、
自分でどうにかします。

ありがとうございました。

222:名無しさん@お腹いっぱい。
03/02/26 15:05
補完リストをカラー表示する方法ってありますか?

223:名無しさん@お腹いっぱい。
03/02/26 15:16
無い。

224:名無しさん@お腹いっぱい。
03/02/26 15:18
>>222テメー犬厨だな、
晒しage

225:名無しさん@お腹いっぱい。
03/02/26 15:27
あるだろ。

zstyle ':completion:*' list-colors ''

とか。

まあ、聞く前に man zshall しろってこった。

226:名無しさん@お腹いっぱい。
03/02/26 15:37
zmodload -i zsh/complist
export ZLS_COLORS='di=01;36'

227:名無しさん@お腹いっぱい。
03/02/26 15:40
>>226
出来ました。ありがとうございます。

228:名無しさん@お腹いっぱい。
03/02/26 21:03
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

229:名無しさん@お腹いっぱい。
03/03/04 02:05
>>12は消滅?

230:名無しさん@お腹いっぱい。
03/03/04 04:44
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
URLリンク(saitama.gasuki.com)

231:名無しさん@お腹いっぱい。
03/03/07 00:40
cygwinのzshで日本語入力が文字化けするのは仕様ですか?
   % echo あほ
と書くと、echo  の後が文字化けします。
(結果は正しく「あほ」と出ます)

zshはeucなら標準で入力できるようなのでUN*X環境では
大丈夫だと思いますが…

232:名無しさん@Emacs
03/03/07 16:11
zshって\nの扱いが妙じゃないですか?
たとえばrubyなんかで
print ("hello\n")
は表示できるのに
print ("hello")
だと何も表示されません。

これバグじゃないかと思うのですが。

233:名無しさん@お腹いっぱい。
03/03/07 16:34
バグではなくて仕様。echo -n hoghoge でも同様の結果になる。
デフォルトでは、プロンプト前にCRを出力するようになっているから。
zsh には、右プロンプトやマルチライン編集機能があるので、その方が
都合がいいため。

setopt NO_PROMPT_CR すれば、一応お望み通りになるが…

234:名無しさん@Emacs
03/03/07 16:47
>>233
それやると今度は画面が崩れます。

RPROMPT='[%~]'

こんなの設定してるからなんでしょうね。
少し不便

235:名無しさん@お腹いっぱい。
03/03/07 17:29
>>233にあるように都合が悪いわけです。RPROMPT に改行いれるように
すればましになりますが

236:名無しさん@お腹いっぱい。
03/03/07 17:31
RPROMPT じゃなくて PROMPT だった

237:名無しさん@お腹いっぱい。
03/03/08 21:25
>>231
bashだと、それ以下ですね
cygwinの端末問題じゃないですか?


今月号のUNIX USERは結構(・∀・)イイ!!かも

238:名無しさん@お腹いっぱい。
03/03/09 02:08
cygwinのzshの起動時に
Ignore insecure directories and files and continue [ny]?
と聞かれてしまうのですが、どうすれば聞かれないように出来ますか?

239:名無しさん@お腹いっぱい。
03/03/09 12:11
>>238
URLリンク(pc.2ch.net)
の709,799


240:名無しさん@お腹いっぱい。
03/03/09 17:14
.zshrc に setopt nohup を追加して読み込ませました。
あるシェルスクリプトを
./a.sh&
したあと、exit しようとしたのですが
zsh: you have running jobs.
となって抜けられませんでした。
どうすればいいのでしょうか? こういう時に nohup を使うのでは
ないのでしょうか?

241:名無しさん@お腹いっぱい。
03/03/09 17:15
disown

242:名無しさん@お腹いっぱい。
03/03/09 17:15
あるいは
./a.sh&!

243:名無しさん@お腹いっぱい。
03/03/09 17:54
>>240
setopt nocheckjobs


244:240
03/03/09 18:12
>>241-243
ありがとうございました

245:名無しさん@お腹いっぱい。
03/03/10 03:18
この場合、もう一度 exit すれば抜けられるけどね

246:名無しさん@お腹いっぱい。
03/03/10 14:06
>>239
ありがとうございました。ログに載ってたんですね。

247:名無しさん@お腹いっぱい。
03/03/12 20:35
今月のUnix Userより。
mkdir ~/zsh_help
cd ~/zsh_help
man zshall | colcrt - | \
perl ~/zsh-4.0.6/Util/helpfiles
で、~/zsh_helpにヘルプファイルがたくさんできる。
unalias run-help
autoload run-help
HELPDIR=$HOME/zsh_help
これでM-hでいろんなmanが見れる。

autoload promptinit
promptinit
prompt -l
で変更可能なテーマを表示
prompt <theme>
プロンプトを変更。

autoload predict-on
predict-on
入力を予想して表示。けっこううざい

autoload zmv
zmv '(*).c' '$1.h'
alias mmv='noglob zmv -W'
mmv *.c *.h

248:名無しさん@お腹いっぱい。
03/03/12 22:10
>>247
今月号の記事はなかなか面白そうだな。立ち読みしてみるか。
ところで、最近のマニュアルだと zshall じゃなくて zshbuiltins にしないと
駄目じゃないの?

249:名無しさん@お腹いっぱい。
03/03/13 23:30
質問さていただきます。
zshの補完リストの色の事なんですが、X端末側で指定してある色に従わせる方法を教えていただけますでしょうか?

250:249
03/03/13 23:32
連続カキコすいません。
色を表示させる設定は

zmodload -i zsh/complist
export ZLS_COLORS='di=01;36'

としています。
どなたか御教示おねがいします。

251:249
03/03/13 23:47
自己解決しました。
スレ汚しスマソ。

252:名無しさん@お腹いっぱい。
03/03/14 04:44
二つの履歴ファイルを時系列順にマージするような方法は zsh に
用意されていますか? 適当なスクリプトでも書いて対処するしかない
のかな

253:名無しさん@お腹いっぱい。
03/03/14 06:32
用意されてます

254:名無しさん@お腹いっぱい。
03/03/14 17:13
されてないだろ

255:名無しさん@お腹いっぱい。
03/03/14 17:35
setopt share_history

256:名無しさん@お腹いっぱい。
03/03/14 18:11
>>253-255
煽らないと正解レスが得られないという、UNIX 板の典型的なコンボパターンだな。

257:名無しさん@お腹いっぱい。
03/03/14 20:02
>>252
参考までに
URLリンク(www.namazu.org)

258:252
03/03/15 00:44
申し訳ありませんが、それらのことは知っていますし、実際普段から使っています。
>>252は、例えば異なるホストでの履歴をマージしたいときなどのことをいっています。

fc を使えば確かに履歴そのものはマージされますが、完全には時系列順にならない
のです。マージしたあと、history -Ei 1 | less とでもして、しばらく眺めれば判ると思います。

履歴の呼び出しはできるので特に困るということでもないのですが、なまじっか記憶が
残っていると、呼び出し順が思いどおりにならないとイライラするものですから。

やはり適当なスクリプトを書いた方がよさそうです

259:名無しさん@お腹いっぱい。
03/03/15 03:15
単純なソートでいいかと思ったら複数行あるとまずかったのか。
適当なスクリプトってこんなもんでどう?

#!/usr/bin/ruby
lines = []
line = nil
while line = gets
while /\\\Z/ === line
line << gets
end
lines << line
end
print lines.sort
# This code is PDS.

260:This code is PDS
03/03/15 03:27
ついでにperl版。
誰かzsh版希望。

#!/usr/bin/perl -w
use strict;
my @lines;
while (<>) {
while (/\\\Z/) {
$_ .= <>;
}
push @lines, $_;
}
print sort(@lines);
# This code is PDS.

261:252
03/03/15 03:47
>>259-260
どうも有難うございます。目的が果たせました。ruby ってすっきり書けるんですね。

自分は setopt INC_APPEND_HISTORY しているので、整列されたものを fc で
単純に読みん込んで exit しても元の木阿弥になってしまいます。
HISTSIZE=0 にしてから $HISTFILE の置き換え & exit することで対処しました。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5337日前に更新/219 KB
担当:undef