zsh その7

1名無しさん@お腹いっぱい。
垢版 |
2012/05/24(木) 16:34:43.03
zshについて語るスレ

http://www.zsh.org/
http://zsh.sourceforge.net/

・過去ログ
zsh その6
http://toro.2ch.net/test/read.cgi/unix/1229010860/
zsh その5
http://pc11.2ch.net/test/read.cgi/unix/1212677877/
zsh その4
http://pc11.2ch.net/test/read.cgi/unix/1107342206/
zsh その3
http://pc5.2ch.net/test/read.cgi/unix/1080002786/
zsh入門 パート2
http://pc3.2ch.net/test/read.cgi/unix/1036324177/
zsh入門
http://pc.2ch.net/test/read.cgi/unix/990283346/
2013/06/22(土) 01:07:55.66
>>208
r:とかl:とか色々でてきてあきらめた…でも動いたようで良かったですな。
そういうツールは聞いたことないけど、UNIX的思想からいくとlocateの結果をgrepでフィルタして…となりそう
2013/07/14(日) NY:AN:NY.AN
zshをログインシェルにして、boot直後にターミナルでログインするとき、プロンプトが出るまで30秒くらいかかる。compinitしてるのが原因と思われるが、皆さんどうですか?

x86_64 Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz GenuineIntel GNU/Linux
メモリ12GB、HDD 1TB、Gentoo Linuxです。
2013/07/14(日) NY:AN:NY.AN
そのスペックでcompinitに30秒はさすがにおかしいと思われ
2013/07/14(日) NY:AN:NY.AN
ATOMですらcompinitは一瞬だから他の原因だろう
2013/07/14(日) NY:AN:NY.AN
ターミナルって、コンソールじゃなくてターミナルってこと?
zsh以外のシェルに戻したら早くなるの?
2013/07/14(日) NY:AN:NY.AN
すみませんが詳しい方のみ回答をお願いします
すみませんが詳しい方は回答のみお願いします
2013/07/15(月) NY:AN:NY.AN
>>211>>212
そうですよね。
.zshrcのcompinitをコメントアウトすると早くなります。
他の原因なのかもしれませんが。
HDDの読み込みが遅いとかそういうのかもしれません。
.zcompdumpは毎回作り直しているわけではないようです。

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

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

ログインシェルをbashにすると、一瞬で起動しました。
2013/07/17(水) NY:AN:NY.AN
.zshrcの後に読まれるのは/etc/zloginと.zloginしか無い
ここで何か変な処理してるんじゃないの
非ログインシェルでzshを起動したときは?
2013/07/17(水) NY:AN:NY.AN
select ループの数字付けのフォーマットを変えられないのかな?
一桁で済むときはいいけど、そうじゃないときはズレるのがどうも気になる
2013/07/19(金) NY:AN:NY.AN
それ俺も思った
zshにしては気が利かないな
2013/07/20(土) NY:AN:NY.AN
>>217
レスが遅れ申し訳ないです。
そう思うんですが、システムには~/.zloginも/etc/zloginも作成していません。これらのファイルはありません。
例えばログインシェルをbashにしてrebootして、bashが立ち上がってからコマンドでzshを立ち上げると
一瞬で起動しました。再現性がありました。
確かにログイン関係で遅延が発生しているっぽいのですが。
.zloginを作成していないことによる問題とは考えにくく(試してはいないのでわかりませんが)、やはりソースに当たる必要がありそうです。
どうもありがとうございました。
2013/07/23(火) NY:AN:NY.AN
ログインシェルの場合、読み込み順はこうだよね
/etc/zshenv
$ZDOTDIR/.zshenv
/etc/zprofile
$ZDOTDIR/.zprofile
/etc/zshrc
$ZDOTDIR/.zshrc
/zlogin
$ZDOTDIR/.zlogin

結局再現性がないと問題特定するのは無理なんじゃ
2013/07/31(水) NY:AN:NY.AN
FreeBSDでHISTFILEが大きくなるとログアウトが遅くなるなあ。
FreeBSD 8.1-RELEASE-p12
zsh 4.3.11 (amd64-portbld-freebsd8.1)
930035バイト、約33000行で10秒くらいかかるようになってた。
Linuxではこんなになったことないんだが。
2013/08/01(木) NY:AN:NY.AN
>>222
portsのオプションでMEMをoffにすると直ると思う
2013/08/14(水) NY:AN:NY.AN
俺には関係ないんだけど何そのオプション
2013/08/14(水) NY:AN:NY.AN
>>216
まあ別にいいんだけど、PROMPT に問題がありそうならそれを貼れば?
226216
垢版 |
2013/09/02(月) 23:23:39.30
大変長らく空いてすいません。
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名無しさん@お腹いっぱい。
垢版 |
2013/09/05(木) 14:32:55.63
bashのときは!番号でhistoryの番号実行しようとすると,コマンドが表示されるまでで止まってもう一回エンターをおして実行になってたんですが,
zshに乗り換えたら!番号でエンターをおしたらコマンド実行まで行ってしまいます.
コマンド表示までで止めるのはどうすればよいでしょうか.
2013/09/05(木) 15:17:29.49
tab
基本的にzshはtabで色々対応できる。補完とかその展開とか。
229名無しさん@お腹いっぱい。
垢版 |
2013/09/05(木) 23:55:00.57
>>228
おお!あざーっす
2013/09/09(月) 15:24:16.53
>227
わかんない時はとりあえず tab 押すだろ
231名無しさん@お腹いっぱい。
垢版 |
2013/09/11(水) 18:16:45.31
ここで聞くべきかTeXスレで聞くべきか迷ったんだけど,
vim-latexで書いてるときに\llでコンパイルしますよね.
bashだと\llでコンパイルし終わると自動的にvimの画面に戻るんですが,zshだとコンパイル終わってもvimにもどらずctrl cを押さないとvimにもどりません.
どうしたらコンパイル終わって自動でvimに戻るかな
2013/09/22(日) 01:37:22.11
tex というか vim スレのような気が…
2013/09/22(日) 23:52:13.36
>>232
そうですね。
でも諦めてlatexmk使うことにしたんでもう大丈夫になりました
2013/09/23(月) 01:34:51.08
え?いまなんて?
235名無しさん@お腹いっぱい。
垢版 |
2013/10/09(水) 09:42:12.12
autoload -U compinit
compinit
が.zshrcに書いてあると読み込みの段階で固まっちゃうんですがこれはなぜでしょうか.
この二行をコメントアウトすれば普通にとおります.
2013/10/09(水) 21:02:02.59
通常エラー出力と通常出力、それぞれを
別のパイプに通すことは可能?
2013/10/09(水) 22:14:43.31
プロセス置換を使った方がてっとりばやい
> >(command1) 2> >(command2)
2013/10/20(日) 15:31:01.51
なるほどその手があった
2013/11/28(木) 02:55:17.38
(( )) の中で浮動小数を代入した変数って、デフォルトは 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 をデフォにしたいのですが、できますか?
2013/12/18(水) 16:15:48.61
zshのヒストリーが1万件になって削除されるようになってしまった。

みんなはzshのヒストリーの上限何万にしてる?(何百万?)
2013/12/18(水) 16:25:32.61
>>239
function () {
unset $x
typeset -E $x
}

とかの要領で.zshrcに書き込むんじゃないか?
2013/12/18(水) 22:12:56.77
>>240
百万
1万は少ないほうじゃない?
2013/12/19(木) 00:15:25.62
確かに。思えば1年ぐらいで埋まってしまった。
2013/12/19(木) 14:07:09.18
そんなに保存しておくとエロいURLをwgetした履歴とかが
いつまでも残っちゃうじゃん
2013/12/19(木) 14:42:16.92
wget "URL"
形式で打ち込んでいるならば

cat <<EOF >>.~/.zshrc
setopt histignorespace
alias cat=' wget' #空白を前方に差し込んで、ヒストリーログの書き込みをさせない
2013/12/19(木) 14:44:21.18
ワロタ。EOF忘れてるw
2013/12/19(木) 15:09:28.94
>>244
別にいいじゃん。
2013/12/19(木) 21:58:39.78
ちょっと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と分けています。
2013/12/21(土) 14:09:53.66
そういう hisotry コマンドがあるんじゃない?

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

>>241
どゆこと?

>>245
>>. と cat= で悩んじゃったじゃないか。
2013/12/21(土) 15:39:42.60
setopt hist_ignore_all_dups hist_save_nodups
しても10kとかいくもん?
2013/12/21(土) 16:39:53.69
昔は HIST_IGNORE_ALL_DUPS や HIST_IGNORE_DUPS を有効にしていたけど
いつ何をやったかを後で調べたいときには、ほぼ正味の履歴を残しておく方が都合良いと気付いて無効にした
HIST_FIND_NO_DUPS を有効にしとけば、使い回しのときにも欝陶しくないし
2013/12/21(土) 20:00:41.34
言われてみると確かに

しかし自分の履歴ってのはなんか気恥ずかしいものがあるな
数年前のトラブってる業務やったときの履歴を見て遠い目をしたりw
2013/12/21(土) 21:34:12.10
>>241
自分も一瞬こんな書き方があるのかと思った
要は適当な関数作れってことよね?
2013/12/23(月) 00:46:32.95
履歴のインクリメンタルサーチって、複数のワードでマッチングすることってできますか?

たとえば、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
2013/12/23(月) 05:34:01.74
e 連打というのがよくわからんけど
自分はパターンマッチが使える history-incremental-pattern-search-{backward,forward} を使ってる
2013/12/23(月) 13:51:38.79
>>255
すいません、e 連打は Ctrl-r 連打の間違いです

履歴でglob使えるとは知らなんだ
ありがとうございます!
2013/12/23(月) 23:29:00.04
globあると遡ってパターンマッチしまくるからタイポしたときとか重くなるね
そういう意味でもHISTSIZEはでかすぎないほうがいいかも
履歴を古いやつから自動的に分けたりアーカイブしたりする機能がzshにあればいいけど
そんくらい自分で適当に作れってか
2014/01/04(土) 21:20:50.10
zsh-5.0.2 から zsh-5.0.4 に上げたら
appendhistory で $HISTFILE に elapsed times が残るようになってるじゃないか。
よかよか。追加タイミング変わったんだね。実行完了時に。
2014/01/10(金) 01:15:22.77
Releases 5.0.3 and 5.0.4 were replaced with 5.0.5 because they contained serious bugs.

ファッ!?
2014/01/10(金) 02:31:05.48
=(command)で生成される一時ファイルに拡張子って指定できないもんですかね?
2014/01/10(金) 23:29:25.65
それは俺も考えたことがある。無理じゃないすかね。少なくともそれ用の機能はないと思う。

>>259
serious bugs って何だろうね。
2014/01/11(土) 02:38:29.80
あんま盲目的に新バージョンを入れないほうがいいんかな
正規表現処理にバグがあってファイル消えたとかなったら死ぬわw
2014/01/11(土) 03:57:35.24
>>261
rvmのバグ報告でなんかregexp周りが死ぬってのを見た気がする。
2014/01/11(土) 15:15:38.09
4.3.10でこういうバグがあったよ
しかもDebianの前のバージョンのzshがこれだったという…
ttp://www.zsh.org/mla/workers/2010/threads.html#00781
265名無しさん@お腹いっぱい。
垢版 |
2014/01/11(土) 18:48:30.19
Debianのstableは、バージョン番号据置きでパッチのバックポートするから要確認。
266名無しさん@お腹いっぱい。
垢版 |
2014/01/11(土) 20:08:23.27
標準エラー出力に色をつけたいのですがどうしたらよいですか?
2014/01/11(土) 20:13:28.22
標準エラー出力に色を付けてるプログラマーorシス管見つけたら
社史編纂室に異動させるわ
2014/01/11(土) 20:52:53.94
シェルスクリプト総合 その22
http://toro.2ch.net/test/read.cgi/unix/1383260330/

115+2 :名無しさん@お腹いっぱい。 [↓] :2014/01/11(土) 19:21:56.73
read に -N オプション付けてるプログラマーorシス管見つけたら
社史編纂室に異動させるわ
2014/01/11(土) 23:44:02.01
僕はcygwinでzshを使ってるだけで、unixなんて見た事も使った事も無いんで
このスレでは大人しくしています
2014/01/11(土) 23:57:49.03
じゃあ黙ってろよ
2014/01/12(日) 09:51:59.25
社史編纂室に異動させられて暇なんだろ
2014/01/14(火) 01:05:32.66
>>265
Debianよく知らんのだけど、それでstable名乗るのってOKなん?
2014/01/14(火) 04:14:06.74
>>272
バージョンあげてあらたなバグを導入することを防ぎつつ
バグフィクスのみをとりこんでいくんだからstableなんじゃないの
2014/01/14(火) 10:00:57.12
>>272
ダメなの?
2014/01/14(火) 20:49:51.24
>>263
5.0.5でも補完の時にregexpでエラー吐いちゃうんだけど@とあるBSD
2014/01/14(火) 20:58:48.07
>>273,274
ごめん、ダメじゃないです・・・勘違いした
むしろバグフィックスやってくれないと困るわな
2014/01/17(金) 21:28:10.41
こんな機能あったら便利なのになぁ、って話はメーリングリストに投げたら
意外にサクッと実装してくれたりすんのかな?経験ある人います?
2014/01/19(日) 01:13:19.16
zshの起動が異常におそいがこりゃなんだ
2014/01/19(日) 15:51:33.24
>>278
特に感じないけど。どの辺で遅い?

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

http://www.zsh.org/mla/users/2013/msg00145.html
2014/01/21(火) 02:46:54.12
FORCE_FLOAT付けたら./configure --<タブ>が変なエラーになる・・・何なのこれ

$ ./configure --
(eval):local:1: not valid in this context: _a_1.1
_describe:102: not an identifier: _a_1.1
2014/01/23(木) 02:21:05.12
>>278
俺は個人的にzshrcがもっさりしてるので遅い。
一回ふきとばしてみたら?
282名無しさん@お腹いっぱい。
垢版 |
2014/01/23(木) 02:23:30.23
>>279
>>281
.zcompdumpを作るのに異常に時間がかかってる
283名無しさん@お腹いっぱい。
垢版 |
2014/01/23(木) 02:25:45.18
autoload -Uz compinit
compinit -u
をコメントアウトするとすぐ起動する.
ホームディレクトリをNFSにしてるからかなぁ?
2014/01/25(土) 23:51:28.86
>>282
http://my.opera.com/ymirlin/blog/2011/02/01/nfs-home-zsh

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

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

もっとシンプルに
% ssh user@example "~/setup.zsh"
setup.zsh実行後にzshを終了せず対話型になるみたいなことって出来ませんかね?
2014/01/26(日) 14:57:40.57
>>285
setup.zshの最後にexec zshして、
ssh -t user@example setup.zshしたら?
2014/01/26(日) 15:00:01.93
>>286
まあssh -tしわすれたときのために
[[ -t 0 ]] && exec zsh かな?
2014/01/26(日) 16:39:40.77
素早い返信ありがとうございます
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
2014/01/27(月) 11:13:04.30
>>288
ああ、シェル変数やらはそうだろうね。
だったらexpect使ったら?
#!/usr/bin/expect
spawn "zsh"
expect "%"{ send "source hoge.zsh\n" }
interact

でやりたいことはできそうだけど
2014/01/27(月) 19:46:41.87
>>289
おおおこれは便利だ
こっちでやってみます
291名無しさん@お腹いっぱい。
垢版 |
2014/01/31(金) 18:40:31.72
>>284
ありがとうございます!
やってみたら,なぜかマシンによってセキュリティチェックがあるのとないのがありますね.
2014/01/31(金) 20:53:22.37
>>291
もしかしたら/tmpが0777のマシンと1777のマシンじゃないか?
2014/01/31(金) 21:57:09.18
なんとなく言ってみるけどselinuxが悪さしてることってない?
294名無しさん@お腹いっぱい。
垢版 |
2014/02/01(土) 00:36:14.06
両方ともmacですわ
2014/02/01(土) 19:20:21.34
そういやmacはデフォルトのログインシェルがzshなんだっけ
296名無しさん@お腹いっぱい。
垢版 |
2014/02/02(日) 01:13:04.98
10.2 まで tcsh
10.3 からいまのところ bash
zsh は5.0.2が入ってるけど、デフォルトログインシェルにはなってない。
2014/02/02(日) 18:31:21.31
あ、そうなんだスマソ
デフォルトでインストールされてるってだけか
2014/02/10(月) 23:45:43.92
なんかCentOS4.5のzsh-4.2.0が.zshenvを読んでないっぽいんだけどなんで?

まあ管理権限ないから$HOMEにzsh-5.0.5入れたけど……
2014/02/11(火) 07:19:07.79
てか4.5とか古いなw
そっちに原因があったりして
2014/02/11(火) 10:56:49.31
CentOSの問題をここで聞かれてもな。
2014/02/12(水) 00:50:45.39
研究室の鯖なかなか更新してくれないんだよね。
CentOS固有の問題なのかな?
2014/02/12(水) 01:08:42.94
うん。
2014/02/12(水) 01:19:27.88
そっか。
2014/02/12(水) 04:23:39.09
zsh-4.2.0なんて何年前だろ
とりあえず新しいのを自分でビルドしてユーザ領域に置いてみたら?
2014/02/12(水) 12:07:28.81
もう入れたってさ。
2014/02/12(水) 22:01:25.39
あー書いてたかスマン

ってか話題ないな・・・
2014/02/15(土) 11:39:19.20
話題か。

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

share_history は前のまま実行前に追加するみたい。(elapsed times が残らない。)
てか share_history って imported lines と local lines 分けてるんだね。
昔は違った気がするけど。
あと import タイミングが行編集終了時。最初、終了前に履歴辿って効いてないのかと思った。
2014/03/02(日) 22:23:24.05
zargs -r -- $HOME/.zshfunc/*(N:t) -- autoload
で.zshfunc以下に定義してある関数を全部読みこもうとしたんだけど、
関数内でこいつを呼びだすと動かなくて
ttyで呼びだすと動いてるっぽい。なんでだろう?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況