[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 15:49 / Filesize : 181 KB / Number-of Response : 858
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

zsh その4



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リンク

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 04:54:36 ]
今いるフォルダ(フォルダ名:number)に one two three というフォルダがあるとして

    ls *~two

とすると one three が表示されます

    cd ..
    ls number/*~two

だと one two three が全部表示されてしまって two が除外されないのですがなぜでしょうか?
つД`) タスケレ !!

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 07:31:37 ]
ls number/*~number/two とか。

800 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/09(月) 09:49:08 ]
ls number/(*~two)

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-_でも駄目でした。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<181KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef