シェルとは?Linux標準のBash
文字入力でコンピュータに操作するのにシェルを使います。
代表的なシェルは「Bash」です
下の画像ではbashに「ping 192.168.0.1」というコマンドを入力しています。
キーボードのみ操作可能なシェルはOSの基本機能の一つです。
もう少し専門的な言い方をすると、シェルはOSの中核であるカーネルとユーザーからの入力の橋渡しをするインターフェイスです。
シェルはコマンドを打ち込む場所(コマンドプロンプト)を提供するプログラムと思って頂いて良いと思います。
LinuxではBashが標準のシェルになっています。
多くのLinuxディストリビューション(ubuntu, CentOS, Fedora)ではBashがデフォルトのシェルとして利用されています。
bashはブライアンフォックスによってGNUプロジェクトの一環としてBourne Shellの代替として開発されたフリーのシェルです。歴史が長く、多くのLinuxディストリビューションはGNUプロジェクトのプログラムを多数利用していることもあり、Bashの採用率は高いです。ユーザー側としてもどのマシンでも利用できるBashを利用するメリットがあります。
他にも様々なシェルがあり、代表的なものにはzshがあります。
UNIX・Linuxシェルの歴史
- 1971年 Thompson Shell
- 1977年 Bourne Shell (sh)
- 1978年 C Shell
- 1983年 Korn Shell
- 1989年 Bash
- 1990年 zsh
LinuxをマスターするにはBashをうまく使いこなす必要があるといえるでしょう。
Bashの動き
Bashはユーザーとカーネルをつなぐ架け橋と言いました。それでは具体的にBashがどのような働きをしているのか、順序を追ってみていきます。
- ユーザーのコマンドを受け付ける
- コマンドを解析・翻訳してカーネルに伝える
- カーネルが実行
- Bashは実行結果を受け取ってコマンドプロンプト上に表示する
というのが一連の流れです。
Bashの内部コマンドと外部コマンド
Bashには内部コマンド(組込みコマンド)と外部コマンドの二種類があります。
内部コマンドはBash自身が持っているコマンドで外部のファイルなどを参照したりしません。組み込まれたコマンドであるため、シェルによってコマンドの有無や挙動の違いが生じる可能性があります。
外部コマンドは別のソフトウェアです。外部コマンドどのシェルからでも利用できるメリットがあります(独立したソフトウェアなので導入してれば)。
内部・外部コマンドの違いがコマンドの挙動の違い(オプション指定)にも影響しています。
内部コマンドか外部コマンドかを調べる方法
調べる方法としては「type」コマンドを使います。
type 「コマンド」例: type less
と打ちこんで「シェル組み込み関数です」などと表示される場合はbashの内部コマンド・組み込み関数です。
一方「/user/bin/~」と表示される場合は外部コマンドになります。
Bashを使っているときに便利なコマンドや情報
コマンドの左端に表示される$や#,>の意味
bashのコマンド入力待ちの画面には$や#が出ているはずです。この記号にも意味があります。
#は管理者(root)を意味します。rootでログインしている時は#になっているはずです。
$は一般ユーザーです。
コマンドによっては管理者でないと実行できないものがたくさんあります。そういったコマンドの場合は明示的に
# useradd newuser
などのように記載することがあります。
コマンド補完機能 (Tabキー)
コマンドやディレクトリ、ファイルを入力している際に(Tab)キーを押すと正しいコマンドに補完される機能があります。
bashのコマンド入力履歴を見る historyコマンド
histroyコマンドは前にどんなコマンドを打ったか?というのを知ることができるコマンドです。
画面消去コマンド clear Ctrl+l
画面上のコマンドを消去するコマンドにはclearとCtrl+lがあります。
ターミナルのショートカット
ターミナルはショートカットキー[Ctrl+Alt+T]で起動できる。ディストリビューションによって異なる。CentOSでは設定が必要
コマンドプロンプト上でページを送る
Shift + Page UPでページを上に送る、Shift + Page Down ページを下に送る
GUIとCUIの切り替え ttyの切り替え
GUI環境からCUI環境に移るときはCtrl + Alt + F2を押すと仮想コンソールを切り替えてCUI環境に移れます。逆にGUIに戻るときはAlt+F1(1~7)で戻ることができます。
複数の行にわたって入力
bash入力時に長いコマンドで一行に収まりきらない場合は途中でバックスラッシュ\を入れると改行して入力できます。
# ls -al /usr/local/bin/test1test2test3test4test5/test1/test2\
>/test1/test.txt
コマンドを連続実行 「;」
ls -al ; pwd ; cd ~
のように「;」で挟むことによってコマンドを連続実行できます。
終了や停止キー(q, Ctrl+C, Ctrl+Z)
画面表示が切り替わるlessなどのコマンドは「q」キーを押すと終了することができます。
またそれ以外にも「Ctrl+C」はフォアグラウンドで起動しているプロセスを終了するシグナル「SIGINT」を送ります。
「Ctrl+Z」はフォアグラウンドで起動しているプロセスを一時停止するシグナル「SIGTSTP」を送ります。
プロセス終了が効かない場合はkillコマンド(kill -9 プロセスID)で消せます。
Bashでよく使うコマンド一覧
コマンド | 例 | 用途 |
pwd (print working directory) | pwd | カレントディレクトリを表示するコマンド |
man (online refference manual) | man (コマンド) | オンラインのコマンドを閲覧 |
ls (list directroy contents) | ls (file / dir) | ディレクトリやファイルを確認するコマンド、モード表示などもできる |
cd (change directory) | cd (file / dir) | Dirを変更できる |
mv | mv(元File/Dir) (先のFile/Dir) | 移動、名前の書きかえ |
rm | rm (File/Dir)、 -r (中身あるDir) | ファイルやディレクトリの削除 |
cp | cp (元File/Dir) (先のFile/Dir) | コピー |
mkdir | mkdir (Dirパス) | ディレクトリ作成 |
rmdir | rmdir (Dirパス) | ディレクトリ削除 |
chmod | chmod (パーミッションの内容)(File) | モードの変更 |
cat | cat (file) | File内容の表示 |
less | less (file) | テキストをスクロール閲覧できる |
head | head (file) | 最初10行を表示 |
tail | tail (file) | 最終10行を表示 |
touch | touch (file) | 空ファイル作成・timestanp変更 |
gzip | gzip (file) | 圧縮 |
tar | tar | 書庫作成 |
ln -s | ln -s | シンボリックリンク作成 |
vi (file) | vi (file) | viエディタ |
ps | ps aux | プロセス表示 |
top | top | リアルタイムプロセス表示 |
service | サービスの起動(CentOS7はsystemctl) | |
jobs | jobs | ジョブの表示 |
kill | kill -9 (PID) | プロセスの終了 |
su | su | スーパーユーザー切り替え |
who | who | ログインユーザーの表示 |
useradd | useradd (user) | ユーザー追加 |
userdel | userdel (user) | ユーザーの消去 |
groupadd | groupadd (group) | グループの追加 |
groupdel | groupdel (group) | グループの消去 |
usermod | usermod -G (group) (user) | ユーザーへのグループの追加 |
echo | echo (文字) | 画面出力 |
mount | マウント | |
startx | startx | xwindowシステム(GUI)を立ちあげる |
shutdown | shutdown -h(電源を切る)-r(再起動) -c (キャンセル) | シャットダウン |
lsblk | ブロックデバイスの表示 | |
df | df | ディスク空き容量表示 |
batch | 指定時刻に実行 | |
comm | 2つのテキストに共通する行を出力 | |
cmp | 2つテキストを1バイトずつ比較 | |
which | which (コマンド) | コマンドのパスを表示 |
grep | ファイル中の文字列を検索 | |
clear | clear | コマンドプロンプト画面の消去 |
find | ファイルやディレクトリの検索 |
Bashの文法・決まりごと
コメント
こ