1 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/02 20:03:26 ] zshのスレその4です。 過去スレ zsh入門 pc.2ch.net/test/read.cgi/unix/990283346/ zsh入門 パート2 pc3.2ch.net/test/read.cgi/unix/1036324177/ zsh その3 pc5.2ch.net/test/read.cgi/unix/1080002786/ >>2-3 リンク
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 15:09:44 ] プロンプトに%~を入れているのですが、 プロンプト(または%~)の長さが一定以上なら改行して次の行の先頭に > を出すようにしたいと考えているのですが、 そういうことできますか? 長さによって次のうち適当な方になるようにしたい↓ 通常: ~/どこそこ> 長いとき: ~/じゅげむじゅげむごこうのすりきれぱいぽぱいぽ >
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 15:29:41 ] LF=$'\n' PROMPT="%~%20(l.$LF.)> "
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/10(火) 02:54:30 ] ありがとうございます。条件分岐なんてできたんですね。
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/10(火) 03:00:37 ] LFを定義するかわりに PROMPT='%~%20(l, ,)> ' と書いてもいけました。
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/10(火) 09:17:30 ] こんなことしてみた zstyle -e ':completion:*:processes' command ' [[ "$oldcontext" = *sudo* ]] && reply=("ps -e") || reply=("ps -u $USER") ' きもいので没リスト行き。
806 名前:798 mailto:sage [2007/07/11(水) 17:45:11 ] >>799 , 800 ありがと━(・∀・)━!!!! アクセス規制で返事遅れ orz
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 [2007/08/09(木) 05:47:45 ] screenのtitleを実行中のコマンド名に自動的にかえることができるらしいので、 ^[k^[\ ( ^[ はエスケープ文字)をPROMPTの頭に追加したところ、 候補のリストがプロンプト行の下に複数行にわたって出てくるような補完を実行したり、 折り返しのある行の履歴をesc+kで戻って(vi modeです)編集したりするときに、 カーソルが4バイト分右にずれたり、一行上にずれたりよくわからない動作をするように なってしまいました。 setopt no_always_last_prompt で、複数行の候補の出る補完をした際のずれは なくなったんですが、コマンド履歴からの行編集はやはりカーソルが一行上や 4バイト右にずれます。 対処法ご存知の方いらっしゃいませんか。
812 名前:811 [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/09(木) 06:24:11 ] >>811 812の中に答あるじゃん。
814 名前:811 mailto:sage [2007/08/11(土) 13:01:42 ] ^[k^[\ を %{ %} でくくったらなおった模様。 813は答を書かないなら黙ってろ。
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/12(日) 02:33:12 ] 誰が何書こうがいいんじゃね。 自分の欲しい答じゃないと逆ギレするくらいなら最初からこんなとこで質問するなよ。
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/12(日) 02:47:46 ] まあこの手の質問には「OS入れなおせ」とかトンチンカンな答え返す香具師がいるからね。
817 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/12(日) 11:01:02 ] >>814 夏ですねー。
818 名前:名無しさん@お腹いっぱい。 [2007/08/24(金) 13:34:45 ] これってどう発音するの? ゼットシェル ゼットエスエッチ ズィーシェル ズィーエスエッチ ズィーッシュ おれは心の中で、いつも最後のやつで呼んでいるお。
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/24(金) 13:43:30 ] >>818 UNIXに関する言葉のひらがな読みスレッド pc11.2ch.net/test/read.cgi/unix/1001358861/
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/24(金) 14:00:58 ] >>818 ズドラービスチェ
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/24(金) 16:35:03 ] ザッシュと心の中で発音してるかな。 bash(バッシュ)とかash(アッシュ)の流れ。 でもcsh(シーシェル)、tcsh(ティシーシェル)、ksh(コーンシェル)だったりするけど。
822 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/24(金) 16:52:32 ] もう>>819 に移動したみたいよ。
823 名前:名無しさん@お腹いっぱい。 [2007/09/15(土) 00:01:52 ] zshのプロンプトが勝手に左端に戻ってしまうのを避ける方法はありますか? たとえば、 perl -e 'print "hoge"' すると、(プロンプトを[PROMPT]と書くとして) hoge[PROMPT] が一瞬で [PROMPT] にもどってしまうのでhogeが出力されたのか判別できなくて困るときがあります。 気を付けているときはよいですが、Perlのプログラムのバグ取りをprint文を使って 行っているとき、これにうっかりしていて嵌まるときあります。 (プログラム中の正規表現で正しく切り取れたか確認するとき等) bashのときは hoge[PROMPT] のままだったのですが、zshでもこういう風にする方法はありますか?
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/15(土) 00:19:34 ] setopt no_prompt_cr
825 名前:823 [2007/09/15(土) 09:05:38 ] >>824 解決しました。ありがとうございます!
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/15(土) 22:39:35 ] >>787 zkbd ってのもあるよ。まあ要らないかな。
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 00:04:12 ] しばらくプロンプトが戻ってこない操作(makeとか)が終了したらbeep鳴らそうと precmd() {echo -n '\a'} としてみたけど、流石にうざい。 もっとうまい方法きぼんぬ。
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 00:06:01 ] icqとかのwav
830 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 00:51:26 ] make; echo -n '\a' じゃだめなの?
831 名前:828 mailto:sage [2007/09/16(日) 01:32:53 ] うん。忘れるから。
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 01:48:45 ] eject
833 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 03:08:16 ] >>832 それはbiff用(謎)
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 03:11:16 ] コマンド実行時間が一定以上なら音を出す、 とかすればいいのかな。 できるのか知らんけど。
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 04:24:15 ] >>834 precmd () { [ $TTYIDLE -gt 10 ] && echo ^G; true } かな。
837 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/16(日) 06:46:58 ] >>836 最後の true って意味あんの?
839 名前:828 mailto:sage [2007/09/16(日) 18:47:42 ] 翼をありがとう ハ_ハ ('(゚∀゚∩ とべるよ! ヽ 〈 ヽヽ_)
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/19(水) 01:39:19 ] zshで、指定されたこのディレクトリ以下の、XXXX年Y月ZZ日以前に作成されたファイルを一覧し、確認後、 一括削除したいのですが、どのようにすればいいのかわかりますでしょうか?
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/19(水) 09:07:11 ] touch -d YYYYMMDD dummyしておいて echo **/*(e:'[[ $REPLY -ot dummy ]]':) とか? ファイルのタイムスタンプじゃなく日付で比較する方法がわからんかった。 **/*(mh+2) でmtimeで2時間以上経ってるファイルってのは示せるな。 h(時間)以外に月や日数は指定できるが、具体的な日付は指定できないようだ。
842 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/19(水) 15:56:58 ] findでやった方がいいんじゃないか
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/19(水) 16:59:02 ] zshスレでそれを言っちゃあおしめぇよ (?)
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/19(水) 20:44:16 ] あ、やっぱりそうだったんだ。 なんでfind -atime使わないのかと思ってた
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/19(水) 21:17:12 ] findでのやり方を知った上でzshではどうなるかを考えるべきなんだろうけど。 echo **/なんたらだと argument too longになることがあるしね。
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/27(木) 05:27:16 ] % echo a b c a b c % echo !:2[TAB] % echo b % !:0-2[TAB] % echo a b 知らんかった機能だけどわりと便利かも
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/27(木) 11:15:49 ] csh 由来の古典的な過去履歴参照もいろいろ痕跡は残ってるし 使いこなせば便利な場面はあるんだろうけど オツムの 使いこなしバッファ の容量がもう溢れてるザンス
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/27(木) 15:35:24 ] c-/ でUndoって紹介されているサイトがあるけど、自分のところではUndoにならん。どして?
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/27(木) 15:40:45 ] bindkey -e
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/28(金) 12:22:50 ] >>849 端末は何? TeraTermやPoderosaだとだめかも
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/28(金) 12:53:11 ] 端末はTeraTerm、sshで入っている。そして、指摘通り駄目だった。 ちなみにホストはVMware上のFreeBSD。こちらも駄目。 もちろん、bindkey -e は有効にしているのだけど、何か方法ありませんか?
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/28(金) 18:10:08 ] stty ?
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/28(金) 19:50:38 ] >>852 UTF-8 TeraTerm Pro with TTSSH2なら何もせずにいける. ttp://sourceforge.jp/projects/ttssh2/ 古いTeraTermならこれでいける ttp://www.sakurachan.org/ml/teraterm/msg00422.html
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/29(土) 00:30:55 ] >>854 UTF-8 TeraTerm Pro with TTSSH2 にしてみたけど、駄目みたい。 c-x u は有効なんだが・・・。
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/29(土) 08:44:52 ] >>855 日本語キーボードだとだめかも C-_ はどう? (/ と 右シフトの間のキー)
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/29(土) 14:16:30 ] 当方、日本語キーボードです。 C-_でも駄目でした。