07/01/18 20:02:39
同僚に薦められてzshに移行したばかりのものです。
いきなり質問で恐縮ですが、
コマンドラインで、第二引数だけをヒストリから補完とか可能でしょうか?
可能でしたら方法をお教えください。
具体的には、あるコマンドを(第二引数の)ファイルに実行した後で、
別のコマンドをそのファイルに実行したい時に、簡単な操作で
第二引数を呼び出したいのです。
596:名無しさん@お腹いっぱい。
07/01/18 21:10:44
M-. (insert-last-word) かな?
597:595
07/01/18 21:17:18
>>596
おお、ありがとうございました。
できましたw
zshの強烈な補完に感動してます。
ありがとうございました。
598:名無しさん@お腹いっぱい。
07/01/23 06:52:27
predict-on, predict-off を同じキーに配置して
オンならオフ、オフならオンに変更するために predictの状態を知りたいんですが
どうやったら調べられるんでしょうか?
599:名無しさん@お腹いっぱい。
07/01/24 04:17:04
状態を示す変数でも作ればいいじゃないの
600:名無しさん@お腹いっぱい。
07/01/24 05:38:07
>>599
ああ、そうかなるほど。
助かりましたありがとうございます
アホなりになんとかできました
601:名無しさん@お腹いっぱい。
07/01/30 04:58:45
このスレもぼちぼち立ってから2年か。読み返しみると結構レス書いてるな。
実は少人数で廻してるのか。
602:名無しさん@お腹いっぱい。
07/02/06 17:24:08
for i in param1 param2 ...
do
いろんな仕事を param 毎に
done
ってやりますけど,各ループ実行に 2個づつ,3個づつみたいな
パラメータの渡し方って可能でしょうか?
python でいうところの
for i,j in ( (x1,y1), (x2,y2), ...)
とすると $i, $j でそれぞれ x1, y1 が参照できるみたいな
ことなんですが。
603:名無しさん@お腹いっぱい。
07/02/06 19:23:28
関数の中で
while [ $# -gt 0 ]
do i=$1;shift;j=$1;shift
...
done
とかやればいいんじゃないの?
604:名無しさん@お腹いっぱい。
07/02/06 19:42:32
for i j in param1 param2 ...
605:602
07/02/07 02:05:24
>603
なるほど~ とおもったところで
>604 ってナンだろう? と目を擦って…
ガーン!!! そんなのアリだったのか~
info zsh したら確かにそう書いてある!!
for NAME ... [ in WORD ... ] TERM do LIST done
.snip.
More than one parameter NAME can appear before the list of WORDs.
ありがとうございます
606:名無しさん@お腹いっぱい。
07/02/09 09:38:07
MYCOM コラム『漢のzsh』
URLリンク(journal.mycom.co.jp)
こんなん始まったね。
607:名無しさん@お腹いっぱい。
07/02/09 11:06:01
>>606
お、これ面白いね。早速ブクマクした
てゆーか数年zsh使ってたが、"ls -"の後の補完でオプション出るの知らんかった・・・アホだな俺。。
608:名無しさん@お腹いっぱい。
07/02/09 12:40:10
これだけだと面白くなるかどうかまだわからんw
WEB上だけの連載なのかな。
UNIX USER の連載は書籍化もされず、WEB で公開されることもなく
埋もれていくのか。本誌は休刊しちゃったし。
609:名無しさん@お腹いっぱい。
07/02/09 12:59:28
zshマスターだけちぎってUNIXUSER全部捨てた
610:名無しさん@お腹いっぱい。
07/02/09 13:00:39
ん? だからPDF版買えって話じゃないの?
611:名無しさん@お腹いっぱい。
07/02/09 13:54:16
>>610
あれ、そんなの売ってたっけ?
612:名無しさん@お腹いっぱい。
07/02/09 15:08:15
>>606
スレリンク(linux板:351番)
この後にこんな記事ができるってのは、2chみてんのかね。
613:名無しさん@お腹いっぱい。
07/02/09 15:34:33
その程度の基本的な機能の紹介で2chと結びつけるのは酷だなw
614:名無しさん@お腹いっぱい。
07/02/09 15:36:41
>>612
compinitは設定じゃねーよ。
常識だ。
というわけで、>>606には一応期待しておくが、まだ評価はできん。
615:名無しさん@お腹いっぱい。
07/02/09 16:02:12
>>612の351も>>606-607も本人と決め打つのが2ちゃんだろw
616:名無しさん@お腹いっぱい。
07/02/09 20:21:31
ぜんぶ俺だから
617:名無しさん@お腹いっぱい。
07/02/09 21:22:33
UUの連載も内容的にはけっこう古くなっているから、今更書籍化ってのも難しいんじゃないのかな。
今回のは常識だけど、まぁまだ第1回だから今後に期待だな
618:名無しさん@お腹いっぱい。
07/02/11 15:24:29
MYCOM記事読んできますた
619:名無しさん@お腹いっぱい。
07/02/11 17:14:19
誰かzshrc晒せ
620:名無しさん@お腹いっぱい。
07/02/11 18:10:44
前にキチガイモーオタが晒してたなw
621:名無しさん@お腹いっぱい。
07/02/11 19:22:49
perl -e "print 100"; とすると 100% と表示されます、% は色反転してます
この % を出したくないんですけど、どうすればいいですか
622:621
07/02/11 19:38:35
事故解決
623:名無しさん@お腹いっぱい。
07/02/11 19:40:34
>>622
解決方法くらい書きたまえキミぃ。
624:621
07/02/11 19:43:17
\n を自動で補ってくれてただけなわけで
こんな機能があったとは
625:名無しさん@お腹いっぱい。
07/02/16 12:59:46
MYCOMのzsh連載、早速第2回が掲載されているね。
今度はプロンプトのカスタマイズ。
626:名無しさん@お腹いっぱい。
07/02/16 13:22:22
PROMPT="%B%{^[[31m%}%/#%{^[[m%}%b " # ただし ^[ は エスケープシーケンス
よりは
PROMPT=$'%B%{\e[31m%}%/#%{\e[m%}%b '
とか
autoload -U colors; colors
PROMPT="%B%{$fg[red]%}%/#%{$reset_color%}%b "
とかのほうがよさそうなもんだが
627:名無しさん@お腹いっぱい。
07/02/16 13:37:22
> エスケープを直接設定ファイルに記述することを嫌って、
> echoやprintfコマンドを使う場合もある。好きな方を選べばいい。
> ただ、コマンドだとプラットフォームごとに動いたり動かなかったりするので、
> ここでは直接書いて使っている
echo も print も printf も組み込みコマンドですがなにか
628:626
07/02/16 13:39:46
誤)エスケープシーケンス
正)エスケープ
orz
629:名無しさん@お腹いっぱい。
07/02/16 14:25:01
設定ファイルとかプロンプトとかどうでもいいからさっさと補完の事教えてくれよう
630:名無しさん@お腹いっぱい。
07/02/16 21:36:58
あんまり期待できないな
631:名無しさん@お腹いっぱい。
07/02/17 09:15:00
この程度の事はだれもが通る道だよな
それで記事が書けるなんて
632:名無しさん@お腹いっぱい。
07/02/17 10:59:40
紹介記事(スレ住人的には既に通ってきた内容)と
使いこなし記事(スレ住人も新たな発見がある内容)
は違うよなぁ……
633:名無しさん@お腹いっぱい。
07/02/17 12:02:36
このコラムはどういう層を対象にしてるんだろうか
634:名無しさん@お腹いっぱい。
07/02/17 12:09:58
第1回の出だしに、こんなの書いてある
> ここ1年でzshへ移行しやすい状況が整ってきている。
> はじめるには悪くないタイミングだ。
これからzshを始める人向けだろう
635:名無しさん@お腹いっぱい。
07/02/17 12:34:49
いや、それはわかってるけど…
636:名無しさん@お腹いっぱい。
07/02/17 13:14:31
大地の記事がそんなにいいわけないだろ。
冷静になれ。
637:名無しさん@お腹いっぱい。
07/02/17 18:20:30
むしろこのスレの住人がうなるようなコアな内容を出してきたらウケル。
638:名無しさん@お腹いっぱい。
07/02/17 19:02:04
>>637
ありえない。
もうUNIXUSERの記事の焼き直しでいいよ。
639:名無しさん@お腹いっぱい。
07/02/17 19:06:28
妙な記事書かれるより安心だなw
640:名無しさん@お腹いっぱい。
07/02/17 19:17:27
zshに限らず最近シェル使わなくなってきた
641:名無しさん@お腹いっぱい。
07/02/17 19:54:57
compctlの解説だけで終わったりして
642:名無しさん@お腹いっぱい。
07/02/17 20:03:17
シェル使わないってなんだ。ログインすらしてないってことか。
643:名無しさん@お腹いっぱい。
07/02/17 21:14:52
正直にいって細かく設定しても使わないよね
zshrcは千行あるけど
644:名無しさん@お腹いっぱい。
07/02/17 23:16:31
>>641
compsysは無しかよw
645:名無しさん@お腹いっぱい。
07/02/18 02:04:24
その1000行のzshrcを見せてもらおうか
646:名無しさん@お腹いっぱい。
07/02/18 20:08:40
一行一レスでいいから
647:名無しさん@お腹いっぱい。
07/02/24 10:43:48
htmlで終わるファイルが存在すれば"Exist"と表示させたいとして、
zsh で、
if [ -e *html ];then echo "Exist";fi
とすると、
zsh: no matches found: *url
となってしまいます。
shでは期待どおりの動作をします。
zshで期待のどおりの動作をするにはどうすればよいでしょうか?
648:名無しさん@お腹いっぱい。
07/02/24 11:22:11
setopt NULL_GLOB
649:647
07/02/24 11:56:49
ありがとうございました。
こうすると、上の問題は解決しましたが、htmlで終わるファイル名を表示しようとして
ls *html
とすると、ディレクトリにhoge.htmlがあっても
ls: *html: そのようなファイルやディレクトリはありません
と出ようになりました。
この問題を解決避けるには、
いちいち、setopt NULL_GLOB, setopt GLOB
をしなければならないのでしょうか?
650:647
07/02/24 12:09:56
if noglob [ -e *html ];then echo "Exist";fi
としてもいいみたいですね。
651:名無しさん@お腹いっぱい。
07/02/24 12:41:46
echo {1..3}
で
1 2 3
となります。
echo {a..c}
では
{a..c}
です。
これを
a b c
とするように出来ないでしょうか?
652:名無しさん@お腹いっぱい。
07/02/24 12:50:38
出来ない
653:名無しさん@お腹いっぱい。
07/02/24 12:51:43
bashならできる
654:名無しさん@お腹いっぱい。
07/02/24 13:24:36
>>651
setopt brace_ccl
echo {a-z}
655:名無しさん@お腹いっぱい。
07/02/24 13:33:21
{a..c}を、という質問なわけだが、、
656:651
07/02/24 13:55:06
>>652-655
ありがとうございます。
{a..c}
ではできない、やりたかったら、
>>654
のようにしろ、ってことですね。
ありがとうございました。
657:名無しさん@お腹いっぱい。
07/02/24 20:36:40
mycomの連載、3回目は履歴に関して
658:名無しさん@お腹いっぱい。
07/02/24 22:04:30
>647
noglob と nullglob を混同してない?
noglob は glob しなくするオプション(globの否定)だけど、
null_glob はそれとは違うよ。
オレの環境では null_glob をセットしてもそんなエラーにはならないんだけど。
659:名無しさん@お腹いっぱい。
07/02/24 22:15:22
unsetopt nomatch してるんじゃ?
660:名無しさん@お腹いっぱい。
07/02/24 23:08:41
まあ *.html(N) でいい
661:名無しさん@お腹いっぱい。
07/02/24 23:32:56
mycomの今回のはあまり参考にはならんかった。zsh初心者向けぽいな。
ちなみに俺は履歴関連はこんだけオプション有効にしてる。
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
662:名無しさん@お腹いっぱい。
07/02/25 00:08:02
漢漢と五月蝿い記事だなあ。
663:名無しさん@お腹いっぱい。
07/02/25 09:20:45
誰か $path から存在しないディレクトリを削除するコードを書いてくれ
664:名無しさん@お腹いっぱい。
07/02/25 10:22:44
手元の .zshenv より
addpath () {[[ -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
...
665:647
07/02/25 12:49:04
>>658
すみません。ウソ言ってました。
>こうすると、上の問題は解決しましたが、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でした。
666:名無しさん@お腹いっぱい。
07/02/25 14:39:20
試さずにかいたが、-e *html(N) って常に真を返さないか
667:647
07/02/25 15:37:36
>>666
そうですね汗
またまたいいかげんなこと言ってしまいました。
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
が正しいようです。
668:名無しさん@お腹いっぱい。
07/02/25 16:29:49
1) は setopt NO_GLOB では。
NULL_GLOB だと多分 *html(N) と変わらないよ。
あと、特に [ に拘らなければ
[[ -e *html ]] でもいいかな。
669:名無しさん@お腹いっぱい。
07/02/25 17:29:32
$ touch test.html
$ [ -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
670:名無しさん@お腹いっぱい。
07/02/25 17:39:18
[[ ]] はグロブを展開しないぽい
[ はコマンド扱い? (これも builtin だよね)
671:名無しさん@お腹いっぱい。
07/02/25 17:55:15
>>647の
htmlで終わるファイルが存在すれば"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
672:名無しさん@お腹いっぱい。
07/02/25 17:59:40
案外、簡単に処理できないもんだな。気付かずに罠にはまりそう。
昔ながらのやり方が安全かw
if ls | egrep '\.html$' >/dev/null; then echo Exists; fi
673:名無しさん@お腹いっぱい。
07/02/25 18:13:15
glob関連はNOMATCH, NULL_GLOB, CSH_NULL_GLOB とオプションがあってよくわからん。
参考:
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
URLリンク(www.ayu.ics.keio.ac.jp) (man zshoptions)
674:名無しさん@お腹いっぱい。
07/02/25 18:33:09
nomatchは途中で処理が止まるから厄介
$ echo *UNKO; echo AAAAAAAAAAAAAAAAAAAAAAAA
zsh: no matches found: *UNKO
$
675:名無しさん@お腹いっぱい。
07/02/26 07:55:40
>>669
> $ [ -e *.html ] && echo found || echo not found
↑は .html ファイルが2つ以上ある場合は動かない.
[ -e `ls -1 *.html|head -n 1` ] && echo found || echo not found
だとちゃんと動くが、もっとスマートなやり方はないものか...
676:名無しさん@お腹いっぱい。
07/02/26 07:59:19
>>675 の訂正.
> $ [ -e *.html ] && echo found || echo not found
は zsh では動くね. bash では動かないけど.
でも混乱を避ける為に、↑のように書くのは良くないだろう
677:名無しさん@お腹いっぱい。
07/02/26 08:34:32
サブシェル使ってよければ
(for f in *.html; do [ -f "$f" ] && return 0; done; return 1) && echo aru || echo nai
/bin/shで動く筈。
678:名無しさん@お腹いっぱい。
07/02/26 11:03:52
もう外部コマンド使って
ls *.html | wc | awk '{print $1}'
でいいじゃん
679:名無しさん@お腹いっぱい。
07/02/26 11:18:07
アホ現る
680:名無しさん@お腹いっぱい。
07/02/26 21:05:11
[ `echo -n *.html(N) | wc -l` -gt 0 ]
681:名無しさん@お腹いっぱい。
07/02/26 21:26:59
[[ -n `echo *html(N)` ]] && echo Exist || echo # うまくいく
[[ -n `echo` ]] && echo true || echo false # false
[ -n `echo *html(N)` ] && echo Exist || echo # 常にExist, だめ
[ -n `echo` ] && echo true || echo false # true
682:名無しさん@お腹いっぱい。
07/02/27 02:46:16
[[ls *.html && $? ]] じゃ駄目なわけ?
683:名無しさん@お腹いっぱい。
07/02/27 02:47:37
``わすれた・・・
684:名無しさん@お腹いっぱい。
07/02/27 02:48:42
しかも-aだね。逝ってきます。
685:名無しさん@お腹いっぱい。
07/03/02 22:11:55
mycomの連載、更新されていたけどツッコミどころが幾つかあるな
686:名無しさん@お腹いっぱい。
07/03/03 01:23:44
よしつっこめ。
687:名無しさん@お腹いっぱい。
07/03/03 03:11:14
ショートカットキーという言い方は気持が悪いな
688:名無しさん@お腹いっぱい。
07/03/05 01:38:58
最近はてブのホットエントリでzsh関連のをちょくちょく見掛けるけどなんかあったのかしら。
689:名無しさん@お腹いっぱい。
07/03/05 06:18:24
そういう連中にとってzshがクールでナウいんだよ。
690:名無しさん@お腹いっぱい。
07/03/07 18:55:38
localeがちゃんとしてたらja_JP.SJISでも動きますか?
691:名無しさん@お腹いっぱい。
07/03/07 19:17:30
ナニが?
692:名無しさん@お腹いっぱい。
07/03/08 01:16:40
カーソル移動とかプロンプト等の桁数計算とかSJIS2バイト目のメタキャラクタ無視とか。
693:名無しさん@お腹いっぱい。
07/03/16 10:04:06
あれ?
% autoload predict-on
% predict-on
predict-on:zle:5: can only be called from widget function
694:名無しさん@お腹いっぱい。
07/03/16 14:01:13
錫癜
695:名無しさん@お腹いっぱい。
07/03/16 20:44:04
>693
ウチではそのエラー出ないよ
ところで、恥ずかしながら predict-on は知らなかったですよ。
696:名無しさん@お腹いっぱい。
07/03/24 22:24:26
>>663-664
久しぶりに見たから1ヶ月前へのレスだけど
path=($path(N))
でいけない?
697:663
07/03/24 23:10:35
user@ubuntu:~$ zsh -f
ubuntu% 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)) でうまくいくみたいですね。
698:名無しさん@お腹いっぱい。
07/04/03 14:48:38
suffix alias がコマンドでも展開されて欝
699:名無しさん@お腹いっぱい。
07/04/10 17:16:19
mycom の連載見て、bash から乗り換えたら欝
bash
$ sudo rm ~foo (~foo -> /home/foo のシンボリックリンク)
シンボリックリンク ~foo が消える
zsh
% sudo rm ~foo (~foo -> /home/foo のシンボリックリンク)
Error: foo はディレクトリ
% sudo rm -r ~foo
ホームディレクトリが消える orz
700:名無しさん@お腹いっぱい。
07/04/10 17:21:46
まさか '~foo' ってファイルを作ったのか?
ニョロ展開をやめさせたいんなら
./~foo って指定すればいいし何が言いたいのかわからん
701:名無しさん@お腹いっぱい。
07/04/10 17:24:47
>>700
違うよ。
俺は意味わかった。zshが ~の展開の際にシンボリックリンクをたどってしまう
という問題だね。Error: foo はディレクトリ の時点で気づくべき。
702:名無しさん@お腹いっぱい。
07/04/10 17:32:22
いまいちよくわらん。
foo アカウントのホームディレクトリが /usr/home/foo とかになってて、
それが /home/foo へのシンボリックリンクになってる、とかそんな感じ?
つーかなんで rm -r なんてする気になったんだろ。
703:名無しさん@お腹いっぱい。
07/04/10 17:39:59
同じく意味がわからん
少なくとも問題という意識はわからん
(動作の話はそういうものとしか言いようがないし...
>702 も言う通り -r はそれこそ意図的じゃん)
704:名無しさん@お腹いっぱい。
07/04/10 17:41:06
unsetopt chaselinks
で解決したりする?
705:名無しさん@お腹いっぱい。
07/04/10 17:44:18
シンボリックリンクに対して rm -r しても、
そのシンボリックリンクが消えるだけ(先までたどらない)からだろ。
多分、rmでエラーが出たから rm -r にしただけだろ。
まさか、~foo が実体ディレクトリを指してるとは頭から思ってないから、
シンボリックリンクを消す意味で気軽に rm -r したと。
706:名無しさん@お腹いっぱい。
07/04/10 17:57:57
>>705
その「エラーが出たから -r」ってのが意味わからん。
-f ならまだわかるけど。
707:名無しさん@お腹いっぱい。
07/04/10 18:00:07
で、「~foo」っていうファイルはあったのか?
なかったのか?
708:名無しさん@お腹いっぱい。
07/04/10 18:01:32
>>707
お前ずれてる。~fooなんてファイルの話じゃない。
709:名無しさん@お腹いっぱい。
07/04/10 18:02:21
>>708
んじゃどういう話?
710:名無しさん@お腹いっぱい。
07/04/10 18:03:09
>>709
読解力ない香具師だなぁ。
711:名無しさん@お腹いっぱい。
07/04/10 18:04:16
>>710
すまんね。
詳細教えてくれよ。
712:名無しさん@お腹いっぱい。
07/04/10 18:06:19
/etc/passwd には、/usr/home/foo で登録されてる。
/usr/home/foo はシンボリックリンクで、実体の /home/foo を指している。
この状態で、~foo というチルダ展開は、
bashだと /usr/home/foo に展開されるが、
zshでは /home/foo に展開される。
という問題。
713:名無しさん@お腹いっぱい。
07/04/10 18:08:27
では>>699さん、正解をどうぞ。
714:699
07/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
私が悪いので、皆さん正解です。
715:名無しさん@お腹いっぱい。
07/04/10 21:05:19
シンボリックリンクを消すならunlink
716:名無しさん@お腹いっぱい。
07/04/10 22:04:28
そういえば mycom の連載があったな。すっかり忘れてた。
つっこもうと思ってそれっきりだった。
717:名無しさん@お腹いっぱい。
07/04/10 22:40:44
>>716
では遠慮なくツッコメ。
718:名無しさん@お腹いっぱい。
07/04/10 23:55:45
けっきょく ~foo あったんじゃん。
719:名無しさん@お腹いっぱい。
07/04/11 02:25:44
シンボリックリンクにrm -rやったのがまずいよ。
720:名無しさん@お腹いっぱい。
07/04/11 07:12:17
>>718
なんでやねん。欲嫁。
>>714 では、
$ ln -s /home/foo ~foo
と実行してるから、~fooという名前のsymlinkはできない。
~fooという名前のsymlinkを作るためには、
$ ln -s /home/foo '~foo'
のように、クォートするなり、./~foo みたいに ./を付けるなりしないといけないから。
721:名無しさん@お腹いっぱい。
07/04/11 07:14:15
>>719
シンボリックリンクにrm -rやること自体はまずくない。(変ではあるが)
まずかったのは、それがシンボリックリンクではなかったこと。
722:名無しさん@お腹いっぱい。
07/04/11 08:37:49
>721
いや、シンボリックリンクに対して rm -r するのはおかしいよ。
-r オプションは「当該ファイルをディレクトリとみなして中身もいっしょに
消す」という意図のオプションだから、仮に rm で消せなかったとしてもシン
ボリックリンクだと認識しているファイルに使うのがまずヘン。
だって中身を消したかったわけじゃないでしょ。
723:名無しさん@お腹いっぱい。
07/04/11 09:45:48
>>714
> として /bar/~foo を作ったのですが、
って言ってるんだから、
~foo っていうファイル名のファイル (シンボリックリンク) が
あったんじゃないの?
724:名無しさん@お腹いっぱい。
07/04/11 09:53:03
>>723
そこは確かに曖昧だが、質問者の理解不足によるものだろう。
ln -s /home/foo ~foo
を実行してシンボリックリンクを作っている以上、
~fooは展開されて、実際のパス名になるから、
「~foo」なんて名前のシンボリックリンクができたわけではないことは明らか。
725:名無しさん@お腹いっぱい。
07/04/11 09:58:53
そもそも元質問者のレベルの人が、~が付いたファイルを作ること自体難しいだろう。
(クォートとかで回避する方法も知らないだろうし)
726:名無しさん@お腹いっぱい。
07/04/11 10:30:52
> /bar/~foo を作った
zsh とか以前に極めて悪趣味
> シンボリックリンクにrm -rやること自体はまずくない。(変ではあるが)
まあそうだけど "まずいかどうか" じゃなくて
「意味を理解せず(考えず)」に -r というのは銃殺刑確定
"(変ではあるが)" に集約されるけどな
727:699
07/04/11 23:44:00
すいません、今回の件は zsh と関係ありませんでした。
原因は、「~ユーザ名」と「~非ユーザ名」で挙動が異なる事を知らなかったという
私の理解不足にあります。
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 の初歩的な事でスレを汚してしまい、
申し訳ないです。
728:名無しさん@お腹いっぱい。
07/04/11 23:51:24
>727
なるほどね。いや悪いってわけじゃないです。
ただ ~user という用法をしらない人がいると
誰も思わなかったから「ネタだろ」位に皆思ってただけで...
729:名無しさん@お腹いっぱい。
07/04/12 02:39:00
ここがUNIX板でよかったね。
730:名無しさん@お腹いっぱい。
07/04/13 09:32:32
ところでディレクトリに張った
シンボリックリンクをrm -rすると実際どうなるの?
731:名無しさん@お腹いっぱい。
07/04/13 09:34:23
>>730
それくらい実験してみろよ。
そのシンボリックリンクだけが消えるだけだよ。
732:名無しさん@お腹いっぱい。
07/04/13 14:53:23
この流れワロタ
733:名無しさん@お腹いっぱい。
07/04/13 20:52:19
% echo {001..005}\\n
001
002
003
となって2行目以降にスペースが入ってしまうのは
なんででしょうか?
734:名無しさん@お腹いっぱい。
07/04/13 20:57:26
001\\n 002\\n 003\\n 004\\n 005\\n に展開されるから
735:名無しさん@お腹いっぱい。
07/04/14 02:35:54
>>734 ありがとうございます。
とすると余計な空白なしに出力するのに
最もシンプルな書き方はどうなるのでしょう
echo {001..005} | tr "[:space:]" "\n"
だとベストではないですよね
736:名無しさん@お腹いっぱい。
07/04/14 02:55:22
シンプルというか真っ先に思い付くのは
for i in {001..005}; do echo $i; done
とか。zsh のことだから省略記法があるのかな。
737:名無しさん@お腹いっぱい。
07/04/14 02:58:56
と書きつつ思い付いた。print -l {001..005} でいいか。
738:名無しさん@お腹いっぱい。
07/04/17 22:38:46
zsh 4.3.3 released
739:名無しさん@お腹いっぱい。
07/04/21 00:26:43
zsh 4.3.4 releases
740:名無しさん@お腹いっぱい。
07/04/21 05:16:08
情報ゼロワロタ
URLリンク(journal.mycom.co.jp)
741:名無しさん@お腹いっぱい。
07/04/21 08:01:49
「マルチバイトサポート」って何回言った?て感じ
742:名無しさん@お腹いっぱい。
07/04/21 09:03:22
>>740
書いたあと一回でも読み返したとは思えん文だなw
743:名無しさん@お腹いっぱい。
07/04/21 10:58:42
> 4.3.4は機能拡張を実施したメジャーリリース。
??メジャーリリース?
744:名無しさん@お腹いっぱい。
07/04/21 11:53:18
そっとしといてやろうぜ…。
745:名無しさん@お腹いっぱい。
07/04/22 02:10:35
ちんこ
746:名無しさん@お腹いっぱい。
07/04/22 04:04:57
ホームをNFSで共有する環境で起動が異常に遅い事があったけど
原因が compinit する時にNFSで共有してる .zcompdump へのロックだったので
compinit -d /tmp/$USER.zcompdump
とかしたら幸せになれた
747:名無しさん@お腹いっぱい。
07/04/27 10:44:22
ウォーニングだバカ……
748:名無しさん@お腹いっぱい。
07/05/06 19:10:15
こんな人が記事書いているのかと思うと。
749:名無しさん@お腹いっぱい。
07/05/06 20:06:07
% echo 'a
c
d'
複数行の履歴を編集する時に改行のつもりで RET を打鍵すると accept-line
が呼ばれてしまうのだけど、これを回避する方法ってありますか?
750:名無しさん@お腹いっぱい。
07/05/06 20:11:17
>>749
C=v C-j かな?
751:名無しさん@お腹いっぱい。
07/05/07 06:14:08
>>750
できました。ありがとう
752:名無しさん@お腹いっぱい。
07/05/09 12:10:15
...微妙な記事だ
URLリンク(journal.mycom.co.jp)
753:名無しさん@お腹いっぱい。
07/05/09 13:01:30
おまいも微妙だな
754:名無しさん@お腹いっぱい。
07/05/09 13:17:14
zsh-loversにのってるような変態tipsを紹介すればいいのに
755:名無しさん@お腹いっぱい。
07/05/25 03:27:08
builtin sleep が欲しいなと思ったら zselect -t が使えた
756:名無しさん@お腹いっぱい。
07/05/25 04:26:49
bash の complete-into-braces (M-{) って zsh だと
どうすればいいんでしょうか?
757:87
07/06/09 00:33:14
% wget URLリンク(www.zsh.org)
% tar xzvf zsh-4.3.4.tar.gz
% cd zsh-4.3.4
% ./Util/preconfig
% ./configure --enable-multibyte --enable-locale
% make
% sudo make install
どこに記述すればいいんだいよう
758:名無しさん@お腹いっぱい。
07/06/14 03:25:54
tab補完でtab押すごとに補完候補が順に入力された状態になるけど
行き過ぎたときに戻る方法ってありませんか?
shift+tabとか押してみたけどダメだった
759:名無しさん@お腹いっぱい。
07/06/14 03:28:36
Ctrl+Pは?
760:名無しさん@お腹いっぱい。
07/06/14 03:40:28
>>759
コマンド自体が一個前のに戻るだけでした
761:名無しさん@お腹いっぱい。
07/06/14 05:52:05
>>758
# 補完候補を←↓↑→で選択。
zstyle ':completion:*:default' menu select true
で、矢印キーで移動するのはダメですか?
762:名無しさん@お腹いっぱい。
07/06/14 09:37:53
自分は undo を使う
763:名無しさん@お腹いっぱい。
07/06/14 11:34:06
>>758
C-/
764:名無しさん@お腹いっぱい。
07/06/14 15:27:19
みなさんレスありがとうございます
>>761
おぉ、そんな便利なこともできるんですね
>>762
>>763
できました
765:名無しさん@お腹いっぱい。
07/06/14 21:35:57
undo したあと redo ってどうやりますか?
766:名無しさん@お腹いっぱい。
07/06/14 23:03:04
unko したあと redo ってどうやりますか?
767:名無しさん@お腹いっぱい。
07/06/15 10:39:14
>>766
気合いで尻の穴に吸い込め
768:名無しさん@お腹いっぱい。
07/06/15 12:23:07
redoをbindkeyで好きなキーに割り当てればいいのではないでしょうか
769:名無しさん@お腹いっぱい。
07/06/17 12:07:51
あるコマンドで hogehoge=filename などとファイル名を渡すときに、
=(nannkano_command) の一時ファイルで物臭をやろうとすると
hogehoge==(nannkano_command) となって == の解釈でエラーに
なってしまう。エスケープしても別のエラーになる。うまくやる方法は
ないかな。
770:名無しさん@お腹いっぱい。
07/06/17 12:23:31
zfsから誘導されてきました
スレリンク(unix板:27番)
できればこのキチガイをzshから出さないようにしてください。
迷惑です。
771:名無しさん@お腹いっぱい。
07/06/17 12:35:51
>>769
$ hogehoge='=(nannkano_command)'
$ echo "$hogehoge"
=(nannkano_command)
↑ってできるけど、これじゃ駄目なの?
772:名無しさん@お腹いっぱい。
07/06/17 12:57:39
いや駄目だと思うが…
773:名無しさん@お腹いっぱい。
07/06/17 13:03:22
>769
=(command) の一時ファイルはすぐ消えちゃうよ。かりに hogehoge=... に渡せても、それを再利用したときにはもう消えてると思うんだけど、どういう風に利用することを考えているの?
っていうか、やりたいのは `...` の方だったりしない?
あと、わたしの手元では
hogehoge==(command)
でも一時ファイル名はちゃんと取れるけどなあ。
774:名無しさん@お腹いっぱい。
07/06/17 13:33:25
>>773
ファイルの要る部分だけを抜き出して渡したいんですよ。履歴に突っ込んでおいて
たまに呼び出したいぐらいの軽い用途です。
たしかに単独の変数代入だと自分ところでも動きますが、コマンド途中だとエラーに
なってしまいます。例えば、
$ echo hogehoge==(command)
zsh: not found
775:名無しさん@お腹いっぱい。
07/06/17 19:10:37
watch と打ったあとに引数のところでコマンド名の補完して欲しいんだけど
どう設定したらいいですか?
776:名無しさん@お腹いっぱい。
07/06/17 19:19:04
compdef _precommand watch
かな
777:名無しさん@お腹いっぱい。
07/06/17 19:29:19
>>776
できました
ありがとうございます
bashから乗り換えたけど色々と便利ですね
778:名無しさん@お腹いっぱい。
07/06/27 03:40:21
拡張子に応じたコマンドを自動実行
URLリンク(journal.mycom.co.jp)
779:気まぐれアナスイ
07/06/27 11:53:22
>>778
なるほど? そういう事ですか…
780:名無しさん@お腹いっぱい。
07/06/27 13:56:37
mycom の zsh の連載、まだ続いてたのか
781:名無しさん@お腹いっぱい。
07/06/27 14:50:24
こないだなんかネタを募集してたぞ
URLリンク(journal.mycom.co.jp)
782:名無しさん@お腹いっぱい。
07/07/01 21:04:02
bindkey -v でコマンドスタックが使えないんですが
bindkey '^Q' push-line だとだめ、bindkey の出力にはちゃんとでてるのに
bindkey '^P' push-line だとできるが P は別で使ってるので...
bindkey -v の人スタックどうしてるんだろう?使ってないとか?
783:名無しさん@お腹いっぱい。
07/07/03 04:42:58
bindkey "^Q" push-lineで普通に使えるが。
784:名無しさん@お腹いっぱい。
07/07/03 16:58:40
今までtcshを使っていましたが、 zshならscreenでsshをする場合、
screenのウィンドウ名にログイン先のホスト名が自動で付けれる ので最近zshに乗り換えたものです。
聞きたいのですが、
% history
1 less .zshrc
2 ls
3 man man
4 history
という履歴において先ず、l(小文字のLです)とタイプして ↑を押す時、
tcshの場合は 「history」 や 「man man」 を飛ばして ll(小文字のLです)から始まる 「ls」 を表示してくれますが
zshの場合は 「history」 と表示されます。
ネットで調べたら
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
と.zshrcに書いて Ctrl+P、Ctrl+Nでtcsh上の矢印を使った履歴検索が実現できました。
しかし、自分はやはり慣れた↑や↓を使いたいのですが どう書けばzshで実現できるのでしょうか?
どなたかご教授おねがいします。
785:名無しさん@お腹いっぱい。
07/07/03 18:48:30
bindkey で矢印キーに割り当てる
786:名無しさん@お腹いっぱい。
07/07/03 18:48:48
"^[[A" "^[[B"っつーことか?
ついでに「ご教授」でもググってみることをすすめるとく
787:784
07/07/03 20:33:42
>>785
そうなんです 結局矢印キーは
どういうコードで表わされるかを
聞きたかったんです。
意味不明な文ですみませんでした。
>>786
ありがとうございました。
"^[[A" "^[[B" で実現できました。
「ご教授」を「教えてください」の丁寧語の意味で使っていました。
こういう場合は「ご教示」なのですね。
失礼しました。
788:名無しさん@お腹いっぱい。
07/07/03 20:40:42
通常の設定なら、「Ctrl-v 何らかのキー」でそのキーの端末コードがわかる
789:名無しさん@お腹いっぱい。
07/07/03 23:02:51
> screenのウィンドウ名にログイン先のホスト名が自動で付けれるので最近
> zshに乗り換えたものです。
自動で付けてくれるような機能あんだっけ?
790:784
07/07/03 23:27:25
>>788
あっ 本当ですね
こんな機能、全く知りませんでした。
教えてくれてありがとうございました。
>>789
すみません、文章が不正確でした。
正しくは、.zshrcに
function ssh_screen(){
eval server=?${$#}
screen -t $server ssh "$@"
}
if [ x$TERM = xscreen ]; then
alias ssh=ssh_screen
fi
を記述したらできます。
URLリンク(d.hatena.ne.jp)
でも自分の環境は2行目の
eval server=?${$#}
で失敗するので、この2行目を
A=$#
eval server=$"$A"
としています。
791:名無しさん@お腹いっぱい。
07/07/03 23:41:57
「教授する」という動詞もあるので「ご教授願います」でも構わない、
と聞いたこともある。
792:名無しさん@お腹いっぱい。
07/07/04 00:52:42
単に大仰かどうかという話だ
793:名無しさん@お腹いっぱい。
07/07/04 01:11:04
>>790
これはリモートでコマンドを実行するんじゃなくて、リモートログインするという前提なのか?
それなら
function ssh_screen {
screen -t $@[-1] ssh "$@"
}
とかでいいんじゃないの。
794:784
07/07/04 02:12:45
>>793
>これはリモートでコマンドを実行するんじゃなくて、リモートログインするという前提なのか?
そうです。
>function ssh_screen {
> screen -t $@[-1] ssh "$@"
>}
>とかでいいんじゃないの。
今まで動けばいいと思って、大して気にしていませんでした。
指摘されたこの機会に見直してみました。
自分はsshを使うとき
% ssh ホスト名 -l リモートのユーザー名
と使うので
function ssh_screen {
screen -t $1 ssh "$@"
}
としてみました。
795:名無しさん@お腹いっぱい。
07/07/04 08:46:05
>>791
間違いではないが、
本来言いたいこととは意味がちょっと違う。
URLリンク(www.tt.rim.or.jp)
796:名無しさん@お腹いっぱい。
07/07/07 00:11:03
スレリンク(unix板:132-133番)n
に「諸君、私はzshが好きだ」が張られているわけだが。
どうしてこのスレに書かないのか疑問だ。w
797:名無しさん@お腹いっぱい。
07/07/07 00:27:05
>>796
「zsh! zsh! zsh!」
798:名無しさん@お腹いっぱい。
07/07/09 04:54:36
今いるフォルダ(フォルダ名:number)に one two three というフォルダがあるとして
ls *~two
とすると one three が表示されます
cd ..
ls number/*~two
だと one two three が全部表示されてしまって two が除外されないのですがなぜでしょうか?
つД`) タスケレ !!
799:名無しさん@お腹いっぱい。
07/07/09 07:31:37
ls number/*~number/two とか。
800:名無しさん@お腹いっぱい。
07/07/09 09:49:08
ls number/(*~two)
801:名無しさん@お腹いっぱい。
07/07/09 15:09:44
プロンプトに%~を入れているのですが、
プロンプト(または%~)の長さが一定以上なら改行して次の行の先頭に
> を出すようにしたいと考えているのですが、
そういうことできますか?
長さによって次のうち適当な方になるようにしたい↓
通常:
~/どこそこ>
長いとき:
~/じゅげむじゅげむごこうのすりきれぱいぽぱいぽ
>
802:名無しさん@お腹いっぱい。
07/07/09 15:29:41
LF=$'\n'
PROMPT="%~%20(l.$LF.)> "
803:名無しさん@お腹いっぱい。
07/07/10 02:54:30
ありがとうございます。条件分岐なんてできたんですね。
804:名無しさん@お腹いっぱい。
07/07/10 03:00:37
LFを定義するかわりに
PROMPT='%~%20(l,
,)> '
と書いてもいけました。
805:名無しさん@お腹いっぱい。
07/07/10 09:17:30
こんなことしてみた
zstyle -e ':completion:*:processes' command '
[[ "$oldcontext" = *sudo* ]] &&
reply=("ps -e") ||
reply=("ps -u $USER")
'
きもいので没リスト行き。
806:798
07/07/11 17:45:11
>>799, 800
ありがと━(・∀・)━!!!!
アクセス規制で返事遅れ orz
807:名無しさん@お腹いっぱい。
07/07/28 11:04:19
parent_dir1/subdir/hoge.txt
parent_dir1/subdir/fuga.txt
parent_dir2/aho.txt
parent_dir2/aho2.txt
みたいな状態で子ディレクトリ(parent_dir1/subdir/ or parent_dir2/)単位に
処理をしたいとします。
for dir in *(/)
do
targetdir=$(echo ${dir}/*...) <= ここに$dirの下に子dirがあればソレ
以下いろいろ処理 なければ$dirを targetdirにセットしたい
done
*(/) にマッチしなければ . にマッチとか
何か条件マッチするglob みたいなことってできないんでしょうか?
808:名無しさん@お腹いっぱい。
07/07/31 15:38:01
>>807
末端のディレクトリだけを対象にしたいということ?
findを使うのはダメですか?
find ./ -type d | while read dir
do
if [ -z $(find $dir -mindepth 1 -maxdepth 1 -type d) ]
then
# dirに対する処理
fi
done
809:名無しさん@お腹いっぱい。
07/07/31 16:09:27
エントリごとにfind起動しなくても、
postorderで出力させて文字列マッチでいいんじゃない。これでどう?
dir0=
find -d topdir -type d | while read -r dir
do
case "$dir0" in
"$dir"/*) ;;
*) echo "$dir";; # dirに対する処理
esac
dir0="$dir"
done
findにファイル名中の改行を出力するとき\を前置するオプションが欲しい。
つまり-rなしのreadと対で使えるような。
810:名無しさん@お腹いっぱい。
07/07/31 16:53:45
なるほど一つ前のdirを覚えておいて
それをマッチさせるってことか。
>末端のディレクトリだけを対象にしたいということ?
そういうことだったんですが、
結局お目当てのファイルが当該ディレクトリにあるかどうかを
判別して処理みたいなことをしてしまいました
for dir in *(/)
do
subdir=''
for sd in ${dir}/**/*(#qN/) ${dir}
do
if [[ -e omeate-file-name ]]; then
subdir=$sd
break
fi
done
# subdir での処理
done
811:名無しさん@お腹いっぱい。
07/08/09 05:47:45
screenのtitleを実行中のコマンド名に自動的にかえることができるらしいので、
^[k^[\ ( ^[ はエスケープ文字)をPROMPTの頭に追加したところ、
候補のリストがプロンプト行の下に複数行にわたって出てくるような補完を実行したり、
折り返しのある行の履歴をesc+kで戻って(vi modeです)編集したりするときに、
カーソルが4バイト分右にずれたり、一行上にずれたりよくわからない動作をするように
なってしまいました。
setopt no_always_last_prompt で、複数行の候補の出る補完をした際のずれは
なくなったんですが、コマンド履歴からの行編集はやはりカーソルが一行上や
4バイト右にずれます。
対処法ご存知の方いらっしゃいませんか。
812:811
07/08/09 05:49:05
--- .zshrcからsetoptとPROMPTの部分を抜粋
setopt no_always_last_prompt
setopt auto_cd
setopt auto_list
setopt auto_pushd
setopt no_auto_remove_slash
setopt no_extended_history
setopt glob_dots
setopt hist_ignore_all_dups
setopt hist_reduce_blanks
setopt hist_save_no_dups
setopt no_hup
if [ ! "$STY" -o "$WINDOW" = 0 ]; then
setopt ignore_eof
fi
setopt inc_append_history
setopt no_list_beep
setopt no_prompt_cr
setopt prompt_subst
setopt pushd_ignore_dups
setopt rm_star_silent
setopt no_share_history
if [ "$STY" ]; then
PROMPT='^[k^[\%{$prompt_color%}[%n@%m:%d]%#%{$reset_color%} '
else
PROMPT='%{$prompt_color%}[%n@%m:%d]%#%{$reset_color%} '
fi
色つける部分とってみても結果は同じでした。
813:名無しさん@お腹いっぱい。
07/08/09 06:24:11
>>811
812の中に答あるじゃん。
814:811
07/08/11 13:01:42
^[k^[\ を %{ %} でくくったらなおった模様。 813は答を書かないなら黙ってろ。
815:名無しさん@お腹いっぱい。
07/08/12 02:33:12
誰が何書こうがいいんじゃね。
自分の欲しい答じゃないと逆ギレするくらいなら最初からこんなとこで質問するなよ。
816:名無しさん@お腹いっぱい。
07/08/12 02:47:46
まあこの手の質問には「OS入れなおせ」とかトンチンカンな答え返す香具師がいるからね。
817:名無しさん@お腹いっぱい。
07/08/12 11:01:02
>>814
夏ですねー。
818:名無しさん@お腹いっぱい。
07/08/24 13:34:45
これってどう発音するの?
ゼットシェル
ゼットエスエッチ
ズィーシェル
ズィーエスエッチ
ズィーッシュ
おれは心の中で、いつも最後のやつで呼んでいるお。
819:名無しさん@お腹いっぱい。
07/08/24 13:43:30
>>818
UNIXに関する言葉のひらがな読みスレッド
スレリンク(unix板)
820:名無しさん@お腹いっぱい。
07/08/24 14:00:58
>>818
ズドラービスチェ
821:名無しさん@お腹いっぱい。
07/08/24 16:35:03
ザッシュと心の中で発音してるかな。
bash(バッシュ)とかash(アッシュ)の流れ。
でもcsh(シーシェル)、tcsh(ティシーシェル)、ksh(コーンシェル)だったりするけど。
822:名無しさん@お腹いっぱい。
07/08/24 16:52:32
もう>>819に移動したみたいよ。
823:名無しさん@お腹いっぱい。
07/09/15 00:01:52
zshのプロンプトが勝手に左端に戻ってしまうのを避ける方法はありますか?
たとえば、
perl -e 'print "hoge"'
すると、(プロンプトを[PROMPT]と書くとして)
hoge[PROMPT]
が一瞬で
[PROMPT]
にもどってしまうのでhogeが出力されたのか判別できなくて困るときがあります。
気を付けているときはよいですが、Perlのプログラムのバグ取りをprint文を使って
行っているとき、これにうっかりしていて嵌まるときあります。
(プログラム中の正規表現で正しく切り取れたか確認するとき等)
bashのときは
hoge[PROMPT]
のままだったのですが、zshでもこういう風にする方法はありますか?
824:名無しさん@お腹いっぱい。
07/09/15 00:19:34
setopt no_prompt_cr
825:823
07/09/15 09:05:38
>>824
解決しました。ありがとうございます!
826:名無しさん@お腹いっぱい。
07/09/15 22:37:35
そういえばいつのまにか prompt_sp なんてのがあるんだね。
promptnl みたいに
unsetopt prompt_cr
PROMPT=$'%{${fg[blue]}[EOO]${fg[default]}\e[$[COLUMNS-7]C \r%}'$PROMPT
(C の後は半角スペース2個)
ってやってるから使う気ないけど。
% のところを任意の文字列/色にできれば prompt_sp に任せるんだけどなあ。残念。
827:名無しさん@お腹いっぱい。
07/09/15 22:39:35
>>787
zkbd ってのもあるよ。まあ要らないかな。
828:名無しさん@お腹いっぱい。
07/09/16 00:04:12
しばらくプロンプトが戻ってこない操作(makeとか)が終了したらbeep鳴らそうと
precmd() {echo -n '\a'}
としてみたけど、流石にうざい。
もっとうまい方法きぼんぬ。
829:名無しさん@お腹いっぱい。
07/09/16 00:06:01
icqとかのwav
830:名無しさん@お腹いっぱい。
07/09/16 00:51:26
make; echo -n '\a' じゃだめなの?
831:828
07/09/16 01:32:53
うん。忘れるから。
832:名無しさん@お腹いっぱい。
07/09/16 01:48:45
eject
833:名無しさん@お腹いっぱい。
07/09/16 03:08:16
>>832
それはbiff用(謎)
834:名無しさん@お腹いっぱい。
07/09/16 03:11:16
コマンド実行時間が一定以上なら音を出す、
とかすればいいのかな。
できるのか知らんけど。
835:名無しさん@お腹いっぱい。
07/09/16 03:29:00
ring_after=$1
shift
(sleep $ring_after; echo ^G^G^G) &
ringer_pid=$!
trap "kill $ringer_pid" CHLD
sh -c $*
思いつきで書いてみた。検証はしていない。
836:名無しさん@お腹いっぱい。
07/09/16 04:24:15
>>834
precmd () { [ $TTYIDLE -gt 10 ] && echo ^G; true }
かな。
837:名無しさん@お腹いっぱい。
07/09/16 06:41:14
threshold=5
precmd () { (( ${+EXEC_SECONDS_START} )) && (( SECONDS - EXEC_SECONDS_START > threshold )) && echo \\a ; unset EXEC_SECONDS_START }
preexec () { (( EXEC_SECONDS_START = SECONDS )) }
とか。TTYIDLE なんてあるんだね。
838:名無しさん@お腹いっぱい。
07/09/16 06:46:58
>>836
最後の true って意味あんの?
839:828
07/09/16 18:47:42
翼をありがとう
ハ_ハ
('(゚∀゚∩ とべるよ!
ヽ 〈
ヽヽ_)
840:名無しさん@お腹いっぱい。
07/09/19 01:39:19
zshで、指定されたこのディレクトリ以下の、XXXX年Y月ZZ日以前に作成されたファイルを一覧し、確認後、
一括削除したいのですが、どのようにすればいいのかわかりますでしょうか?
841:名無しさん@お腹いっぱい。
07/09/19 09:07:11
touch -d YYYYMMDD dummyしておいて
echo **/*(e:'[[ $REPLY -ot dummy ]]':) とか?
ファイルのタイムスタンプじゃなく日付で比較する方法がわからんかった。
**/*(mh+2) でmtimeで2時間以上経ってるファイルってのは示せるな。
h(時間)以外に月や日数は指定できるが、具体的な日付は指定できないようだ。
842:名無しさん@お腹いっぱい。
07/09/19 15:56:58
findでやった方がいいんじゃないか
843:名無しさん@お腹いっぱい。
07/09/19 16:59:02
zshスレでそれを言っちゃあおしめぇよ (?)
844:名無しさん@お腹いっぱい。
07/09/19 20:44:16
あ、やっぱりそうだったんだ。
なんでfind -atime使わないのかと思ってた
845:名無しさん@お腹いっぱい。
07/09/19 21:17:12
findでのやり方を知った上でzshではどうなるかを考えるべきなんだろうけど。
echo **/なんたらだと argument too longになることがあるしね。
846:名無しさん@お腹いっぱい。
07/09/23 10:32:04
select-word-style shell
って multibyte 対応になってからおかしくなったよね。
(( CURSOR += ${#word} ))
ってやってて(wordはこれからまたごうとしている語)、
${#word} が bytes で CURSOR が chars だからみたいだけど。
${#word} を chars で取得する方法か CURSOR を bytes で設定する方法はあるかな。
誰か知らない?
$(wc<<<$word) とかはちょっと重いからなあ。
multibyte parse を自前でやるって手もあるけど。
847:名無しさん@お腹いっぱい。
07/09/27 05:27:16
% echo a b c
a b c
% echo !:2[TAB]
% echo b
% !:0-2[TAB]
% echo a b
知らんかった機能だけどわりと便利かも
848:名無しさん@お腹いっぱい。
07/09/27 11:15:49
csh 由来の古典的な過去履歴参照もいろいろ痕跡は残ってるし
使いこなせば便利な場面はあるんだろうけど
オツムの 使いこなしバッファ の容量がもう溢れてるザンス
849:名無しさん@お腹いっぱい。
07/09/27 15:35:24
c-/ でUndoって紹介されているサイトがあるけど、自分のところではUndoにならん。どして?
850:名無しさん@お腹いっぱい。
07/09/27 15:40:45
bindkey -e
851:名無しさん@お腹いっぱい。
07/09/28 12:22:50
>>849
端末は何?
TeraTermやPoderosaだとだめかも
852:名無しさん@お腹いっぱい。
07/09/28 12:53:11
端末はTeraTerm、sshで入っている。そして、指摘通り駄目だった。
ちなみにホストはVMware上のFreeBSD。こちらも駄目。
もちろん、bindkey -e は有効にしているのだけど、何か方法ありませんか?
853:名無しさん@お腹いっぱい。
07/09/28 18:10:08
stty ?
854:名無しさん@お腹いっぱい。
07/09/28 19:50:38
>>852
UTF-8 TeraTerm Pro with TTSSH2なら何もせずにいける.
URLリンク(sourceforge.jp)
古いTeraTermならこれでいける
URLリンク(www.sakurachan.org)
855:名無しさん@お腹いっぱい。
07/09/29 00:30:55
>>854
UTF-8 TeraTerm Pro with TTSSH2 にしてみたけど、駄目みたい。
c-x u は有効なんだが・・・。
856:名無しさん@お腹いっぱい。
07/09/29 08:44:52
>>855
日本語キーボードだとだめかも
C-_ はどう?
(/ と 右シフトの間のキー)
857:名無しさん@お腹いっぱい。
07/09/29 14:16:30
当方、日本語キーボードです。
C-_でも駄目でした。