BREAKING NEWS

[4]

初心者でも、macでおしゃれにzsh!

大阪市立長居植物公園
macな人のブログを見ていると、zshを使っている人が多いことに気付きます。そして、macでは、「ビッグウエーブには、乗るしかない」と言われています。とすれば、ビギナーであったとしても、おしゃれにzshを乗りこなさなければいけないのです。



というわけで、zsh!
http://www.zsh.org/

当然、日曜プログラマはライトユーザーなので、変態的に暗号チックなほにゃらら展開を駆使したヒストリ操作やスクリプトを書く必要は全くありません。

ニードなマストは、スタバでドヤフェイスしながら

http://jigokuno.com/eid_306.html

とキメて意識高い「系」アトモスフェアをコミットすることです。

まぁ、なんにせよ、入れてみましょうよ、zshを。

シェル???

さて、シェルって??ていう人。
みんな大好き「ドットインストール」UNIXコマンド入門 (一般ユーザー編) を見てみましょう。

macの場合、ターミナルアプリを起動すれば、既にプロンプトが出てコマンド受付状態になっています。なので、CentOSに接続するとか、講義の「#2ログイン、ログアウトをしよう」、「#3パスワードを変更しよう」は飛ばしてOK。

「シェルとは」、というものを正確に把握しなくても、ターミナル開いてカチャカチャやると大体シェルを使っています。まーだいたい、そんな感じです。(適当)


シェルをzshに切り替える

パソコンには色々なシェルが入っています。mbaは多分デフォルトでbashになっています。

そこで、ターミナルアプリを開いて、プロンプトに
% chsh -s /bin/zsh
としてみます。パスワードによる確認が終われば、晴れてzshユーザーの仲間入り!!

俺はやっぱりbashに戻すぜ!という場合は、
% chsh -s /bin/bash
とすれば、もとに戻せます。

Linuxな人とmacのコマンド

さて、linuxしか使ったことのなかった私にとっては、いくつか戸惑うところがあったのでメモ。

自分の現在のログインシェルを調べようと/etc/passwdファイルを覗いてみると(linuxであっても、こういう確認の仕方が正統なのかどうかは知らないんだけど)、自分のユーザー名の行がなかったりします。macでは、ユーザー情報をオープンディレクトリっていうので管理しているらしく、管理方法がLinux(Linuxというより、Arch Linuxかも)とは違っていました。

また、macには、useraddやuserdel等のユーザー管理コマンドもなかったりします。
そして、実は上で書いたchshコマンドもオープンディレクトリ用のchpassというコマンドのエイリアスなので、archlinuxのchshとは使えるオプションが違っていました。

例えば、linuxのchshでは、「 -l」オプションという、現在使えるシェル(/etc/shellsの内容)の一覧を表示するオプションがりますが、macのchsh(chpassのエイリアス)には無かったりします。

こんな感じなので、man chshをlinuxとmacで見比べると、「世の中色々あるんだぁ」と見識を広めた気分になれます。

さて、macの場合、どちらかといえばGUIで操作するほうが正統っぽいんでしょうが、コマンドラインから制御したければdsclコマンドというのを使うらしいです。とりあえずの使い方は以下のページでわかるかも。
http://nemoplus.hateblo.jp/entry/20090120/1232466123

自分のログインシェルを知りたい場合、例えばユーザー名がnekomacならば

% dscl . -read /Users/nekomac UserShell

として確認できます。

見えないファイル、ドットファイル

UNIX系のシステムでの設定は、ホームディレクトリ内のテキストファイルにあれこれとテキストを書いて行うことが多いです。
zshの場合は、「.zshrc」ファイルで行います。このファイル名の先頭を良く見てみましょう。

.zshrc

「.(ドット)」を見逃さないように注意です。
ドットで始まるファイル名は、通常表示の際に、表示されないようになっています。いわゆる「隠しファイル」です。UNIX系の場合、ホームディレクトリ直下に配置される個人用の設定ファイルは、大体ドットから始まる隠しファイルになっているので、設定ファイル=ドットファイルという風に捉えられています。

というわけで、.zshrcという名前を付けた、テキストファイルをテキストエディタで作成し、内容を次の様なものにします。

# -*- shell-script -*-
# My zsh config file

先頭の「#」は、「#」以降を、コメントとして扱わせる記号です。なので、上のファイルはコメントだけの空のファイルが出来上がったことになります。

これからは、このファイルに色々とzshの設定を書き加えていくことになります。

テキストエディタからドットファイルを開く

さて、先に述べた通り、ドットファイルは通常見えません。
ですから、今、テキストエディタ等で作成した.zshrcファイルは、ファインダーからそのファイル名を見つけることが出来ません。

では、どうやって、ドットファイルを編集するのか?

まずは、付属の「テキストエディタ」の場合、ソフトを立ち上げると、ファイル選択のダイアログになります。

ここで、

command + shift + .

という、同時押しのキー操作を行うことで、ドットファイルを表示することが出来ます。もう一度押せば、隠せます。


lsコマンドのオプションとエイリアス

ビギナーが最初に覚えるunixコマンドの一つが「ls」コマンドです。
上で紹介したドットインストールは見ましたか?第6、7講義目辺りに出てくる、ディレクトリにあるファイルやディレクトリを一覧表示してくれるコマンドです。

ここで、「ls」コマンドそのものについて、少し詳しく見てみましょう。

オプションで見やすく

例えば、色んなファイルやディレクトリが入っている/etc/ディレクトリを表示してみましょう。ターミナルに次のコマンドを打ち込んでみて下さい。

% ls /etc/

一覧が表示されたものの、どれがファイルで、どれがディレクトリかの区別がつかないのではないでしょうか?はっきり言って見にくい!!

では、次のコマンドを打ってみましょう。

% ls -F /etc/

表示された一覧をよく見ると、名前の後ろにスラッシュ「/」 が付いているものがあります。これはディレクトリを表している記号です。もっとよくみると、他に「*」が付いていたり、「@」が付いていたりするものを見つかるかもしれません。この「-F」オプションは、一覧表示の際に、ファイルの種類やディレクトリを表す記号を付け足して分かりやすく表示してくれるものなのです。

更にもっと分かりやすくするために種類ごとに色をつけてくれる「-G」オプションというものがあるので、試してみましょう。

% ls -FG /etc/

色が付いたら、分かりやすいし、何よりもおしゃれになります!
が、このおしゃれ表示にしたい時、いつもいつも「-FG」オプションを付けるのは面倒です。

そんな時に、登場するのがエイリアスというシェルの機能です。

エイリアスで楽ちん

エイリアスは、ある文字列を別の文字列に置き換えてくれるシェルの機能です。

エイリアスを使うには、「alias」コマンドを使います。
さっそく、使ってみましょう。

% alias ls='ls -FG'

エイリアスした状態で、lsコマンドにオプションを付けづに/etc/ディレクトリをみてみよう。

% ls /etc/

種類を表す記号や色がついているはずです。

エイリアスは、コマンドラインを実行する前に、登録してある内容で置き換えを行ってくれます。つまり「ls」と書いてあると、「ls -FG」に書き換えてくれるのです。

次に、ホームディレクトリの内容を見てみましょう。

% ls ~/

幾つかのディレクトリが表示されたかもしれませんが、ついさっき作成したはずの「.zshrc」ファイルは表示されていないはずです。ドットインストールでも紹介されている通り、「ls」コマンドは普段、ドットで始まる隠しファイルを表示しません。

そこで次に、「ls」コマンドの「-a」オプションを試してみます。

% ls -a ~/

ドットファイルが表示されましたか?
.zshrc以外にも、ドットファイルが幾つか見つかったことでしょう。

シェルでの作業では当然ドットファイルを表示させたい事も多く、よく使うコマンドなので、オプションも含めてエイリアスコマンドでエイリアスを設定しておくのがお勧めです。

% alias la='ls -a'

短縮させて、「la」にしてみました。

% la ~/

で、先と同じ結果が得られるはずです。

置き換わるタイミング

さて、エイリアスは、はじめに書いた通り、エイリアスで設定されたものの置き換えを行ってくれる機能ですが、ここで、その置き換えのタイミングに着目して、エイリアスの仕組みを整理してみましょう。

先のaliasコマンドで、「la」は、「ls -a」だと設定しました。
では、置き換えられた「ls -a」の「ls」は何を表しているのでしょうか?

つまりは、単なる素の「ls」なのか、先にエイリアス設定した「ls」なのか?という話です。

結論から言えば、エイリアス設定された「ls」といえます。
エイリアスは、展開された文字列の中に、エイリアスで置き換える事で出来るものがあれば、再度置き換えを行うことになっているからです。

ですから、

「la」→「ls -a」→「ls -FG -a」

と置き換えが行われます。

実は、この事を踏まえて一番はじめの「ls」は、エイリアスしています。
つまり、色付き記号付きのオプションをベースとなる「ls」にエイリアスしておくことで、他のエイリアスに書かれている「ls」から再帰呼び出しされるようにしてあるのです。

どういうことか、もうひとつ具体的例を挙げてみましょう。
詳細表示のオプション「-l」もエイリアスに組みます。

% alias ll='ls -l'
% alias lla='la -l'

ls自体が既にエイリアスなので、llエイリアスの中身「ls -l」の「ls」は、「ls -FG」に展開されます。
同様に、llaエイリアスの中の「la」も、既にエイリアスなので「ls -a -l」に展開、更に、「ls」の部分が展開されて結果的に「ls -FG -a -l」となります。

その他エイリアス豆知識

なお、aliasコマンドを引数なしで呼び出すことで、登録されているエイリアスの一覧を見ることが出来ます。

ついでに、エイリアス設定の解除ができるということも頭の片隅においておきましょう。

まずは、一時的にエイリアスしていない、元のコマンドを使いたい場合には、バックスラッシュをつけて実行すれば、エイリアスの置き換えがなされません

% \ls

最後は、エイリアスの設定自体を削除してしまう「unalias」コマンド。

% unalias ls

これで、lsは素のlsに戻ることになります。

.zshrcでzshの設定

さて、ここまで、エイリアスというものの設定を行ってみましたが、ターミナルからコマンドで設定したエイリアスは、そのターミナルを開いている間だけしか通用しません。ターミナルを閉じて、また、新たなターミナルを開いてみると、さっきまでのエイリアスは無くなっています。何かを設定したからといって、勝手に保存されたりはしないのです。

そこで、登場するのがドットファイル「.zshrc」です。

実はこのファイル、設定を保存するというよりも、このファイルに書かれている内容が、ターミナルを開いた時に実行されることになっています。つまり、ターミナルを開くたびに、毎回「.zshrc」内のコマンドが実行されて設定が行われているのです。

というわけで、.zshrcに上記で話して来たコマンドを書き加えてみましょう。

# -*- shell-script -*-
# My zsh config file

#################
#エイリアスの設定
#################
alias ls='ls -FG'
alias la='ls -a'
alias ll='ls -l'
alias lla='la -l'

こんな感じで書いてみましょう。

このドットファイルは、先に述べた通り、ターミナルを開いた時等に自動的に読み込まれますが、既に開いているターミナルから、今すぐに読み込んで実行することができる「source」コマンドというものもあります。一般には設定ファイルを書き換えた時、それを現在のシェルに反映させたい場合に使われます。

% source ~/.zshrc

これで第一歩は踏み出せました。

初心者でも、macでおしゃれにzsh! 初心者でも、macでおしゃれにzsh! Reviewed by syunkichi on 3/01/2015 Rating: 5

No comments:

Sora Templates

Image Link [https://scontent.xx.fbcdn.net/v/t1.0-9/13343039_103147363441877_5912666874811349341_n.jpg?oh=32de40bba33988d454d1a3104dde18ac&oe=57D1E6F4] Author Name [Syunkichi] Author Description [Let's write codes staylishly!!!!!] Twitter Username [webgeek7] Facebook Username [syunkichi.nekota] GPlus Username [114037852049523769954] Pinterest Username [pcgeek91] Instagram Username [s.nekota]