12/12/28 18:21:41.94 .net
>>98
>>99以外だと${=x} を使ってもおk
101:名無しさん@お腹いっぱい。
12/12/28 18:24:31.16 .net
>>94
それだと標準エラー出力も/dev/nullに流れてしまうことになり、
説明になってません。
>>95
なるほど、バグだったのですか。
こういうバグは直せないですよね。直すと既存のスクリプトが動かなくなりますし。
102:名無しさん@お腹いっぱい。
12/12/28 18:36:16.44 .net
>>101
バグではない
理解が足りないだけだろ
103:名無しさん@お腹いっぱい。
12/12/28 18:36:52.25 .net
>>101
ム板に帰れ
104:名無しさん@お腹いっぱい。
12/12/28 18:44:56.48 .net
>>99,>>100
ありがとうございます!
105:名無しさん@お腹いっぱい。
12/12/28 18:44:57.11 .net
記憶が朧げだが、昔シェルスクリプト入門を謳ってネットで配布されていたテキストでも
同じ間違いをやらかしてなかったか
106:名無しさん@お腹いっぱい。
12/12/28 21:07:49.29 .net
おお、いつのまにか zsh 5.0.2 が。
数値記法の 1_000 ってそういえば ruby にそんなんあったな。すっかり忘れてたけど。
setopt 的でもあるのか。
107:93
12/12/29 18:53:23.86 .net
>>94
もしかして >/dev/null よりも | が先に解釈されるんですか?
というか一般的に、リダイレクトよりもパイプの解釈が優先されるのがシェルの仕様?
108:名無しさん@お腹いっぱい。
12/12/29 20:40:41.91 .net
>>107
リダイレクトは左から順に処理されるだけ.
普通のコマンドは
1 => /dev/stdout
2 => /dev/stderr
だが,2>&1 は「2の出力先を1と同じにする」から
1 => /dev/stdout
2 => /dev/stdout (= 1)
になって,>/dev/null は「1の出力先を /dev/null」にするから
1 => /dev/null
2 => /dev/stdout
になる.
>/dev/null で 1 と 2 が同時に /dev/null となることはない.
パイプは /dev/stdout の出力が次のコマンドの /dev/stdin になるので,
この場合は標準エラー出力だけパイプされる.
ちなみに &> /dev/null とすると「1と2の出力先を(同時に) /dev/null にする」
ことができる.man bash で RIDIRECTION のところ読め.
109:108
12/12/29 21:23:21.25 .net
書いてて思ったんだけど,
command1 2>&1 >/dev/null | command2
じゃなくて
command 2>/dev/stdout >/dev/null | command2
って書いても同じ意味だよね? 後者で書いたほうが
わかりやすいと思うんだけど,環境によっては動かなかったり
するのかな?
110:名無しさん@お腹いっぱい。
12/12/29 21:25:32.38 .net
>>93 は dup2 を知らないとよく陥る勘違いですな
FAQ になるのもわかる
せっかく zsh を使ってるのだから
command1 >&- 2> >(command2)
とでもするのが良いのかもしれん
111:名無しさん@お腹いっぱい。
12/12/29 21:38:57.37 .net
>>109
zsh のデフォルトの setopt multios な環境では意図通りには動かないね
setopt nomultios では大丈夫だけど
デフォルトの環境だと
command1 2>/dev/stdout >&- | command2
ときちんとクローズする必要があるんじゃないかな
112:名無しさん@お腹いっぱい。
12/12/29 22:23:27.12 .net
>>111
うーむ,ほんとだ.複数リダイレクトできるのも便利なんだが.
bash でいけるならいいか.シェルスクリプトで zsh は使わないよね?
setopt multios の状態で,試しにクローズしてやってみたけど,
$ command1 2>/dev/stdout >&- | command2
command1: line n: write error: Bad file descripter
と怒られる.command1 の 1 を破棄しないといけないのかと思ったが
$ command1 2>/dev/stdout >/dev/null >&- | command2
command1: line n: write error: Bad file descripter
変わらず.
$ command1 2>/dev/stdout >&- >/dev/null | command2
にしたら意図通りエラーが無くなった.リダイレクトの順番で
挙動が変わるのがよくわからんけど,あまり深入りしないほうがいいかな.
113:93
12/12/30 00:58:27.95 .net
>>108
ありがとうございます。そっか、2>&1 を特別視してましたが
これも単なるリダイレクトなんですね。
114:名無しさん@お腹いっぱい。
12/12/30 16:32:16.44 .net
>>112
代わって深入りしといたよ。
>/dev/null >&- だと最終的に close(1) されてるから無効だけど
>&- >/dev/null だと close(1) 後に open してるから有効になる。
>&- とか <> とかあんまり用途が思い付かなかったけど、
>&- には multios 下での用途があるのか。multios 下でも特殊なことをしなければ不要な気がするけど。
115:名無しさん@お腹いっぱい。
12/12/30 17:23:02.43 .net
環境によって挙動に予想がつかないところがあるから、結局は
# 伝統的な方法
command1 2>&1 >/dev/null | command2
# プロセス置換を使う
command1 >/dev/null 2>>(command2)
あたりで落ち着くな
念を入れるなら /dev/null のかわりに >&- を使えばいいのか
昔から思ってるけど、リダイレクトの周りの空白の入れ方って悩ましいよね
ファイル記述子の場合は制限があるし
最近は空白を使わずに詰めて書くことが多いかな
116:名無しさん@お腹いっぱい。
12/12/30 18:33:08.52 .net
さっぱり話題についていけん・・・(´・ω・`)
manを読む努力せんとなぁ
117:名無しさん@お腹いっぱい。
12/12/30 19:50:17.40 .net
>>115
リダイレクト先がファイルパスなら空白入れてるわ
数字なら詰めて書く…っていうか詰めないと駄目か?
118:名無しさん@お腹いっぱい。
13/01/08 22:50:20.01 .net
配列の要素の最大・最小を返す機能てないですか?こんな感じで
$ a=(1 3 2)
$ echo $a[MAX]
3
さすがにないですかね?でもzshならやってくれそうな気も
119:名無しさん@お腹いっぱい。
13/01/08 23:30:46.18 .net
変数で大小判定させて
より大きければ変数1をそれにする :MAX処理
より小さければ変数2をそれにする :min処理
というシェルスクリプトでいけそうだな。
120:名無しさん@お腹いっぱい。
13/01/09 00:46:12.87 .net
echo ${${(n)a}[-1]}
とか。${} が二重になるのがちょっといやなんだよなあ。
121:同じ要領で最小つくればいい
13/01/09 01:11:52.84 .net
できた。.zshrcに書いて0以上の整数値を因数にぶちこんで動作する
Max() {
x=$1
for i in $@
do
if test $x -lt $i ; then
^ x=$i
fi
done
echo $x
}
*********
動作の一例
*********
Max -10 -1
-1
Max -10 2 -1 1
2
122:名無しさん@お腹いっぱい。
13/01/09 02:23:48.76 .net
>>120
ありがとうございます。(n)でnumericalソートを意味するんでしょうかね?
ただ、man zshparamを見てみたんですがソート云々のオプションはなさそうでした。
どの辺見ればいいですか?
>>121
いやそれは・・・
123:名無しさん@お腹いっぱい。
13/01/09 02:49:41.16 .net
zshexpn
124:名無しさん@お腹いっぱい。
13/01/09 03:04:57.95 .net
>>123
ありがとうございます!
125:118
13/01/09 23:30:08.16 .net
何度もすいません、配列絡みでもう1つ質問させてください。
zshの配列の要素数って上限ありますか?
$ test=({1..300000})
$ echo $test[270000]
zsh: subscript too big: 270000
bashだとちゃんと返してくれるのですが・・・。
$ for((i=1;i<300000;i++)) ; do test[$i]=$i ; done
$ echo ${test[270000]}
270000
126:名無しさん@お腹いっぱい。
13/01/09 23:49:41.44 .net
>>125
やってみたけど、
$ test=({1..300000})
$ echo $test[270000]
270000
$ echo $ZSH_VERSION
5.0.0
$ uname -a
Darwin thyme.local 12.2.1 Darwin Kernel Version 12.2.1:
Thu Oct 18 16:32:48 PDT 2012;
root:xnu-2050.20.9~2/RELEASE_X86_64 x86_64 i386 MacBookAir5,2 Darwin
127:118
13/01/10 00:11:06.98 .net
>>126
4.3.17だったのですが、5.0.2に上げたらあっさりできました・・・
やはりzshはこまめにアップデートしたほうがいいですね。
どうもありがとうございました。
128:名無しさん@お腹いっぱい。
13/01/10 04:29:38.47 .net
これか
> The arbitrary limit on parameter subscripts (262144) has been removed. As it was not
> configurable and tested in an inconvenient place it was deemed preferable to remove it completely.
> The limit was originally introduced to prevent accidental creation of a large parameter array
> by typos that generated assignments along the lines of "12345678=0". The general advice is not to do that.
129:名無しさん@お腹いっぱい。
13/01/10 10:41:43.81 .net
★★★チベットの独立は日本の核心的利益である★★★
URLリンク(jbbs.livedoor.jp)
¥¥¥¥¥¥¥『万有サロン』書き込み大賞・総額100万円¥¥¥¥¥¥¥¥¥¥¥¥
この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v
万有サロン
URLリンク(jbbs.livedoor.jp)
書き込み大賞の詳細
URLリンク(jbbs.livedoor.jp)
書き込み大賞の詳細(資料倉庫内)
URLリンク(www2.tba.t-com.ne.jp)
また、あらゆる疑問に関する質問を、携帯電話やメールでも受け付けています。
電話番号 080-4437-4187
メール aaa-zzz@tba.t-com.ne.jp
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
130:名無しさん@お腹いっぱい。
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
と出るんですが、この項目は何ですか?