zsh その7

1名無しさん@お腹いっぱい。2012/05/24(木) 16:34:43.03

540名無しさん@お腹いっぱい。2018/05/27(日) 11:56:00.46

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

542名無しさん@お腹いっぱい。2018/07/10(火) 10:11:10.94
kill screen<TAB>
とか補完して候補が1個しかなかった場合、即PIDに補完されるけど、
候補が1個でもメニューを表示するようにできないかな
他のコマンドの場合はいいんだけど、killの場合は確認しないと不安で

zstyle ':completion:*' menu select=1
はやってみたけど変わらなかった

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

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

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

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

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

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

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

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

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

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

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

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

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

556名無しさん@お腹いっぱい。2018/08/30(木) 18:41:39.13
最近のOSXにはプリインストールだから使って良いんちゃう

557名無しさん@お腹いっぱい。2018/08/30(木) 21:25:34.92
サーバ用途だとzshは明示的に入れないと入らないでしょ。稼働中のサーバでは後から入れるにしても難色を示される事も多いですし、上でどなたか書かれてたように、自分に決定権のある環境以外でも使うのなら、zshでスクリプトを書くのは避けるべき。

最近はデフォルトのshellがbashになってたりするけど、昔はbashですら入っていない環境も多くて、/bin/sh で書くように教育されたよ。

年寄り臭くてスマンね

558名無しさん@お腹いっぱい。2018/08/31(金) 01:32:04.70
>>547
俺も昔おんなじことで悩んでたけど、
>「このスクリプトを使うためにまず zsh 自体をインストールして下さい」
これが通らないような相手のことを考えてスクリプト書いてやるのが馬鹿らしくなって、
以来悩むのはやめたわ。それ自体が仕事だとそうもいかんのだろうけど。

559名無しさん@お腹いっぱい。2018/08/31(金) 14:18:23.15
>>551
パッケージでなら用意されてない環境も今では珍しいと思うけど、
最初からインストールされてるかどうかで言えば、入ってない環境なんて
山ほどあるかと。

他の人も書いてるけど、デスクトップ用途ならともかく、サーバ用途なら
sh、csh、bash、tcshぐらいまでしか入ってないとかは普通にあり得る。

560名無しさん@お腹いっぱい。2018/08/31(金) 17:27:51.20
csh系は論外とすると、結局無難なのはshかbashだろうか

561名無しさん@お腹いっぱい。2018/08/31(金) 17:45:30.47
bashがデフォで入ってない環境もあるんで、
無理のない範囲でshにしとくといいよ。

562名無しさん@お腹いっぱい。2018/09/01(土) 04:27:44.51
> 年寄り臭くて
いいえ、助言助かりますよ。かつてのbashの位置にようやく追いついたということですね。
先輩方どうもありがとう。
サーバーで使うなら、zsh は諦めるけど
デスクトップでは使ってもいいなと思えてきた。

563名無しさん@お腹いっぱい。2018/09/01(土) 04:29:57.61
そうすると気になるのは、fish や Go との差はどうなのかってこと。 必要ならインストールさせればいい、ってスタンス
なら、当然その辺がライバルになってくるけど…

564名無しさん@お腹いっぱい。2018/09/01(土) 22:08:09.98
まあいいか。スレにみんなにお礼と言ってはナンですが、makefile で zsh を使う方法を考えたので紹介させてください
~ makefile で zsh を使う・Makefile ~

# 設定をまとめた親ディレクトリ.
export ZDOTDIR := $(TMPDIR)/make.$(shell echo $$PPID).zsh
$(ZDOTDIR):
@cd $(@D); mkdir $(@F)
$(ZDOTDIR)/.zshenv: | $(ZDOTDIR)
@exec 1> $@; echo setopt rcquotes
$(ZDOTDIR)/all: $(ZDOTDIR)/.zshenv # マーカーファイル。この行の依存関係に .zshrc などを並べてね.
@touch $@ # 依存関係をまとめたいだけなので、中身はからっぽで.
-include $(ZDOTDIR)/all # このように include することでレシピの実行などでシェルが使われる前に設定ファイル群を作れる. マーカーファイルはない状態から作るのでエラーメッセージはかならず出る。それを消すための先頭のハイフン.
SHELL := /bin/zsh # zsh の設定ファイルは ZDOTDIR 環境変数で渡される.
# なおレシピ外の行での $(shell ...) 関数から呼ばれるシェルは、直前のSHELL設定行より下では作られた ZDOTDIR が有効になった zsh が使える。その行より上ではただの /bin/zsh が使われる.

hoo:
echo 'hoo''bar'


~ makefile で zsh を使う・実行 ~
$ make hoo
echo 'hoo''bar'
hoo'bar

565名無しさん@お腹いっぱい。2018/09/15(土) 02:17:59.88
zshwiki.orgってまだ落ちてるの?
もしかして閉鎖?

566名無しさん@お腹いっぱい。2018/10/28(日) 20:27:16.64
fishでshift+tabを押すと補完候補をインクリメンタルに選択出来るんだけど、これに似た機能はzshないかね

567名無しさん@お腹いっぱい。2018/11/01(木) 13:19:56.37
hoge hoge hoge 〜 hoge
と文字列を任意個展開するスマートな方法ないですかね?
for文使えとかそういうのはなしでお願いします
マニュアルのExpansionの章をくまなく読めばわかるのかもだけど

568名無しさん@お腹いっぱい。2018/11/01(木) 13:28:12.15
echo $(yes hoge | head -10)

569名無しさん@お腹いっぱい。2018/11/01(木) 13:33:18.60
あ、repeatコマンドもなしでお願いします
{hoge(n)} みたいに短くスマートにやる方法が知りたい

570名無しさん@お腹いっぱい。2018/11/01(木) 13:36:12.43
forもwhileもrepeatも使ってないからセーフ

571名無しさん@お腹いっぱい。2018/11/01(木) 13:36:59.97
>>568
あ、bashでこんな手があるんですね
yesって何に使うのだろうと思ってた
ただ、天下のzshですからもっとzshらしい方法があるはず

572名無しさん@お腹いっぱい。2018/11/01(木) 14:33:26.13
zsh本来の力の10%も使いこなしてないけど、せめてExpansion系は使いこなしたいわ

>>566
fishよく知らないんだけどインクリメンタル補完って何?
もしかしてサジェスト系?

573名無しさん@お腹いっぱい。2018/11/01(木) 23:47:40.16
ぼうやーってわしもちふつうだけど、まーおこめのほうがいいんだけど
エラーの原因が分からない?
まず確認しよう!
《書き込めない時の早見表》
《掲示板へ戻る》
《スレッド一覧へ戻る》
《スレッドへ戻る》

もしかしてアクセス規制ですか?
お使いのプロバイダさんが、原因となった人に対応するまで規制は続きます。
個別の対応・進展については、プロバイダさんへお尋ねください。
その他、5chちゃんねるについては、 初心者の質問 批判要望 運用情報 運用臨時 などへどうぞ。

574名無しさん@お腹いっぱい。2018/11/01(木) 23:49:13.04
やっぽ(^|0|^)

575名無しさん@お腹いっぱい。2018/11/02(金) 00:43:17.26
あーめんどくさいなー、びんぼうだしさいごだし、ぼうそういこかなあれはあるか

576名無しさん@お腹いっぱい。2018/11/02(金) 00:45:18.15
わしかわいそーきょうじゅうにじょうものんだし、ああじゅよんのむと、ししょーあるksなきのせいかな

577名無しさん@お腹いっぱい。2018/11/02(金) 00:46:56.52
やだおおさかなんか、またもどってこないといけない

578名無しさん@お腹いっぱい。2018/11/02(金) 00:48:19.84
なんでかんじじゃないんだ

579名無しさん@お腹いっぱい。2018/11/02(金) 01:24:08.04
fish使ってみたけどゴミじゃん
zshこそ至強

580名無しさん@お腹いっぱい。2018/11/04(日) 19:43:05.08
[ $i -lt 100000 ] と [[ $i -lt 100000 ]] では後者のほうが速い

Linux上では2.5倍ぐらい後者が速いが、
WSL上では10倍以上の差をつけて後者が速い

他のシェルでも似たような傾向はあるがこれほどの差はない
どうもzshはシステムコール呼びすぎっぽいな

581名無しさん@お腹いっぱい。2018/11/04(日) 19:49:50.35
[ ] が遅いって言うよりも関数呼び出しが遅い気がするな

while [[ $i -lt 100000 ]]; do を

foo() {
[[ $i -lt 100000 ]]
}
while foo; do
こんな感じに置き換えてみたら、同じように遅くなった

[ ] を使っていた場合、最初から関数呼び出し相当だったということかも

582名無しさん@お腹いっぱい。2018/11/04(日) 20:00:30.18
ベンチマークで、ループしてevalとそうでない場合の
速度差を調べようと思ったんだが、まさかループの回数判定で
evalと同等の差がでるとはwww

evalもzshだけ遅い。他のシェルはeval使っていても
ほとんど速度は落ちないというのに

583名無しさん@お腹いっぱい。2018/11/07(水) 00:58:35.37
あれ、[って外部コマンドのtestじゃないの?

584名無しさん@お腹いっぱい。2018/11/07(水) 04:53:13.07
俺の知る限り、現在使われてるBourne系シェルの
全てで [ はビルトインになっている

585名無しさん@お腹いっぱい。2018/11/09(金) 06:53:11.53
\[

586名無しさん@お腹いっぱい。2018/11/09(金) 09:26:03.48
\[^_

587名無しさん@お腹いっぱい。2018/11/11(日) 11:01:33.88
\[^_^

588名無しさん@お腹いっぱい。2018/11/23(金) 23:01:18.39
setopt forcefloatして(( ))の数値演算すると固定表示で出力される仕様みたい
それはいいんだけど、最後の桁に誤差が混じってちょっと困る
なにかいい方法ないかな

$ echo $(( 1 ))
1.

$ echo $(( .1 ))
0.10000000000000001  ←0.1 ってなってほしい

589名無しさん@お腹いっぱい。2018/11/24(土) 12:49:07.27
>>588
printf じゃだめかな?
$ printf "%.1f\n" $((.1))
0.1
$ printf "%.2f\n" $((5.1))
5.10

590名無しさん@お腹いっぱい。2018/11/24(土) 17:01:24.90
printfで0.999999999999999になったとき
どう表示されるのだろうか

新着レスの表示
レスを投稿する