X



zsh その7

0001名無しさん@お腹いっぱい。
垢版 |
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/
0154名無しさん@お腹いっぱい。
垢版 |
2013/03/20(水) 11:46:11.62
引数の展開は行う。ので、その副次的結果も発生する。
0156名無しさん@お腹いっぱい。
垢版 |
2013/03/24(日) 12:44:28.54
setopt auto_pushd しておいて
cd -[TAB] して番号でディレクトリを移動できるのが便利なんだけど、
zshの補完機能全般においても、補完候補一覧から番号で選択できるように
できないのかな。
候補が一つになるまで文字入力とTAB入力を繰り返すとか、
TABを何度も入力して候補を選択するとか面倒で…。
0158名無しさん@お腹いっぱい。
垢版 |
2013/03/27(水) 04:24:23.65
anything.elてあのemacsの?
すごいすごいって聞くけどemacs自体使わないのでどうすごいのか分からない
誰か産業でオナシャス↓
0160156
垢版 |
2013/03/28(木) 02:43:23.75
>>157
ディレクトリの移動についてはcdrとzawを入れたらだいぶ楽になった。
これならたしかに番号入力要らない感じ。
あと補完機能全般についてはauto-fuを入れたら少し楽になった。
数年ぶりにzshの設定ファイルをいじったんだけど、
いつの間にかものすごく進化しててびっくり。
0161名無しさん@お腹いっぱい。
垢版 |
2013/04/21(日) 22:13:45.79
http://unix.oskp.net

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

割と便利そうだ
0162 忍法帖【Lv=12,xxxPT】(1+0:8)
垢版 |
2013/04/21(日) 23:02:00.42
cygwinとどっちがいいの?
0163名無しさん@お腹いっぱい。
垢版 |
2013/04/22(月) 08:27:55.62
そういう質問をする人には区別が付かないんじゃないかなあ
0164名無しさん@お腹いっぱい。
垢版 |
2013/04/23(火) 22:56:28.65
cygwinもInterixもただなんだし両方つかってみればどうかな
cygwinはソフト多い、動作遅い

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

て感じ
0166 忍法帖【Lv=2,xxxP】(1+0:8)
垢版 |
2013/04/24(水) 22:36:07.82
cygwinってなんであんな遅いんやろね……
0167名無しさん@お腹いっぱい。
垢版 |
2013/04/25(木) 01:18:54.85
lessを実行してるのに.zshenvの中身が呼ばれておかしいなと思ってたら
/usr/bin/lesspipe.shの先頭が#!/bin/shになってるせいだった
いやぁ何事かと焦った
0169名無しさん@お腹いっぱい。
垢版 |
2013/04/25(木) 03:26:19.93
昔は遅い遅いと言われてきたが、最近のマルチコア、SSDな環境ではどうなんだろ
案外ストレス感じなかったりして
0171 忍法帖【Lv=2,xxxP】(1+0:8)
垢版 |
2013/04/25(木) 07:40:15.22
>>168
じゃあ各種コマンドはどうすんの?mingw?
0172名無しさん@お腹いっぱい。
垢版 |
2013/04/25(木) 08:59:39.61
CygwinはWindowsサブシステムやAPIを経由してNTカーネルとやりとりするけど、
SFU(SUA)はInterixサブシステムが直接NTカーネルとやりとりするんだが、オーバーヘッドが少ない分、動作が速いらしい。

昔のSFUはCygwinと同じUNIXらいくなツールセットだったけど InterixサブシステムはNTカーネルで動くUNIXレイヤーなのでネイティブ反応速度が可能
0173名無しさん@お腹いっぱい。
垢版 |
2013/04/25(木) 22:23:34.52
便利そうで意外に使ってる人を見ない>SFU

つか、最近のWindowsはマシなシェルを備えてるんじゃなかった?よく知らんけど
0175名無しさん@お腹いっぱい。
垢版 |
2013/04/26(金) 23:34:05.62
すみません,凄く単純な質問があります.

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

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

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

参考になるサイトだけでも紹介いただけるとありがたいです.
よろしくお願いいたします.
0176名無しさん@お腹いっぱい。
垢版 |
2013/04/26(金) 23:44:22.86
FAQ だね

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

普段から zsh スクリプトを書いてるとデフォルトの動作の方が楽だな
まあ楽をするために敢えてこうしてるはずだが、他のシェルに合わせる人も多いな
0181名無しさん@お腹いっぱい。
垢版 |
2013/04/29(月) 22:00:05.61
$=a でだめな理由が?
zsh 以外でも動くようにとか?

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

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

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

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

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

なんか書いてたら長くなった。失礼。
0182名無しさん@お腹いっぱい。
垢版 |
2013/05/01(水) 02:22:13.74
space含む場合は確かに便利かも。自分の場合はまずないので
それじゃあbashと同じでいいやって感じかな。まぁ好みの問題か
0184名無しさん@お腹いっぱい。
垢版 |
2013/05/06(月) 18:02:00.60
for ((count = 0.0; count < 1.0; count += 0.05))
do
echo $count
done

これの出力結果は、
0.0000000000
0.0500000000
0.1000000000
...
といった感じになります。
出力の桁数の調整はどうしたらできるでしょうか???
0188名無しさん@お腹いっぱい。
垢版 |
2013/05/10(金) 00:03:18.93
>>187
知らんかったからman引いてみた
zshall で見つからんかったけど、man bash に載ってた
> The current set of options may be found in $-.
一応試してみると
% echo $-
05689JNXZghiklms
% setopt +0
% echo $-
5689JNXZghiklms

になるから、bash と同じように扱われてるっぽい
0198名無しさん@お腹いっぱい。
垢版 |
2013/06/03(月) 23:05:06.97
$(builtin foo) って command bar くらいのコストかかんだね。
同じ桁くらいの。
まあそれはそうか。 (builtin foo) みたいに subshell 内みたいだし。
でも $(<foo) みたいに速いといいよなあ。
普通気にしないだろうけど。
0199名無しさん@お腹いっぱい。
垢版 |
2013/06/06(木) 07:42:18.91
ビルドに挑戦したんだけど、zsh.mdhが作られなくて失敗する。
で、いろいろ試して、
export GREP_OPTIONS='--color=auto --binary-files=without-match -Hn'
が原因。ファル名と行番号は常に表示したいから設定してたんだけどなぁ。
0200名無しさん@お腹いっぱい。
垢版 |
2013/06/06(木) 16:58:39.47
出力の形式を変更しちゃうようなのをデフォルト設定するのはどうかと。
grepはシェルスクリプトなどでも使われるわけだし。
そういう設定はシェルのエイリアスとかを使うのがいいんじゃない。
0203名無しさん@お腹いっぱい。
垢版 |
2013/06/07(金) 15:33:58.76
結局aliasに戻したんだけど、GNU grep検出した時点で、configureが
GREP_OPTIONSをクリアしてくれても良い気はするの。
0206名無しさん@お腹いっぱい。
垢版 |
2013/06/21(金) 11:15:57.03
locateを使ったファイル名補完ってできますか?
$ vi http<キー>
でlocate httpの結果を補完候補にしてくれるような。
できれば通常の補完とは使い分けたいので、別のキーに割り当てられるといいんですが。
0207名無しさん@お腹いっぱい。
垢版 |
2013/06/21(金) 13:50:45.82
>>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
}
0208名無しさん@お腹いっぱい。
垢版 |
2013/06/21(金) 23:55:39.39
anchorという意味がよくわからないけど、こんな感じにしたら動いているようです。
_loc() {
local wd=$words[-1]
if [ "$wd" = "" ]; then
return 0
fi
files=($(locate $wd | grep ".*${wd}[^/]*$"))
compadd -M 'l:||.=**' -- $files
}

ちなみに、これを思いついたのはEverythingが便利すぎるからなんですが、
http://www.voidtools.com/
unixコマンドラインで同じようなのってないんでしょうか。
cursesでlocateをインクリメンタルサーチするとか…
でもやっぱりできるならシェルでやるのが一番便利でしょうね。
0209名無しさん@お腹いっぱい。
垢版 |
2013/06/22(土) 01:07:55.66
>>208
r:とかl:とか色々でてきてあきらめた…でも動いたようで良かったですな。
そういうツールは聞いたことないけど、UNIX的思想からいくとlocateの結果をgrepでフィルタして…となりそう
0210名無しさん@お腹いっぱい。
垢版 |
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です。
0215名無しさん@お腹いっぱい。
垢版 |
2013/07/15(月) NY:AN:NY.AN
>>211>>212
そうですよね。
.zshrcのcompinitをコメントアウトすると早くなります。
他の原因なのかもしれませんが。
HDDの読み込みが遅いとかそういうのかもしれません。
.zcompdumpは毎回作り直しているわけではないようです。

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

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

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

結局再現性がないと問題特定するのは無理なんじゃ
0222名無しさん@お腹いっぱい。
垢版 |
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ではこんなになったことないんだが。
0226216
垢版 |
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%} ")ですね。特に変哲ありません。
0227名無しさん@お腹いっぱい。
垢版 |
2013/09/05(木) 14:32:55.63
bashのときは!番号でhistoryの番号実行しようとすると,コマンドが表示されるまでで止まってもう一回エンターをおして実行になってたんですが,
zshに乗り換えたら!番号でエンターをおしたらコマンド実行まで行ってしまいます.
コマンド表示までで止めるのはどうすればよいでしょうか.
0229名無しさん@お腹いっぱい。
垢版 |
2013/09/05(木) 23:55:00.57
>>228
おお!あざーっす
0231名無しさん@お腹いっぱい。
垢版 |
2013/09/11(水) 18:16:45.31
ここで聞くべきかTeXスレで聞くべきか迷ったんだけど,
vim-latexで書いてるときに\llでコンパイルしますよね.
bashだと\llでコンパイルし終わると自動的にvimの画面に戻るんですが,zshだとコンパイル終わってもvimにもどらずctrl cを押さないとvimにもどりません.
どうしたらコンパイル終わって自動でvimに戻るかな
0235名無しさん@お腹いっぱい。
垢版 |
2013/10/09(水) 09:42:12.12
autoload -U compinit
compinit
が.zshrcに書いてあると読み込みの段階で固まっちゃうんですがこれはなぜでしょうか.
この二行をコメントアウトすれば普通にとおります.
0239名無しさん@お腹いっぱい。
垢版 |
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 をデフォにしたいのですが、できますか?
0240名無しさん@お腹いっぱい。
垢版 |
2013/12/18(水) 16:15:48.61
zshのヒストリーが1万件になって削除されるようになってしまった。

みんなはzshのヒストリーの上限何万にしてる?(何百万?)
0245名無しさん@お腹いっぱい。
垢版 |
2013/12/19(木) 14:42:16.92
wget "URL"
形式で打ち込んでいるならば

cat <<EOF >>.~/.zshrc
setopt histignorespace
alias cat=' wget' #空白を前方に差し込んで、ヒストリーログの書き込みをさせない
0248名無しさん@お腹いっぱい。
垢版 |
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と分けています。
0249名無しさん@お腹いっぱい。
垢版 |
2013/12/21(土) 14:09:53.66
そういう hisotry コマンドがあるんじゃない?

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

>>241
どゆこと?

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

しかし自分の履歴ってのはなんか気恥ずかしいものがあるな
数年前のトラブってる業務やったときの履歴を見て遠い目をしたりw
0254名無しさん@お腹いっぱい。
垢版 |
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
レスを投稿する


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