11/11/05 22:41:39.08
zshを使ってみようと思うのですが、勉強するために最適な書籍などはありますか?
793:名無しさん@お腹いっぱい。
11/11/05 23:07:47.87
>>792
この本がお勧めです。
Introduction of the ZSH
URLリンク(www.gentei.org)
794:名無しさん@お腹いっぱい。
11/11/06 08:15:47.33
man zshall
795:名無しさん@お腹いっぱい。
11/11/06 10:18:22.94
迷宮の入り口晒すな
796:名無しさん@お腹いっぱい。
11/11/12 18:58:04.35
TABキーの補完をbashのようにファイル・ディレクトリのみにするには
どう設定すればよいでしょうか?
低スペックのノートPC上でcygwinのzsh 4.3.11 を使っていますが、
TABキーを押すと5~10秒近く待たされることもあります。
bashだと一瞬なので、zshでも補完の検索をカレントのファイルのみにしたいです。
797:名無しさん@お腹いっぱい。
11/11/13 22:52:50.08
compinit しなければいいんじゃないかな。
てか bash でもいいような気がしたけど、きっと気のせいだな。
798:796
11/11/14 22:49:23.21
おまじないのようにcompinitしてましたが、
プログラマブル補完機能というのが効いていたのですね。
これを外して何か副作用あるかなと思いましたが、特に問題なさそうです。
ありがとうございました。
ヒストリの複数行コマンド編集やTABキーで補完候補の選択ができるとこが
bashになくて気に入ってる機能です。
799:名無しさん@お腹いっぱい。
11/11/18 22:34:45.85
あーなんか履歴検索とかって space を and にした絞り込みにしたら使いやすいかもなあ。
とか最近 unite.vim を使って今 history-incremental-search-backward 呼んだら思った。
800:名無しさん@お腹いっぱい。
11/11/18 22:53:12.54
history-incremental-pattern-search-backward
で我慢してくれ。
801:名無しさん@お腹いっぱい。
11/11/20 08:59:19.42
>>799
そこでvimshellですよ!
802:名無しさん@お腹いっぱい。
11/11/21 14:05:04.51
vimshel使うのと、screenでターミナル分割して使うのと何がちがうの?
803:名無しさん@お腹いっぱい。
11/11/23 10:57:13.05
screenだと、デタッチアタッチが出来るのがかなり大きいと思う
804:名無しさん@お腹いっぱい。
11/11/27 20:14:54.56
bindkey "^p" history-beginning-search-backward-end
bindkey "^n" history-beginning-search-forward-end
bindkey "\\ep" history-beginning-search-backward-end
bindkey "\\en" history-beginning-search-forward-end
これって↓↑キーと同じですか?
なら自分はいらないんですが
805:名無しさん@お腹いっぱい。
11/11/27 20:21:18.83
うちでは Ctrl-P/Nには up/down-line-or-history が割り当てられているな。
806:名無しさん@お腹いっぱい。
11/11/28 17:40:25.43
case ${UID} in
37 0)
38 PROMPT="%{${fg[cyan]}%}$(echo ${HOST%%.*} | tr '[a-z]' '[A-Z]') %B%{${fg[red]}%}% /#%{${reset_color}%}%b "
39 PROMPT2="%B%{${fg[red]}%}%_#%{${reset_color}%}%b "
40 SPROMPT="%B%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%}%b "
41 ;;
42 *)
43 PROMPT="%{${fg[red]}%}%/%%%{${reset_color}%} "
44 PROMPT2="%{${fg[red]}%}%_%%%{${reset_color}%} "
45 SPROMPT="%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%} "
46 [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
47 PROMPT="%{${fg[cyan]}%}$(echo ${HOST%%.*} | tr '[a-z]' '[A-Z]') ${PROMPT}"
48 ;;
49 esac
これの tr の定義がわかりません?
どっかにありますか?
807:名無しさん@お腹いっぱい。
11/11/28 17:42:34.33
URLリンク(en.wikipedia.org)
これ?
808:名無しさん@お腹いっぱい。
11/11/28 18:17:54.45
${HOST%%.*}
これっの%%.*って意味的には
%% %. %*
みたいなことでしょうか?
809:名無しさん@お腹いっぱい。
11/11/28 20:37:32.06
>>808
HOST の後の部分で
.* というシェルのパターンに合致する部分をできるだけたくさん捨てる。
HOST=www.google.co.jp なら .google.co.jp を捨てた www になる。
% が一つなら最小限捨てる。(.jpを捨てたwww.google.co)
810:名無しさん@お腹いっぱい。
11/11/28 22:42:29.40
>>805
>>809
どうも
811:名無しさん@お腹いっぱい。
11/12/08 23:47:37.72
4.3.14
812:アンネ
11/12/09 23:59:43.22
やぁ(笑)
813:名無しさん@お腹いっぱい。
11/12/11 16:39:36.98
zshで↓のようなプロンプトにしたいんだけどどうすればいい?めんどくさいから丸投げする。
PS1="\[\033[1;32m\][\u@\h \w]\[\033[0m\]\n\[\033[1;37m\]>> \[\033[0m\]"
教えてください。
814:名無しさん@お腹いっぱい。
11/12/11 19:19:24.11
autoload -U colors && colors
PS1="%{$fg_bold[green]%}[%n@%M %~]%{$reset_color%}
%{$fg_bold[white]%}>> %{$reset_color%}"
815:名無しさん@お腹いっぱい。
11/12/11 21:25:31.79
>>814
ありがとうございます!
816:名無しさん@お腹いっぱい。
11/12/26 23:20:55.64
fwd-searchして今の場所でOKのときにfwd-searchを抜けるのってどうやってますか?
Ctrl-F,Bで移動するとfwd-search解除されるのでそうやってますが、もっと良い方法ないかなと思って・・・
Enterしたらコマンド実行しちゃうし
817:名無しさん@お腹いっぱい。
11/12/27 00:36:11.96
>>816
C-eってやってる。
818:名無しさん@お腹いっぱい。
11/12/27 06:48:36.41
Type RET to exit, leaving point at location found.
819:816
11/12/28 01:19:08.43
>>817
C-eって行末移動ですよね?行末じゃなくてその場に留まりたいんですが
>>818
RETすると実行しちゃうんですけど・・・設定の違い?
820:名無しさん@お腹いっぱい。
11/12/28 08:10:40.33
すまんEmacsの話だと思ってた
821:名無しさん@お腹いっぱい。
11/12/28 11:17:17.49
>>816
ESC ESC ESC でカーソルがその場に残るよ。
822:816
11/12/29 11:16:03.68
>>821
ほんとですね。でも3連打はまんどいな・・・
823:名無しさん@お腹いっぱい。
11/12/29 14:50:12.84
isearch 中の話なら accept-search を適当なキーに割り当てておくとか
bindkey -M isearch '^[g' accept-search
824:名無しさん@お腹いっぱい。
11/12/29 15:29:20.63
>>821 ESC ESC で足りるけど… 最新だと違うんかな
search 専用の keymap がないからなあ… と思っていたら isearch なんて追加されてたのか
久しく進化を追ってない内に
825:名無しさん@お腹いっぱい。
11/12/29 15:39:02.48
>>822
Alt で ESC が入れば A-C-[ で 1 key だよ。これは 3 key というのか?同時押し key 数多くて勧めないけど。
ちなみに ESC ESC は undefined-key だから副作用がないだけで、
他の unbound key でも同じだよ。俺の環境だと "^[@" とか。
826:名無しさん@お腹いっぱい。
11/12/29 20:20:44.81
^[^|
@
827: 忍法帖【Lv=40,xxxPT】
12/01/14 10:44:12.89
sudo command
てすると、commandのaliasが展開されない
どすればsudoでもaliasコマンド使える?
828:名無しさん@お腹いっぱい。
12/01/14 12:10:30.76
global aliasでどうか?
829:名無しさん@お腹いっぱい。
12/01/14 16:53:03.33
alias sudo='sudo '
がよくある解
830: 忍法帖【Lv=40,xxxPT】
12/01/14 23:01:13.40
>>829
それ見つけたけどなんかうまくいかない
$@とか含むエイリアスはダメなのかな?
831:名無しさん@お腹いっぱい。
12/01/14 23:23:23.21
>>827
そのエイリアスってroot権限なくても展開できるのかな。
832:名無しさん@お腹いっぱい。
12/01/23 01:05:45.91
>>829
なにそのクールなトリック全然解らない、と思ったらそういう仕様があんのね。
見たのは↓の話で bash だけど。man zshall に該当記述が見付からない…
URLリンク(d.hatena.ne.jp)
この人の言っている偶然の抑止力って何のことだ?
>>830
alias 内での $@ は多分期待動作と違うと思うよ。普通に使えない。
あーでもそれは alias sudo 関係ないから違う話なのかな?
もしかして alias ではなく function が混ざってるのかも。
↓ でも同じことができると思うけど、これもダメ?
function が原因なら同じ話だけど。
# 1回まで展開する
sudo () { command sudo ${aliases[$1]:-$1} $*[2,$] }
>>831
root 関係ないような…
なんか試してたら
alias echo='echo[TAB]' # ([TAB] は "^[^I" is self-insert-unmeta で入れた tab)
の後に echo a とか実行すると履歴に echo[TAB]a が残ることを発見してしまった。
どーでもいいけどなんだコレ。
そしてこれもどーでもいいが history では [TAB] も \t (2文字) も \t と表示されて区別できない。
833:名無しさん@お腹いっぱい。
12/01/23 01:07:36.87
ちなみに展開1回までとかアホかという場合はこれで。
# 展開回数制限なし
sudo () {
local cmdline arg
local -A hist
cmdline=($1)
while (( ! ${+hist[$cmdline[1]]} && ${+aliases[$cmdline[1]]} ))
do
hist[$cmdline[1]]=
cmdline=($aliases[$cmdline[1]])
arg="$cmdline[2,$] $arg"
done
command sudo $cmdline[1] $arg $*[2,$]
}
834:名無しさん@お腹いっぱい。
12/01/24 00:22:12.80
RC_EXTENDED_PARAM って代入のときは効かないんですかね?
% num=(1 2 3)
% echo A${^num}B
A1B A2B A3B
% str=A${^num}B
% echo $str
A1 2 3B
こうすれば目的を果せますが…
% str=$(echo A${^num}B)
% echo $str
A1B A2B A3B
835:名無しさん@お腹いっぱい。
12/01/24 00:28:21.85
ちゃんと効くけど?
str=(A${num}B)
836:名無しさん@お腹いっぱい。
12/01/24 00:29:28.68
おっと ^ を入れ忘れた。 ${^num}ね。
837:名無しさん@お腹いっぱい。
12/01/24 01:08:51.91
>>835-836
なるほど、ちゃんと配列として代入せにゃならんのですね
838:名無しさん@お腹いっぱい。
12/01/31 11:30:31.32
zshでcat file_not_exist >/dev/null 2>&1 | w3mとやると、
catのエラーメッセージがw3mに渡されることに気付きました。
shのリダイレクションの解釈だとパイプには何も渡されないはずですけど、zshはどうしてこういう動作にしてるんですか?
何か理由があるんでしょうか。
839:名無しさん@お腹いっぱい。
12/01/31 14:32:40.13
>>838
unsetopt multios
840:名無しさん@お腹いっぱい。
12/02/01 07:31:41.94
>>839
じゃなくて、どうしてmultios状態をデフォにしてるのか、何か理由があるのかを聞いてるんだが。
841:名無しさん@お腹いっぱい。
12/02/01 08:02:56.24
>>840
command > file1 > file2
とやると両方のファイルに出力されるのがzshというかmultiosの特色だね
開発者の意図は知らんが、有効にすることでデメリットがあるわけでもないから有効になってるんじゃないかな
842:名無しさん@お腹いっぱい。
12/02/01 08:03:33.59
そりゃ作者が便利だと思って取り入れた機能はデフォにするだろ
843:名無しさん@お腹いっぱい。
12/02/01 08:07:08.37
であれば、
command > /dev/null | command
の場合は別にするべき。
大きなデメリットだな。
844:名無しさん@お腹いっぱい。
12/02/01 08:11:02.94
teeを使いたくなかった奴が作ったのにそりゃないな
845:名無しさん@お腹いっぱい。
12/02/01 08:14:01.25
>>842
作者が便利だと思っても互換性に問題がある機能はデフォではOFFにするのが鉄則。
846:名無しさん@お腹いっぱい。
12/02/01 08:32:47.47
はて、非互換ってどのシェルに対して。shとかだとほとんどデフォで使える機能なくなる気が
847:名無しさん@お腹いっぱい。
12/02/01 08:34:55.21
>>846
他のシェルに対する互換性じゃなくて、multios導入前のzsh自身に対する互換性ね。
848:名無しさん@お腹いっぱい。
12/02/01 10:11:56.10
そんなこといったら zsh v0.0.1 とかから何も進歩できないじゃん
849:名無しさん@お腹いっぱい。
12/02/01 10:25:05.49
>>845
作者にそう言えばいいじゃない。
850:名無しさん@お腹いっぱい。
12/02/01 10:56:27.96
>>845
>作者が便利だと思っても互換性に問題がある機能はデフォではOFFにするのが鉄則。
こういう鉄則始めてみたんだが、どこで言われてる奴?
851:名無しさん@お腹いっぱい。
12/02/01 11:12:17.72
まあ互換性に関しては原則としては理解できる主張だが
ことインタラクティブ関係の便利機能はどこかでデフォルト on にする
タイミングってものはあってもいいわけだ
いやなら古いの使ってろってのも間違ってないし
852:名無しさん@お腹いっぱい。
12/02/01 11:14:19.56
互換性を重視するか互換性捨てて新機能を重視するかは
単にポリシーの問題、決めの話でしょ。
ぜんぜん鉄則ではないよ。
853:名無しさん@お腹いっぱい。
12/02/01 12:08:24.98
>>840
ウダウダ書かずに最初からそう書けよ
854:名無しさん@お腹いっぱい。
12/02/01 13:57:53.03
まぁすぐ書いたからいいじゃん。
855:名無しさん@お腹いっぱい。
12/02/01 14:34:26.24
>>854
そうだね。連投に次ぐ連投で予想以上の嫌悪感を撒き散らしていたよね。
856:名無しさん@お腹いっぱい。
12/02/01 14:42:13.97
>>838→>>839→>>840だから連投ってほどのこともしてないじゃん。
857:名無しさん@お腹いっぱい。
12/02/01 14:46:18.61
>>838=>>840=>>843=>>845=>>847
IDじゃなくてもこれだけ書き込んだら目立つ
858:名無しさん@お腹いっぱい。
12/02/01 14:47:04.58
>>853は>>840への指摘でしょ?
それ以降の話は関係ないじゃん。
859:名無しさん@お腹いっぱい。
12/02/01 15:20:42.30
>>858
そう、>>853の意図としては>>840に対してのみの指摘。
元々のウダウダ書いている>>838は multios を知らない人間の質問の仕方。
だからその回答は「zsh には multios って機能があるから」で十分で、
あとはググりでもすればいくらでも満足してもらえると思ったんだがな。
860:名無しさん@お腹いっぱい。
12/02/01 16:08:39.89
838です。私の書き込みは838だけで、840以降のレスは別の方です。
zshが複数ファイルへのリダイレクションができるのは知ってましたが、
その機能がcommand >/dev/null 2>&1 | commandの動作に影響することまで頭が回りませんでした。
あとは自分でzshmisc読んで勉強しようと思います。
回答して下さった方、どうもありがとうございました。
861:名無しさん@お腹いっぱい。
12/02/01 16:10:04.40
2chとは思えないまともすぎる書き込み…
862:名無しさん@お腹いっぱい。
12/02/01 16:16:08.78
なりすまし多いよなぁ。
質問する際はトリップ推奨ってことにした方がいいね・・・。
863:855=857
12/02/01 17:32:02.57
>>860
了解しました。
864:zsh初心者 ◆./pq9ARSgM
12/02/03 01:55:09.12
初めてトリップつけるけど、これでいいの(´・ω・`)?
865:zsh初心者 ◆./pq9ARSgM
12/02/03 01:55:36.82
できたっぽ(´・ω・`)ノみんなよろしくな
866:名無しさん@お腹いっぱい。
12/02/03 02:15:05.15
なんの必要があって…?
867:名無しさん@お腹いっぱい。
12/02/04 14:52:47.90
>>844
ファイルと標準出力の両方にリダイレクトしたい場合もmultiosで出来るんですか?
これはteeじゃないと駄目かと思ってました
868:名無しさん@お腹いっぱい。
12/02/04 16:55:57.40
・マシン毎にzsh_historyを使い分けたい
・異なるマシンのzsh_historyを参照したい
この両方を同時に実現する方法はないかな。
今は複数マシンのzsh_historyをsamba等で共用してるけど、
マシン単位で区別ができないのがツライ。
869:名無しさん@お腹いっぱい。
12/02/04 17:07:58.08
HISTFILEにホスト名を含むようにすればいいんじゃないの?
870:名無しさん@お腹いっぱい。
12/02/04 17:10:24.09
いや、エディタでファイルを読めればいいという意味なのじゃなくて、
履歴検索時全ホスト分から探して欲しいという意味なのか。
871:名無しさん@お腹いっぱい。
12/02/04 17:16:18.66
zshmiscのzshaddhistory関数の使用例に、通常の履歴に加えて
カレントディレクトリにも履歴を書き出す例があった。
872:名無しさん@お腹いっぱい。
12/02/04 19:59:07.40
OpenSUSEなんだけどPATHを.zshenvに書くと
/etc/zprofileで参照される/etc/profileで上書きされる.
SUSEで使っている人はPATHをどこに書いてますか?
873:名無しさん@お腹いっぱい。
12/02/04 21:25:43.31
つーか/etcのファイルを読まないようにする方法ってあったっけ?
大抵のzshユーザは/etcのファイルよりも細かく設定してるし、邪魔なだけだよね
874:872
12/02/04 21:40:29.86
>>873
PATHも追加ならいいんだけど最初から設定するみたいで消されちゃう
スクリプトを使うから必要なんだけど,.zshrcに二重で書くのも変だし…
875:名無しさん@お腹いっぱい。
12/02/05 01:26:19.14
最初に /etc/zshenv を読み込むのは不可避。
ユーザーが介入できるのはその次の ~/.zshenv か。
setopt no_global_rcs だっけ?
876:名無しさん@お腹いっぱい。
12/02/05 07:18:57.19
>>867
そりゃできますよ。843が文句言ってるけどw
877:名無しさん@お腹いっぱい。
12/02/05 11:14:06.71
>>876
複数ファイルへのリダイレクト時にはmultiosで動作して、
ファイルとパイプの組合せの場合はmultiosにならないような設定とかオプションとかないの?
878:名無しさん@お腹いっぱい。
12/02/05 13:05:09.41
>>875
サンクス。読み込み順は↓
URLリンク(cocelo.s201.xrea.com)
というわけで>>874は setopt no_global_rcs を .zshenv に書くのがよろし
879:872
12/02/05 15:12:20.38
>>875
>>878
うまくいきました
ありがとうございます
880:名無しさん@お腹いっぱい。
12/02/05 17:59:39.17
>>876
もしかして、こんなふうに標準出力のデバイスファイルを指定するんですか?
echo hoge >file >/dev/stdout
しかし標準出力には何も出ない・・・
881:名無しさん@お腹いっぱい。
12/02/05 18:32:09.66
>>880 を試そうとして、
echo hoge >file1 >file2 >/dev/stdout
のようにファイル2つと/dev/stdoutを指定したら、
zshがCPU使用率100%になって固まった。
echo hoge >file1 > /dev/stdout ←だと固まらない。
echo hoge >file1 >file2 >/dev/stdout ←で固まる。
再現率100%。バグか?w
882:880
12/02/05 19:38:57.92
stdoutじゃなくてstderrだと出る・・・
echoって標準エラー出力に出す仕様だっけ??
>>881
自分もそうなりました。zshは4.3.10です。
883:名無しさん@お腹いっぱい。
12/02/05 20:05:06.90
25016 read(15, "hoge\n", 4092) = 5
25016 write(13, "hoge\n", 5) = 5
25016 write(14, "hoge\n", 5) = 5
25016 write(16, "hoge\n", 5) = 5
25016 read(15, "hoge\n", 4092) = 5
25016 write(13, "hoge\n", 5) = 5
25016 write(14, "hoge\n", 5) = 5
25016 write(16, "hoge\n", 5) = 5
止めかたがわからずPCが焼け石になるところでした
884:名無しさん@お腹いっぱい。
12/02/05 20:37:13.09
うーん、こんな危険なmultios状態をデフォにするべきじゃないねw
885:名無しさん@お腹いっぱい。
12/02/05 21:42:57.78
ん?
echo hoge >file1 >file2 >/dev/stdin
じゃないのか
886:名無しさん@お腹いっぱい。
12/02/05 21:46:28.52
>>885
stdinじゃないよ。
echo hoge >file1 >file2 >/dev/stdout
なのに、ストリームがループして無限にhoge hoge .... データが吐かれる。
887:名無しさん@お腹いっぱい。
12/02/05 23:38:13.30
そうじゃない。885は正しく動作するコマンドライン
誤記の指摘ではなくて、やりたいことはstdinじゃないのか?と
888:zsh初心者 ◆./pq9ARSgM
12/02/05 23:46:02.29
じつはぼくはまだzsh使ってなくて、bashなんだけど(´・ω・`)
みんなはなんでzshを使い始めたの?
bashから乗り換えたくなるような機能って何があるの?
889:名無しさん@お腹いっぱい。
12/02/06 00:06:28.69
ないよ
890:名無しさん@お腹いっぱい。
12/02/06 00:13:22.46
>>889
だな。
今のbashはzshの持っている機能を100%持ってる。
bashにしかない機能も山ほどある。
891:名無しさん@お腹いっぱい。
12/02/06 00:16:57.70
>>887
ほんとだ・・・なんでstdinなんですかね?逆のイメージ持ってた
スレチですが教えてください
892:zsh初心者 ◆./pq9ARSgM
12/02/06 00:27:31.43
>>889-890
そ、そうなんだ(´・ω・`)
893:名無しさん@お腹いっぱい。
12/02/06 00:29:26.85
>>892
そうだよお。
bashがなんでLinuxでスタンダードシェルになってるかこれでわかるよね?
おじさんを信じてzshなんて使うのやめようねぇ。
894:zsh初心者 ◆./pq9ARSgM
12/02/06 00:36:22.89
>>893
LinuxじゃなくてMacを使ってるんだけど(´・ω・`)
じゃあ、おじさんはどうしてzshを使っているの?
895:名無しさん@お腹いっぱい。
12/02/06 01:15:11.82
>>890
じゃ具体例挙げてくれ
最近のbashはインクリメンタルサーチなど対応してるというのは聞いたけど
896:名無しさん@お腹いっぱい。
12/02/06 06:46:06.66
>>881 >>886 が指摘してる件は重大なバグだろ?
echo hoge >file1 >file2 >/dev/stdout
って実行しただけで固まって無限サイズファイルができるって、
危なくて使えない。
897:名無しさん@お腹いっぱい。
12/02/06 09:56:43.30
> 今のbashはzshの持っている機能を100%持ってる。
> 今のbashはzshの持っている機能を100%持ってる。
> 今のbashはzshの持っている機能を100%持ってる。
> 今のbashはzshの持っている機能を100%持ってる。
898:名無しさん@お腹いっぱい。
12/02/06 12:00:37.83
>>897
言いたいことがあるなら具体的に。
899: 忍法帖【Lv=2,xxxP】
12/02/06 20:48:23.62
出来るかもしれんけど、より簡単に設定出来るのはzshなんじゃね?
900:名無しさん@お腹いっぱい。
12/02/06 20:57:22.55
bashでzleとかいじれる?
901:名無しさん@お腹いっぱい。
12/02/06 21:11:50.27
>>898 100% 知っているとは思えないってことじゃないかな。
902:名無しさん@お腹いっぱい。
12/02/06 21:29:09.15
>>901
だったらそれを自分で言うべき。
903:名無しさん@お腹いっぱい。
12/02/06 21:54:16.33
矛先が非建設的な方向に向いております
904:名無しさん@お腹いっぱい。
12/02/06 23:27:59.71
bash にしかない機能って何?いいのある?
よさそうなら使いたい。
905:名無しさん@お腹いっぱい。
12/02/06 23:33:50.86
bashがzshの機能を入れるのはzshユーザにとっても喜ばしいことじゃない?
906:名無しさん@お腹いっぱい。
12/02/07 00:22:28.90
>>890
bash にも既にあるってフレーズはよくきくからそうなんだろうなー、って思ったけど
ちなみに bash で multios ってどうやんの?
やり方がわからなかった。
907:zsh初心者 ◆./pq9ARSgM
12/02/07 00:24:29.43
けんかはやめて(´・ω・`)
908:名無しさん@お腹いっぱい。
12/02/07 01:30:33.03
>>889-890はどうみてもクソコテのクソ質問を適当にあしらってるだけだろ
909:名無しさん@お腹いっぱい。
12/02/07 02:12:44.28
だとして >>893 は要らんけどな。
910:名無しさん@お腹いっぱい。
12/02/07 02:39:27.57
>>885
それなら
echo hoge >file1 >file2 >/dev/tty
じゃないか?これだと抽象度に欠けるが。
echo hoge >file1 >file2 |cat
が解りやすいけど cat とか書きたくなければ
echo hoge 3>&1 >file1 >file2 1>&3
かな。試してみたら
echo hoge 1>&1 >file1 >file2
もできるね。しかし
echo hoge 3>&1 1>&1 1>&3 1>&1
で hoge が 4つでるのに対して
echo hoge 1>&1 1>&1
で hoge が 2つじゃなく1つでるのは何故なんだろう。
>>896
zsh にはバグが多い印象があるけどそれは仕様だろう。
自分が何をしようとしてるか理解してるか確認するなんて
気の利いたことは zsh はしないからな。
それがバグだってんならそうかもしれないが、まあ余計だろう。
あーでも rm * はするんだっけ?
911:名無しさん@お腹いっぱい。
12/02/28 22:50:26.88
2012-02-23 : Release 4.3.17
Complete fixes from last release.
912:名無しさん@お腹いっぱい。
12/03/02 23:20:33.32
2行目ってどう訳すん?
913:名無しさん@お腹いっぱい。
12/03/03 08:40:54.41
2行目は動詞がない名詞区。fixesは3単現の s じゃなくて、fixの複数形。
あとはわかるな。
914:名無しさん@お腹いっぱい。
12/03/03 09:27:07.25
主語のIかWeが省略されてるんじゃないかな
completeは動詞でfixesが名詞
訳すと「この前のリリースからの(バグ等の)修正を完了したよ」
915:名無しさん@お腹いっぱい。
12/03/03 09:30:11.26
主語がないと訳せない人がいるのか
ニュアンスでわかんないものかねぇ
916:名無しさん@お腹いっぱい。
12/03/03 09:48:41.16
いや、completeは形容詞として訳して欲しい。全体で箇条書風の名詞句。
917:名無しさん@お腹いっぱい。
12/03/03 09:50:42.66
>>914
completeを動詞と考えると、現在形なのはおかしいね。
なので >>916 説に1票。
918:名無しさん@お腹いっぱい。
12/03/03 10:05:43.36
>>917
ああ言われてみれば確かにおかしい。というわけでリリースノート見てきた
URLリンク(zsh.sourceforge.net)
> Changes between versions 4.3.16 and 4.3.17
> Complete fixes from last release.
「4.3.16と4.3.17の間の変更点は何か」なので
自分もComplete fixesでひとつの名詞句と考える>>914説に改説します
「この前のリリースからの(バグ等の)完全な修正」
919:名無しさん@お腹いっぱい。
12/03/03 10:50:18.07
4.3.16で直し方が半端だったバグがあって、それを完全に修正したってこと?
920:名無しさん@お腹いっぱい。
12/03/03 13:41:34.71
はい
921:名無しさん@お腹いっぱい。
12/03/03 16:35:59.06
zshの設定って面倒くさいな
zshの本読んでたら頭痛くなってきた・・・
うまく構成して見やすいドキュメント整えた配布版ってないの
922:名無しさん@お腹いっぱい。
12/03/03 16:44:15.83
デフォルトでも十分に便利だと思うが。。。
923:名無しさん@お腹いっぱい。
12/03/03 17:14:39.37
oh-my-zshでも使ったら。
924:名無しさん@お腹いっぱい。
12/03/03 20:49:21.06
更に面倒だよ...
925:名無しさん@お腹いっぱい。
12/03/04 01:23:46.40
大丈夫か。辛いなら fish とか使ったら。今どうなってんのか知らんけど。
>>915
いやー主語はどうでもいいんだけどニュアンスでしか読めなかったから
あんまり考えずに聞いてみた。
ニュアンスで読んだら見当違いの内容も浮かんだんでね。
>>919
どっちかというと 4.3.16 に対して完全にバグ修正しかしてないよってことじゃないかな。
926:名無しさん@お腹いっぱい。
12/03/09 03:35:07.50
fish初めて知ったわw
悪くなさそうだが最終更新が2009年・・・
927:名無しさん@お腹いっぱい。
12/03/09 14:06:16.31
fishと名のつくシェルは fish.x しか知らんかった。
928:名無しさん@お腹いっぱい。
12/03/17 19:56:00.78
sudo -s でrootユーザになると、TAB押して補完するときに↓のようになるけど何でじゃろ?
補完自体はできてるんだけど
_path_files:17: command not found: _have_glob_qual
_path_files:201: command not found: _have_glob_qual
_path_files:202: command not found: _have_glob_qual
_path_files:695: command not found: _list_files
929:名無しさん@お腹いっぱい。
12/03/17 21:17:22.57
どうじゃろ?
930:名無しさん@お腹いっぱい。
12/03/17 22:20:52.25
root の設定が悪いとか
931:928
12/03/18 00:45:06.34
「sudo -u 自分 -s」 で自分のアカウントになっても同じっす。
CentOS5.7でそうなる一方、CentOS6.2では出ない。
でも、どちらもzsh4.3.17をソースからビルドしてるし、.zsh*自体も同じなんだよなぁ。
932:名無しさん@お腹いっぱい。
12/03/18 01:35:14.43
ググって最初に出てきたものくらいは当然試してるだろうけど、
「試したけど駄目だった」くらいは書け
> Remove ~/.zcompdump and restart zsh.
933:928
12/03/18 02:16:08.50
>>932
実は.zcompdump消すのは試してたんだけど、問題がでたりでなかったりで
よく分からずじまいだった。・・・で、今一度調べてやっと分かりました。
.zprofileにて
if [[ $SHELL == /bin/zsh ]] ;then
SHELL=$HOME/bin/zsh
exec $SHELL
fi
とすることでログインシェルの/bin/zshを最新のzshに切り替えてたんだけど、
インタラクティブシェルは.zprofileを読み込まないのを忘れてました。
新しいzshが作った.zcompdumpを古いzshで読んだのでこうなったと。
実にくだらないミスで・・・orz。皆さんお騒がせしました。
934:名無しさん@お腹いっぱい。
12/03/21 23:26:33.31
以下のようなディレクトリ構成のところで、hoge下にdir1/dir2へのシンボリックリンクがあるとします。
$tree hoge
hoge
|-- dir1
| |-- dir2
| |-- dir3
| `-- dir4
`-- dir2 -> dir1/dir2/
dir2にcdし、「cd ../」まで打ってからTAB押すと、dir2~dir4が候補表示され、
実際に「cd ..」するとhoge下にcdします。
ここで、補完をdir2~dir4じゃなくて、hoge下のdir1~dir2となるような方法はないですか?
ちなみにbashだとその仕様みたいです。
935:名無しさん@お腹いっぱい。
12/03/21 23:38:28.15
setopt chaselinks ?
936:934
12/03/23 00:19:46.27
>>935
それだと「cd dir2」でdir1/dir2に移動するだけなんで、やりたいことと違います。
937:名無しさん@お腹いっぱい。
12/03/24 04:19:32.53
こんな方向でどか
_directorys_symlink () { local pre="${PREFIX%/*}/"; local -a tmp; tmp=($(cd "$pre" && echo *)); compadd -f -p "$pre" -W "$(cd "$pre" && pwd -P)/" "$@" -a tmp }
_cd_symlink () { local expl; _wanted directorys-symlink expl 'directory when retain symbolic links' _directorys_symlink }
_cd_wrapped () { local pre="./${PREFIX%/*}" ret=1; [[ "$(cd "$pre" 2>/dev/null && pwd -P)" != "$(cd -P "$pre" 2>/dev/null && pwd)" ]] && _cd_symlink && ret=0; _cd && ret=0; return ret }
compdef _cd_wrapped cd
色々足らんけど
938:934
12/03/24 18:36:46.18
>>937
非常に申し訳ないですけど、さすがにそれは使う気がしないですw
でも、ありがとうございます。
939:名無しさん@お腹いっぱい。
12/03/24 22:21:42.30
それは残念。でもないか。
よく知らないけど、多分 cd の補完処理を直さないと無理じゃないかな。
ワーキングディレクトリのシンボリックリンクを残して path を辿るのは
cd の特殊な仕様みたいだけど、
cd の補完がそれを考慮せず通常の path 補完をしているようだ。
なんで _cd を直すか cd の compdef を対応版に変える必要がある
…ように見える。
940:名無しさん@お腹いっぱい。
12/03/24 22:27:23.24
関係ないけど compadd の -P と -p の違いがよくわからない。
なんか前調べた気もするけどなんだったかな…
941:名無しさん@お腹いっぱい。
12/03/27 22:42:55.78
今日rsyncを使ってて妙なことに遭遇したのですが、zshスクリプトにおいて
ディレクトリのコピーを以下のようにしていたところ、たまにrsyncのコピーが
正しくなされないことが分かりました。
while :;do
rsync -av dir.org/ dir
~dir内のファイルを書き換える処理~
done
rsyncの直前で dir.org と dir の中身を見ると確かに更新されているのですが、
rsyncはそれらのコピーをスルーしていました。今のところ以下が分かっています。
①上記現象は再現性が一定でない(正常コピーできるときもある)
②rsyncの直前でsleep 1を入れると何故か正常にコピー
③bashだと無問題
zshの問題とも限らない気がしますが、このスレの方々は経験豊富だと思うのでお尋ねします。
何かアドバイスあればお願いします。
942:名無しさん@お腹いっぱい。
12/03/30 11:06:21.55
, -'"´  ̄`丶、_
,.∩ `ヽ
〃∪'´ ̄`二二人\ ヽ
| ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ',
|ハ ,ニ、 ,. - 、 | | | l |
| ハ ィハ ,二ヽ. | | | | | 同じ板にコピペするとそのままだけど、
| | | じ' |トJ〉 /)} l | 違う板にコピペすると鬼のような怖い顔
| ハ 、'_,  ̄,, 厶イ川| に変わる摩訶不思議な佳子様コピペ。
l l /\ .. イV\川 |
,' l l ,イ `l ̄´ / /ヽl l
l | l ハ `メ、 〃 ヽヽ、__ノ
943:名無しさん@お腹いっぱい。
12/03/31 00:58:41.59
dir内の~ がなにかによるんじゃないの。
つーか dir が dest なんだよね。それだとコピーしない気がするけど、するんだね。
rsync はよーしらんから勘違いしてるかな。
944:941
12/03/31 21:41:34.17
すいません、自己解決しました。以下、zshとは関係ない話で恐縮ですがいちおう報告します。
rsyncはタイムスタンプを見てコピーするか否か判断しますが、>>941のファイル書き換え処理が
一瞬で終わるためにタイムスタンプが変化しないのが原因でした。
実際、ls -l --full-timeで見ると↓のように秒以降が全部0になっています。
-rw-r--r-- 1 hoge users 326 2012-03-31 21:24:24.000000000 +0900 file
ちなにみ環境はCentOS6.2です。おそらく、秒以降のタイムスタンプも記録するシステムならば
今回の問題は起こらないはずだと思います。あと、>>941で言った①と②も勘違いでした。
この現象がランダムに出たために、誤って解釈してしまいました。失礼いたしました。
945:名無しさん@お腹いっぱい。
12/04/27 23:45:48.02
ls とかのソートって unsetopt numeric_glob_sort の場合は以下の順ですよね?
特殊文字( _ を除く)
数字
大文字
_
小文字
実は、あるホストへ自宅からログインすると上記の通りなのが、
職場からログインすると「 _ 」の存在が無視されたようにソートされます。
たとえば、A _b C というファイルがA C _b の順でソートされます。
こんなことってあるんですかね?全く同じホストにログインしてるのだから、
もう残る違いはログイン元の端末環境ぐらいしか・・・
946:名無しさん@お腹いっぱい。
12/04/27 23:58:15.17
>>945
> 大文字
> _
> 小文字
> たとえば、A _b C というファイルがA C _b の順でソートされます。
大文字 大文字 _ の順になってる ってのは正常な動作じゃないのか?
947:名無しさん@お腹いっぱい。
12/04/28 00:11:03.30
>>946
すいません、間違えました。以下の意味に訂正します。
「辞書順で A C _B となるのが、A _B C となってしまう」
948:名無しさん@お腹いっぱい。
12/04/28 00:34:14.98
LC_COLLATEの値は?
949:名無しさん@お腹いっぱい。
12/04/28 14:06:53.07
>>948
自宅からの接続ですが、空でした。
こうなったら、自宅からと職場からとで環境変数が同じかどうか調べるしかないですね。
ところで「 _ 」って特殊文字には入らないんですかね?
950:名無しさん@お腹いっぱい。
12/04/28 17:38:50.08
LC_COLLATEをみるなら
それより優先されるLC_ALLと
最後の砦のLANGも見ないと…
951:名無しさん@お腹いっぱい。
12/04/28 21:22:15.90
>>949
ていうか ascii 順でしょ。
952:名無しさん@お腹いっぱい。
12/04/28 21:32:43.75
$ LC_COLLATE=en_US.UTF-8 ls
a _a b _b
$ LC_COLLATE=C ls
_a _b a b
953:名無しさん@お腹いっぱい。
12/04/28 21:59:07.34
てか、「lsとかのソート」の時点でzshもsetoptも関係なくね?
954:名無しさん@お腹いっぱい。
12/04/28 22:08:06.56
そうは思ったがきっとglobの展開のことだと汲み取ってあげたい。
955:名無しさん@お腹いっぱい。
12/04/28 22:10:50.41
lsは表示するファイルを自力でソートしているのでlsの問題。
(directory entryの出現順のままソートせずに表示するオプションがある)
glob展開の結果の順序はシェルの問題。
956:名無しさん@お腹いっぱい。
12/04/28 22:15:19.85
$ LC_COLLATE=en_US.UTF-8 zsh -c 'echo *'
a _a b _b
$ LC_COLLATE=C zsh -c 'echo *'
_a _b a b
957:名無しさん@お腹いっぱい。
12/04/30 00:17:44.41
最近はzshあんま更新されてないし、bashのがいいってまじ?
958:名無しさん@お腹いっぱい。
12/04/30 07:45:44.90
そろそろ5を出そうかというタイミングで何言ってるんだ?
959:名無しさん@お腹いっぱい。
12/05/04 23:55:38.50
>>952
>>956
両方 _a _b a b になるじゃねーか。試しちまった。
960:名無しさん@お腹いっぱい。
12/05/05 11:39:09.60
>>959
え? お前の環境変だろ。LC_ALL設定してしまってるとか。
961:名無しさん@お腹いっぱい。
12/05/05 12:00:08.94
en_US ロカールが定義されているか、未定義かで変わる?
962:名無しさん@お腹いっぱい。
12/05/05 12:10:33.40
各地域ロケールの内容ってどこかで決まってたりするの? 環境依存だと思ってた。
963:名無しさん@お腹いっぱい。
12/05/05 12:12:56.73
>>959 ではないけどやってみた。OSX Lion。
普段の環境は LC_ALL 未定義、LC_MESSAGES=C、LC_TIME=C、他のLC_xxxは未定義、LANG=ja_JP.UTF-8
$ LC_COLLATE=en_US.UTF-8 zsh -c 'echo ZSH_VERSION=$ZSH_VERSION LC_ALL=$LC_ALL LC_COLLATE=$LC_COLLATE; echo *'
ZSH_VERSION=4.3.11 LC_ALL= LC_COLLATE=en_US.UTF-8
_a _b a b
$ LC_COLLATE=C zsh -c 'echo ZSH_VERSION=$ZSH_VERSION LC_ALL=$LC_ALL LC_COLLATE=$LC_COLLATE; echo *'
ZSH_VERSION=4.3.11 LC_ALL= LC_COLLATE=C
_a _b a b
964:名無しさん@お腹いっぱい。
12/05/05 12:21:42.24
多分、en_US localeをインストールしてない環境ってオチ。それならLC_COLLATE=C と同じになって当然。
965:963
12/05/05 13:42:40.15
うちのzshはここ見てないのかねぇ。
$ ls -l /usr/share/locale/en_US.UTF-8/LC_COLLATE
lrwxr-xr-x 1 root wheel 28 2011-08-02 23:22 /usr/share//locale/en_US.UTF-8/LC_COLLATE -> ../la_LN.US-ASCII/LC_COLLATE
$ ls -l /usr/share/locale/la_LN.US-ASCII/LC_COLLATE
-r--r--r-- 1 root wheel 2086 2011-08-02 23:22 /usr/share/locale/la_LN.US-ASCII/LC_COLLATE
LNってどこだよw
966:963
12/05/05 13:52:07.08
$ strings =zsh | grep strcoll
少なくとも strcoll は呼んでないわー。 libiconvとかはリンクしてるけど。
967:名無しさん@お腹いっぱい。
12/05/05 22:53:05.58
>>960
片方 a _a b _b になるじゃねーか。LC_ALL設定失念しちまった。
なにこれ _a を 1文字として扱ってるの?
>>966
% echo $ZSH_VERSION
4.3.17
% strings =zsh | grep strcoll
strcoll
968:名無しさん@お腹いっぱい。
12/05/06 04:10:16.92
>>967
configure 次第か。
969:名無しさん@お腹いっぱい。
12/05/13 00:17:40.31
以下のように拡張子の前の数字を取り除きたいのですが、zmvでどのように実行をすれば良いでしょうか?
hoge1.mp3 → hoge.mp3 #数字を取り除く
hoge1hoge.mp3 → hoge1hoge.mp3 #そのまま
試行錯誤したのですが、うまく行きません。
以下のように実行すると、"hoge1.mp3"と"hoge1hoge.mp3"を"hoge.mp3"に変換しようとして失敗します。
zmv -n '([a-z]*)[0-9]*.mp3' '$1.mp3'
以下のように実行すると".mp3"に変換しようとして失敗します。
zmv -n '^([a-z]*)[0-9]*.mp3$' '$1.mp3'
970:名無しさん@お腹いっぱい。
12/05/13 00:22:52.56
>>>969
basename使うわけにはいかないの?
971:名無しさん@お腹いっぱい。
12/05/13 02:07:28.60
いつも for で zmv 使ってないから知らんけど '(*)<->.mp3' じゃないか?
多分それ re じゃないよ。
972:名無しさん@お腹いっぱい。
12/05/13 10:25:40.61
それだと
(hoge12)3.mp3
になるぜ
973:名無しさん@お腹いっぱい。
12/05/13 12:02:16.55
自分も普段は for 文を使っちゃうけど
zmv '(*)[0-9]##.mp3' '$1.mp3'
とかでいいのかな。まあ便利なのかもw
974:名無しさん@お腹いっぱい。
12/05/13 12:06:46.39
ああ>>972と同じになってしまうのか
zmv '(*).mp3' '${1%%[0-9]##}.mp3'
かな?
975:名無しさん@お腹いっぱい。
12/05/13 15:41:51.71
おお、たしかに。こうする必要があるか。 '(*[^[:digit:]])<->.mp3'
976:名無しさん@お腹いっぱい。
12/05/13 16:34:24.13
そうか shortest match flag とかはないんだな。
うーん *(#c,)<-> で落ちる。こんなパターン使わないけど。
977:969
12/05/13 17:35:45.22
ありがとうございます。
>zmv '(*).mp3' '${1%%[0-9]##}.mp3'
でうまく行きました。
これは$1のうちの%%と##で挟まれた正規表現を取り除くという書式なのでしょうか?
>おお、たしかに。こうする必要があるか。 '(*[^[:digit:]])<->.mp3'
<-->はどういう処理ですか? こちらは使いかたがよく分かりませんでした。
すみません。zmvのパラメータについて解説しているサイトはありませんか? zmvの書式が難しくて。
978:名無しさん@お腹いっぱい。
12/05/13 18:03:15.98
man zshcontrib
979:名無しさん@お腹いっぱい。
12/05/13 19:04:25.29
>>978
ありがとうございます。
man zmvで見つからない、とか思っていたので。
980:名無しさん@お腹いっぱい。
12/05/13 21:42:08.02
>>977
man zshexpn すれば詳しいことが載っているが ${name%%pattern} と x## の組み合わせだよ
前者はシェルスクリプト一般でよく使われる
<-> は <[x]-[y]> の特殊例で数字にマッチする
981:名無しさん@お腹いっぱい。
12/05/15 01:08:56.08
>>980
ありがとうございます。
ようやく理解できました。
982:名無しさん@お腹いっぱい。
12/05/15 19:43:39.12
man zshall しかうたないな
983:名無しさん@お腹いっぱい。
12/05/16 01:24:52.01
>>982
俺もman zshall派
でもそうすると目当てのものみつけにくいんだよなw
984:名無しさん@お腹いっぱい。
12/05/16 01:34:37.45
使うのは zshall でも人に示すときは絞る
昔から言われてるけど zsh 関係のドキュメントは読み物としては面白くないな
985:名無しさん@お腹いっぱい。
12/05/16 23:36:44.49
言われてた気もするけど今思うに特別そうでもない
986:名無しさん@お腹いっぱい。
12/05/17 12:33:01.23
うん。