zsh その4
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
05/02/02 20:03:26過去スレ
zsh入門
http://pc.2ch.net/test/read.cgi/unix/990283346/
zsh入門 パート2
http://pc3.2ch.net/test/read.cgi/unix/1036324177/
zsh その3
http://pc5.2ch.net/test/read.cgi/unix/1080002786/
>>2-3リンク
0586名無しさん@お腹いっぱい。
2006/12/30(土) 00:30:21Esc-q にbindされている関数の名前だけ分かればいいなら
bindkey |grep q
すりゃわかると思う。
一覧ではないから>>580の答えではないが。
>>581はC-qがsttyで割り当てられてるって話でそ。
C-s/C-qなんて今更使わんが。
0587名無しさん@お腹いっぱい。
2006/12/30(土) 01:41:47> C-s/C-qなんて今更使わんが。
「使わない」には同意だけど大抵設定はされてるでしょ
0588名無しさん@お腹いっぱい。
2006/12/30(土) 11:53:03普通 M-x describe-key-briefly でそ?
0589名無しさん@お腹いっぱい。
2007/01/05(金) 01:43:53zsh のマニュアルによると
HIST_SAVE_NO_DUPS
When writing out the history file, older commands that duplicate
newer ones are omitted.
HIST_IGNORE_ALL_DUPS
If a new command line being added to the history list duplicates
an older one, the older command is removed from the list (even
if it is not the previous event).
こういう違いがあるようなんですが、よくわかりません。
0590名無しさん@お腹いっぱい。
2007/01/05(金) 04:50:28よくわかりませんで思考停止するんじゃなくてもうちょっと考えてみなよ。
・どこまでわかっていて、よくわからないのはどの部分なのか、
・わからないところはどのような可能性が考えられるか、
・それらの可能性が本当かを確かめるにはどうすればいいか、
を自分で考えるようにすればもう少し読解力が高まると思われ。
0591名無しさん@お腹いっぱい。
2007/01/05(金) 07:16:54前者はシェルを抜けた段階でヒストリファイルの重複を削除するのに対して
後者は即時にメモリ内?のヒストリ重複を削除してるっぽいことがわかりました。
いずれもシェルを抜けた段階でファイルの重複は消されるようなので
設定は片方だけでよさそうですが、
share_history などの設定もいろいろ影響してそうなので
それ以上はつきつめて調べてません。
590 さん、助言どうもありがとうございました。
0592名無しさん@お腹いっぱい。
2007/01/05(金) 08:43:16setopt hist_ignore_dups # 前後のダブりのみ消す
setopt hist_ignore_all_dups # ヒストリに追加されるコマンド行が古いものと同じなら古いものを削除
と両方書いてあるな。
説明はmanualのまんまだ。
0593名無しさん@お腹いっぱい。
2007/01/05(金) 16:40:36ttp://wiki.fdiary.net/zsh/
XML-RPCでガーーーッと移動してちょこっといじっただけ。
変なとこあったら修正よろしく。
0594名無しさん@お腹いっぱい。
2007/01/06(土) 18:38:01おつかれ、サンクス
0595名無しさん@お腹いっぱい。
2007/01/18(木) 20:02:39いきなり質問で恐縮ですが、
コマンドラインで、第二引数だけをヒストリから補完とか可能でしょうか?
可能でしたら方法をお教えください。
具体的には、あるコマンドを(第二引数の)ファイルに実行した後で、
別のコマンドをそのファイルに実行したい時に、簡単な操作で
第二引数を呼び出したいのです。
0596名無しさん@お腹いっぱい。
2007/01/18(木) 21:10:440598名無しさん@お腹いっぱい。
2007/01/23(火) 06:52:27オンならオフ、オフならオンに変更するために predictの状態を知りたいんですが
どうやったら調べられるんでしょうか?
0599名無しさん@お腹いっぱい。
2007/01/24(水) 04:17:040600名無しさん@お腹いっぱい。
2007/01/24(水) 05:38:07ああ、そうかなるほど。
助かりましたありがとうございます
アホなりになんとかできました
0601名無しさん@お腹いっぱい。
2007/01/30(火) 04:58:45実は少人数で廻してるのか。
0602名無しさん@お腹いっぱい。
2007/02/06(火) 17:24:08do
いろんな仕事を param 毎に
done
ってやりますけど,各ループ実行に 2個づつ,3個づつみたいな
パラメータの渡し方って可能でしょうか?
python でいうところの
for i,j in ( (x1,y1), (x2,y2), ...)
とすると $i, $j でそれぞれ x1, y1 が参照できるみたいな
ことなんですが。
0603名無しさん@お腹いっぱい。
2007/02/06(火) 19:23:28while [ $# -gt 0 ]
do i=$1;shift;j=$1;shift
...
done
とかやればいいんじゃないの?
0604名無しさん@お腹いっぱい。
2007/02/06(火) 19:42:320605602
2007/02/07(水) 02:05:24なるほど〜 とおもったところで
>604 ってナンだろう? と目を擦って…
ガーン!!! そんなのアリだったのか〜
info zsh したら確かにそう書いてある!!
for NAME ... [ in WORD ... ] TERM do LIST done
.snip.
More than one parameter NAME can appear before the list of WORDs.
ありがとうございます
0606名無しさん@お腹いっぱい。
2007/02/09(金) 09:38:07ttp://journal.mycom.co.jp/column/zsh/001/
こんなん始まったね。
0607名無しさん@お腹いっぱい。
2007/02/09(金) 11:06:01お、これ面白いね。早速ブクマクした
てゆーか数年zsh使ってたが、"ls -"の後の補完でオプション出るの知らんかった・・・アホだな俺。。
0608名無しさん@お腹いっぱい。
2007/02/09(金) 12:40:10WEB上だけの連載なのかな。
UNIX USER の連載は書籍化もされず、WEB で公開されることもなく
埋もれていくのか。本誌は休刊しちゃったし。
0609名無しさん@お腹いっぱい。
2007/02/09(金) 12:59:280610名無しさん@お腹いっぱい。
2007/02/09(金) 13:00:390611名無しさん@お腹いっぱい。
2007/02/09(金) 13:54:16あれ、そんなの売ってたっけ?
0612名無しさん@お腹いっぱい。
2007/02/09(金) 15:08:15http://pc10.2ch.net/test/read.cgi/linux/1170503611/351
この後にこんな記事ができるってのは、2chみてんのかね。
0613名無しさん@お腹いっぱい。
2007/02/09(金) 15:34:330614名無しさん@お腹いっぱい。
2007/02/09(金) 15:36:41compinitは設定じゃねーよ。
常識だ。
というわけで、>>606には一応期待しておくが、まだ評価はできん。
0615名無しさん@お腹いっぱい。
2007/02/09(金) 16:02:120616名無しさん@お腹いっぱい。
2007/02/09(金) 20:21:310617名無しさん@お腹いっぱい。
2007/02/09(金) 21:22:33今回のは常識だけど、まぁまだ第1回だから今後に期待だな
0618名無しさん@お腹いっぱい。
2007/02/11(日) 15:24:290619名無しさん@お腹いっぱい。
2007/02/11(日) 17:14:190620名無しさん@お腹いっぱい。
2007/02/11(日) 18:10:440621名無しさん@お腹いっぱい。
2007/02/11(日) 19:22:49この % を出したくないんですけど、どうすればいいですか
0622621
2007/02/11(日) 19:38:350623名無しさん@お腹いっぱい。
2007/02/11(日) 19:40:34解決方法くらい書きたまえキミぃ。
0624621
2007/02/11(日) 19:43:17こんな機能があったとは
0625名無しさん@お腹いっぱい。
2007/02/16(金) 12:59:46今度はプロンプトのカスタマイズ。
0626名無しさん@お腹いっぱい。
2007/02/16(金) 13:22:22よりは
PROMPT=$'%B%{\e[31m%}%/#%{\e[m%}%b '
とか
autoload -U colors; colors
PROMPT="%B%{$fg[red]%}%/#%{$reset_color%}%b "
とかのほうがよさそうなもんだが
0627名無しさん@お腹いっぱい。
2007/02/16(金) 13:37:22> echoやprintfコマンドを使う場合もある。好きな方を選べばいい。
> ただ、コマンドだとプラットフォームごとに動いたり動かなかったりするので、
> ここでは直接書いて使っている
echo も print も printf も組み込みコマンドですがなにか
0628626
2007/02/16(金) 13:39:46正)エスケープ
orz
0629名無しさん@お腹いっぱい。
2007/02/16(金) 14:25:010630名無しさん@お腹いっぱい。
2007/02/16(金) 21:36:580631名無しさん@お腹いっぱい。
2007/02/17(土) 09:15:00それで記事が書けるなんて
0632名無しさん@お腹いっぱい。
2007/02/17(土) 10:59:40使いこなし記事(スレ住人も新たな発見がある内容)
は違うよなぁ……
0633名無しさん@お腹いっぱい。
2007/02/17(土) 12:02:360634名無しさん@お腹いっぱい。
2007/02/17(土) 12:09:58> ここ1年でzshへ移行しやすい状況が整ってきている。
> はじめるには悪くないタイミングだ。
これからzshを始める人向けだろう
0635名無しさん@お腹いっぱい。
2007/02/17(土) 12:34:490636名無しさん@お腹いっぱい。
2007/02/17(土) 13:14:31冷静になれ。
0637名無しさん@お腹いっぱい。
2007/02/17(土) 18:20:300638名無しさん@お腹いっぱい。
2007/02/17(土) 19:02:04ありえない。
もうUNIXUSERの記事の焼き直しでいいよ。
0639名無しさん@お腹いっぱい。
2007/02/17(土) 19:06:280640名無しさん@お腹いっぱい。
2007/02/17(土) 19:17:270641名無しさん@お腹いっぱい。
2007/02/17(土) 19:54:570642名無しさん@お腹いっぱい。
2007/02/17(土) 20:03:170643名無しさん@お腹いっぱい。
2007/02/17(土) 21:14:52zshrcは千行あるけど
0644名無しさん@お腹いっぱい。
2007/02/17(土) 23:16:31compsysは無しかよw
0645名無しさん@お腹いっぱい。
2007/02/18(日) 02:04:240646名無しさん@お腹いっぱい。
2007/02/18(日) 20:08:400647名無しさん@お腹いっぱい。
2007/02/24(土) 10:43:48zsh で、
if [ -e *html ];then echo "Exist";fi
とすると、
zsh: no matches found: *url
となってしまいます。
shでは期待どおりの動作をします。
zshで期待のどおりの動作をするにはどうすればよいでしょうか?
0648名無しさん@お腹いっぱい。
2007/02/24(土) 11:22:110649647
2007/02/24(土) 11:56:49こうすると、上の問題は解決しましたが、htmlで終わるファイル名を表示しようとして
ls *html
とすると、ディレクトリにhoge.htmlがあっても
ls: *html: そのようなファイルやディレクトリはありません
と出ようになりました。
この問題を解決避けるには、
いちいち、setopt NULL_GLOB, setopt GLOB
をしなければならないのでしょうか?
0650647
2007/02/24(土) 12:09:56としてもいいみたいですね。
0651名無しさん@お腹いっぱい。
2007/02/24(土) 12:41:46で
1 2 3
となります。
echo {a..c}
では
{a..c}
です。
これを
a b c
とするように出来ないでしょうか?
0652名無しさん@お腹いっぱい。
2007/02/24(土) 12:50:380653名無しさん@お腹いっぱい。
2007/02/24(土) 12:51:430654名無しさん@お腹いっぱい。
2007/02/24(土) 13:24:36setopt brace_ccl
echo {a-z}
0655名無しさん@お腹いっぱい。
2007/02/24(土) 13:33:210656651
2007/02/24(土) 13:55:06ありがとうございます。
{a..c}
ではできない、やりたかったら、
>>654
のようにしろ、ってことですね。
ありがとうございました。
0657名無しさん@お腹いっぱい。
2007/02/24(土) 20:36:400658名無しさん@お腹いっぱい。
2007/02/24(土) 22:04:30noglob と nullglob を混同してない?
noglob は glob しなくするオプション(globの否定)だけど、
null_glob はそれとは違うよ。
オレの環境では null_glob をセットしてもそんなエラーにはならないんだけど。
0659名無しさん@お腹いっぱい。
2007/02/24(土) 22:15:220660名無しさん@お腹いっぱい。
2007/02/24(土) 23:08:410661名無しさん@お腹いっぱい。
2007/02/24(土) 23:32:56ちなみに俺は履歴関連はこんだけオプション有効にしてる。
man zshoptions 読むだけでもマンドクセ状態だが・・・
setopt extended_history
setopt hist_expire_dups_first
setopt hist_ignore_all_dups
setopt hist_ignore_dups
setopt hist_ignore_space
setopt hist_reduce_blanks
setopt hist_save_no_dups
setopt hist_verify
setopt inc_append_history
setopt share_history
setopt csh_junkie_history
0662名無しさん@お腹いっぱい。
2007/02/25(日) 00:08:020663名無しさん@お腹いっぱい。
2007/02/25(日) 09:20:450664名無しさん@お腹いっぱい。
2007/02/25(日) 10:22:44addpath () {[[ -d $1 ]] && path=($path $1)}
# add $* to top of PATH list.
addpathlist() {
tmppath=
for newpath in $*
if [ -d $newpath ]; then
tmppath=($tmppath $newpath)
fi
path=($tmppath $path)
unset tmppath
}
addpathlist ~/bin /usr/local/bin /usr/local/gnu /usr/X11R6/bin /usr/local/X11R6/bin /usr/local/X11R5/bin
addpath /usr/local/gcc/bin
addpath /usr/ucb
...
0665647
2007/02/25(日) 12:49:04すみません。ウソ言ってました。
>こうすると、上の問題は解決しましたが、htmlで終わるファイル名を表示しようとして
>ls *html
>とすると、ディレクトリにhoge.htmlがあっても
>ls: *html: そのようなファイルやディレクトリはありません
>と出ようになりました。
は間違いでした。正しくは、
(setopt NULL_GLOB とすると)
*htmlにマッチするものが無い場合、
カレントディレクトリ以下のファイル、ディレクトリが全て表示される、
です。
そして、NULL_GLOBはglobにマッチするものがなかったら何も渡さない、
ということでNO_GLOBはglobしない、という違いも理解しました。
だから、当前、setopt NULL_GLOB をして*htmlにマッチするものが無かった場合は
上のような動作をするのですね。
私が初めに書いたエラーがでるのは、setopt NO_GLOBとした場合ですね。
>>659
さんのようなオプションをつけていたわけではなく、単に私の間違いでした。
>>660
さんのおっしゃるように、
if [ -e *html(N) ];then echo "Exist";fi
でもOKでした。
0666名無しさん@お腹いっぱい。
2007/02/25(日) 14:39:200667647
2007/02/25(日) 15:37:36そうですね汗
またまたいいかげんなこと言ってしまいました。
if [ -e *html(N) ];then echo "Exist";fi
はつねにExistとでます。
>>647で書いたことをやりたい場合には、
1)
setopt NULL_GLOB
if [ -e *html ];then echo "Exist";fi
(この場合はls *htmlで*htmlがなかったらlsと同じになってしまうので)
そのあとで
setopt GLOB
2)
または、
if noglob [ -e *html ];then echo "Exist";fi
が正しいようです。
0668名無しさん@お腹いっぱい。
2007/02/25(日) 16:29:49NULL_GLOB だと多分 *html(N) と変わらないよ。
あと、特に [ に拘らなければ
[[ -e *html ]] でもいいかな。
0669名無しさん@お腹いっぱい。
2007/02/25(日) 17:29:32$ [ -e test.html ] && echo found || echo not found
found
$ [ -e *.html ] && echo found || echo not found
found
$ [[ -e test.html ]] && echo found || echo not found
found
$ [[ -e *.html ]] && echo found || echo not found
not found
$ touch '*.html'
$ [[ -e *.html ]] && echo found || echo not found
found
0670名無しさん@お腹いっぱい。
2007/02/25(日) 17:39:18[ はコマンド扱い? (これも builtin だよね)
0671名無しさん@お腹いっぱい。
2007/02/25(日) 17:55:15htmlで終わるファイルが存在すれば"Exist"と表示させたい(ただしzsh: no matches foundは嫌)は、
unsetopt nomatch するのが一番だろ。
その後は [ -e *html ] でも [ -n `echo *html` ] でもおk ( [[ -e *html ]] はだめぽい )
もしnomatchが嫌なら
[ -e *html(N) '' ] && echo Exist
{ [ -e *html ] && echo Exist } 2>/dev/null
みたいなw
0672名無しさん@お腹いっぱい。
2007/02/25(日) 17:59:40昔ながらのやり方が安全かw
if ls | egrep '\.html$' >/dev/null; then echo Exists; fi
0673名無しさん@お腹いっぱい。
2007/02/25(日) 18:13:15参考:
ttp://d.hatena.ne.jp/amt/20060907/nomatch
ttp://d.hatena.ne.jp/amt/20060806/ZshNoGlob
ttp://www.ayu.ics.keio.ac.jp/~mukai/translate/zshoptions.html (man zshoptions)
0674名無しさん@お腹いっぱい。
2007/02/25(日) 18:33:09$ echo *UNKO; echo AAAAAAAAAAAAAAAAAAAAAAAA
zsh: no matches found: *UNKO
$
0675名無しさん@お腹いっぱい。
2007/02/26(月) 07:55:40> $ [ -e *.html ] && echo found || echo not found
↑は .html ファイルが2つ以上ある場合は動かない.
[ -e `ls -1 *.html|head -n 1` ] && echo found || echo not found
だとちゃんと動くが、もっとスマートなやり方はないものか...
0676名無しさん@お腹いっぱい。
2007/02/26(月) 07:59:19> $ [ -e *.html ] && echo found || echo not found
は zsh では動くね. bash では動かないけど.
でも混乱を避ける為に、↑のように書くのは良くないだろう
0677名無しさん@お腹いっぱい。
2007/02/26(月) 08:34:32(for f in *.html; do [ -f "$f" ] && return 0; done; return 1) && echo aru || echo nai
/bin/shで動く筈。
0678名無しさん@お腹いっぱい。
2007/02/26(月) 11:03:52ls *.html | wc | awk '{print $1}'
でいいじゃん
0679名無しさん@お腹いっぱい。
2007/02/26(月) 11:18:070680名無しさん@お腹いっぱい。
2007/02/26(月) 21:05:110681名無しさん@お腹いっぱい。
2007/02/26(月) 21:26:59[[ -n `echo` ]] && echo true || echo false # false
[ -n `echo *html(N)` ] && echo Exist || echo # 常にExist, だめ
[ -n `echo` ] && echo true || echo false # true
0682名無しさん@お腹いっぱい。
2007/02/27(火) 02:46:160683名無しさん@お腹いっぱい。
2007/02/27(火) 02:47:370684名無しさん@お腹いっぱい。
2007/02/27(火) 02:48:420685名無しさん@お腹いっぱい。
2007/03/02(金) 22:11:55■ このスレッドは過去ログ倉庫に格納されています