ZshでChange DirectoryしたときにList Segmentsする
Zshでcdしたときにlsされると便利かな~って思って適当に実装してみた。
手っ取り早く考えたのがこれ
alias cd="cd $1 ls"
まあコレはちゃんと動かないんですけどね。
エイリアスは引数を取れないので、問答無用でホームディレクトリ帰され、lsに引数が渡されたことになります。
$ cd hoge/
これが
$ cd && ls hoge/
こうなる(┐「ε:)ズコー====
次に考えたのがこれ
alias cd="cdls" function cdls() { cd $1 && ls }
いけそうな気がする・・
cdls:1: maximum nested function level reached
が……駄目っ……!
コレはcdのエイリアスが有効であるため、再帰的にcdが呼ばれ続けてエラーを吐いている。
と言う訳でbuiltinを使いましょう。
builtinはユーザ実装の関数やエイリアスよりシェル・コマンドを優先的に実行するためのコマンドです。
alias cd="cdls" function cdls() { builtin cd $1 && ls }
これでエイリアスのcdではなく、シェル・コマンドのcdが呼ばれるようになります。
akata:^_^[~]$ cd hoge bar foo hoge huga akata:^_^[~/hoge]$
(∩´∀`)∩ワーイいけました。
ちなみにこれだとlsコマンドの方はエイリアスが有効になっているので、
既存のエイリアスを使い回せます。
後、確認していませんが多分Bashでもちゃんと動くと思います(タブンネ..)
参考URL
Linuxコマンド集 - 【 builtin 】 シェル・コマンドを優先して実行する:ITpro
ここに知りたいことは全部書いていました。
ZshをインストールするためのAnsible-Roleを書いた
AnsibleのRoleシリーズの第3弾はシェルスクリプトのZshです。
akatakun/ansible-role-zsh · GitHub
第1弾Git
: GitをインストールするためのAnsible-Roleを書いた - Akata Works第2弾Vim
: VimをインストールするためのAnsible-Roleを書いた - Akata Works第4弾Scala
: ScalaをインストールするためのAnsible-Roleを書いた - Akata Works
そして、設定がめんどくさい基本ツールのRoleは全部書き終わったような気がします。
やはりほとんど第1弾と第2弾の使い回しです・・
でも、使い回しが容易であることもAnsibleの良いところだと思います(学習コストも低いですし・・)
話は逸れますが、
僕はこれらのリポジトリをPrivateリポジトリのSubModuleとして持っており、
ansible-playbook
コマンド一発で環境構築ができるようにしています。
イメージとしてはこんな感じ??
* ansible/ # Privateリポジトリ * initialization.yml # Root Playbook * roles/ * git/ # 第1弾 * vim/ # 第2弾 * zsh/ # 第3弾
まじsubmodule便利っす
と、まあ、
最初はログインシェルの変更までやるつもりでしたが、飽きちゃったんで設定ファイルのシンクまでです。
気が向いたら更新とTmuxとか他のツールのRoleも書いていこうかな(*´ڡ`●)
というかさっさとScalaやらねば・・
perl: warning: Setting locale failed.
MacからSSHでCentOSに接続してPerlを実行すると以下のエラーが出た。
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "ja_JP.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
現在のロケールの設定の中にインストールされていないロケールがあることが原因らしい。
現在のロケールの設定はlocale
コマンドで確認できるので確認するといい。
インストールされていなければついでにインストールしてしまおう。
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
根本的なことをいうと、単純にMacの設定を引き継いでいるからってこともある。
"/etc/ssh_config"ファイルから以下の行をコメントアウトするといい。
Host * SendEnv LANG LC_*
ロケールの問題なので他のコマンドでも発生するかも・・
参考URL
タイピングゲームを自動化するスクリプトを組んだった
今更ながら、YAPC::ASIA 2011の竹迫さんの発表を見て興味を持ったので、
Win32::GuiTestモジュールを触ってみました。
まあ、.NET Framework使えよって話ですがね。
せっかくオープンソース化されたので、時間があれば読んでおきたいな。
開発環境はCygwinとStrawberry Perlです。
Image MagickやImage::Magickモジュールのインストールがめんどうだった。
ちゃんと32Bitで統一しよう(;´Д`)=3
竹迫さんが発表で仰っていましたが、
タイピングゲームを自動化すると面白そうだったので自動化しました。
画像ファイルとスクリーンショットをマッチングする簡単な仕組みですが、
X座標でソートして一気に打ち込むのはうまく出来たと思う。
sub match_words { my ( $screenshot, $words ) = @_; my %match_words; for my $word ( keys %$words ) { my @coords = $screenshot->match( $words->{ $word }, multiple => 1 ); my @xs = @coords[ grep { $_ % 2 == 0 } 0 .. $#coords ]; $match_words{$_} = $word for @xs; } return \%match_words; }
これを某サイトで試したところランキングトップを超えるスコアを出せました(^ρ^)
恐らく画像ファイルさえ用意すれば、ほとんどのサイトで動くと思いますが、
ブラウザの解像度やエリアシングの有無でぱたりと動かなくなりますorz
最後に、、ランキング荒らしちゃ駄目だよ
参考サイト
VimをインストールするためのAnsible-Roleを書いた
最近忙しくてちょっとペースが落ちてきているのが気になるakataです。
気が付いたら社会人も二年目になっていました。
今回は前回に引き続き、AnsibleでVimをインストールするためのRoleを書きました!!
と言っても、ほとんどGitの使い回しですが・・(^_^;)
一応、".vimrc"ファイルと".vim/"ディレクトリのシンクまでできます。
akatakun/ansible-role-vim · GitHub
第1弾Git
: GitをインストールするためのAnsible-Roleを書いた - Akata Works第3弾Zsh
: ZshをインストールするためのAnsible-Roleを書いた - Akata Works第4弾Scala
: ScalaをインストールするためのAnsible-Roleを書いた - Akata Works
あと、Role内の変数名はRole名を付けるのが良いっぽいので、GitのRoleにも少し修正を加えました。
よーし、残りはZshのRoleを書いたら終わりかなー(;´∀`)=3
参考URL
GitをインストールするためのAnsible-Roleを書いた
まあ、タイトルどおりなんですが、AnsibleでGitをインストールするためのRoleを書きました!! でも、実際はセッティングとリポジトリのクローンまでできますよ。
本当はずいぶん前に書いたものもあるのですが、冪等性(笑)状態で、最適化もしていないオレオレAnsible Roleだったので・・
今回は外部に公開するつもりで思いっきり修正してきました!!
というわけで、GitHubに公開しました。
そのうちAnsible Galaxyにも公開すると思います。
akatakun/ansible-role-git · GitHub
第2弾Vim
: VimをインストールするためのAnsible-Roleを書いた - Akata Works第3弾Zsh
: ZshをインストールするためのAnsible-Roleを書いた - Akata Works第4弾Scala
: ScalaをインストールするためのAnsible-Roleを書いた - Akata Works
git config
やgitメソッドでリポジトリをクローンするとき、どうやって冪等性を担保しようかなど、Ansibleの勉強にもなったのでよかったです(まあ、git config
は元々冪等性が担保されているのですが・・)