Bashとは
シェルは、コマンドライン・インタプリタとも呼ばれ、ユーザが入力したコマンドをカーネルに渡すプログラムである。シェルには、Bashやcsh、zshなど様々な種類が存在するが、LinuxやMac OSでは、Bashが標準シェルとなっている。/bin/shは、Linuxにおける標準シェルを示しており、通常はBashへのシンボリックリンクとなっている。
$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 9月 26 15:52 2014 /bin/sh -> bash
なお、Bashを/bin/shとして実行させるとPOSIX準拠モードで起動するため、厳密にはBashと挙動が異なる。以下のコマンドを実行することで、インストール済みのシェルを確認することができる。
$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
ファイルディスクリプタ
シェルは、実行するプログラムの以下の値を取得することが可能となっている。
ディスクリプタ | 略記 | 内容 |
---|---|---|
<0 | < | 標準入力 |
>1 | > | 標準出力 |
>2 | >2 | 標準エラー出力 |
標準出力も標準エラー出力も同時に出力したい場合は、2>&1と記述する。
ショートカット
カーソルの移動や編集を行う際に以下のショートカットを使うと便利。
コマンド | 意味 | 内容 |
---|---|---|
Ctrl + a | ahead | 行頭に移動 |
Ctrl + e | end | 行末へ移動 |
Alt + b | before | 一単語左へ |
Alt + f | foward | 一単語右へ |
Ctrl + d | delete | カーソルの文字を消す |
Ctrl + h | 0x08 (Backspace) | カーソルの左の文字を消す |
Ctrl + w | word | カーソルの左の単語を消す |
Ctrl + u | unix-line-discard | カーソルより左の文字を全てカット |
Ctrl + k | kut | カーソルより右の文字を全てカット |
Ctrl + y | yank | ペースト |
Ctrl + p | previous | 前の履歴を表示 |
Ctrl + n | next | 次の履歴を表示 |
Ctrl + r | reverse | 過去の履歴から検索 |
– | OLDPWD | 直前にいたディレクトリ |
設定ファイルの読み込み順序
bashの設定ファイルはいくつもあるが、以下の順序で読み込まれるらしい。
読み込み順序 | 読み込み時 | 対象 | ファイル |
---|---|---|---|
1 | ログイン時 | 全ユーザ | /etc/profile |
2 | ログイン時 | 各ユーザ | ~/.bash_profile |
3 | ログイン時 | 各ユーザ | ~/.bash_login |
4 | bash起動時 | 各ユーザ | ~/.bashrc |
5 | ログイン時のシェル終了時 | 各ユーザ | ~/.bashrc |
PATHを通すときなどに無意識に~/.bashrcにPATHを書いてたけど、~/.bashrcにPATHを書いてbashを複数タブで起動すると、その度に同じPATHが追加されてしまうようだ。というわけで、設定ファイルは、~/.bash_profileに書いておけばいいということか。
設定ファイルの内容
historyコマンド時に時間情報も表示させると便利。
過去のコマンドが消えてしまわないように、historyの上限値も増やしておくと、なお便利。
ちなみに、![履歴番号]で、history内の過去のコマンドを実行できる。
# History HISTSIZE=50000 HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S ' # Path PATH="$PATH":/usr/local/bin:/bin:/sbin:/usr/bin
コマンドの実行
シェルで実行ファイルを実行する場合、PATH付きで指定しなければいけない。カレントディレクトリの実行ファイルを、
$ ./a.out
などと書くのは上記ルールによる。ただし、シェルにPATHが通っている場合は、PARHを省略できる。実行したファイルのPATHを確認するにはwitchコマンドを使って、
$ witch ls alias ls='ls --color=auto' /bin/ls
とすればよい。また、cd, echo, pwdなどのコマンドは、ビルトインコマンドと呼ばれ、シェル自身に組み込まれたコマンドである。コマンドのタイプを確認するためには、
$ type pwd pwd is a shell builtin
typeコマンドを使用する。