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リンク
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:550686名無しさん@お腹いっぱい。
2007/03/03(土) 01:23:440687名無しさん@お腹いっぱい。
2007/03/03(土) 03:11:140688名無しさん@お腹いっぱい。
2007/03/05(月) 01:38:580689名無しさん@お腹いっぱい。
2007/03/05(月) 06:18:240690名無しさん@お腹いっぱい。
2007/03/07(水) 18:55:380691名無しさん@お腹いっぱい。
2007/03/07(水) 19:17:300692名無しさん@お腹いっぱい。
2007/03/08(木) 01:16:400693名無しさん@お腹いっぱい。
2007/03/16(金) 10:04:06% autoload predict-on
% predict-on
predict-on:zle:5: can only be called from widget function
0694名無しさん@お腹いっぱい。
2007/03/16(金) 14:01:130695名無しさん@お腹いっぱい。
2007/03/16(金) 20:44:04ウチではそのエラー出ないよ
ところで、恥ずかしながら predict-on は知らなかったですよ。
0696名無しさん@お腹いっぱい。
2007/03/24(土) 22:24:26久しぶりに見たから1ヶ月前へのレスだけど
path=($path(N))
でいけない?
0697663
2007/03/24(土) 23:10:35ubuntu% test=(foo bar /home)
ubuntu% echo $test
foo bar /home
ubuntu% echo $test(N)
foo bar /home
ubuntu% echo ${^test}(N)
/home
>>696だとうまくいったりいかなかったりで困ってたんですけど、rc_expand_paramのせいでした。
path=(${^path}(N)) でうまくいくみたいですね。
0698名無しさん@お腹いっぱい。
2007/04/03(火) 14:48:380699名無しさん@お腹いっぱい。
2007/04/10(火) 17:16:19bash
$ sudo rm ~foo (~foo -> /home/foo のシンボリックリンク)
シンボリックリンク ~foo が消える
zsh
% sudo rm ~foo (~foo -> /home/foo のシンボリックリンク)
Error: foo はディレクトリ
% sudo rm -r ~foo
ホームディレクトリが消える orz
0700名無しさん@お腹いっぱい。
2007/04/10(火) 17:21:46ニョロ展開をやめさせたいんなら
./~foo って指定すればいいし何が言いたいのかわからん
0701名無しさん@お腹いっぱい。
2007/04/10(火) 17:24:47違うよ。
俺は意味わかった。zshが ~の展開の際にシンボリックリンクをたどってしまう
という問題だね。Error: foo はディレクトリ の時点で気づくべき。
0702名無しさん@お腹いっぱい。
2007/04/10(火) 17:32:22foo アカウントのホームディレクトリが /usr/home/foo とかになってて、
それが /home/foo へのシンボリックリンクになってる、とかそんな感じ?
つーかなんで rm -r なんてする気になったんだろ。
0703名無しさん@お腹いっぱい。
2007/04/10(火) 17:39:59少なくとも問題という意識はわからん
(動作の話はそういうものとしか言いようがないし...
>702 も言う通り -r はそれこそ意図的じゃん)
0704名無しさん@お腹いっぱい。
2007/04/10(火) 17:41:06で解決したりする?
0705名無しさん@お腹いっぱい。
2007/04/10(火) 17:44:18そのシンボリックリンクが消えるだけ(先までたどらない)からだろ。
多分、rmでエラーが出たから rm -r にしただけだろ。
まさか、~foo が実体ディレクトリを指してるとは頭から思ってないから、
シンボリックリンクを消す意味で気軽に rm -r したと。
0706名無しさん@お腹いっぱい。
2007/04/10(火) 17:57:57その「エラーが出たから -r」ってのが意味わからん。
-f ならまだわかるけど。
0707名無しさん@お腹いっぱい。
2007/04/10(火) 18:00:07なかったのか?
0708名無しさん@お腹いっぱい。
2007/04/10(火) 18:01:32お前ずれてる。~fooなんてファイルの話じゃない。
0709名無しさん@お腹いっぱい。
2007/04/10(火) 18:02:21んじゃどういう話?
0710名無しさん@お腹いっぱい。
2007/04/10(火) 18:03:09読解力ない香具師だなぁ。
0711名無しさん@お腹いっぱい。
2007/04/10(火) 18:04:16すまんね。
詳細教えてくれよ。
0712名無しさん@お腹いっぱい。
2007/04/10(火) 18:06:19/usr/home/foo はシンボリックリンクで、実体の /home/foo を指している。
この状態で、~foo というチルダ展開は、
bashだと /usr/home/foo に展開されるが、
zshでは /home/foo に展開される。
という問題。
0713名無しさん@お腹いっぱい。
2007/04/10(火) 18:08:270714699
2007/04/10(火) 20:35:00真相は>>701, >>705さんのおっしゃる通りです。
昔 bash で
/bar$ ln -s /home/foo ~foo
として /bar/~foo を作ったのですが、もう使う必要がなくなったので今日 zsh で
/bar% rm -r ~foo
としたら、ユーザ foo のホームディレクトリ /home/foo 自体が消えてしまった
ということです。
bash では
alias rm="rm -i"
としていたので、rm のエラーに対していつもの勢いで -r の試行をしてしまいました。
>>713
私が悪いので、皆さん正解です。
0715名無しさん@お腹いっぱい。
2007/04/10(火) 21:05:190716名無しさん@お腹いっぱい。
2007/04/10(火) 22:04:28つっこもうと思ってそれっきりだった。
0717名無しさん@お腹いっぱい。
2007/04/10(火) 22:40:44では遠慮なくツッコメ。
0718名無しさん@お腹いっぱい。
2007/04/10(火) 23:55:450719名無しさん@お腹いっぱい。
2007/04/11(水) 02:25:440720名無しさん@お腹いっぱい。
2007/04/11(水) 07:12:17なんでやねん。欲嫁。
>>714 では、
$ ln -s /home/foo ~foo
と実行してるから、~fooという名前のsymlinkはできない。
~fooという名前のsymlinkを作るためには、
$ ln -s /home/foo '~foo'
のように、クォートするなり、./~foo みたいに ./を付けるなりしないといけないから。
0721名無しさん@お腹いっぱい。
2007/04/11(水) 07:14:15シンボリックリンクにrm -rやること自体はまずくない。(変ではあるが)
まずかったのは、それがシンボリックリンクではなかったこと。
0722名無しさん@お腹いっぱい。
2007/04/11(水) 08:37:49いや、シンボリックリンクに対して rm -r するのはおかしいよ。
-r オプションは「当該ファイルをディレクトリとみなして中身もいっしょに
消す」という意図のオプションだから、仮に rm で消せなかったとしてもシン
ボリックリンクだと認識しているファイルに使うのがまずヘン。
だって中身を消したかったわけじゃないでしょ。
0723名無しさん@お腹いっぱい。
2007/04/11(水) 09:45:48> として /bar/~foo を作ったのですが、
って言ってるんだから、
~foo っていうファイル名のファイル (シンボリックリンク) が
あったんじゃないの?
0724名無しさん@お腹いっぱい。
2007/04/11(水) 09:53:03そこは確かに曖昧だが、質問者の理解不足によるものだろう。
ln -s /home/foo ~foo
を実行してシンボリックリンクを作っている以上、
~fooは展開されて、実際のパス名になるから、
「~foo」なんて名前のシンボリックリンクができたわけではないことは明らか。
0725名無しさん@お腹いっぱい。
2007/04/11(水) 09:58:53(クォートとかで回避する方法も知らないだろうし)
0726名無しさん@お腹いっぱい。
2007/04/11(水) 10:30:52zsh とか以前に極めて悪趣味
> シンボリックリンクにrm -rやること自体はまずくない。(変ではあるが)
まあそうだけど "まずいかどうか" じゃなくて
「意味を理解せず(考えず)」に -r というのは銃殺刑確定
"(変ではあるが)" に集約されるけどな
0727699
2007/04/11(水) 23:44:00原因は、「~ユーザ名」と「~非ユーザ名」で挙動が異なる事を知らなかったという
私の理解不足にあります。
zshで
foo@example:/bar% sudo rm -r ~foo
でホームディレクトリが消えた後、 bash で
foo@example:/bar$ sudo ln -s /home/foo2 ~foo2
foo@example:/bar$ sudo rm -r ~foo2
(ここで、foo2 は既に存在しないユーザ名。/home/foo2 自体は実在する。)
として、検証してしまいました。
>>718, >>723-725
「/bar/~foo」は、ありました。
しかし、実際には>>720さんの説明の通りにしなければエラーになります。
したがって、作成時にはクォートしたと思います。
>>719, >>721-722
今後は、>>715さんの様にしたいと思います。
>>726
全くその通りです。
こんな unix の初歩的な事でスレを汚してしまい、
申し訳ないです。
0728名無しさん@お腹いっぱい。
2007/04/11(水) 23:51:24なるほどね。いや悪いってわけじゃないです。
ただ ~user という用法をしらない人がいると
誰も思わなかったから「ネタだろ」位に皆思ってただけで...
0729名無しさん@お腹いっぱい。
2007/04/12(木) 02:39:000730名無しさん@お腹いっぱい。
2007/04/13(金) 09:32:32シンボリックリンクをrm -rすると実際どうなるの?
0731名無しさん@お腹いっぱい。
2007/04/13(金) 09:34:23それくらい実験してみろよ。
そのシンボリックリンクだけが消えるだけだよ。
0732名無しさん@お腹いっぱい。
2007/04/13(金) 14:53:230733名無しさん@お腹いっぱい。
2007/04/13(金) 20:52:19001
002
003
となって2行目以降にスペースが入ってしまうのは
なんででしょうか?
0734名無しさん@お腹いっぱい。
2007/04/13(金) 20:57:260735名無しさん@お腹いっぱい。
2007/04/14(土) 02:35:54とすると余計な空白なしに出力するのに
最もシンプルな書き方はどうなるのでしょう
echo {001..005} | tr "[:space:]" "\n"
だとベストではないですよね
0736名無しさん@お腹いっぱい。
2007/04/14(土) 02:55:22for i in {001..005}; do echo $i; done
とか。zsh のことだから省略記法があるのかな。
0737名無しさん@お腹いっぱい。
2007/04/14(土) 02:58:560738名無しさん@お腹いっぱい。
2007/04/17(火) 22:38:460739名無しさん@お腹いっぱい。
2007/04/21(土) 00:26:430740名無しさん@お腹いっぱい。
2007/04/21(土) 05:16:08http://journal.mycom.co.jp/news/2007/04/20/023/index.html
0741名無しさん@お腹いっぱい。
2007/04/21(土) 08:01:490742名無しさん@お腹いっぱい。
2007/04/21(土) 09:03:22書いたあと一回でも読み返したとは思えん文だなw
0743名無しさん@お腹いっぱい。
2007/04/21(土) 10:58:42??メジャーリリース?
0744名無しさん@お腹いっぱい。
2007/04/21(土) 11:53:180745名無しさん@お腹いっぱい。
2007/04/22(日) 02:10:350746名無しさん@お腹いっぱい。
2007/04/22(日) 04:04:57原因が compinit する時にNFSで共有してる .zcompdump へのロックだったので
compinit -d /tmp/$USER.zcompdump
とかしたら幸せになれた
0747名無しさん@お腹いっぱい。
2007/04/27(金) 10:44:220748名無しさん@お腹いっぱい。
2007/05/06(日) 19:10:150749名無しさん@お腹いっぱい。
2007/05/06(日) 20:06:07c
d'
複数行の履歴を編集する時に改行のつもりで RET を打鍵すると accept-line
が呼ばれてしまうのだけど、これを回避する方法ってありますか?
0750名無しさん@お腹いっぱい。
2007/05/06(日) 20:11:17C=v C-j かな?
0751名無しさん@お腹いっぱい。
2007/05/07(月) 06:14:08できました。ありがとう
0752名無しさん@お腹いっぱい。
2007/05/09(水) 12:10:15http://journal.mycom.co.jp/column/zsh/index.html
0753名無しさん@お腹いっぱい。
2007/05/09(水) 13:01:300754名無しさん@お腹いっぱい。
2007/05/09(水) 13:17:140755名無しさん@お腹いっぱい。
2007/05/25(金) 03:27:080756名無しさん@お腹いっぱい。
2007/05/25(金) 04:26:49どうすればいいんでしょうか?
075787
2007/06/09(土) 00:33:14% tar xzvf zsh-4.3.4.tar.gz
% cd zsh-4.3.4
% ./Util/preconfig
% ./configure --enable-multibyte --enable-locale
% make
% sudo make install
どこに記述すればいいんだいよう
0758名無しさん@お腹いっぱい。
2007/06/14(木) 03:25:54行き過ぎたときに戻る方法ってありませんか?
shift+tabとか押してみたけどダメだった
0759名無しさん@お腹いっぱい。
2007/06/14(木) 03:28:360760名無しさん@お腹いっぱい。
2007/06/14(木) 03:40:28コマンド自体が一個前のに戻るだけでした
0761名無しさん@お腹いっぱい。
2007/06/14(木) 05:52:05# 補完候補を←↓↑→で選択。
zstyle ':completion:*:default' menu select true
で、矢印キーで移動するのはダメですか?
0762名無しさん@お腹いっぱい。
2007/06/14(木) 09:37:530763名無しさん@お腹いっぱい。
2007/06/14(木) 11:34:06C-/
0764名無しさん@お腹いっぱい。
2007/06/14(木) 15:27:19>>761
おぉ、そんな便利なこともできるんですね
>>762
>>763
できました
0765名無しさん@お腹いっぱい。
2007/06/14(木) 21:35:570766名無しさん@お腹いっぱい。
2007/06/14(木) 23:03:040767名無しさん@お腹いっぱい。
2007/06/15(金) 10:39:14気合いで尻の穴に吸い込め
0768名無しさん@お腹いっぱい。
2007/06/15(金) 12:23:070769名無しさん@お腹いっぱい。
2007/06/17(日) 12:07:51=(nannkano_command) の一時ファイルで物臭をやろうとすると
hogehoge==(nannkano_command) となって == の解釈でエラーに
なってしまう。エスケープしても別のエラーになる。うまくやる方法は
ないかな。
0770名無しさん@お腹いっぱい。
2007/06/17(日) 12:23:31http://pc11.2ch.net/test/read.cgi/unix/1181716111/27
できればこのキチガイをzshから出さないようにしてください。
迷惑です。
0771名無しさん@お腹いっぱい。
2007/06/17(日) 12:35:51$ hogehoge='=(nannkano_command)'
$ echo "$hogehoge"
=(nannkano_command)
↑ってできるけど、これじゃ駄目なの?
0772名無しさん@お腹いっぱい。
2007/06/17(日) 12:57:390773名無しさん@お腹いっぱい。
2007/06/17(日) 13:03:22=(command) の一時ファイルはすぐ消えちゃうよ。かりに hogehoge=... に渡せても、それを再利用したときにはもう消えてると思うんだけど、どういう風に利用することを考えているの?
っていうか、やりたいのは `...` の方だったりしない?
あと、わたしの手元では
hogehoge==(command)
でも一時ファイル名はちゃんと取れるけどなあ。
0774名無しさん@お腹いっぱい。
2007/06/17(日) 13:33:25ファイルの要る部分だけを抜き出して渡したいんですよ。履歴に突っ込んでおいて
たまに呼び出したいぐらいの軽い用途です。
たしかに単独の変数代入だと自分ところでも動きますが、コマンド途中だとエラーに
なってしまいます。例えば、
$ echo hogehoge==(command)
zsh: not found
0775名無しさん@お腹いっぱい。
2007/06/17(日) 19:10:37どう設定したらいいですか?
■ このスレッドは過去ログ倉庫に格納されています