Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
B! 9 0 0 0 BashやZshで設定ファイルである.bashrcや.zshrcをちょっと変更して 再び読み込む場合、 PATHの値などは基本付け加えていく様な設定になってるため、 読み込む度に同じPATHが付け加えられていってやたら長いPATHの値になったりしてしまいます。 そういったことを避けるために最初にちょっと付け加えておく設定について。 .bashrc/.zshrcでのPATHなどの設定 _reset_path PATHを追加する時のもチェックする .bashrc/.zshrcでのPATHなどの設定 .bashrc/.zshrc の中で export PATH=/home/USER/bin:$PATH みたいな設定をして自分用のPATHを追加する事があると思います。 この設定のまま.bashrc/.zshrcを再び読み込むと $ echo $PATH /home/USER/
Spacemacs を起動すると、.zshrc で PATH の設定をするな、と怒られた。ので、.zshenv に記述を移すと、今度は不具合が起きた。emacs を以下のページの設定をして呼び出すと ~/bin/emacs を実行していたのが、 .zshenv に PATH を移したことによって /usr/local/bin/emacs を呼び出すようになってしまった。 karur4n.hatenablog.com 解決したのでメモする。 原因の特定 $ echo $PATH をすると、/usr/local/bin が ~/bin より優先的に読み込まれていた。 なので、試しに .zshenv に PATH="$HOME/bin" としてみても、 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/karur4n/bin と出力された。
Rubyスクリプトを書いていて、いつからかvimでquickrunから スクリプトを実行出来なくなってハマったのでメモ。 Linuxでは発生しなかったのでMacだけ発生する問題かもしれない。 起こっていた現象 quickrunを実行するとrequire': no such file to loadとかで怒られる。 ruby hogemoge.rbとかの場合は実行可能 開発環境 Mac Lion 10.7.4 zsh 4.3.11 rbenv(git clone git://github.com/sstephenson/rbenv.git .rbenvで導入してます) vim 7.3.515 quickrun 0.6.0 原因 vimがシステム標準のRubyを呼んでいた(rbenvのRubyが呼ばれていなかった) .zshenvに記載すべき設定を.zshrcに書いていた 下記のようにコマンド
B! 10 0 2 0 最近色々.bashrcだとか整理している時に、プロンプトの表示を変更しようと思い、 結局何が必要なのか考えたのですが、 普通、ディレクトリ名やユーザー名、ホスト名などを入れていると思いますが、 普段はGNU screenを使っていて、 常に各領域にディレクトリパスも表示させてるので、プロンプトに情報を表示 させとく必要が特に無いわけです。 そこで、プロンプト表示でちょっと遊んでみました。 これまでのプロンプト 顔文字にしてみる ランダムに顔を変えてみる これまでのプロンプト ここではbashでの話です。 プロンプトはPS1というシェル変数を変更してやることで表示を変えてやることが出来ます。 手元の環境だと、デフォルトでは/etc/bashrc内で次のように設定されています。 # System-wide .bashrc file for interactive bas
僕は開発中、zsh のヒストリー補完の機能をよく使います。具体的には次のような場面が多いです。 多用するコマンド 結局開発中に使うのはエディタ (vim) と git サブコマンドに集中する ちょちょいと ^N (↑) で履歴をさかのぼる alias がイケてない場面 「エディタで .zshrc 開いて追加してリロード」が面倒で後回ししがち そして登録せずに終わる の繰り返し… うろ覚え程度のコマンドの alias 名はもはや思い出せない 結局エディタ開いて見直したり、^R で遡ることに挑戦する 長いコマンド列になるとき 引数が多いとき、多段のパイプで繋いだとき 例えば、複数のパラメータを与えたときの curl コマンド Ctrl-r (history-incremental-search-backward) よるヒストリーサーチが便利なのはよく知られたことですが、それに加えて peco
dotfilesいじりが趣味の岩下(@ToruIwashita)です。 今回はzshの補完でこんな感じの動きをさせる話です。 はじめに みなさんはタイポに悩まされる事はありませんか?僕はタイピングする度にタイポを繰り返し、やりたい事をやるための入力に手間取ることに悩み、日々ストレスを感じています。 タイポしないとか、やりたい事をサクッとやるためにはどうしたら良いのか。その答えはタイピングをしない事だと思います。 もし自分の頭とPCをつなげて指を動かさずに入力できたなら、タイポのストレスから開放されるはずなので、早くそういう未来が来ることを切に願います。 が、夢見ているだけでは目の前のストレスは消えないわけで。今現在はそういう技術がまだ手元にないし、じゃあ極力タイピングをしないようにしようと、日々改善活動を行っています。 今回はその活動(dotfilesいじり)の中で、gitに関連する操作の
これは何? zshの操作で、pecoとかpercolとか、Anything風インターフェースで選択するやつがよく使われてる。これを使うと、例えばコマンドライン履歴からインクリメンタルに検索して、それを実行、とかできるようになる。 でも、pecoとかpercolはシェルとは関係なくて、単に「インクリメンタルに絞り込む」ってところだけしかやってくれない。それだけでは役に立たなくて、「選んだ結果を実行する」とかのシェルの処理が必要になる。 それで、そういうシェルの処理を自分で書きたくない人向けにanyframeというのを作った。 https://github.com/mollifier/anyframe これはzsh用のプラグインで、これを使うと自分でシェルの関数を書かなくても、キーバインドとかaliasを設定するだけでpeco/percolの便利なやつをすぐ使えるようになる。 特徴 普通の人が
B! 46 0 0 0 以前、 Zshの補完について ちょっと書きましたが、 足りない所とか理解しきれてなかった所があるので追記。 Zshの補完について 補完設定ファイルの作成 補間関数がロードされるタイミング Zshの補完について 取り敢えず前回のはこちら。 Zshの補完について 補完を有効にするために autoload -U compinit compinit を.zshrc等で設定しておくことやcompdef/compadd等の 補完を作成、登録するコマンドなどについてまとめています。 上のautoloadはcompinitを有効にさせるためのコマンド。 compinitは指定されたパスにある補完ファイルから 補完をアップデートして、~/.zcompdumpというファイルに コマンドとそれに使う補間関数の定義の一覧を作成します。 パスはfpathまたはFPATHで設定されていて、 何
自分が使っている便利な機能を紹介 $ rm */(-@) ファイル修飾子は使っている人も多いはず。 zsh で find を使わずに簡単にファイルを絞り込む *(@) でシンボリックリンク *(-@) でリンクが切れたシンボリックリンク rm **/*(-@) で下位階層含めたリンク切れのシンボリックリンクの削除 修飾子で他に便利なのは *(-ch-1) シンボリックリンクのリンク先が1時間以内に作られたファイル *(U) 自分のファイル *(u:hoge:) ユーザ hoge のファイル *(/^F) 空のディレクトリ $ tkdiff =(zcat xxx.gz | cut -f 1) =(zcat xxx.gz | cut -f 2) プロセス置換 <(zcat xxxx.gz | grep yyyy | cut -f 2 ) みたいな形でわざわざ一時ファイルにしなくても、ファイル指
今日は技術的なトピックが特になかったので、いきなりですが、zshのことについて書きます。 ※追記:antigenはv1.1.0からめちゃ早くなったらしい。Release Release v1.1.0 · zsh-users/antigen · GitHub なので、無理にzgenに乗り換える必要もなくなりました。 zshのプラグインマネージャといえば github.com がメジャーだと思います(超重量級なoh-my-zshとかpreztoは考えないことにします) 自分も、しばらく愛用していました。 しかし、遅い tmuxで新規window/paneを開いたときに、1秒弱間があいていらっとしてました。 自分の開発スタイルはしょっちゅう新規window/paneを開くスタイルなのでとにかくイライラが募ってました。 http://blog.uu59.org/2013-06-01-zsh-opt
ネタがないので、昔こんなことをやってzshの起動を高速化したよというのを共有したいと思います。 計測 〜が遅いという場合、プロファイリングするのが定石ですね。 http://blog.uu59.org/2013-06-01-zsh-optimize.html という素晴らしい記事を参考に、 ボトルネックを割り出しました。 ↑の記事に全て書いてますが、一応プロファイリングの方法をコチラにも書いておくと、 .zshenvの先頭行に↓を足す zmodload zsh/zprof .zshrcの最後の行に↓を足す if type zprof > /dev/null 2>&1; then zprof | less fi という感じ。 新しくzshを起動すると、lessで↓のようなプロファイリング結果が開きます。 num calls time self name -------------------
はじめに UNIX, Linux のためのシェルスクリプトを bash どころか敢えて zsh で書くことに、どんな目的合理性があるのか… 個人的な考えをまとめてみます。 #!/bin/zsh の勧めにしたかったけど、途中で力尽きました。 勿論、 万人向けではない話 なので、なるべく背景・仕事環境・与えられた状況についても言及していくつもりです。 ツッコミも歓迎です。 前提 人生は短い。 限られた時間で、目的を達成したい。 『成果出力 / 学習含めた開発時間』の比を、納得行くレベルに保ちたい。 sh 族の各々には力の差が有る。 プログラミング言語としての表現力の優劣や、処理系の完成度の優劣が存在する。 チームの root と教育を任されている。 自分が個人としてベストな仕事をするだけでなく、メンバーの学習まで含めて判断したい。 道具は使い分ける。 sh 族で書くメリットのある、向いたタスク
Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
とある引用から。 技術者であればだれでも経験することでしょうけれども、自分が作ったものを他人に理解させるというのは存外に難しく、なぜかというと開発者自身はどうしても開発した時の思考の流れを重視してしまい、読者にとって理解しやすい話の流れで話すという思考の大転換が困難だからです。そういえば、開発者自身による解説書の名著って意外なくらい少ないと思いませんか? 私は先月末に zplug という zsh 用のプラグインマネージャーをリリースした。以下の記事では、zplug が生まれた背景やその周辺事情を導入として書いたため、もしかするとユーザ目線からでは分かりづらかったかもしれない。 おい、Antigen もいいけど zplug 使えよ そこで今回は開発者としての記事ではなく、いちユーザとして(といっても開発者がユーザ目線でプロダクトを語るのは冒頭の引用にもある通りひどく難しいことである)使い方を
B! 23 0 0 0 BashやZshのsourceして使う様な設定ファイルの中で そのファイル自身のパスを取得したいと言う話。 やりたいこと BASH_SOURCE Zshでは Bash/Zsh両用 やりたいこと 例えば~/v1.0.0、~/v2.0.0…みたいに何らかのプログラムとか プロジェクトをバージョン毎に管理してたりするとき、 その中にsetup.shみたいなのを置いておいて、そのファイルの中で、 export PATH=~/v1.0.0/bin:$PATH export LD_LIBRARY_PATH=~/v1.0.0/lib:$LD_LIBRARY_PATH みたいな設定をしたいとします。 この様に直接PATHを書いてしまうと、新しいバージョンになった時に この設定ファイル自体も書き換えが必要です。 また、違う環境に持っていった時にPATHが変わってしまう可能性があります
zshでGitのステータス情報をプロンプトに表示するにはvcs_infoを使う方法が一般的ですが、vcs_infoで得られる情報には限りがあります。そこで、git statusを使ってプロンプトを表示する方法を調べてみました。なお、OS XのGit 2.3.2で確認しています。 git statusで得られる情報 git status --porcelain --branch を実行するとブランチ、ワーキングツリー、インデックスの状態が得られます。--porcelainを付けることで機械処理に適したフォーマットが得られます。このコマンドの実行結果は下記の2つの部分で構成されます。 ローカルブランチの状態(1行目) ローカルブランチの状態 表示 リモートブランチと同期している ## master...origin/master リモートブランチより古い ## master...origin/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く