はじめに timeコマンドの実行結果をリダイレクトでファイルに残そうとしたところ,失敗した.ちなみに,timeコマンドはzshの組込みのものを使用. 対処方法 timeコマンドの実行結果は標準エラー出力に表示される. $ time ls > output 2>&1 上記のコマンドで標準エラー出力への内容をファイルに保存できるが,今回はうまくいかない.そこで $ (time ls) > output 2>&1 という具合にtimeコマンドとその引数を括弧でくくってやるとうまくいく.
/opt や ~/opt に色々と突っ込んだはいいがそのたびに .zshenv を書き換えるのが面倒、という人に朗報です。 path=( ~/opt/*/(s|)bin(N-/) /opt/*/(s|)bin(N-/) $path ) これで /opt/hoge/bin や ~/opt/fuga/sbin がまとめて PATH に追加されます。よかったですね。 解説 $path は $PATH と関連づけられた配列変数です。 path=(a b c) すると $PATH が a:b:c にセットされます。 /opt/*/(s|)bin ここは普通の glob です。後に続く (N-/) は zsh の拡張 glob パターンで、カッコホゲホゲを後置するとパターンマッチの動作を変更できるアレです。便利ですね。 N はパターンにマッチするパスがなくても警告を出さず空文字列に置換する指定、 -
他の人がzshを使っているのを見ていると、「もっと便利に使えるのに」と、もやっとしたり、「え、その便利な機能ってなに?」と、発見があったりします。だれかに「この設定をすると便利ですよ」と話しやすくするために、今のzshのおすすめ設定をここに記しておきます。 もし、Emacsも使っている場合はおすすめEmacs設定もどうぞ。 ディレクトリ構成 長年漬け込んできたzshの設定がそこそこの量になっているので、以下のようなディレクトリ構成にして分類しています。主に、zsh標準機能の設定と追加パッケージの設定を分けるためにこうしています。 ~ ├── .zshrc # シェルを起動する毎に読み込まれる。 │ # ~/.zsh.d/zshrcを読み込んで │ # 標準機能の追加設定を行う。 ├── .zshenv # ログイン時に一度だけ読み込まれる。 │ # ~/.zsh.d/zshenvを読み込ん
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
今回はzshの誇る機能の花形とも言える補完機能について紹介しよう。zshの補完は強大で、例示した設定の意味を略さず書こうとするとそれだけで本になってしまう(約150ページ分)ので、細かい意味は読者の推測にまかせて、少し変えて便利にカスタマイズする場合のヒントを交えながら解説を進めたい。 補完の有効化 初期化ファイル、あるいはコマンドラインで、以下を入力することでzshのすぐれた補完機能が有効化される。 autoload -U compinit && compinit 補完に関するキー割り当てはいくつもあるが、最低限うまく利用するために以下の2つのキーバインドをまず覚えておけばよいだろう。 Tab (C-i) - expand-or-complete 補完の実行。 ESC C-d (または行末のみ C-d) - list-choices (delete-char-or-list) マッチする
zsh週間と言うことで、最近の僕のzshrcを紹介してみる。 解説 zshrc本体を紹介する前に、ちょっと分かりにくい所の解説。 lessのオプションを環境変数で指定する export LESS='--tabs=4 --no-init --LONG-PROMPT --ignore-case' lessはよく使うので、快適なオプションを指定しておきたい。環境変数LESSで指定しておけば自動的にlessのオプションとして認識されるよ。 --LONG-PROMPT ってのはプロンプト(lessの一番下の行)に詳細を表示させるっていうオプションで、今は上から何行目で何%まで進んだか、とかが表示される。 ちなみにこれはzsh関係なくて、bashとかでもできる。 smart-insert-last-word の設定 コマンドライン編集用の便利なキーバインドで、Ctrl+] で一つ前のコマンドの最後の単
Claude Codeには OpenTelemetry (OTel) のサポートがある。 これを使ってログやメトリクスを収集し、さくらのクラウドの「モニタリングスイート」に送信する試みをした。 Claude CodeのOpenTelemetry設定 otel-collectorで受ける otel-collectorからモニタリングスイートへ送る メトリクスの設定 ログの設定 さらにHooksも メトリクス可視化 まとめ Claude CodeのOpenTelemetry設定 ほぼすべてのことがここに書いてある。 docs.anthropic.com 最も簡単には、以下の設定を .claude/settings.local.json などに書けば確認できる。 { "env": { "CLAUDE_CODE_ENABLE_TELEMETRY": "1", "OTEL_LOGS_EXPORTER
zsh の設定ファイルです。 現在のオプション(setoptで有効になる項目)を確認する場合は、"set -o"を実行してください。 一通り、zshを理解するには以下の連載が役に立つと思います。 漢のzsh | コラム | エンタープライズ | マイコミジャーナル 書籍ではこちらが参考になります。 zsh最強シェル入門 作者: 中島能和出版社/メーカー: 翔泳社発売日: 2008/12/04メディア: 単行本(ソフトカバー)購入: 7人 クリック: 175回この商品を含むブログ (50件) を見る 確認しているzshのバージョン 5.0.4 (2013.12.21 リリース) 確認しているOS Fedora 20 で確認。 # 文字コードの設定 export LANG=ja_JP.UTF-8 # パスの設定 PATH=/usr/local/bin:$PATH export MANPATH=
散々悩んだんですが、Mac で zsh を使って日本語を表示 & 入力が出来るようになりました。zsh はバージョン 4.3 から UTF-8 に対応したとのことなので、とりあえず使ってみることにします。あと断っておきますが、Mac OSX のデフォルトの TERM は xterm なので EUC-JP じゃないと日本語を表示することはできません。ですのでここでは Screen を使うことを前提に話を進めます。 追記: xterm でも UTF-8 で日本語表示出来るそうです。 上記は実際日本語を表示させたスクリーンショット。ls でも日本語フォルダが表示されています。また入力に関してもちゃんと表示出来ています。よく見ると Screen の下のバーで文字化けしてますが... 手順 Terminal の日本語設定をする zsh のインストール zsh の日本語設定をする 最後に Termin
id:parasporospa さんの "パスワードつきのzipファイルをすべて削除する" id:parasporospa:20060803:1154555360 という記事が面白かった。 for f in *.zip; do unzip -q -t -P "" "$f" || echo "$f"; done | xargs rm 僕は、find を使った ワンライナー を考えてみた。 find は基本的に、指定された引数を 左方向から右方向に向かって処理を行っていく。 そして、左側のアクション(たしかこう言う)が成功したときに 右方向に進むようになっている。 アクションには、-exec, -name などいろいろあるが、 今回の場合、 -exec "コマンド" が使える。-exec は、 指定したコマンドの戻り値が 0 だったときのみ "成功" 状態になるようだ。 したがって、今回の場合
たとえば以下のように A というサーバーをログインしなければ到達できない B というサーバーがあったとき local --> hostA --> hostB 二回に分けて入力するのが面倒くさい。 local$ ssh user@hostA # Aにログイン成功 hostA$ ssh user@hostB # やっとBに到達。面倒!! hostB$ そんなときに、以下の構文を思い出すことだろう。 ssh user@host リモートで実行したいコマンド リモートで実行したいコマンドで "ssh user@hostB" ってやったらいいんじゃないかと 思いつきでやってしまうと、以下のようにエラーになる。 $ ssh user@hostA "ssh user@hostB" Pseudo-terminal will not be allocated because stdin is not a t
Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added. The introductory document details some of the unique features of zsh. It assumes basic knowledge of the standard UNIX shells; the intent is to show a reader already familiar with one of the
bashの「Process Substitution」という機能で、コマンドの実行結果を名前つきパイプから読めます。(thx かつみくん) $ cat -n <(date; echo foo) 1 Wed Jan 18 21:38:30 JST 2006 2 fooこれを使って、リモートホストのファイルとdiffを取るシェル関数を作ってみました。 こんな感じで使えます。 $ rdiff -u ~/s.txt REMOTE_HOST:~/d.txtまた-Rオプションで、rsyncの-R, --relativeオプションの様にローカルホストのパスをリモートホストの相対パスとして指定できます。たとえば、ローカルホストの/very/very/long/path/t.txtとリモートホストの同じパスのファイルをdiffるときには次のようにしてリモートホスト側のパス指定を略記することができます。 $
以前に入力したコマンドの履歴を覚えていて補完してくれるshellはあるが、 端末に表示されている文字列を補完してくれるshellは無いだろうか。 表示されている文字列を補完してくれるshellが欲しい とvimrc diaryに書かれてたのでzsh + screenで端末に表示されてる文字列を補完する方法を。.zshrcなどに # dabbrev HARDCOPYFILE=$HOME/tmp/screen-hardcopy touch $HARDCOPYFILE dabbrev-complete () { local reply lines=80 # 80行分 screen -X eval "hardcopy -h $HARDCOPYFILE" reply=($(sed '/^$/d' $HARDCOPYFILE | sed '$ d' | tail -$lines)) compadd -
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く