インフラ

シェルとターミナルとVimについて理解をまとめる

こんにちは、ともです。

ターミナルやVimのショートカットって覚えるの大変ですよね。使わないショートカットまで暗記する必要はないですし。

まずはよく使うショートカットや設定を、使いながら覚えていくのが一番だと思います。この記事ではOSXでのショートカットをまとめておきたい思います。

私も少しずつ覚えてこの記事に付け加えて行きたいと思います。

ターミナルとは

ターミナルとはコンピュータに命令を送信するための画面です。

例えばMacで電卓のアプリケーションを起動したい時、コンピュータに話しかけても実行してくれません。(未来はできるかもしれませんが)

open /Applications/Calculator.app

ApplicationフォルダのCalculatorという電卓アプリを起動してくださいとコマンドをターミナルでコンピュータに命令することにより起動が可能です。

ターミナルとは私たちがコンピュータに命令するための画面

カーネルとは

カーネルはOSの中核となる部分です。カーネルはメモリやCPU、入出力を制御、ファイル管理をしてくれています。

カーネルはコンピュータの大切な部分を制御しており、簡単にユーザがカーネルのプログラムを実行できると危険ですので、カーネルはユーザと対話する能力を持っていません。

つまり、このままではターミナルからコンピュータに命令を送ることができません。

  1. カーネルとはOSの核となるソフトウェア
  2. CPU管理、入出力の制御、ファイル管理などを行なっている
  3. ユーザから実行することはできない

シェルとは

シェルとは、私たちユーザとカーネルとの対話を実現したプログラムです。

  • 私たちはコマンドでコンピュータに命令したい
  • コンピュータの核(カーネル)は簡単に操作することはできない

そこで安全にコンピュータに命令できるように、ユーザとコンピュータとの仲介をするソフトウェアとしてシェルができました。

シェルは

  • ユーザからの命令をコンピュータに伝える
  • コンピュータからの実行結果をユーザに伝える

という2つの機能から仲介を行なっています。

macだとデフォルトでbashと呼ばれるシェルがインストールされていますね。

シェルはユーザとコンピュータを仲介する役割

ターミナルが起動利用するシェルを選択する

macの場合デフォルトでbashと呼ばれるシェルが選択されています。

echo $SHELL

上記のコマンドで利用しているシェルへのパスがわかります。bashを利用している場合は/bin/bashと出力されたのではないでしょうか?

bin(バイナリー)フォルダには実行ファイルが保存されいます。/binはよく出てくるので頭の片隅に置いておくと良いです。

$SHELLが意味するものはシェル変数です。プログラムの変数と同じで値を格納しています。$SHELLには利用するシェルへのパスが格納されたシェル変数です。

シェルのコマンドの1つであるechoにより$SHELLの中身を確認しています。

シェルには

  • sh
  • bash
  • csh
  • ksh
  • tcsh
  • zsh

などが存在します。デフォルトではbashが選択されているので、これを別のシェルに変更したい場合は

chsh

とターミナルで入力し実行して下さい。パスワードを入力すると次のような画面が出てきたのではないでしょうか?

# Changing user information for XXXXX.          
 # Use "passwd" to change the password.
 ##
 # Open Directory: /Local/Default
 ##
 Shell: /bin/bash
 Full Name: XXXXX
 Office Location:
 Office Phone:
 Home Phone:

/binにzshがインストールされており、zshに変更したい場合は、6行目を/bin/zshにすることでシェルの変更が可能です。ターミナルを再起動するとzshになっていることがわかります。

  • echo $SHELL で利用中のシェルを確認
  • chshでシェルの変更

bashの設定ファイル

ターミナルからbashを利用することを想定します。

.bashrc.bash_profileというファイルが存在します。これらがbashと呼ばれるシェルの設定ファイルです。

「.(ドット)」で始まるファイル名は隠しファイルで、Finderでは見れないかもしれまsん。ls -aなどで見ることができます。

cd ~
ls -a
vim .bashrc
vim .bash_profile

cd(change directory)コマンドでユーザのホームディレクトリ( ~ )へ移動してください。ls(list)コマンドに-aオプションを付けて、全てのファイルを表示して見ると、.bashrcファイルの存在を確認できます。そしてvimというエディタで表示してみましょう。

.bash_profile

ログインシェルが起動する際に実行されるシェルをファイルに書き出したもの。

bash --login
のようにシェルを立ち上げた際や、ターミナルを起動する際やタブを複製した際に読み込まれるます。

.bashrc

対話シェルが起動する際に実行されるシェルをファイルに書き出したもの。

bash

のようにバッシュを起動した際は、.bash_profileは実行されず.bashrcが実行されます。ターミナルを起動する際やタブを複製した際に読み込まれます。

rcの意味としては「Run Command」のようです。

ちなみに、ターミナルのタブ間移動は「command+shift+十字キー」です。

bashrcとbash_profileの使い分けは悩んでいますが、bashrcに記述すれば大きな問題はないかと思います。

bashの設定ファイルは~/.bashrcと~/.bash_profileが存在する

Vimとは

Vimはエディタです。私にとってはまだその程度の理解です。。。

Macをお使いの方ならデフォルトでvimが入っています。

ターミナルでvim --versionと入力してみて下さい。Compiled by root@apple.comと出てくるのではないでしょうか。これはmacvimと呼ばれデフォルトで入っているものです。

vim --versionでインストールされたVimで使える機能がプラスかマイナスで確認できます。

もし使いたい機能が使えない状態(ー)であれば、homebrewでvimをインストールbrew install vimしてみて下さい。/usr/local/binにhomebrewでインストールした実行ファイルがあります。

/usr/local/bin/vimでhomebrewでインストールしたVimを実行することができます。

Vimの設定

vimの設定ファイルは~/.vimrcに存在します。

vim ~/.vimrc

ここにvimの設定を記述することでエディタをカスタマイズできます。

例えば、

set number " 行数の表示
set cursorline " 現在行の強調
set smartindent " スマートインデント
set visualbell " ビープ音の可視化
set nobackup " バックアップファイルを作らない
set noswapfile " スワップファイルを作らない

このような設定が可能です。

ターミナルのショートカット

画面の最大化・最小化 Shift+Command+M
タブの作成 Command+T
現在のタブの削除 Command+W
タブ間移動 Command+Shift+→or←

私が利用するコマンドをどんどん追加していこうと思います。

Vimのショートカット

タブの作成 :tabe fileName
タブの移動 {数字}gt
現在のタブの終了 :tabc
画面分割(水平) :vsplit
画面分割(垂直) :split
画面移動(上) <c-w>k
画面移動(下) <c-w>j
画面移動(左) <c-w>h
画面移動(右) <c-w>l
一つ前の操作に戻す u

私が利用するコマンドをどんどん追加していこうと思います。

まとめ

ターミナルとは、シェルとはを理解した上でターミナルの設定とVimの設定を行いました。

使えるコマンドを増やして行って、作業効率を上げていきたいですね。