UNIXとシェルについて入門編


猿でもわかる用に書いてみました 途中なので後ほど追記します

UNIXとシェルの関係性とは

・UNIXはシェルを通して操作するもの

UNIXに何かをさせるためにはコマンドが必要で、シェルはそのコマンドの一つである。シェルが行うのは、自分たちがやりたい事をUNIXに伝える

・シェルには種類がある

UNIXにログインしたときは、ログインシェルというシェルがUNIXとそのユーザとを仲立ちしている

# どういうシェルが仲立ちになっているか確認する
$ echo $SHELL 

ここに表示されたものがコマンドインプリタとして今自分のUNIXに実装されているもの

・シェルには二つの側面がある

・コマンドインプリタ(ログインシェル)としてのシェル
・スクリプト言語としてのシェル

よく使われるスクリプト言語としてのシェル

Bシェル:Bourne shell /bin/sh
どんなUNIXにも標準で装備されてて汎用性に優れる

ログインシェルにCシェル使ってる人もいるけどスクリプト書くときはみんなBシェル使うらしい ていうかそれが当たり前になりつつあるらしい

シェルプログラミング=シェルスクリプトを書くこと

「シェルスクリプトを書く」=UNIXのコマンドを組み合わせる事で新しく自分なりのコマンド(つってもただのテキストファイル)を作る
コマンドは1つずついれるけどまとめてシェルスクリプトに入れたり、条件判定によって操作を変えたりする

なぜシェルスクリプトを書くのか?

・ルーティンワークを単純化する
・特別な処理をするコマンドを新たに作る
特に、一度作ってしまえばたいていのUNIX上で同じように動作出来る野が利点。基本的には同じシェルスクリプト野書き方で通用するから汎用性が高い

シェルスクリプトを書くために必要なのは

・ある程度の数のコマンドを知っておくこと
こうしたい、という作業をさせるためのコマンドがわからないとシェルスクリプトを作成することができない
・シェルプログラミングのための文法を身につけておくこと
変数の使い方や条件判定、ループなどという処理のさせ方がわかっていないとシェルスクリプトは書けない=シェルプログラミングはできない

シェルスクリプトの基本

・拡張子は「.sh」
・コメントアウトは「#」で一行、「<<」で複数行
・スクリプトは必ず#!/bin/sh で書き始める
(Bシェルをスクリプト言語として使うよ〜っていう宣言)

クォーテーションの使い分け

文字列をシェルに書くときにシェルに読ませたくない文字列があるときはどうするか?
""とか''とか/とかを使う。これを使って記号の持つ意味を殺すことを「エスケープする」という。

・ダブルクォート(")
囲んだ文字列の中で、変数の置き換えやコマンド置換した結果を使いたいとき
・シングルクォート(')
シェルによる解釈を全くさせたくないとき
=「$」「/」「"」などの文字をそのままの文字として使いたいとき
sedコマンドやawkコマンドを使うときによく使う
・バックスラッシュ(/)
あんまり使わなくていい ダブルクォート使ってるときに1文字だけエスケープしたいときに使う でもあんまり使わなくていい

基本ダブルクォート使ってたまにバックスラッシュ、全部エスケープしたいときはシングルクォートを使うといいかも