zsh その7at UNIX
zsh その7 - 暇つぶし2ch130:名無しさん@お腹いっぱい。
13/01/29 21:47:07.59 .net
配列をexportするのって駄目なんだっげ?
export array=(a b c)てやったら怒られた

131:名無しさん@お腹いっぱい。
13/01/30 00:38:13.63 .net
>>130
そのコード/bin/shだとokみたいやけど、zshやとエラーなるね
ary=(x y z); export ary ってやらないとダメっぽい
あと、typesetでごにょごにょやってもいけるみたいやけど、どっちにしても1ステートメントでは無理なのかも

132:名無しさん@お腹いっぱい。
13/01/30 03:06:16.11 .net
>>131
うーむary=(x y z); export aryでエラーは出ないんだけど、子プロには届いてないっぽい
shも同じだわ
配列ってそういうもんだったっけ?

133:名無しさん@お腹いっぱい。
13/01/30 13:36:49.42 .net
>>132
配列はexportできんらしい。しらんかた
URLリンク(www.bookshelf.jp)
URLリンク(www.mazn.net)

134:名無しさん@お腹いっぱい。
13/01/30 19:21:02.51 .net
zshなら…それでもzshなら何とかしてくれる

135:名無しさん@お腹いっぱい。
13/01/31 08:42:34.96 .net
そもそもどういう経緯で「配列を環境変数に使える」って思い込みができたんだろう
PATHだって:でくっつけた文字列でしょ?

136:名無しさん@お腹いっぱい。
13/01/31 15:55:45.30 .net
環境変数という概念が介在していないように見える。
シェル変数をプロセス間で持ち回るにはexport、ぐらいの認識なんじゃね?

137:130
13/02/01 00:22:47.76 .net
>>135
そんなに変な発想かな?できたらできたで便利だと思うんだけど
実装されていないのは、オーバーヘッドがでかいから? or それとも単に需要がない?

>>136
その程度の認識です、自分あんま詳しくないもんで
つか、正しくは「プロセス間で持ち回る」じゃなくて「子プロセスに渡す」だよね

138:名無しさん@お腹いっぱい。
13/02/01 00:28:42.05 .net
ちょっと実験してみたのですが

$ zsh --version
zsh 5.0.2 (x86_64-redhat-linux-gnu)
$ typeset -ix i
$ i=1
$ typeset -ax a
$ a=(a b)
$ typeset +m i
integer exported i
$ typeset +m a
array exported a
$ cat file
typeset +m i
echo "i="$i
typeset +m a
echo "a="$a
$ zsh file
exported i
i=1
a=

結局、typeset -xすると、-iや-aなどの他の属性が消されてしまうということかな
関数のexportもできたら便利だと思ったけど、関数はtypest -fによる属性だからこれも無理かな

139:名無しさん@お腹いっぱい。
13/02/02 10:49:55.09 .net
環境変数はシェル変数ではないから基本的には用途違い(ともいいきれないか)だけど、
子シェルに配列変数を渡したいってことかな。それも環境変数的に。

export ENV="$(typeset -p i a)"
zsh -c 'eval $ENV; ...'

とかはしたくないってことなんだよね。
typeset -xT FOO foo が近いかな。これも子シェルで typeset しないとだめだから大差ないか。
ついでに separator と同じ文字が使えないし。

typeset -xT FOO foo
foo=(a b)
zsh -c 'typeset -xT FOO foo; ...'

どこで使うのかしらないけど↑の ENV みたいなんを .zsh* でなんかすれば
なんとかなんじゃない?
どーしてもやりたければ。

140:130
13/02/05 02:08:57.36 .net
>>139
例示thx。そのやり方はさすがに面倒なんで諦めます

以前ならawkとかperlとかpythonでやってたような数値演算込みのスクリプト処理を
最近は何でもかんでもzshでやろうとする癖が・・・

141:名無しさん@お腹いっぱい。
13/02/21 03:45:07.04 .net
関数の中身を履歴に加えることってできませんか?たとえば

$ hoge(){
echo fuga
}
$ hoge
fuga
$ history
  1 hoge(){\necho fuga\n}
  2 hoge

となりますが、こんなふうに関数の中で実行したものも履歴に残って欲しいんです。

$ history
  1 hoge(){\necho fuga\n}
  2 hoge
  3 echo fuga

142:名無しさん@お腹いっぱい。
13/02/21 21:08:43.40 .net
否定する気はないけど、何のために?
対象って全関数じゃないよね。

143:名無しさん@お腹いっぱい。
13/02/22 09:23:39.85 .net
プロファイラがほしいってこと?

大地氏の software design 記事のデバッグ編見た方がよさそう

144:141
13/02/23 03:41:02.81 .net
>>142
例えばあるファイルをサーチして開く、という自作の関数を実行した後
そのファイルをまた開きたい場合、履歴に入ってればCtrl+Pですぐ呼べますよね。
全関数はもちろんありえないですが、関数の任意の部分をコマンドなりディレクティブなりで
設定してそういうことができたりしないかなと思いまして。

>>143
プロファイラって言うんですかねこういうの?

145:141
13/02/23 04:51:43.04 .net
すみません、単に print -s でいけました。失礼しました。

146:名無しさん@お腹いっぱい。
13/03/04 00:37:19.72 .net
echo | cd すると (pwd now: ~) って出るけどこれ何のための仕様かな
別に入力で何か変わるわけじゃないようだけど

147:名無しさん@お腹いっぱい。
13/03/04 05:21:31.15 .net
zsh はパイプラインの右端はカレントシェルで実行されるから
ksh 系以外のシェルとは挙動が変わる

148:名無しさん@お腹いっぱい。
13/03/09 23:52:53.89 .net
あーそうなんだ。

% {echo $ZSH_SUBSHELL}
0
% {echo $ZSH_SUBSHELL} | cat
1
% echo $ZSH_SUBSHELL | cat
0

確かに…?最後が 0 になるのは展開のタイミングかな?
なんで右端が current なのかね。

てか cd の出力理由の話とは違うような。
出力は pipe であることが条件の1つみたいだし、
その条件下では右端で current であることも条件になるかもしれないけど。

149:名無しさん@お腹いっぱい。
13/03/10 01:09:01.89 .net
cd でカレントディレクトリが変わるから注意喚起してるんでは

150:名無しさん@お腹いっぱい。
13/03/10 01:16:01.54 .net
最後が 0 になるのは echo が内部コマンドでフォークする必要がないから

151:名無しさん@お腹いっぱい。
13/03/15 23:36:21.15 .net
>>149
あー普通 pipe でディレクトリ変えることないから何かおかしいんじゃないかって?かねえ。

>>150
内部コマンドって builtin のこと?だとすると ↓ の説明がつかないかと。
というかその条件は {echo $ZSH_SUBSHELL} でも同じような。

% command echo $ZSH_SUBSHELL | cat
0
% /bin/echo $ZSH_SUBSHELL | cat
0

つかまたちょっと色々試してたらよくわからんことにでくわしてしまった。
1つめは固まらないで2つめが固まる。builtin/command で固まるか変わる。
うーん…

% : 1>&2 | : =(:)
% : | : =(:)

まあ気にしない方がいいね。
理由がすぐわかるならちょっと知りたいけど。

152:名無しさん@お腹いっぱい。
13/03/20 05:29:38.35 .net
: って何ですか?trueを返すコマンド?

153:名無しさん@お腹いっぱい。
13/03/20 09:48:22.60 .net
何もしないコマンド

154:名無しさん@お腹いっぱい。
13/03/20 11:46:11.62 .net
引数の展開は行う。ので、その副次的結果も発生する。

155:名無しさん@お腹いっぱい。
13/03/20 11:49:58.10 .net
>>152
run-help :
でわからないかな。

156:名無しさん@お腹いっぱい。
13/03/24 12:44:28.54 .net
setopt auto_pushd しておいて
cd -[TAB] して番号でディレクトリを移動できるのが便利なんだけど、
zshの補完機能全般においても、補完候補一覧から番号で選択できるように
できないのかな。
候補が一つになるまで文字入力とTAB入力を繰り返すとか、
TABを何度も入力して候補を選択するとか面倒で…。

157:名無しさん@お腹いっぱい。
13/03/27 02:54:31.59 .net
>>156

zsh anything.el-like widget
URLリンク(github.com)

これを一般の補完候補に拡張すればいいんだろうけど、
そんなに必要か?

158:名無しさん@お腹いっぱい。
13/03/27 04:24:23.65 .net
anything.elてあのemacsの?
すごいすごいって聞くけどemacs自体使わないのでどうすごいのか分からない
誰か産業でオナシャス↓

159:名無しさん@お腹いっぱい。
13/03/27 04:31:50.98 .net
ごめんググれば色々あるね
まぁ試してみよ

160:156
13/03/28 02:43:23.75 .net
>>157
ディレクトリの移動についてはcdrとzawを入れたらだいぶ楽になった。
これならたしかに番号入力要らない感じ。
あと補完機能全般についてはauto-fuを入れたら少し楽になった。
数年ぶりにzshの設定ファイルをいじったんだけど、
いつの間にかものすごく進化しててびっくり。

161:名無しさん@お腹いっぱい。
13/04/21 22:13:45.79 .net
URLリンク(unix.oskp.net)

たまにチェックしてるサイトだがWindows+SFUでzsh動いたみたいだな~( ̄∀ ̄)

割と便利そうだ

162: 忍法帖【Lv=12,xxxPT】(1+0:8)
13/04/21 23:02:00.42 .net
cygwinとどっちがいいの?

163:名無しさん@お腹いっぱい。
13/04/22 08:27:55.62 .net
そういう質問をする人には区別が付かないんじゃないかなあ

164:名無しさん@お腹いっぱい。
13/04/23 22:56:28.65 .net
cygwinもInterixもただなんだし両方つかってみればどうかな
cygwinはソフト多い、動作遅い

SFUは動くソフト少ない、動作速い

て感じ

165:名無しさん@お腹いっぱい。
13/04/24 00:18:37.11 .net
動作の遅さでzsh含めたUnix環境あまり使ってなかったから
SFUに手を出してみるかな。

166: 忍法帖【Lv=2,xxxP】(1+0:8)
13/04/24 22:36:07.82 .net
cygwinってなんであんな遅いんやろね……

167:名無しさん@お腹いっぱい。
13/04/25 01:18:54.85 .net
lessを実行してるのに.zshenvの中身が呼ばれておかしいなと思ってたら
/usr/bin/lesspipe.shの先頭が#!/bin/shになってるせいだった
いやぁ何事かと焦った

168:名無しさん@お腹いっぱい。
13/04/25 02:40:52.09 .net
>>166
cygwinはminttyだけあればいい

169:名無しさん@お腹いっぱい。
13/04/25 03:26:19.93 .net
昔は遅い遅いと言われてきたが、最近のマルチコア、SSDな環境ではどうなんだろ
案外ストレス感じなかったりして

170:名無しさん@お腹いっぱい。
13/04/25 07:35:47.37 .net
fork&execまわりが特に遅いと思う。もともとWindowsにない機能だから
しょうがないとは思うけど。

171: 忍法帖【Lv=2,xxxP】(1+0:8)
13/04/25 07:40:15.22 .net
>>168
じゃあ各種コマンドはどうすんの?mingw?

172:名無しさん@お腹いっぱい。
13/04/25 08:59:39.61 .net
CygwinはWindowsサブシステムやAPIを経由してNTカーネルとやりとりするけど、
SFU(SUA)はInterixサブシステムが直接NTカーネルとやりとりするんだが、オーバーヘッドが少ない分、動作が速いらしい。

昔のSFUはCygwinと同じUNIXらいくなツールセットだったけど InterixサブシステムはNTカーネルで動くUNIXレイヤーなのでネイティブ反応速度が可能

173:名無しさん@お腹いっぱい。
13/04/25 22:23:34.52 .net
便利そうで意外に使ってる人を見ない>SFU

つか、最近のWindowsはマシなシェルを備えてるんじゃなかった?よく知らんけど

174:名無しさん@お腹いっぱい。
13/04/25 23:07:21.58 .net
SUA入れてみようと思ったら非推奨になってるし
URLリンク(technet.microsoft.com)

175:名無しさん@お腹いっぱい。
13/04/26 23:34:05.62 .net
すみません,凄く単純な質問があります.

% a="-l"
% ls $a
→ OK

% a="-l -a"
% ls $a
ls: 無効なオプション -- ' '

後者でエラーがでるのを回避するにはどうすればよいのでしょうか?
echo ls $a は「ls -l -a」なので,エラーになる理由がよく分かりません.

参考になるサイトだけでも紹介いただけるとありがたいです.
よろしくお願いいたします.

176:名無しさん@お腹いっぱい。
13/04/26 23:44:22.86 .net
FAQ だね

zsh はデフォルトでは空白分割しない
一時的に ls ${=a} として挙動を変えるか
setopt SH_WORD_SPLIT でデフォルトを変更するか

普段から zsh スクリプトを書いてるとデフォルトの動作の方が楽だな
まあ楽をするために敢えてこうしてるはずだが、他のシェルに合わせる人も多いな

177:名無しさん@お腹いっぱい。
13/04/27 00:07:38.65 .net
lsのオプションの l と a とは -la と書けるからこれでどうだ?
空白問題は解かずに回避できないか?

178:名無しさん@お腹いっぱい。
13/04/27 00:15:24.46 .net
ヘビーユーザはそっちほうが多いのかな
例えばどういうときに楽ですか?

179:名無しさん@お腹いっぱい。
13/04/27 09:18:26.90 .net
a=(-l -a)

180:名無しさん@お腹いっぱい。
13/04/27 10:11:47.23 .net
>>175-176
evalすればええんちゃうの

181:名無しさん@お腹いっぱい。
13/04/29 22:00:05.61 .net
$=a でだめな理由が?
zsh 以外でも動くようにとか?

まあ >>179 でいいと思うけど。

>>178
分割してほしくないとき。そういうことはきいてない?
簡単な例だと

% ls -1
a
b b
c
% for i in *; ls $i

とか。当然 shwordsplit でも "$i" と書けばいい。言うまでもないか。
それがいちいち面倒、というかどんなデータがくるか判らなかったり、
多くのファイルがあって全ファイル名を把握してないときに
space がきてもいいようにとりあえず "$i" って書くなら
最初からそれがデフォルトの方が助かる。
分けたきゃ >>179 みたいにも書けるしね。

単なる文字列として変数に入れてるのに
たまたま space が入ってると意図しない分割になるんが厄介。
ものによるけど、指定したときだけそう動いてくれればいい。特に使い捨てではないスクリプトでは。

なんか書いてたら長くなった。失礼。

182:名無しさん@お腹いっぱい。
13/05/01 02:22:13.74 .net
space含む場合は確かに便利かも。自分の場合はまずないので
それじゃあbashと同じでいいやって感じかな。まぁ好みの問題か

183:名無しさん@お腹いっぱい。
13/05/02 00:26:34.98 .net
space含む場合に便利ってより、逆だとspace含む場合にわずらわしいって感じかな。

184:名無しさん@お腹いっぱい。
13/05/06 18:02:00.60 .net
for ((count = 0.0; count < 1.0; count += 0.05))
do
echo $count
done

これの出力結果は、
0.0000000000
0.0500000000
0.1000000000
...
といった感じになります。
出力の桁数の調整はどうしたらできるでしょうか???

185:名無しさん@お腹いっぱい。
13/05/06 18:49:23.25 .net
printfっていう便利な組み込み関数があってね

186:名無しさん@お腹いっぱい。
13/05/06 22:32:40.55 .net
なるほど。これは便利
% printf '%.2f\n' 0.3333333333
0.33

187:名無しさん@お腹いっぱい。
13/05/09 23:47:47.47 .net
$- で出力される文字の意味って何ですか?

188:名無しさん@お腹いっぱい。
13/05/10 00:03:18.93 .net
>>187
知らんかったからman引いてみた
zshall で見つからんかったけど、man bash に載ってた
> The current set of options may be found in $-.
一応試してみると
% echo $-
05689JNXZghiklms
% setopt +0
% echo $-
5689JNXZghiklms

になるから、bash と同じように扱われてるっぽい

189:名無しさん@お腹いっぱい。
13/05/10 11:11:43.81 .net
>>188
ありがとう
自分もzshall見たのですが記載がないぽいんですよね

190:名無しさん@お腹いっぱい。
13/05/10 13:07:29.04 .net
載ってるやん
- <S> Flags supplied to the shell on invocation or by the set or setopt commands.

191:名無しさん@お腹いっぱい。
13/05/10 13:29:32.20 .net
検索しにくいよなぁ。

192:名無しさん@お腹いっぱい。
13/05/12 14:16:16.53 .net
zshallを見ると、自分はzshの全機能の1割も使ってないかもなぁ、と思えてくる

193:名無しさん@お腹いっぱい。
13/05/13 11:33:48.11 .net
それでいいのだ

(ごみの山の中に一片の価値のあるものを見つけられたならそれは幸せである)

194:名無しさん@お腹いっぱい。
13/05/13 12:46:49.94 .net
うむ
zshに限らないけど、何年たっても「こういう機能があったんだ!」て気付くのが楽しいね

195:名無しさん@お腹いっぱい。
13/05/14 00:48:01.11 .net
シェルは一生使う手足みたいな道具だからねえ

196:名無しさん@お腹いっぱい。
13/05/14 00:52:19.52 .net
私はシェルになりたい

197:名無しさん@お腹いっぱい。
13/05/14 20:59:02.64 .net
俺がzshだ!

198:名無しさん@お腹いっぱい。
13/06/03 23:05:06.97 .net
$(builtin foo) って command bar くらいのコストかかんだね。
同じ桁くらいの。
まあそれはそうか。 (builtin foo) みたいに subshell 内みたいだし。
でも $(<foo) みたいに速いといいよなあ。
普通気にしないだろうけど。

199:名無しさん@お腹いっぱい。
13/06/06 07:42:18.91 .net
ビルドに挑戦したんだけど、zsh.mdhが作られなくて失敗する。
で、いろいろ試して、
export GREP_OPTIONS='--color=auto --binary-files=without-match -Hn'
が原因。ファル名と行番号は常に表示したいから設定してたんだけどなぁ。

200:名無しさん@お腹いっぱい。
13/06/06 16:58:39.47 .net
出力の形式を変更しちゃうようなのをデフォルト設定するのはどうかと。
grepはシェルスクリプトなどでも使われるわけだし。
そういう設定はシェルのエイリアスとかを使うのがいいんじゃない。

201:名無しさん@お腹いっぱい。
13/06/07 00:24:46.83 .net
なぜだろう、alias ではなく環境変数を使いたい

202:名無しさん@お腹いっぱい。
13/06/07 08:47:31.34 .net
そういやgrepyのオプションは色々トラブルの元になると聞くね
自分もエイリアスにしてるわ

203:名無しさん@お腹いっぱい。
13/06/07 15:33:58.76 .net
結局aliasに戻したんだけど、GNU grep検出した時点で、configureが
GREP_OPTIONSをクリアしてくれても良い気はするの。

204:名無しさん@お腹いっぱい。
13/06/07 18:56:18.89 .net
ママにビルドしてもらえ

205:名無しさん@お腹いっぱい。
13/06/07 23:55:22.54 .net
ママは死んだ。もういない。あのときパパに alias をみられなければ…

206:名無しさん@お腹いっぱい。
13/06/21 11:15:57.03 .net
locateを使ったファイル名補完ってできますか?
$ vi http<キー>
でlocate httpの結果を補完候補にしてくれるような。
できれば通常の補完とは使い分けたいので、別のキーに割り当てられるといいんですが。

207:名無しさん@お腹いっぱい。
13/06/21 13:50:45.82 .net
>>206
zshに死角なし…あとはよろしく
man zshcompwid の COMPLETION MATCHING CONTROL を理解すればなんとかなりそう

zle -C loc menu-expand-or-complete _loc
bindkey '^X^X' loc
_loc() {
files=($(locate $words[2]))
# ここのパターンの指定をどうにかすればいけそう
compadd -M 'e:.=**' $files
}

208:名無しさん@お腹いっぱい。
13/06/21 23:55:39.39 .net
anchorという意味がよくわからないけど、こんな感じにしたら動いているようです。
_loc() {
local wd=$words[-1]
if [ "$wd" = "" ]; then
return 0
fi
files=($(locate $wd | grep ".*${wd}[^/]*$"))
compadd -M 'l:||.=**' -- $files
}

ちなみに、これを思いついたのはEverythingが便利すぎるからなんですが、
URLリンク(www.voidtools.com)
unixコマンドラインで同じようなのってないんでしょうか。
cursesでlocateをインクリメンタルサーチするとか…
でもやっぱりできるならシェルでやるのが一番便利でしょうね。

209:名無しさん@お腹いっぱい。
13/06/22 01:07:55.66 .net
>>208
r:とかl:とか色々でてきてあきらめた…でも動いたようで良かったですな。
そういうツールは聞いたことないけど、UNIX的思想からいくとlocateの結果をgrepでフィルタして…となりそう

210:名無しさん@お腹いっぱい。
13/07/14 NY:AN:NY.AN .net
zshをログインシェルにして、boot直後にターミナルでログインするとき、プロンプトが出るまで30秒くらいかかる。compinitしてるのが原因と思われるが、皆さんどうですか?

x86_64 Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz GenuineIntel GNU/Linux
メモリ12GB、HDD 1TB、Gentoo Linuxです。

211:名無しさん@お腹いっぱい。
13/07/14 NY:AN:NY.AN .net
そのスペックでcompinitに30秒はさすがにおかしいと思われ

212:名無しさん@お腹いっぱい。
13/07/14 NY:AN:NY.AN .net
ATOMですらcompinitは一瞬だから他の原因だろう

213:名無しさん@お腹いっぱい。
13/07/14 NY:AN:NY.AN .net
ターミナルって、コンソールじゃなくてターミナルってこと?
zsh以外のシェルに戻したら早くなるの?

214:名無しさん@お腹いっぱい。
13/07/14 NY:AN:NY.AN .net
すみませんが詳しい方のみ回答をお願いします
すみませんが詳しい方は回答のみお願いします

215:名無しさん@お腹いっぱい。
13/07/15 NY:AN:NY.AN .net
>>211>>212
そうですよね。
.zshrcのcompinitをコメントアウトすると早くなります。
他の原因なのかもしれませんが。
HDDの読み込みが遅いとかそういうのかもしれません。
.zcompdumpは毎回作り直しているわけではないようです。

>>213
コンソールです。すいません。zsh以外だと速いですね。

216:215
13/07/16 NY:AN:NY.AN .net
追記します。
結果から言うと、compinitでの遅延ではなかったようです。
zshrcを一行ずつコメントアウトしてリブートする(ブート後の初回起動時以外は問題がないためです)
する方法を試しましたが、なぜか再現性が明らかではないのですが、PROMPTを操作する行の有無で
遅延があるか決定されるような印象でした。
一回起動し、速く起動したzshrcで試しにもう一度再起動すると今度は起動が遅かったりしたため、
完全に確定しているわけではありません。今後再調査してみます。
ただ、zshrcに何も記入しない状態では、起動は速いようでした。

また、zshrcの最後の行をecho "zshrc end"としてみると
比較的瞬時にzshrc endが表示され、その後30秒程度の遅延があるようでした。
よってzshrcロードの後に遅延が生じているようでした。
こちらに関してはいつか暇なときにzshrcのソースに当たりたいと思います。

ログインシェルをbashにすると、一瞬で起動しました。

217:名無しさん@お腹いっぱい。
13/07/17 NY:AN:NY.AN .net
.zshrcの後に読まれるのは/etc/zloginと.zloginしか無い
ここで何か変な処理してるんじゃないの
非ログインシェルでzshを起動したときは?

218:名無しさん@お腹いっぱい。
13/07/17 NY:AN:NY.AN .net
select ループの数字付けのフォーマットを変えられないのかな?
一桁で済むときはいいけど、そうじゃないときはズレるのがどうも気になる

219:名無しさん@お腹いっぱい。
13/07/19 NY:AN:NY.AN .net
それ俺も思った
zshにしては気が利かないな

220:名無しさん@お腹いっぱい。
13/07/20 NY:AN:NY.AN .net
>>217
レスが遅れ申し訳ないです。
そう思うんですが、システムには~/.zloginも/etc/zloginも作成していません。これらのファイルはありません。
例えばログインシェルをbashにしてrebootして、bashが立ち上がってからコマンドでzshを立ち上げると
一瞬で起動しました。再現性がありました。
確かにログイン関係で遅延が発生しているっぽいのですが。
.zloginを作成していないことによる問題とは考えにくく(試してはいないのでわかりませんが)、やはりソースに当たる必要がありそうです。
どうもありがとうございました。

221:名無しさん@お腹いっぱい。
13/07/23 NY:AN:NY.AN .net
ログインシェルの場合、読み込み順はこうだよね
/etc/zshenv
$ZDOTDIR/.zshenv
/etc/zprofile
$ZDOTDIR/.zprofile
/etc/zshrc
$ZDOTDIR/.zshrc
/zlogin
$ZDOTDIR/.zlogin

結局再現性がないと問題特定するのは無理なんじゃ

222:名無しさん@お腹いっぱい。
13/07/31 NY:AN:NY.AN .net
FreeBSDでHISTFILEが大きくなるとログアウトが遅くなるなあ。
FreeBSD 8.1-RELEASE-p12
zsh 4.3.11 (amd64-portbld-freebsd8.1)
930035バイト、約33000行で10秒くらいかかるようになってた。
Linuxではこんなになったことないんだが。

223:名無しさん@お腹いっぱい。
13/08/01 NY:AN:NY.AN .net
>>222
portsのオプションでMEMをoffにすると直ると思う

224:名無しさん@お腹いっぱい。
13/08/14 NY:AN:NY.AN .net
俺には関係ないんだけど何そのオプション

225:名無しさん@お腹いっぱい。
13/08/14 NY:AN:NY.AN .net
>>216
まあ別にいいんだけど、PROMPT に問題がありそうならそれを貼れば?

226:216
13/09/02 23:23:39.30 .net
大変長らく空いてすいません。
boot直後初回のコンソールログインが非常に時間がかかる件(基本30秒以上だった)ですが、
再現性がなく、何が原因なのか判断に困る状態でしたが、
おそらくハードディスクの不良であったという事が判明しました。
あの後、systemdが起動時に自動でboot後になぜかrebootするようになっていまい、
journalctlなどを見ても原因がはっきりとわからずハードウェア的なものを疑い、
ハードディスク載せ替えを行ったところ、一瞬でログインできるようになりました。
.zshrcなど、設定の問題ではなかったようです。

>>225
PROMPTに問題がありそうとは思っていませんでした。
PROMPTを設定する行為に問題がありそうと思っていました。
ちなみにPROMPTは
PROMPT=$(print "%{\e[00;37m%}{%{\e[01;37m%}%n%{\e[m%}@%{\e[01;37m%}%m%{\e[00;37m%}} $%{\e[m%} ")ですね。特に変哲ありません。

227:名無しさん@お腹いっぱい。
13/09/05 14:32:55.63 .net
bashのときは!番号でhistoryの番号実行しようとすると,コマンドが表示されるまでで止まってもう一回エンターをおして実行になってたんですが,
zshに乗り換えたら!番号でエンターをおしたらコマンド実行まで行ってしまいます.
コマンド表示までで止めるのはどうすればよいでしょうか.

228:名無しさん@お腹いっぱい。
13/09/05 15:17:29.49 .net
tab
基本的にzshはtabで色々対応できる。補完とかその展開とか。

229:名無しさん@お腹いっぱい。
13/09/05 23:55:00.57 .net
>>228
おお!あざーっす

230:名無しさん@お腹いっぱい。
13/09/09 15:24:16.53 .net
>227
わかんない時はとりあえず tab 押すだろ

231:名無しさん@お腹いっぱい。
13/09/11 18:16:45.31 .net
ここで聞くべきかTeXスレで聞くべきか迷ったんだけど,
vim-latexで書いてるときに\llでコンパイルしますよね.
bashだと\llでコンパイルし終わると自動的にvimの画面に戻るんですが,zshだとコンパイル終わってもvimにもどらずctrl cを押さないとvimにもどりません.
どうしたらコンパイル終わって自動でvimに戻るかな

232:名無しさん@お腹いっぱい。
13/09/22 01:37:22.11 .net
tex というか vim スレのような気が…

233:名無しさん@お腹いっぱい。
13/09/22 23:52:13.36 .net
>>232
そうですね。
でも諦めてlatexmk使うことにしたんでもう大丈夫になりました

234:名無しさん@お腹いっぱい。
13/09/23 01:34:51.08 .net
え?いまなんて?

235:名無しさん@お腹いっぱい。
13/10/09 09:42:12.12 .net
autoload -U compinit
compinit
が.zshrcに書いてあると読み込みの段階で固まっちゃうんですがこれはなぜでしょうか.
この二行をコメントアウトすれば普通にとおります.

236:名無しさん@お腹いっぱい。
13/10/09 21:02:02.59 .net
通常エラー出力と通常出力、それぞれを
別のパイプに通すことは可能?

237:名無しさん@お腹いっぱい。
13/10/09 22:14:43.31 .net
プロセス置換を使った方がてっとりばやい
> >(command1) 2> >(command2)

238:名無しさん@お腹いっぱい。
13/10/20 15:31:01.51 .net
なるほどその手があった

239:名無しさん@お腹いっぱい。
13/11/28 02:55:17.38 .net
(( )) の中で浮動小数を代入した変数って、デフォルトは typeset -F なんですか?

$ unset a
$ (( a = 1.23456789e-8 ))
$ typeset -p a
typeset -F a=0.0000000123
$ unset a
$ typeset -E a
$ (( a = 1.23456789e-8 ))
$ typeset -p a
typeset -E a=1.234567890e-08

typeset -E をデフォにしたいのですが、できますか?

240:名無しさん@お腹いっぱい。
13/12/18 16:15:48.61 .net
zshのヒストリーが1万件になって削除されるようになってしまった。

みんなはzshのヒストリーの上限何万にしてる?(何百万?)

241:名無しさん@お腹いっぱい。
13/12/18 16:25:32.61 .net
>>239
function () {
unset $x
typeset -E $x
}

とかの要領で.zshrcに書き込むんじゃないか?

242:名無しさん@お腹いっぱい。
13/12/18 22:12:56.77 .net
>>240
百万
1万は少ないほうじゃない?

243:名無しさん@お腹いっぱい。
13/12/19 00:15:25.62 .net
確かに。思えば1年ぐらいで埋まってしまった。

244:名無しさん@お腹いっぱい。
13/12/19 14:07:09.18 .net
そんなに保存しておくとエロいURLをwgetした履歴とかが
いつまでも残っちゃうじゃん

245:名無しさん@お腹いっぱい。
13/12/19 14:42:16.92 .net
wget "URL"
形式で打ち込んでいるならば

cat <<EOF >>.~/.zshrc
setopt histignorespace
alias cat=' wget' #空白を前方に差し込んで、ヒストリーログの書き込みをさせない

246:名無しさん@お腹いっぱい。
13/12/19 14:44:21.18 .net
ワロタ。EOF忘れてるw

247:名無しさん@お腹いっぱい。
13/12/19 15:09:28.94 .net
>>244
別にいいじゃん。

248:名無しさん@お腹いっぱい。
13/12/19 21:58:39.78 .net
ちょっとhistory絡みの質問していいですか?

zshの状態から「bash」って打ってbashに切り替えると、何故かzshの履歴が
変な風に見えてしまうんですが、何でこうなるんですかね?

こんな感じ↓

$ echo "current shell is zsh"
$ bash
$ echo "current shell is bash"
$ hisotry
501231 : 1387372257:0;echo "current shell is zsh"
501232 : 1387372282:0;bash
501233 echo "current shell is bash"

もちろんzshとbashのhistoryはそれぞれ.zhistory、.bash_historyと分けています。

249:名無しさん@お腹いっぱい。
13/12/21 14:09:53.66 .net
そういう hisotry コマンドがあるんじゃない?

いやまあ、2つがリンクしてたりはしない?

>>241
どゆこと?

>>245
>>. と cat= で悩んじゃったじゃないか。

250:名無しさん@お腹いっぱい。
13/12/21 15:39:42.60 .net
setopt hist_ignore_all_dups hist_save_nodups
しても10kとかいくもん?

251:名無しさん@お腹いっぱい。
13/12/21 16:39:53.69 .net
昔は HIST_IGNORE_ALL_DUPS や HIST_IGNORE_DUPS を有効にしていたけど
いつ何をやったかを後で調べたいときには、ほぼ正味の履歴を残しておく方が都合良いと気付いて無効にした
HIST_FIND_NO_DUPS を有効にしとけば、使い回しのときにも欝陶しくないし

252:名無しさん@お腹いっぱい。
13/12/21 20:00:41.34 .net
言われてみると確かに

しかし自分の履歴ってのはなんか気恥ずかしいものがあるな
数年前のトラブってる業務やったときの履歴を見て遠い目をしたりw

253:名無しさん@お腹いっぱい。
13/12/21 21:34:12.10 .net
>>241
自分も一瞬こんな書き方があるのかと思った
要は適当な関数作れってことよね?

254:名無しさん@お腹いっぱい。
13/12/23 00:46:32.95 .net
履歴のインクリメンタルサーチって、複数のワードでマッチングすることってできますか?

たとえば、Ctrl-r を history-incremental-search-backward にしてて、履歴が
$ history -4
4283 echo hoge
4284 echo fuga
4285 echo HOGE
4286 echo FUGA

という状態のとき、 echo hoge を取得しようと Ctrl-r e と押すと echo FUGA が出ますが、
そこから e を連打して echo hoge まで辿るのが面倒です。他に何かいい方法ないですか?
今までは history | grep -E "echo.*hoge" みたいにやってましたが、コレジャナイ感が酷くいてw

255:名無しさん@お腹いっぱい。
13/12/23 05:34:01.74 .net
e 連打というのがよくわからんけど
自分はパターンマッチが使える history-incremental-pattern-search-{backward,forward} を使ってる

256:名無しさん@お腹いっぱい。
13/12/23 13:51:38.79 .net
>>255
すいません、e 連打は Ctrl-r 連打の間違いです

履歴でglob使えるとは知らなんだ
ありがとうございます!

257:名無しさん@お腹いっぱい。
13/12/23 23:29:00.04 .net
globあると遡ってパターンマッチしまくるからタイポしたときとか重くなるね
そういう意味でもHISTSIZEはでかすぎないほうがいいかも
履歴を古いやつから自動的に分けたりアーカイブしたりする機能がzshにあればいいけど
そんくらい自分で適当に作れってか

258:名無しさん@お腹いっぱい。
14/01/04 21:20:50.10 .net
zsh-5.0.2 から zsh-5.0.4 に上げたら
appendhistory で $HISTFILE に elapsed times が残るようになってるじゃないか。
よかよか。追加タイミング変わったんだね。実行完了時に。

259:名無しさん@お腹いっぱい。
14/01/10 01:15:22.77 .net
Releases 5.0.3 and 5.0.4 were replaced with 5.0.5 because they contained serious bugs.

ファッ!?

260:名無しさん@お腹いっぱい。
14/01/10 02:31:05.48 .net
=(command)で生成される一時ファイルに拡張子って指定できないもんですかね?

261:名無しさん@お腹いっぱい。
14/01/10 23:29:25.65 .net
それは俺も考えたことがある。無理じゃないすかね。少なくともそれ用の機能はないと思う。

>>259
serious bugs って何だろうね。

262:名無しさん@お腹いっぱい。
14/01/11 02:38:29.80 .net
あんま盲目的に新バージョンを入れないほうがいいんかな
正規表現処理にバグがあってファイル消えたとかなったら死ぬわw

263:名無しさん@お腹いっぱい。
14/01/11 03:57:35.24 .net
>>261
rvmのバグ報告でなんかregexp周りが死ぬってのを見た気がする。

264:名無しさん@お腹いっぱい。
14/01/11 15:15:38.09 .net
4.3.10でこういうバグがあったよ
しかもDebianの前のバージョンのzshがこれだったという…
URLリンク(www.zsh.org)

265:名無しさん@お腹いっぱい。
14/01/11 18:48:30.19 .net
Debianのstableは、バージョン番号据置きでパッチのバックポートするから要確認。

266:名無しさん@お腹いっぱい。
14/01/11 20:08:23.27 .net
標準エラー出力に色をつけたいのですがどうしたらよいですか?

267:名無しさん@お腹いっぱい。
14/01/11 20:13:28.22 .net
標準エラー出力に色を付けてるプログラマーorシス管見つけたら
社史編纂室に異動させるわ

268:社史編纂室に異動がブーム
14/01/11 20:52:53.94 .net
シェルスクリプト総合 その22
スレリンク(unix板)

115+2 :名無しさん@お腹いっぱい。 [↓] :2014/01/11(土) 19:21:56.73
read に -N オプション付けてるプログラマーorシス管見つけたら
社史編纂室に異動させるわ

269:名無しさん@お腹いっぱい。
14/01/11 23:44:02.01 .net
僕はcygwinでzshを使ってるだけで、unixなんて見た事も使った事も無いんで
このスレでは大人しくしています

270:名無しさん@お腹いっぱい。
14/01/11 23:57:49.03 .net
じゃあ黙ってろよ

271:名無しさん@お腹いっぱい。
14/01/12 09:51:59.25 .net
社史編纂室に異動させられて暇なんだろ

272:名無しさん@お腹いっぱい。
14/01/14 01:05:32.66 .net
>>265
Debianよく知らんのだけど、それでstable名乗るのってOKなん?

273:名無しさん@お腹いっぱい。
14/01/14 04:14:06.74 .net
>>272
バージョンあげてあらたなバグを導入することを防ぎつつ
バグフィクスのみをとりこんでいくんだからstableなんじゃないの

274:名無しさん@お腹いっぱい。
14/01/14 10:00:57.12 .net
>>272
ダメなの?

275:名無しさん@お腹いっぱい。
14/01/14 20:49:51.24 .net
>>263
5.0.5でも補完の時にregexpでエラー吐いちゃうんだけど@とあるBSD

276:名無しさん@お腹いっぱい。
14/01/14 20:58:48.07 .net
>>273,274
ごめん、ダメじゃないです・・・勘違いした
むしろバグフィックスやってくれないと困るわな

277:名無しさん@お腹いっぱい。
14/01/17 21:28:10.41 .net
こんな機能あったら便利なのになぁ、って話はメーリングリストに投げたら
意外にサクッと実装してくれたりすんのかな?経験ある人います?

278:名無しさん@お腹いっぱい。
14/01/19 01:13:19.16 .net
zshの起動が異常におそいがこりゃなんだ

279:名無しさん@お腹いっぱい。
14/01/19 15:51:33.24 .net
>>278
特に感じないけど。どの辺で遅い?

>>277
Release Notesにあった5.0.5の新機能で FORCE_FLOAT って超便利なオプションがあるけど
これメーリスに投げてから1日足らずでレス来てるのな。
サクッとできることはサクッとやってくれそう。

URLリンク(www.zsh.org)

280:名無しさん@お腹いっぱい。
14/01/21 02:46:54.12 .net
FORCE_FLOAT付けたら./configure --<タブ>が変なエラーになる・・・何なのこれ

$ ./configure --
(eval):local:1: not valid in this context: _a_1.1
_describe:102: not an identifier: _a_1.1

281:名無しさん@お腹いっぱい。
14/01/23 02:21:05.12 .net
>>278
俺は個人的にzshrcがもっさりしてるので遅い。
一回ふきとばしてみたら?

282:名無しさん@お腹いっぱい。
14/01/23 02:23:30.23 .net
>>279
>>281
.zcompdumpを作るのに異常に時間がかかってる

283:名無しさん@お腹いっぱい。
14/01/23 02:25:45.18 .net
autoload -Uz compinit
compinit -u
をコメントアウトするとすぐ起動する.
ホームディレクトリをNFSにしてるからかなぁ?

284:名無しさん@お腹いっぱい。
14/01/25 23:51:28.86 .net
>>282
URLリンク(my.opera.com)

mkdir /tmp/hoge
chmod 700 /tmp/hoge
ln -s /tmp/hoge/.zcompdump $HOME
autoload -Uz compinit
compinit -u

というのはどうだろう

285:名無しさん@お腹いっぱい。
14/01/26 14:23:47.95 .net
sshからログインと同時に指定したシェルスクリプトを実行したいんだが
% ssh user@example "export INC='~/setup.zsh';zsh"
接続先の~/.zshrcには$INCが定義されてるならsource $INCするように書いてる

もっとシンプルに
% ssh user@example "~/setup.zsh"
setup.zsh実行後にzshを終了せず対話型になるみたいなことって出来ませんかね?

286:名無しさん@お腹いっぱい。
14/01/26 14:57:40.57 .net
>>285
setup.zshの最後にexec zshして、
ssh -t user@example setup.zshしたら?

287:名無しさん@お腹いっぱい。
14/01/26 15:00:01.93 .net
>>286
まあssh -tしわすれたときのために
[[ -t 0 ]] && exec zsh かな?

288:名無しさん@お腹いっぱい。
14/01/26 16:39:40.77 .net
素早い返信ありがとうございます
exec zshだとsetup.zshで定義されるシェル変数や関数などが維持できないようです。。。

.zshrcに依存することにはなるが、.zshrcから適当なフラグを立てたうえでsource $INCすることでできました

% ssh user@example 'cat setup.zsh .zshrc'
#setup.zsh
if [ -z $FLAG ] ;then
export INC=setup.zsh
exec zsh
else
(省略)
fi

#.zshrc
if [ -n $INC ];then
export FLAG=true
source $INC
fi
% ssh -t user@example setup.zsh

289:名無しさん@お腹いっぱい。
14/01/27 11:13:04.30 .net
>>288
ああ、シェル変数やらはそうだろうね。
だったらexpect使ったら?
#!/usr/bin/expect
spawn "zsh"
expect "%"{ send "source hoge.zsh\n" }
interact

でやりたいことはできそうだけど

290:名無しさん@お腹いっぱい。
14/01/27 19:46:41.87 .net
>>289
おおおこれは便利だ
こっちでやってみます

291:名無しさん@お腹いっぱい。
14/01/31 18:40:31.72 .net
>>284
ありがとうございます!
やってみたら,なぜかマシンによってセキュリティチェックがあるのとないのがありますね.

292:名無しさん@お腹いっぱい。
14/01/31 20:53:22.37 .net
>>291
もしかしたら/tmpが0777のマシンと1777のマシンじゃないか?

293:名無しさん@お腹いっぱい。
14/01/31 21:57:09.18 .net
なんとなく言ってみるけどselinuxが悪さしてることってない?

294:名無しさん@お腹いっぱい。
14/02/01 00:36:14.06 .net
両方ともmacですわ

295:名無しさん@お腹いっぱい。
14/02/01 19:20:21.34 .net
そういやmacはデフォルトのログインシェルがzshなんだっけ

296:名無しさん@お腹いっぱい。
14/02/02 01:13:04.98 .net
10.2 まで tcsh
10.3 からいまのところ bash
zsh は5.0.2が入ってるけど、デフォルトログインシェルにはなってない。

297:名無しさん@お腹いっぱい。
14/02/02 18:31:21.31 .net
あ、そうなんだスマソ
デフォルトでインストールされてるってだけか

298:名無しさん@お腹いっぱい。
14/02/10 23:45:43.92 .net
なんかCentOS4.5のzsh-4.2.0が.zshenvを読んでないっぽいんだけどなんで?

まあ管理権限ないから$HOMEにzsh-5.0.5入れたけど……

299:名無しさん@お腹いっぱい。
14/02/11 07:19:07.79 .net
てか4.5とか古いなw
そっちに原因があったりして

300:名無しさん@お腹いっぱい。
14/02/11 10:56:49.31 .net
CentOSの問題をここで聞かれてもな。

301:名無しさん@お腹いっぱい。
14/02/12 00:50:45.39 .net
研究室の鯖なかなか更新してくれないんだよね。
CentOS固有の問題なのかな?

302:名無しさん@お腹いっぱい。
14/02/12 01:08:42.94 .net
うん。

303:名無しさん@お腹いっぱい。
14/02/12 01:19:27.88 .net
そっか。

304:名無しさん@お腹いっぱい。
14/02/12 04:23:39.09 .net
zsh-4.2.0なんて何年前だろ
とりあえず新しいのを自分でビルドしてユーザ領域に置いてみたら?

305:名無しさん@お腹いっぱい。
14/02/12 12:07:28.81 .net
もう入れたってさ。

306:名無しさん@お腹いっぱい。
14/02/12 22:01:25.39 .net
あー書いてたかスマン

ってか話題ないな・・・

307:名無しさん@お腹いっぱい。
14/02/15 11:39:19.20 .net
話題か。

>>258 の件で $HISTFILE に elapsed times が残るようになったのはいいんだけど、
実行中に別 zsh 起こしてその履歴使ったり history -D したりできなくなってしまった。(当然)
とりあえず放置してるけど。
これでもいいような、そうでもないような。

share_history は前のまま実行前に追加するみたい。(elapsed times が残らない。)
てか share_history って imported lines と local lines 分けてるんだね。
昔は違った気がするけど。
あと import タイミングが行編集終了時。最初、終了前に履歴辿って効いてないのかと思った。

308:名無しさん@お腹いっぱい。
14/03/02 22:23:24.05 .net
zargs -r -- $HOME/.zshfunc/*(N:t) -- autoload
で.zshfunc以下に定義してある関数を全部読みこもうとしたんだけど、
関数内でこいつを呼びだすと動かなくて
ttyで呼びだすと動いてるっぽい。なんでだろう?

309:名無しさん@お腹いっぱい。
14/03/06 06:57:36.21 .net
CENTOS6.3でzshを立ち上げると、/bin/lsコマンドが
/bin/ls: fork failed: リソースが一時的に利用できません
といって動いてくれません。bashだと大丈夫。他のコマンドだと大丈夫。zshとlsでなんかもんだいあるんでしょうか?

310:名無しさん@お腹いっぱい。
14/03/06 08:21:18.89 .net
>>309の件、自己解決しました。
.zshrcの中に変なaliasを定義していたのが原因でした。

311:名無しさん@お腹いっぱい。
14/03/08 02:50:06.88 .net
>>308 それ tty でも動いてないんじゃない? あと zargs の意味ない気がするけど、-r のために使っているとか?

312:名無しさん@お腹いっぱい。
14/03/08 03:00:16.92 .net
>>311
そうそれ。

313:名無しさん@お腹いっぱい。
14/03/08 03:05:49.91 .net
あれ、確かにttyでも動いてないっすね。なんで以前は動いたと思ったんだろう。

314:名無しさん@お腹いっぱい。
14/03/08 18:19:46.44 .net
zargs が subshell内で eval してるっぽいから意味ないんだと思う。
-r が目的なら

() { (( $# )) && autoload $@ } $HOME/.zshfunc/*(N:t)

でいいんじゃないか? setopt次第で "$@" かな。
exit 1 だけどエラーメッセージ出ないからいいよね?

315:名無しさん@お腹いっぱい。
14/03/09 11:12:18.11 .net
>>314
ほんとだ、()でかこってあった…

> () { (( $# )) && autoload $@ } $HOME/.zshfunc/*(N:t)

forで逃げてましたが使わせていただきます。ありがとうございます。

316:名無しさん@お腹いっぱい。
14/03/09 22:07:18.67 .net
無名関数に引数を渡せるようになっていたとは知らんかった

317:名無しさん@お腹いっぱい。
14/03/22 19:18:47.39 .net
プロンプトに$LINENOを表示させてみようと思ったら上手く行かなかった、環境変数って読めない感じ?

318:名無しさん@お腹いっぱい。
14/03/22 19:28:17.45 .net
うまくいかないのがよくわからないけど普通に1とか2が出力されたよ
どっかの設定がおかしいんじゃね

319:名無しさん@お腹いっぱい。
14/03/22 19:51:45.22 .net
>>317
${LINENO} じゃ?

320:名無しさん@お腹いっぱい。
14/03/22 20:41:45.84 .net
>>319 は $LINENO と ${LINENO} が違うものだと思ってるのかよw

321:名無しさん@お腹いっぱい。
14/03/22 20:47:29.70 .net
>>317はそうと知らずに$LINENOの後に続けてコロンとモディファイアになる文字を書いちゃったのかもね
そういう場合は>>319がいうように${LINENO}にすれば回避できる

322:名無しさん@お腹いっぱい。
14/03/22 20:54:22.74 .net
${LINENO} とか中途半端な書き方せずに "$LINENO" と書くのがお勧め。

323:名無しさん@お腹いっぱい。
14/03/22 20:56:22.21 .net
いや、

PS1=$LINENO とかやっても $LINENO の値が動的に変わるわけじゃないって話だろw

324:391
14/03/22 21:03:44.02 .net
ごめん。一般の変数の展開と勘違いした。
マニュアル読むと LINENO はスクリプトの中で使うだけみたいだな。

プロンプトの行番号の概念がはっきりしないんだけど、これはイメージどおり?

PS1="%h $"

%h, %!, ! だと履歴の番号になるみたい。

325:名無しさん@お腹いっぱい。
14/03/22 21:29:22.55 .net
>>324
まあプロンプトにLINENOがあっても?だけど普通にログインシェルでも立ち上げてからの行数でるよ

326:名無しさん@お腹いっぱい。
14/03/29 14:28:58.64 .net
cd -[TAB] で表示されるディレクトリスタックをいじることってできますか?
m~n番目のエントリを削除、とかがしたいです
dirsコマンドにはそれらしい方法はなさそうでした

327:名無しさん@お腹いっぱい。
14/04/02 01:47:32.48 .net
現在の設定のままroot権限持つことって可能ですか?
$ZDOTDIRを~~、ではなく現在のシェルで設定した変数を保持したままで、ということです。
sudoすれば良いだろ、というのはなしでお願いします

328:名無しさん@お腹いっぱい。
14/04/02 02:29:34.48 .net
su -m は?

329:名無しさん@お腹いっぱい。
14/04/06 19:36:26.45 .net
いつの間にかipの補完ができなくなった
ssh hoge@XXXのXXXが数字だと補完してくれない
みんなできてる?

330:名無しさん@お腹いっぱい。
14/04/07 23:00:57.97 .net
IP補完なんてできるのか
て、試したらできなかったわ

331:名無しさん@お腹いっぱい。
14/04/07 23:46:43.44 .net
>>329
できてるで
% ssh foo@10.5.5.<tab>
10.5.5.1 10.5.5.2 10.5.5.3 10.5.5.4

% zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)

_ssh は zsh 付属のやつっぽい

332:名無しさん@お腹いっぱい。
14/04/07 23:46:48.56 .net
/etc/hosts に書いてあってもだめ?

333:名無しさん@お腹いっぱい。
14/04/08 01:23:23.75 .net
>>329
_ssh ちょっと読んでみたけど
ip アドレスは、.ssh/config に書いてあるやつしか補完されないっぽいな…

334:名無しさん@お腹いっぱい。
14/04/08 17:27:02.17 .net
function print_known_hosts (){
test -f /etc/hosts && sed -e 's/#.*//' /etc/hosts
test -f $HOME/.ssh/known_hosts && tr ',' ' ' <$HOME/.ssh/known_hosts | cut -d ' ' -f1 | sed -e '/^|1|/d;s/^\[\(.*\)\]:[0-9][0-9]*$/\1/'
test -f ~/.host.completion && cat ~/.host.completion
}
_cache_hosts=($(print_known_hosts | tr '[:blank:]' "\n" | sort -u))

ってやって.ssh/known_hostsに書いてあるやつは補完できるようにしてるわ

335:名無しさん@お腹いっぱい。
14/04/08 17:27:43.67 .net
あ、上記はもちろん.ssh/known_hostsがハッシュされてると動きませんあしからず

336:名無しさん@お腹いっぱい。
14/05/24 18:36:48.95 .net
alias -g G='| grep'
alias -g H='| head'
alias -g T='| tail'
などのグローバルエイリアスをしてる人多いと思いますが、
特定のコマンドの後ろに付ける場合は無視するようにはできませんか?

337:名無しさん@お腹いっぱい。
14/06/27 11:50:13.57 .net
普段lsに--group-directories-firstオプションをつけてるんですが
zshのglobをこれと同じソート順にしたいです
どうすればいいですかね

338:名無しさん@お腹いっぱい。
14/07/02 02:55:08.08 .net
PROMPTの%(?,,)の構文の挙動がおかしくないですか?
試しに下記のようなコマンドを入力すると逆の結果を返しており、psvar[2]を見て判断しているように思えます。
precmd(){}
psvar=( '0' '1' )
PROMPT='%? %1(?,success,error) %# '
sh -c 'exit 1'
:

これはバグでしょうか。それとも僕が何か勘違いしているのでしょうか
zsh 5.0.5 (x86_64-unknown-linux-gnu)

339:名無しさん@お腹いっぱい。
14/07/03 12:05:59.89 .net
>337
使ってる人いるんですか,global alias

alias 設定した文字(列)を引数に書いた瞬間に死亡する,
という挙動のリスクが大きくて,
たいしたことない利便性ではリスクに見合わない印象

340:337
14/07/03 21:58:27.42 .net
クッソ便利で使うのが当たり前だと思ってたけど自分だけかな?
確かに気をつかないといけないけどさ・・・
まぁだから>>336を書いたわけですが

341:名無しさん@お腹いっぱい。
14/07/03 22:54:56.85 .net
たった6文字ぐらい手で打てよ
お前今にとんでもないトラブル起きるぞ

342:名無しさん@お腹いっぱい。
14/07/04 06:34:45.12 .net
アンタ死ぬわよ

343:名無しさん@お腹いっぱい。
14/07/06 15:43:10.17 .net
% LD_LIBRARY_PATH=
だとファイルリストが補完できるかと思うんですが、同じことを
% env LD_LIBRARY_PATH=
でもできるようにするにはどんな設定すればいいですかね?

tab以外のキーに _complete_files をバインドして補完しても
complete-files: no matches found: LD_LIBRARY_PATH=*
とかなってしまいます。。。

344:名無しさん@お腹いっぱい。
14/07/09 07:30:40.92 .net
編集子について質問させてください

fullpathをチルダ付きpathに変換したいのですがうまくいきません
$ echo '/Users/xxx/doc/aaa.txt' | read fn; echo ${fn:s/$HOME/~/}

ご教示お願い致しますm(_ _)m

345:名無しさん@お腹いっぱい。
14/07/10 06:37:32.63 .net
>>344
すんません。自己解決しました

${fn/$HOME/'~'}

でした。

346:名無しさん@お腹いっぱい。
14/07/13 18:41:43.93 .net
補完絡みで質問です。
パッケージインストール直後や、~/bin等にスクリプト入れた直後だと補完に候補が出てこない(source .zshrcすればok)。
bashだと、直ぐ補完に反映されてるので何かオプションがありそうですが教え下さい。

347:名無しさん@お腹いっぱい。
14/07/13 18:47:27.56 .net
>>346
rehash

348:名無しさん@お腹いっぱい。
14/07/13 21:09:31.42 .net
>>347
オプションでは無いんですかね。
都度打つのが面倒なんで、、、
皆あまり気にならない?

aliasにするか、cd辺りでrehashを自動化ってことなのかな。

349:名無しさん@お腹いっぱい。
14/07/13 23:00:30.29 .net
空エンターでrehashするようにしてる

350:名無しさん@お腹いっぱい。
14/07/14 01:04:35.45 .net
そんなコマンドあったのか、今までexec zshして丸ごと入れ替えてた

351:名無しさん@お腹いっぱい。
14/07/14 03:56:04.04 .net
補完に反映なら
zstyle ':completion:*' rehash 1

zstyle ':completion:*:commands' rehash 1
に絞ってもいいかもしれんが

352:名無しさん@お腹いっぱい。
14/07/14 19:36:07.05 .net
>>351
完璧っす、有難い。

353:名無しさん@お腹いっぱい。
14/07/14 21:56:39.50 .net
なんでそんなにしょっちゅうrehashが必要なんだろ。

354:名無しさん@お腹いっぱい。
14/07/18 18:37:43.55 .net
gitで管理してるディレクトリの時だけ、
プロンプトにmasterとかサブブランチの情報が欲しい

ググった奴コピペしたのは管理してないところでmasterになってて邪魔だった

355:名無しさん@お腹いっぱい。
14/07/19 01:11:13.77 .net
もうちょっとググれ

356:名無しさん@お腹いっぱい。
14/07/29 03:21:40.66 .net
管理外でmasterって出るってgitの出力使ってないじゃん
どこから出力得てるんだ

357:名無しさん@お腹いっぱい。
14/08/01 17:29:13.41 .net
a=(1 2); b=(3 4 5); foo $a $b
みたいな感じで foo にリストを引数として渡す場合には foo はどう書けば良かろうか?
あ、a や b の要素数は可変で。
a と b を繋げたリストでよければ foo の中で c=($*) すればいいっぽいけど、別々に欲しい。
あれ local c=($*) したらエラーになるのはなんでだ?

358:名無しさん@お腹いっぱい。
14/08/01 22:13:56.69 .net
変数名を渡して関数の中でevalする

359:名無しさん@お腹いっぱい。
14/08/02 05:21:24.46 .net
>>357
自分も昔ハマったことがあるが、local では配列の宣言と同時には代入ができないみたい

359 が言うように変数名を渡す方法が最初に思い付くけどもっと良い方法があるのかな?

% a=(1 2); b=(3 4 5)
% foo() {local A B; A=(${(P)1}); B=(${(P)2}); echo "$1[2] -> $A[2], $2[2] -> $B[2]"}
% foo a b
a[2] -> 2, b[2] -> 4

360:名無しさん@お腹いっぱい。
14/08/08 16:09:44.11 .net
なるほど、名前自体を見て処理すれば良いのか、勉強になりました。
ちなみに bash だと local で宣言と同時に代入ができるみたい。なぜだ。

361:名無しさん@お腹いっぱい。
14/09/18 03:16:09.91 .net
{
for i in {1..10..2}
で1,3,5,・・・,9と { } 増分

362:名無しさん@お腹いっぱい。
14/09/18 06:00:27.66 .net
あれ、途中で変なふうに書き込んでしまいました。すいません

{1..9..2}で、1,3,5,・・というふうに増分2で展開されますが、1,2,4,8,・・・というふうに
累乗的に増えていくようなものを表す方法ってありますか?
{1..9**2}みたいな感じで書けたら便利なんですが・・・さすがに無理ですか?

363:名無しさん@お腹いっぱい。
14/09/18 14:14:34.28 .net
ない。forで使うならiを指数としてループの中で計算すればいいじゃん。

364:363
14/09/18 21:33:59.91 .net
やはりさすがにないですか。ありがとです

いずれはインクリメントを自由に設定できるようになることを期待
zshなら・・・zshならきっと

365:名無しさん@お腹いっぱい。
14/09/18 23:09:51.96 .net
普通のプログラミング言語でもできなくね?と思ったが
リスト内包表記があるのならできるか・・・

366:名無しさん@お腹いっぱい。
14/09/29 00:55:12.75 .net
Bashで使えてたcocot がzshにした途端使えなくなった。なぜ?

367:名無しさん@お腹いっぱい。
14/10/02 01:20:45.75 .net
bashが脆弱性で大変なことになってるけどzshは大丈夫だよね?

368:名無しさん@お腹いっぱい。
14/10/02 04:50:39.63 .net
zshは↓で固まるけど、これで攻撃できる?

echo hoge >file1 >file2 >/dev/stdout

369:名無しさん@お腹いっぱい。
14/10/02 07:26:53.32 .net
固めてどうするの?
そもそも、任意のコードが実行できるなら攻撃も糞もやりたい放題じゃん

370:名無しさん@お腹いっぱい。
14/10/06 17:36:13.45 .net
zshを使ってきた君たちへ

君たちが悪いわけじゃないんだよ
君たちが覚えたzshの将来が無かっただけ
当時の社会が悪かっただけ
君たち一人ひとりが悪いわけじゃないんだよ

だから自分を責めないで
社会と向き合ってください
そうすればきっと気が付くはず
君たちのzshの知識が無用なのだということに
君たちの存在自体が社会の足枷だということに

371:名無しさん@お腹いっぱい。
14/10/06 18:18:19.07 .net
元ネタは冷凍ワッフルかw

372:名無しさん@お腹いっぱい。
14/10/11 06:37:55.90 .net
数値演算用の関数として

function calc()
{
echo $(( $* ))
}

というのを作って使ってるんですが、 ( ) が入れ込んでたりすると zsh: bad pattern: と出てしまいます
引数全体を""で括ればいい話なんですが、そういうことやらずに引数の文字列をそのまま関数に渡すことってできないでしょうか?

373:名無しさん@お腹いっぱい。
14/10/11 13:02:05.09 .net
>>372
""で括らずに引数の文字列をそのまま渡すのは無理
*や()のエスケープするか、素直に$(( ))を使ったら?

374:名無しさん@お腹いっぱい。
14/10/24 20:16:01.24 .net
URLリンク(github.com)
をfpathに配置して
autoload -U compinit
compinit
ってやるとvirshコマンドで補完が効くんですが
compinitをcompinit -Cにすると補完が効かなくなってしまいます

どうも上記のスクリプトの記述が悪いっぽいのですが
どこを直したらいいか分かる方いませんか?

375:名無しさん@お腹いっぱい。
14/12/05 15:11:56.76 .net
URLリンク(wiki.fdiary.net)
にbindkey表記が載っていますが、Ctrl+Shift+xやAlt+Ctrl+Shift+xに割り当てたいときはどう表記すればいいのでしょうか?

376:名無しさん@お腹いっぱい。
14/12/07 22:20:47.08 .net
asciiコード表を眺めて、文字コードとして存在するのかから考えよう

377:名無しさん@お腹いっぱい。
15/01/28 03:43:40.20 .net
>>375
遅レス&横レスですけど、できました?
shift って bindkey では設定できないと思ってたけど

キーバインドってなかなか自由自在にできなくてもどかしいですよね
個人的には ctrl-j と enter が区別できなくて等価に LF として扱われるのが辛い

378:378
15/01/28 03:47:05.69 .net
あ、ctrl-j と enter の件は端末側の話ですかね、すみません

ググると、端末の入力モードをrawにすればキーコードが勝手に解釈されたりせずに
ダイレクトに届くっていうけど、rawなんて使ったことないけどまともに使えるのかな・・・

379:名無しさん@お腹いっぱい。
15/02/04 23:38:43.44 .net
>>375
Ctrl+Altって^[[ではなく^[^じゃなかった?
途中で変わったのかな

380:名無しさん@お腹いっぱい。
15/02/06 13:05:15.40 .net
書き間違いだろう

381:名無しさん@お腹いっぱい。
15/02/15 00:11:46.49 .net
じゃあ xterm -xrm '*modifyOtherKeys:2' にしようか

382:名無しさん@お腹いっぱい。
15/03/28 08:29:49.28 .net
hosh

383:名無しさん@お腹いっぱい。
15/04/26 18:25:52.86 .net
echo $(A="A" && echo $A)みたいな代入文のシンタックスシュガーって存在する?

384:名無しさん@お腹いっぱい。
15/04/26 22:46:25.40 .net
代入文じゃねえ代入式

385:名無しさん@お腹いっぱい。
15/05/09 18:34:14.38 .net
意図がわからないけど、こういう話ではなくて?
構文糖ではないけど。
echo ${:-A}

386:名無しさん@お腹いっぱい。
15/05/14 20:27:12.02 .net
Cのカンマ演算子みたいな感じかね。
できるかどうかは知らないけれど。
後上記の人の説明の補足をするならば、
例えば以下のようにした場合、変数Bに中身が設定されていなければ中身をA
echo ${B:-A}
として扱うという事であって実際に変数Bが作られるわけでは無いので注意。
数字でよければ echo $((++A))
値1を持つ変数Aが作られる。だから>>362とかは以下のようにもできる。
repeat 10 echo $(( 1 << ++A ))
と、書き終わった後に試してみたら
カンマ演算子が数値なら使えるみたいなのでこんな風にも書けた。
LANG=POSIX echo -e "\0$(( A=141, $A ))"

387:名無しさん@お腹いっぱい。
15/05/14 21:20:45.50 .net
わるいわるい上記を試したら全然出来なかった。
何度かやってたら偶然できてただけだった。
LANGの設定も意味ないし。

388:名無しさん@お腹いっぱい。
15/05/14 21:24:38.73 .net
そっかそっか以下て出来た。
echo -e "\0$(( A=101, A ))"

389:名無しさん@お腹いっぱい。
15/05/14 21:41:00.34 .net
>>357
力技ではこんなのがある。
a=(a b c)
b=$(printf "%c\0" $a |sed 's#\o0$##') # なんか変数に一度いれないと無理だね。
c ()
{
echo $1
echo $1 |tr '\0' ' '
}
c $b

390:名無しさん@お腹いっぱい。
15/05/14 22:08:07.89 .net
hashでもいける。
typeset -A a
a=(A a B b C c)
printf "%s\n" ${(k)a}| while read
do
printf "$REPLY\0%s\0" $a[$REPLY]
done |sed 's#\o0$##' |read b

391:名無しさん@お腹いっぱい。
15/05/15 21:04:50.03 .net
>>383
;でいいじゃんと言ってみる。

392:名無しさん@お腹いっぱい。
15/05/15 21:38:41.50 .net
echo ${A::="A"}

393:名無しさん@お腹いっぱい。
15/05/15 22:00:08.19 .net
>>389
>>390
b は c "$( ... )" で消せるんじゃない?
あと、↓ でもいいような。
c ${(pj:\0:)a}
c ${(kvpj:\0:)a}

394:名無しさん@お腹いっぱい。
15/05/15 23:33:19.93 .net
書いてみるものだね。プロ達が見たこと無い技を教えてくれた。
そんな簡単にできるんだ。あってると思います。
偉い人はいいよな、こっちなんて直すの面倒からまだそのまま使ってるけれど、
こういうのを実現するのに中間file使って、m4使ってやってたよ。
私の.zshenvは糞コードで埋め尽くされてるな。
まあ糞コードは好きだけどね。それshellで書けますけど的なね。
教えてくれてありがとう。

395:名無しさん@お腹いっぱい。
15/05/16 07:35:45.92 .net
なるほどなるほど、psとpjがsplitとjoinのようだ。
typeset -A a
a=( A a B b C 'c c' )
echo ${(k)a} # keyを出力する。
echo ${(kv)a} # keyも値も出力する。
b=${(pj:\0:)a} # 空白を区切りに\0で結合する。
echo $b
echo ${(ps:\0:)b} # \0を区切りに分ける。
b=${(kvpj:\0:)a}
typeset -A c
c=( ${(ps:\0:)b} ) # 値に空白が含まれていても、マクロ的に処理されるわけでなく
# 一つの値として処理される。こういう所が他のshellと違うよね。

396:名無しさん@お腹いっぱい。
15/05/16 07:41:10.37 .net
あーごめんごめんjoinの説明がおかしいね。空白を区切りにしてるわけではなく
他と一緒で値を区切りにしてくれてると思う。

397:名無しさん@お腹いっぱい。
15/05/16 08:17:20.05 .net
# 変数が空、または値がなければ、1として置き換える。
echo ${a:-1}
echo $a
a=2
echo ${a:-1}
echo $a; unset a
# 上記の判定で、変数宣言がされている場合は置き換えないのが以下。:が無いだけ。
typeset a
echo ${a-1}
a=2
echo ${a:-1}
echo $a; unset a

# 変数が空、または値がなければ、指定された変数aに1を代入する。 *1
echo ${a:=1}
echo $a
echo ${a:=2} # *2
echo $a
# 上記に加え、脚注*2 変数aに値が入っていても、値を上書きして定義するのが以下。
echo ${a::=2}
echo $a; unset a
# 脚注*1 の判定で、変数宣言がされている場合は代入しないのが以下。:が無いだけ。
typeset a
echo ${a=1}
a=2
echo ${a=1}
echo $a; unset a
# 他にもあるけれど勉強はここまでにする。

398:名無しさん@お腹いっぱい。
15/05/16 08:24:55.71 .net
--- 2ch.orig 2015-05-16 08:09:21.000000000 +0900
+++ 2ch.diff 2015-05-16 08:11:22.000000000 +0900
@@ -8,7 +8,7 @@
typeset a
echo ${a-1}
a=2
- echo ${a:-1}
+ echo ${a-1}
echo $a; unset a

399:名無しさん@お腹いっぱい。
15/05/16 08:25:56.09 .net
時間のズレは仕様です。

400:名無しさん@お腹いっぱい。
15/05/16 09:16:31.98 .net
あとそっか
> b は c "$( ... )" で消せるんじゃない?
確かにその通りでした。
後言葉が変でまだ知らない人達に、混乱を招いてしまうかも。
変数が空 false
変数が無い true
変数宣言 false
変数定義 true

401:名無しさん@お腹いっぱい。
15/05/16 09:22:11.77 .net
しかし"$()"の動作が思ってるより不思議だ。いつか勉強しとこう。

402:名無しさん@お腹いっぱい。
15/05/16 16:35:35.13 .net
ps:\0: は 0 でいいけど、逆(pj:\0:)がないんだよね。f F と違って。
うーん、この非対称性。

403:名無しさん@お腹いっぱい。
15/05/19 20:23:42.65 .net
setopt hist_ignore_space
alias fg=' fg'
しててもCtrl-pを押したときはfgが出てきてしまうのですが、
出てこないようにするにはどうすればいいでしょうか?

404:名無しさん@お腹いっぱい。
15/05/21 19:51:22.09 .net
直後も出ないようにってこと?

405:名無しさん@お腹いっぱい。
15/05/23 22:06:31.50 .net
直後も出ないのが希望です

406:名無しさん@お腹いっぱい。
15/05/24 17:35:41.65 .net
根本的な解決ではないが、新しい機能をkeyへ割り当てる事で要求はこなせる。
ここではalternateとp keyの組み合わせに、新しい機能を割り当てようと思う。
これは設定によってpの先頭に^[をつけるとかは変わる部分だが、
大体その設定になっているだろうと思う。
履歴をさかのぼるのが^Pだとしたら、
bindkey -s '^[p' '^P^P'
見ての通り二回分履歴をさかのぼっているだけになる。
ちなみに^P^Pの後に\rを書けば即座に実行する事となる。
当然これは危険である。
cd hoge
rm *
cd
ここで実行しまうと再帰的にショックを受ける事になる。
試したいのであれば、
bindkey -s '^[p' 'pwd\r'
などとすると良いでしょう。

407:名無しさん@お腹いっぱい。
15/05/24 22:40:53.58 .net
ん、以下をfileに書いて実行すると動くのは理解できるのだけれど、
一番最後の行の\を一つ無くして「eval echo \$$a[B][2]」とすると
fileに書いて実行した時は動かないけれど、promptから打っていった場合動いてしまう。
typeset -A a
a=(B b)
eval $a[B]+=\( c d \)
eval echo \$$a[B]\[2]

408:名無しさん@お腹いっぱい。
15/05/25 00:10:55.57 .net
なるほど、そもそも以下をfileから実行した場合とpromptから
打ち込んだ時の挙動が違ったからか。
a=(abc)
echo a[1][1]

409:名無しさん@お腹いっぱい。
15/05/25 00:11:47.31 .net
$を書くのを忘れてた。

410:名無しさん@お腹いっぱい。
15/05/25 05:02:29.03 .net
scriptからだとこうしないと表示できない。
echo \[1]
echo '[2]'
echo "[3]"
promptからだと大丈夫、さらに1だけ表示が違う。
echo [1]
echo [2]
echo [3]

411:名無しさん@お腹いっぱい。
15/05/27 23:33:40.25 .net
setopt noglob とかしてんじゃないの

412:名無しさん@お腹いっぱい。
15/05/28 00:04:41.47 .net
>>411
ありがとうございます。noglob設定したら確かに直りました、
確認した所1ってfileが転がってました。
しかしよくすぐ気付くものだと感心しますな、最初の配列はきっと特別なんだろうな、
何かしでかしてんだろうなと覚書してまたわ。

413:名無しさん@お腹いっぱい。
15/05/28 00:21:08.64 .net
そっか、そもそもglobというのが頭の中からすっぽり消えてた。
恥ずかしながら。出直してきます。

414:名無しさん@お腹いっぱい。
15/06/07 09:29:46.03 .net
zsh-5.0.8のprintfで-フラッグが効かないんだけど、他にもなる人いる?
こんな感じ。
$ builtin printf '%-20s' 'hoge'
       hoge
$ command printf '%-20' 'hoge'
hoge

415:名無しさん@お腹いっぱい。
15/06/07 16:44:20.74 .net
zsh 5.0.7 (amd64-portbld-freebsd8.4) でもおなじ

416:名無しさん@お腹いっぱい。
15/06/07 17:33:24.91 .net
>>415
あれ、おかしいな?俺は5.0.7まで正常(左詰めされる)だったんだけど…。
ちょっとrevertしてみるわ。

417:名無しさん@お腹いっぱい。
15/06/07 17:45:27.15 .net
やっぱり5.0.7だと大丈夫っぽい。
パッケージ作成時の設定も変わってないみたいなのになんでだろう。
$ zsh --version
zsh 5.0.7 (x86_64-unknown-linux-gnu)
$ zsh -c 'builtin printf "%-20s" "hoge"'
hoge
$ zsh -c 'command printf "%-20s" "hoge"'
hoge
とりあえずは5.0.7で様子見することにします。

418:416
15/06/07 19:53:10.73 .net
ごめん、ちゃんと読んでなかった。うちでも、5.0.7だと正常(左詰めされる)でした。
zsh 5.0.8 (amd64-portbld-freebsd8.4) だと右詰になります。

419:名無しさん@お腹いっぱい。
15/06/07 20:46:57.13 .net
>>418
どうもです。となるとzshのバグですかね。
どなたかzsh-usersに報告されてました。
URLリンク(www.zsh.org)
というわけで、修正が来るまで?待つことにします。
お騒がせしました。

420:名無しさん@お腹いっぱい。
15/07/11 02:35:34.51 .net
select ループで選択候補にナンバリングされるけれども、この表示方法は変えられないのかな
桁の変わり目に表示がずれるのがどうしても気になる
ファイル選択に select を使うのもあまり便利とは言えないけど…
こういうときは皆どうしてるのかな

421:名無しさん@お腹いっぱい。
15/08/06 12:04:34.75 .net
teeみたいなことをやるリダイレクトで
ls > /tmp/ls.txt > /dev/sdtin
ってできるけど、なぜ stdout じゃなくて stdin に流すのでしょうか?
なんとなく stdout に流したくなるのですが

422:名無しさん@お腹いっぱい。
15/08/06 18:57:00.41 .net
/dev/stdoutに すると端末に表示されずに、/tmp/ls.txt にもう一度書きこまれるのでは?
端末に結びつけられていれば /dev/stdin でも /dev/stderr でもいいが
どうせスペシャルデバイスを使うのなら /dev/tty の方がわかりやすいかもね

423:名無しさん@お腹いっぱい。
15/08/08 09:23:44.01 .net
zsh使うくらいなら最初からbashだけ使ってた方がいい。
将来、なんかの拍子にbashの仕事が入ってくるかもしれない。
その時にbash使ってましたアピールは大きい。
zsh使ってましたとか何のアピールにもならない。
もう一度言う、たとえ趣味でもbashを使え。

424:名無しさん@お腹いっぱい。
15/08/09 12:30:00.64 .net
>>421
うちのzsh 5.0.8ではls.txtは作られても画面には何も表示されなかったんだが、オプションか何か?

425:名無しさん@お腹いっぱい。
15/08/09 13:48:35.32 .net
>>423
マゾなの?

426:名無しさん@お腹いっぱい。
15/08/09 21:29:45.09 .net
いえコピペです

427:名無しさん@お腹いっぱい。
15/08/09 23:01:50.40 .net
>>424
multios

428:名無しさん@お腹いっぱい。
15/08/10 20:02:26.48 .net
>>427 thx

429:名無しさん@お腹いっぱい。
15/08/28 01:03:10.36 .net
firewalldの補完ファイルどっかに落ちてない?

430:名無しさん@お腹いっぱい。
15/08/28 19:37:38.48 .net
>>421
ls > /dev/stdout > /tmp/ls.txt
とか
ls >&1 > /tmp/ls.txt
でいいんじゃないかな

431:名無しさん@お腹いっぱい。
15/09/01 23:45:26.91 .net
5.1
URLリンク(sourceforge.net)

432:名無しさん@お腹いっぱい。
15/11/10 14:23:27.38 .net
hosh

433:名無しさん@お腹いっぱい。
15/11/28 12:34:47.43 .net
hash

434:名無しさん@お腹いっぱい。
15/11/29 23:12:37.76 .net
初心者で申し訳ないが#や$から左のホスト名とかユーザー名、ディレクトリはどこらへんいじれば変えられる?

435:名無しさん@お腹いっぱい。
15/11/30 00:44:08.44 .net
>>434
zsh プロンプト でググればやりかたが見つかる。
.zshrc に書くらしい。

436:名無しさん@お腹いっぱい。
15/11/30 01:05:55.56 .net
vim .zshrcすると
operation not permittedって出ます

437:名無しさん@お腹いっぱい。
15/11/30 12:31:44.73 .net
.の後にスペースを入れちゃ駄目だよ

438:名無しさん@お腹いっぱい。
15/11/30 20:22:32.07 .net
.の後にスペースを入れたように見えるけど実際には.を使ってたりする

439:名無しさん@お腹いっぱい。
15/11/30 22:23:23.29 XQUEOjyyx
簡単なアンケートとイメージに答えるだけで自分のスタンプが作れる!
詳細はこちらから→URLリンク(goo.gl)

440:名無しさん@お腹いっぱい。
15/12/01 10:07:16.72 .net
ホントだw 気付かんかった

441:名無しさん@お腹いっぱい。
15/12/01 14:39:08.07 .net
ネタだろ

442:名無しさん@お腹いっぱい。
15/12/01 19:18:38.09 .net
じゃあ俺、mkdir .zshrc して帰るから(鬼畜)

443:名無しさん@お腹いっぱい。
15/12/02 01:15:42.82 .net
じゃ俺はそれをrm -rf . zshrcで消しとくね

444:名無しさん@お腹いっぱい。
15/12/02 01:50:09.44 .net
>>443
怖いことするな
ls .

445:名無しさん@お腹いっぱい。
15/12/02 09:45:55.28 .net
知ってて言ってんでしょ

446:名無しさん@お腹いっぱい。
15/12/02 13:46:26.23 .net
知ってて知らん言うのは犯罪やぞ

447:名無しさん@お腹いっぱい。
15/12/06 19:33:09.46 .net
zsh 5.2

448:名無しさん@お腹いっぱい。
15/12/18 20:00:31.04 .net
(( )) 内の浮動小数変数のデフォルト型をdoubleにする設定ってないですか?

449:名無しさん@お腹いっぱい。
16/01/08 07:16:05.45 .net
zsh-5.0.8 → zsh-5.1.1(zsh-5.2 も同様) と上げたら、
menu-complete → reverse-menu-complete で
reverse-menu-complete が確定→補完開始するようになった。(バグ?)
zsh-5.0.8 は確定せずに候補選択の逆順移動をする。
zsh-5.0.8 と同じ動きにする方法ってある?
>>448
setopt FORCE_FLOAT
でどうでしょう。
と思ったら浮動小数変数のデフォルト型ですか。
何もしなくても double では?
表示の有効桁数のことですか?

450:449
16/01/11 16:38:07.30 .net
compinit するとなるようですね。もっというと
zle -C reverse-menu-complete .reverse-menu-complete _main_complete
でなる。(_main_complete でなくても。)
zsh-5.0.8 でも compinit すると complete-word, menu-complete とかで
新しい補完を開始してしまう。
ので、reverse-menu-complete 以外は前から問題があったのかな?
zle -C 前の reverse-menu-complete や .reverse-menu-complete なら
新しい補完を開始することはない。
が、menu completion 中以外について、
当然 _main_complete は呼ばれないし、なぜか compinit なしの補完もしない。
menu completion 中しか reverse-menu-complete を使ってないので
姑息ながら、とりあえず .reverse-menu-complete で凌ぐ。

451:名無しさん@お腹いっぱい。
16/01/15 16:56:35.55 .net
seq 1 10 | echo `grep 5` `grep 3`
bashだと5が表示されるけど、zshだと完全に固まるね(^Cも^Zも受け付けない)

452:名無しさん@お腹いっぱい。
16/01/15 20:13:15.23 .net
5.1.1では^Cで止まる。

453:名無しさん@お腹いっぱい。
16/01/17 23:54:19.24 .net
5.2 では
% seq 1 10 | echo `grep 5` `grep 3`
grep: (標準入力): 入力/出力エラーです
3<eof> ← 入力
3
となる。けど
% zsh
% seq 1 10 | echo `grep 5` `grep 3`
でなぜか固まるね。
↓ は期待通りかな。
% zsh -c 'seq 1 10 | echo `grep 5` `grep 3`'
5<eof> ← 入力
3<eof> ← 入力
5 3
bash とは多分仕様が違うけど、
bash は POSIX compliant なのかな?
正しく動けば zsh の方が使い易そうだけど。

454:名無しさん@お腹いっぱい。
16/02/14 06:31:08.70 .net
hist_find_no_dupsはどういう意味なんでしょうか?
これを設定していても、Ctrl-pを繰り返し押したとき同じコマンドが何回も出てきます。

455:名無しさん@お腹いっぱい。
16/02/20 07:22:20.45 .net
Ctrl-rで検索したとき一度出たものと重複するものをスキップしてくれますよ。

456:名無しさん@お腹いっぱい。
16/02/20 12:37:09.21 .net
なるほど、ありがとうございます。

457:名無しさん@お腹いっぱい。
16/03/12 00:34:52.65 .net
URLリンク(d.hatena.ne.jp)
このzsh限定のselectメニューの文字化けどうすればいいんだろうか?

458:名無しさん@お腹いっぱい。
16/03/15 20:48:15.31 .net
selectの代わりにpercol使うことにした

459:名無しさん@お腹いっぱい。
16/03/31 14:16:01.37 .net
そういえば.zhistoryも日本語が文字化けしてた
history-all等の方で取り出すのは文字化けしないから
困った事にはならなかったが
bash_historyの方は化けないから
文字化けは他でもまた偶然直面しそうだ
直し方両方分からないし

460:名無しさん@お腹いっぱい。
16/04/02 02:15:04.35 .net
なんかzshがWindowsに対応とかニュースになってるらしいけどマジ?

461:名無しさん@お腹いっぱい。
16/04/02 17:24:11.62 .net
bashやろ

462:名無しさん@お腹いっぱい。
16/04/02 20:09:45.83 .net
ありゃ、bashか
でもそれでもすごいことだな

463:名無しさん@お腹いっぱい。
16/04/03 00:01:44.30 .net
すごいよ。WindowsでUbuntuのバイナリ互換するんだもんな
zshも動くよきっと

464:名無しさん@お腹いっぱい。
16/04/03 00:03:01.83 .net
今でも動くけどな
Windows7の人はxp-modeで試せばよい
URLリンク(unix.oskp.net)

465:名無しさん@お腹いっぱい。
16/04/04 03:22:03.43 .net
>>459
~/.zsh_historyのエンコーディングがLatin1っぽい

466:名無しさん@お腹いっぱい。
16/04/04 09:10:38.50 .net
>>465
nkf で utf-8 に変更しても駄目だったから
zshから書き出すまでの方見ないと駄目かもしれない

467:名無しさん@お腹いっぱい。
16/04/04 20:50:42.74 .net
>>459>>465>>466
仕様ではないのか
URLリンク(www.zsh.org)

468:名無しさん@お腹いっぱい。
16/04/10 04:03:37.50 .net
bashのcdでディレクトリだけ補完する、の下記設定は、zshだとどう書けばよいですか?
complete -d cd
下記でできましたが、自分には不要な設定もたくさんついてくるので、cdのディレクトリ補完だけ単独で設定したいです。
autoload -Uz compinit; compinit

469:名無しさん@お腹いっぱい。
16/04/10 13:30:00.02 .net
>>468
compctl -/ cd

470:名無しさん@お腹いっぱい。
16/04/10 20:47:25.28 .net
>>469
できました!
ありがとうございます。

471:名無しさん@お腹いっぱい。
16/05/11 12:17:56.75 .net
man cdとするとzshではなくbashのビルトインの方が呼ばれるんですがどうしたらいいですか
man zshbuiltinはちょっとめんどい

472:名無しさん@お腹いっぱい。
16/05/13 00:19:24.36 .net
run-help を使えるようにしておくとか

473:名無しさん@お腹いっぱい。
16/05/13 19:31:54.87 .net
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
これで補完のとき大文字小文字を区別しないようにしているのですが、
Macで/us<Tab>とすると/Usersが先に出てきてしまいます。
これを/usrが先に出てくるようにしたいです。つまり
入力した文字列と大文字小文字が一致した候補がある場合はそちらを先にしたいのですが
どうすればいいでしょうか?

474:名無しさん@お腹いっぱい。
16/05/13 22:41:19.11 .net
アルファベットが若い方が優先されてんでしょ

475:名無しさん@お腹いっぱい。
16/05/13 22:43:04.11 .net
マックをやめればすむ話だな

476:名無しさん@お腹いっぱい。
16/05/14 06:12:53.83 .net
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'
これじゃダメなんだね?

477:名無しさん@お腹いっぱい。
16/05/14 20:28:58.04 .net
大文字小文字無視系の設定は、しばらく使ってみないと自分の好みの動作が判らんよな
楽をしようとしてるのに、縛りを少しきつくすると勝手に確定させられて「おいっ!」みたいなことがあるし

478:名無しさん@お腹いっぱい。
16/05/20 01:08:02.47 .net
oh-my-zshとかprezto使わんのみんな

479:名無しさん@お腹いっぱい。
16/05/20 01:11:25.06 .net
使わない
適当にググって人の設定パクるほうがいい

480:名無しさん@お腹いっぱい。
16/05/30 22:12:11.81 .net
俺は最初oh-my-zsh使ってたけど今はantigenで落ち着いたな(´・ω・`)

481:名無しさん@お腹いっぱい。
16/06/19 19:22:43.33 .net
やったことない(´・ω・`)

482:名無しさん@お腹いっぱい。
16/06/23 22:14:43.03 .net
.zshrcにfunctionを書いているのですが、readでユーザ入力を待っている時に、ctrl+c、ctrl+d、esc、どれも押しても強制終了できません。
function hoge(){

483:名無しさん@お腹いっぱい。
16/06/23 22:17:15.86 .net
.zshrcにfunctionを書いているのですが、readでユーザ入力を待っている時に、ctrl+c、ctrl+d、esc、どれも押しても強制終了できません。
ユーザ入力ができて、入力待ち中に強制キャンセルもできるようにするにはどのようにすればよいでしょうか?
function hoge(){
# 入力待ち中に強制キャンセルが何も効かない。。
printf "input: "
read string
}

484:名無しさん@お腹いっぱい。
16/06/27 20:12:25.69 .net
>>483
function hoge(){
trap 'return 1' SIGINT
printf "input: "
read string
}
これでどうだろう

485:483
16/06/30 00:17:40.19 .net
>>484
ありがとうございます。
ctrl+cのあとにエンターを押せばtrapに補足されましたが、ctrl+cだけではキャンセルされませんでした。。
バージョンはこれでした。zsh 4.3.11 (x86_64-redhat-linux-gnu)
テストで、 trap "echo aaa" SIGINT としたんですが、これ、関数が終わった後も、コマンドライン上でctrl+cすると
aaa
aaa
aaa
...
とtrapが発動するようになりますね。。
とりあえず、 read -k 1 str で1文字入力にすることで、ctrl+cが入力されるとそれでキャンセルされたように見えるのでこれで代用しようかな。

486:名無しさん@お腹いっぱい。
16/07/01 20:45:43.11 .net
>>485
見当違いなアドバイスだが、readに-tつけては

487:483
16/07/07 00:51:28.67 .net
>>486
なるほど。
秒数待ちをするんですね。
そのアイデアはまったく考えてませんでした。
案の一つとして検討させていただきます。ありがとうございます。

488:名無しさん@お腹いっぱい。
16/08/05 17:35:39.35 .net
ここ最近、履歴の共有ができなくなってしまいました
inc_append_history と share_history は有効にしてます
何が悪さをしてるでしょうか?
zshは5.2です

489:名無しさん@お腹いっぱい。
16/12/22 11:34:44.60 .net
function定義した中身を表示する方法はありますか?
aliasはwhichで内容を確認できるのですが、functionはwhichで見れず。。
何か他の方法で見れないでしょうか?

490:名無しさん@お腹いっぱい。
16/12/22 16:04:48.16 .net
typeやとあかん?

491:名無しさん@お腹いっぱい。
16/12/22 16:05:32.06 .net
すみません。忘れてください

492:名無しさん@お腹いっぱい。
16/12/22 20:10:18.20 .net
>>490,491
レスありがとうございます。
すでに違ったとレスいただいていますが、typeコマンド初めて知りましたので一応調べてみたら、functionだとわかるだけでした。

493:名無しさん@お腹いっぱい。
16/12/22 20:17:52.21 .net
関数定義も普通にwhichで見れると思うけど……
% function foo() { echo hoge; }
% which foo
foo () {
echo hoge
}

494:名無しさん@お腹いっぱい。
16/12/22 22:09:41.71 .net
whichが置き換わってるんとちゃう?
built-in which
でいける

495:489
16/12/23 00:31:06.34 .net
>>493,494
おお!
その通りでした。
whichをwhichするのは初めてだ。
↓alias登録されてた!
% which which
which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
これでいけました。ありがとうございます。
% builtin which is_exists
続きます。

496:489
16/12/23 00:37:07.30 .net
続きです。
.zshrcと.zshenv見直してもalias登録してないので、どこで設定されてるかぐぐったら
こんなの見つけました。
URLリンク(d.hatena.ne.jp)
どうやら下記で設定されてるみたいです。
/etc/profile.d/which-2.sh
これはzshの場合デフォルトで読まれるみたいですが、functionが見れなくなる欠陥whichで書き換えるとか迷惑ですね。。
これを読まないようにする設定とか無いでしょうか?

497:489
16/12/23 00:39:13.07 .net
途中で書き込んでしまいましたすみません。
読まないようにする設定が無ければ、無理矢理感があって気持ち悪いですが unalias which を.zshrcに入れて我慢します。

498:名無しさん@お腹いっぱい。
16/12/23 00:46:56.65 .net
zshはそんなものデフォルトで入れないよ。冤罪だw
その手のおせっかいはお使いのディストリビューション固有の事情かと。

499:489
16/12/23 00:51:58.22 .net
えええ
centos6です。。

500:名無しさん@お腹いっぱい。
16/12/24 12:06:57.31 .net
curlで&や?を含むURLを取得するとき、いちいちURLをクォートで囲むのが
面倒なんだが、いい方法ないだろうか?

501:名無しさん@お腹いっぱい。
16/12/24 14:15:22.12 .net
URLをコピペするときは bracketed-paste-url-magic が役立つ

502:名無しさん@お腹いっぱい。
16/12/24 14:58:57.32 .net
これか。これってターミナルエミュレータがbracketed pasteに対応してないとダメなんじゃない?
URLリンク(github.com)
こっちのurl-quote-magicなら自分のとこでも動いた。ともあれthx
URLリンク(d.hatena.ne.jp)

503:名無しさん@お腹いっぱい。
16/12/24 19:54:49.31 .net
自分はその手のコマンドは noglob を使った alias を定義してるな

504:名無しさん@お腹いっぱい。
16/12/25 07:10:40.66 .net
noglobは&に効かなくね?

505:名無しさん@お腹いっぱい。
16/12/25 14:42:22.28 .net
>>504
あれ、確かにそうだよなと思って履歴を見返したら、クォート

506:名無しさん@お腹いっぱい。
16/12/25 14:51:11.09 .net
途中で切れてしまった。履歴を見返したら & を含む場合はクォートしていたw
ごめんち
ブラウザ経由で呼び出す機会が多くなったし、端末に張り付ける場合も
正規化した URL を使ってたから、クォートする機会があまりなかった
自分の記憶が全くに当てにならんのが泣ける

507:名無しさん@お腹いっぱい。
17/02/08 15:33:37.91 .net
URLリンク(github.com)
を入れたんだけど C-r で cool-peco-history にならんのです。
デフォルトの bck-i-search: になっちまう。
コマンドラインからは cool-peco-history 呼べるし、
alias の hist も呼べる。
$ bindkey | grep peco
"^R" cool-peco-history
になってるし、コマンドラインから
$ bindkey '^r' cool-peco-history
しても変わらず。
「やっちまったなぁ!」を使わず解決策教えてほしいです。

508:名無しさん@お腹いっぱい。
17/03/13 11:52:13.60 .net
pushd +3
とかってしたとき、3つ分スタック全体を循環させるんじゃなくて、
3つ目を取り出してスタックトップに乗せるって挙動なかったですか?
つまり最近使った順にスタックが並ぶ。
昔出来た気がするのですが、今マニュアル見てもなくて。

509:名無しさん@お腹いっぱい。
17/03/25 16:44:28.09 .net
ulimit -aってやると一番下に
-N 15: unlimited
と出るんですが、この項目は何ですか?

510:名無しさん@お腹いっぱい。
17/08/16 10:45:32.97 .net
extendedglobがmissing delimiterとか言われてエラーになる
何か他のオプションと衝突するとかある?

511:名無しさん@お腹いっぱい。
17/08/19 19:42:44.72 .net
cdr だけ 部分一致で補完したいのですが、どうすればよいでしょうか?
実用途としましては、project名 入力で path が補完して移動です。

zstyle ":completion:*" matcher-list 'm:{a-zA-Z}={A-Za-z} l:|=*'
で部分一致になった( l:=|* が 妥当かもわかってません)ので、
zstyle ":completion:*:*:cdr:*:*" matcher-list 'm:{a-zA-Z}={A-Za-z} l:|=*'
としてみたのですが、反映されませんでした。

512:名無しさん@お腹いっぱい。
17/11/08 00:09:30.35 .net
最近.zshrcを見直してzmodload zsh/filesが入ってたことに気付いたけど
これもう完全にいらない子なんだな。
たしか引数の最大バイト数を回避する目的で入れた記憶があるけど、
最近のLinuxは引数上限がかなり緩和されたはずだから困ることはまずないし、
むしろPOSIX準拠してないので制約が多い。
というかそもそもこれが作られた目的が緊急時のリカバリ用というのを今頃知った。
ただのPOSIX拡張だと思ってたわ・・・。manは見なきゃ駄目だな。

513:名無しさん@お腹いっぱい。
17/12/29 07:26:25.83 .net
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
CDVW4G8P2M

514:名無しさん@お腹いっぱい。
18/02/09 15:37:56.37 .net
世の中pythonが流行ってるけど、案の定xonshっていうシェルも出てきた
そのうちイーマック厨みたいにpythonは環境です(キリッとか言い出すやつも現れそうだな

515:名無しさん@お腹いっぱい。
18/02/12 03:10:42.94 .net
>>514
xonsh初めて知った。
機能的にはすごそうだが、ちょっと込み入ったことはシェルスクリプトで書いた方が後々使い回しが楽そうだな...

516:名無しさん@お腹いっぱい。
18/02/14 09:51:22.03 .net
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆

517:名無しさん@お腹いっぱい。
18/03/05 18:24:52.65 .net
fzfのキーバインドを変更したい時ってどうすればいいんですか?
具体的にはC-tをC-TもしくはM-Tに変更したいです

518:名無しさん@お腹いっぱい。
18/03/15 08:14:49.67 .net
muxer -i input.aac?sbr --file-format m4a -o output.m4a
ってコマンドを打ちたいんですが、sbrというオプションを付けるときは頭に?を付けないといけないんですが、
「?」がzshでワイルドカードとして扱われてしまいます。
ワイルドカードとして認識されないようにするにはどうしたらいいでしょうか?

519:名無しさん@お腹いっぱい。
18/03/15 08:31:31.50 .net
自己レス
?の前にバックスラッシュを入れたら使えました。

520:名無しさん@お腹いっぱい。
18/03/15 11:57:18.95 .net
zshのデフォルトだと、マッチするファイルがなければ?は?のままのはずだが。

521:名無しさん@お腹いっぱい。
18/03/16 01:19:49.71 .net
>>520
バックスラッシュ付けないとこのようになってしまいます。
$ muxer -i input.aac?sbr --file-format m4a -o output.m4a
zsh: no matches found: input.aac?sbr

522:名無しさん@お腹いっぱい。
18/03/16 01:28:32.25 .net
>>521
NOMATCHかなんか設定してるんでしょ。
man読みな。

523:名無しさん@お腹いっぱい。
18/03/16 01:54:20.85 .net
>>522
何の設定でしょうか?
何のmanをみたらいいですか?
今ググってみて
.zshrcに
setopt nonomatch
と書いたら?を付けなくてもコマンドが動きました。

524:名無しさん@お腹いっぱい。
18/04/13 02:04:18.70 .net
$ $PATH<Enter>
としたとき$PATHの値が表示されるようにできるみたいなんですが、
そういうオプションがあるんでしょうか?

525:名無しさん@お腹いっぱい。
18/04/14 20:09:52.28 .net
zsh: No such file or directory: のようなおまけがついててもいいなら
そのままでも表示はされる場合が多い気がする

526:名無しさん@お腹いっぱい。
18/04/15 02:53:00.19 .net
確かに。でも$PATHならともかく他の環境変数にもその方法を適用するには
リスクが高いですね。

527:名無しさん@お腹いっぱい。
18/04/15 09:21:33.89 .net
preexec使えばできると思う

528:名無しさん@お腹いっぱい。
18/04/15 16:39:01.17 .net
accept-lineをオーバーライドするのでもできるかも
URLリンク(stackoverflow.com)

529:名無しさん@お腹いっぱい。
18/04/17 21:53:10.70 .net
普通にechoするんじゃ何がダメなんだ

530:名無しさん@お腹いっぱい。
18/04/22 17:49:31.90 .net
ここでも出てるんだが、
URLリンク(stackoverflow.com)
git commit 'Add f<TAB>
としたときfで始まるファイル名を補完してくれたらいいんだが

531:名無しさん@お腹いっぱい。
18/05/03 01:54:35.99 .net
以下のように (( )) で浮動小数演算したところ思わぬ結果になりました。
a と b の型がどのように決まるのか教えていただけないでしょうか?
$ cat hoge
a=$(( 1e-6 * 1e-6 ))
(( b = 1e-6 * 1e-6 ))
typeset -p a
typeset -p b
$ zsh hoge
typeset a=9.9999999999999998e-13 #型は文字列?
typeset -F b=0.0000000000 #小数点以下10桁固定の型?
$ zsh --version
zsh 5.4.2 (x86_64-redhat-linux-gnu)

532:名無しさん@お腹いっぱい。
18/05/03 19:34:11.16 .net
よく知らずに答えるけど
$(())を使うと文字列
(())を使うと浮動少数や整数
になるんじゃないの?

533:名無しさん@お腹いっぱい。
18/05/08 19:03:35.11 .net
型はtypeset指定しなければ暗黙的に決まるわけだが、
floatは指数形式と小数点固定形式があるが(())内の暗黙floatは勝手に後者になる
そもそも型とその出力表現は別の概念なのにごっちゃになってんのが糞仕様すぎ

534:名無しさん@お腹いっぱい。
18/05/09 06:50:48.71 .net
タブ補完でmigemo使う方法って知られてるの

535:名無しさん@お腹いっぱい。
18/05/22 02:54:33.28 .net
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
NQSL6

536:名無しさん@お腹いっぱい。
18/05/25 04:02:31.48 .net
zsh/filesって今はいらない子なの?
これないと引数の最大バイト数の制約がきついよね?

537:名無しさん@お腹いっぱい。
18/05/25 07:37:08.83 .net
自分が必要なら使えばいい
俺は引数の最大バイト数制限なんてここ10年ひっかかったことないし
あったとしたら自分のマシンじゃないからzshじゃなかったはず

538:名無しさん@お腹いっぱい。
18/05/25 23:18:15.61 .net
昔のLinuxはかなり少なかったらしいね>最大バイト数制限
昔初めて.zshrcを作る際に他人の設定をパクってそのまま惰性で使ってる人多そう・・・

539:名無しさん@お腹いっぱい。
18/05/26 17:34:56.75 .net
そもそもこれが作られた目的って緊急メンテ用だし
URLリンク(www.zsh.org)より
It wasn't intended to provide full versions of the commands, the
commands which are there don't implement all the POSIX options, etc.
It's intended to provide enough to be useful in emergencies.
Most people shouldn't need to use it.

540:名無しさん@お腹いっぱい。
18/05/27 11:56:00.46 .net
>>530,>>534
URLリンク(hata-o.jp)

541:名無しさん@お腹いっぱい。
18/05/27 20:12:13.46 .net
>>540
530ってそれ関係ある?

542:名無しさん@お腹いっぱい。
18/07/10 10:11:10.94 .net
kill screen<TAB>
とか補完して候補が1個しかなかった場合、即PIDに補完されるけど、
候補が1個でもメニューを表示するようにできないかな
他のコマンドの場合はいいんだけど、killの場合は確認しないと不安で
zstyle ':completion:*' menu select=1
はやってみたけど変わらなかった

543:名無しさん@お腹いっぱい。
18/08/13 19:24:28.55 .net
pgrepやpkillでよくね?

544:名無しさん@お腹いっぱい。
18/08/14 20:21:50.30 .net
補完でできた方がよくね?

545:名無しさん@お腹いっぱい。
18/08/29 06:32:57.35 .net
bash が入ってるが zsh は入ってない環境って例えばどんなの?

546:名無しさん@お腹いっぱい。
18/08/29 11:47:58.80 .net
>>545
20年前のUNIX/Linuxサーバー
10年前のならだいたい入ってると思うけど、それでもデフォルトで入ってるかどうかはわからん

547:名無しさん@お腹いっぱい。
18/08/29 13:19:33.55 .net
そうなのか。実は zsh スクリプトを積極的に書いていっていいものかと悩んでいるんだ。
他人に使ってもらうためのスクリプトは bash で書いていたが、普段使いのシェルが zsh なので
なるべくzsh を使いたい。しかし「このスクリプトを使うためにまず zsh 自体をインストールして下さい」
と言うのは避けたい。導入のハードルを上げたくない。

548:名無しさん@お腹いっぱい。
18/08/29 19:14:19.25 .net
対話的に使うシェルとスクリプトで使うシェルは別でもいいんじゃないの

549:名無しさん@お腹いっぱい。
18/08/29 22:33:23.57 .net
日常の作業を自動化したくてスクリプトを書くことがよくあるんです。
あと zsh の rcquotes とか zparseopts とかが便利すぎるので…

550:名無しさん@お腹いっぱい。
18/08/29 23:32:01.46 .net
自分で答え出してるんじゃね
自分しか使わないならzshでいい
他人に使ってほしいならせめてbash

551:名無しさん@お腹いっぱい。
18/08/30 00:15:19.56 .net
>>550
はい。つまり気になっているのはデフォルトで bash が入っているが、
しかし zsh は入ってない環境が実際あるのか。ってことなんです。

552:名無しさん@お腹いっぱい。
18/08/30 07:17:05.79 .net
あるよ
CentOS7でもそうだろ

553:名無しさん@お腹いっぱい。
18/08/30 11:46:06.84 .net
入ってるか入ってないかは半々ぐらいだね

554:名無しさん@お腹いっぱい。
18/08/30 12:49:34.30 .net
なるほど、そんなレベルなんですか…

555:名無しさん@お腹いっぱい。
18/08/30 17:31:18.55 .net
「入れれない」ってんならともかく、「入ってない」だけなら入れれば済むワケで


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