サマリ
動機
- 基本的な言葉の定義、シェルコマンドを確認するために読んだ。細かい詳細は見たときにイメージできることがゴールなのでバーっと読み飛ばす。
全体の感想
- よく使うコマンド、言葉の定義を適度な広さで知れる良い本。シェルとターミナルの違いって?みたいな初心者が謎に思いそうなところを丁寧に解説してあるのが好感度高い。
- Linuxの汎用性は、1つのコマンドの処理をシンプルにしつつ標準入出力という抽象概念で連結できることで自分で組み合わせを設計できる部分にあるんだなと思った。マインクラフトみたいな?
覚えたこと
シェルって何だろう?
シェル
カーネルのインターフェースとなっているソフトウェア。ユーザーと実際にコマンドを実行するLinuxカーネルの橋渡しをする。
プロンプト
CLIにおいて、システムが入力を受け付けられることを示す記号の並び
シェルの一時的な切り替え。(この場合はログインシェルの上から重ねて起動している状態になる)
$ bash $ exit
ターミナル
単純に画面の入出力をするソフトウェア。なので、リモートで別のPCにログインした時、ターミナルは手元PCで、シェルはリモート先、みたいなことも起こりうる。
シェルの便利な機能
コマンド履歴の検索ショートカット。検索条件を指定してcrtl - rを押すと次の検索結果を表示
Ctrl - R
~はホームディレクトリを表すので、これでホームディレクトリ基準の移動ができる
cd ~
ファイル操作の基本
途中のディレクトリがないディレクトリを作りたいときは-pオプションをつける
mkdir -p test/test/test
rmdirは中にファイルがあるとエラーになるので、rmに再帰オプションをつけて削除する
rm -r dir1
コマンドを探す
やりたい操作がなんとなくわかるときに、-kオプション付きでマニュアルのmanを使うと、候補を出してくれる。具体的なキーワードでググるためにいいかも。
man -k copy
スーパーユーザ
たまにみるsudoは管理者権限のあるスーパーユーザーでないと実行できないコマンドを実行する際に一時的にスーパーユーザーとして実行するコマンド
sudo cat /etc/shadow
プロセスとジョブ
プロセス
メモリ上で実行状態にあるプログラムのこと。同一のコマンドであっても同時に複数実行されていれば、複数のプロセスを持つ
ジョブ
シェルからみた一行の処理の単位。パイプでコマンドをつないだ場合、プロセスは複数だがジョブは1つにカウントされる。
プロセス、ジョブを終了するにはkill
を使用する
標準入出力
各コマンドは「標準入力から入力し、処理結果を標準出力に出力する」ことだけを担っている。
標準入出力のリダイレクト(シェル側で指定をできる)
cat < /etc/crontab # ファイルからの読み込み ls / > list.txt # ファイルへの書き出し
パイプラインで使える標準出力の便利なコマンド
head # 先頭部分だけ表示 grep # 条件に合うものだけ表示 sort # ソートする
テキスト処理
入力ファイルの行数、単語数、バイト数を数えるコマンド。
wc file3
シェルスクリプト
シェルスクリプト
シェルのコマンドラインをあらかじめ記述しておくためのファイル
サブディレクトリも含み、ディレクトリのファイル使用量を表示する
du -h
シェルスクリプトにはファイルの先頭に以下のようなシバンを記載する。すると、スクリプトを動かすシェルを指定できる。
#! /bin/bash