これでも間違いというわけではないんだけど、追加するディレクトリが存在しない場合も path に追加されて、結果として無駄なディレクトリが含まれている状態になってしまう。あんまりうれしくない。 でも zsh にはちゃんとそれを防ぐ方法があって、ディレクトリ名の後ろに (N-/) を付ければうまく解決できる。
Qiita 見てたらこんな投稿を見つけた。 Zsh - よく作業するDirをBookmarkするshellスクリプト - Qiita だいたい、よく使うディレクトリに cd したいとき cd ~/work/project/ruby/web とか長い名前を打つのはめんどくさい。$CDPATH を通しておくっていう手もあるけど、タブで補完したときに候補がいっぱい出たりして微妙に便利じゃない。そんなときにこれを使えばディレクトリの移動が簡単になる。 ちょっと改良の余地があるというか、タブで補完できるようにしたらもっと便利になると思って、独立した zsh のプラグインとして書き直したので紹介する。 このプラグインでできること cd-bookmark というプラグインを作った。これをインストールすれば cd-bookmark というコマンドが使えるようになる。 こいつを使えばよく使うディレクトリに別
B! 25 0 0 0 最近作り直してた multi_clipboard、 sd_cl、 trashで使っていた シェルスクリプトでの対話的な選択画面を他でも簡単に使える様にしてみました。 sentaku 単体で使う ライブラリみたいに使う Examples スニペットツールみたいに使う ファイルエクスプローラー メニュープログラム ゲーム まとめ sentaku 名前に困ったので日本語で。 Bash (3.X以降)とZsh (4.X以降)で動くことは確認してあります。 (何かおかしかったら教えてください。) 単体で使う スクリプト単体だとそのまま実行しても何もしませんが、 lsなんかの出力をパイプで渡してあげる下のgifみたいな感じで選んで、 選んだものを出力できます 1。 最後に返される値だけが標準出力で、 他の選択画面は直接端末(/dev/tty)に送られるので、 上にある例のように
概要 実行時間の長いコマンドが終わったら、Mac の Notification Center (Growl にするのも可能) で通知がくる。Terminal.app と iTerm 2 に対応している。 通知の様子。30秒を超えるコマンドが通知されている。 30秒を超えないコマンドでも、失敗したら通知される。 どちらもターミナルがバックグラウンドのときのみ通知される。長いコマンドを投げてから twitter とか見てたらいつのまにか時間が経ってしまうような人に便利。 1. 準備 Notification Center に通知する場合 alloy/terminal-notifier をインストールする。コマンドから Notification Center に通知をするためのアプリ。 Releases から .app をインストールしてもよいし、Download にあるように RubyGems
zsh には編集子(modifiers)というのがある。 こいつを使うと、グロブ展開(ワイルドカード展開)の結果をいろいろと編集できるようになる。 簡単な例 とりあえず例を見てもらったほうが早いと思う。 # 今このディレクトリにいる % pwd /home/mollifier/tmp # ファイルが2つある % echo * fuga.txt hoge.txt # :a は編集子の一種で、フルパスに変換する % echo *(:a) /home/mollifier/tmp/fuga.txt /home/mollifier/tmp/hoge.txt # :r も編集子の一種で、ファイルの拡張子の部分を取り除く % echo *(:r) fuga hoge # 並べて書けば2つ以上使うこともできる % echo *(:a:r) /home/mollifier/tmp/fuga /home/mo
Git リポジトリの中にいるときに、トップレベルのディレクトリに移動したくなることがある。それを1回のコマンドで簡単にできるようなプラグインを作ったので紹介する。 このプラグインでできること cd-gitroot というプラグインを作った。これをインストールすれば cd-gitroot というコマンドが使えるようになる。 使っている様子はこんな感じ。 # こんな感じで Git リポジトリの中にディレクトリがあったとする # doc/ # src/ # |-scripts/ # `-web/ % cd /home/mollifier/git_repo % cd src/web % pwd /home/mollifier/git_repo/src/web # リポジトリの奥の方にいる時でも、すぐにトップに移動できる % cd-gitroot % pwd /home/mollifier/git_
本エントリでは僕が初めてつくった zsh プラグインを紹介します. Ruby を使っている人なら bundler のお世話になっている方が多いと思いますが, その bundler をより便利に使うためのプラグインになります.Ruby を使わない方 には直接は関係ないですが,アイデアは応用できるかもしれません. Bundler の問題点 Bundler は gem の依存関係をローカルな範囲で管理できる gem で,Rails を始め色々 なところで使われています.この bundler を使う上で,面倒くさいことの1つが bundle exec です. bundler でインストールされた gem をコマンドラインから実行する場合,$PATH が通っていないため, 実行する場合は bundle exec を使う必要があります. 例えば,rails を bundler でインストールした場合,
上記画像のように、zshのプロンプトのパス部分で今いる場所に下線を引きます。 この記事は こちら の記事の内容を参考にさせていただきました。 上記参考記事をみて、これは便利そうと思いはじめ丸写ししようと思ったのですが、 上記記事のやり方だと /home/repo/hoge/repo でrepoがレポジトリ名の場合に両方に下線を引いてしまいそうであったので、 内容を理解しながら自分で改良してみました。 autoload -Uz vcs_info zstyle ':vcs_info:*' max-exports 3 zstyle ':vcs_info:*' formats '%s:%b ' '%r' '%R' precmd () { LANG=en_US.UTF-8 vcs_info psvar=() [[ -n ${vcs_info_msg_0_} ]] && psvar[1]="$vcs_
$ curl "http://jojoasbtrain.jp/api/getTrainInfo" {"success":true,"status":220,"data":{"update":"2013.08.30 15:17","news":"8\/30 \u305f\u3060\u3044\u307e\u8eca\u4e21\u57fa\u5730\u3067\u4f11\u61a9\u4e2d\u30c3!!"}}% $ curl -s "http://jojoasbtrain.jp/api/getTrainInfo" | jq "." { "data": { "news": "8/30 ただいま車両基地で休憩中ッ!!", "update": "2013.08.30 15:17" }, "status": 220, "success": true }
今回は grunt コマンドの補完関数を例として キャッシュ機能(cache-policy) について解説していきます。 grunt については知らなくても大丈夫だと思います。 キャッシュ機能(cache-policy) についての解説がメインなので、zsh 補完関数の基本的な説明は省略します。 その代わり、コード内にコメントで簡単な説明を書きましたのでそちらを参考にして下さい。 ※ とても長い記事なので、誤字脱字があるかもしれません。ご容赦下さい。m(_ _)m (見つけたら教えてくれると助かります) はじめに grunt には標準で bash の補完がついています。 しかし、zsh 用の補完関数は無く、bash の補完と同じ方法で実装したのではオプションやタスクの説明が表示されません。 オプションの説明はベタ書きでいいとしても、タスクの説明はそうはいきません。 ということで作成したのが
jq というコマンドがある。JSON をいい感じに読みやすくしてくれるコマンドラインツールだ。 Web の API を呼び出してテストするときとかに便利。 でも --help をつけてもヘルプメッセージがしょぼい感じで、使い方がよく分からなかった。なので zsh 補完ファイルを書いた。これでさくさくオプション指定できるようになる。 zsh-users/zsh-completions (https://github.com/zsh-users/zsh-completions) に pull request を送ったのでそのうち取り込まれると思う。 自分でインストールして使う方法は以下。 補完ファイルをダウンロードする。 Gist に貼りつけた ので、そこから補完ファイルをダウンロードする。ファイル名は _jq にする。 _jq を適当な場所に配置する。 保存場所はどこでも良い。今回は $HO
bash/zsh では パラメータ展開の # と %を使って Prefix または Suffix を削除することができます。 $ var='hogefuga' # Prefix削除 $ echo "${var#hoge}" fuga # Suffix削除 $ echo "${var%fuga}" hoge シェルスクリプトではよく使う手法ですが、意外と覚えづらく、特にどちらが Prefix削除 でどちらが Suffix削除 なのか忘れてしまいがちです。(私だけ? 先日そんな悩みを Twitter で吐露したところ、3名の親切な方が覚え方を伝授してくれました。 その覚え方がなかなかユニークで覚えやすかったので紹介します。 # はコメントを表す記号なので Prefix(先頭)削除 # を番号記号と考えて #30 のように使うので Prefix(先頭)削除 % はパーセンテージを表す記号で、30
とある方の "エンターだけで ls と git status 表示するようにしてある" というつぶやきを見て便利そうだと思ったのでやってみました。 基本的なやり方は以下の記事が参考になりました。 zshでコマンドが空の状態でenter押したときに任意のコマンドを実行する方法 - kei_q ただ、上記方法では私の環境の場合、プロンプトが1回余分に表示されてしまって気持ちが悪いので、その辺りも手を加えました。 Installation 以下スクリプトを .zshrc に記述すれば、何も入力されていない状態で Enter を打つだけで ls と git status が表示されるようになります。 function do_enter() { if [ -n "$BUFFER" ]; then zle accept-line return 0 fi echo ls # ↓おすすめ # ls_abb
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く