📝

【学習用】Linuxお勉強

2024/08/29に公開

前提

代表的なLinuxコマンドも知らずに業務をしていたので簡単に自分の学習用にまとめてみました。
業務で必要になったら都度更新していくイメージで!

Linux OSの構成

  • カーネル

    • カーネルは、ハードウェアに直接アクセスできるOSの中核プログラムのこと。
    • ちなみにLinuxは本来このカーネルプログラムのことを指す名称だったが、現在ではカーネルプログラム以外のプログラムを含めたOS全般を指してLinuxと呼んでいる。
  • ディストリビューション

    • カーネルだけではOSとして動作することが出来ないため、実際には様々なソフトウェアを組み合わせる必要がある。その作業には高度な知識とスキル・労力が必要なため、カーネルやソフトウェア群をあらかじめ組み合わせて配布する形態(ディストリビューション)が生まれた。

コマンドについて

  • プロンプトの末尾の文字でユーザの識別が可能。
    • $ 一般ユーザ
    • # 管理者ユーザ(root)

ファイル・ディレクトリの操作

lsコマンド

ls -lで得られた詳細情報の意味について。以下は例として $ ls -l ham を実行した時
-rw-rw-r--
最初が-なら通常ファイル、dならディレクトリ
その次は3文字1グループで、[所有ユーザに対するアクセス権][所有グループに対するアクセス権][その他に対するアクセス権] を意味する

  • 禁止
    r 読み取り権
    w 書き込み権
    x 実行権

touchコマンド

touch <ファイル名>

  • 既存ファイル名を入力するとタイムスタンプの更新
  • 新規ファイル名を入力すると0バイトファイルを作成

cpコマンド

cp <コピー元ファイル> <コピー先ファイル>

  • コピー元、コピー先ともにファイルを指定した場合、ファイルの複製を作成
  • コピー元にファイル、コピー先にディレクトリを指定した場合、ファイルを指定ディレクトリにコピーする動き
  • コピー元、コピー先ともにディレクトリを指定した場合、コピー元ディレクトリ内のサブディレクトリを含めた複製を作成

mvコマンド

mv <移動元ファイル> <移動先ファイル>

  • 移動元にファイル、移動先にディレクトリを指定した場合、ファイルを移動
  • 移動元、移動先ともにファイルを指定した場合、ファイル名を変更する

catコマンド

cat <ファイル名>
指定したファイルの内容を表示する。複数指定した場合は、順に連結して表示する。
※catで全体が確認できない場合は、moreコマンドを使うことで一画面で表示出来る範囲の部分を表示させることが出来る。lessコマンドも使える。(lessコマンドの方が高機能)

アーカイブの関連コマンド

  • 複数のファイルを一つのファイルにまとめることをアーカイブといい、アーカイブファイルを作成・閲覧・展開するツールのことをアーカイバという。 - Linuxでは主にtarを使う。tarはオプションによりアーカイブ時に圧縮することが可能。(gz, bz2, xz)
    • tarコマンドで作成したアーカイブファイルは必要に応じて圧縮することが出来る。Linuxでは、gz形式, bzip2形式の主に2つの圧縮形式が利用される。

viエディタの利用

viエディタはGUIを必要とせず、CUIのみでも動作するのが大きな特徴。現在はオリジナルのviが使用されることはほとんどなく、互換エディタが利用されています。そのうちもっと代表的なのがvim(vi improved:ヴィム)。

viコマンド

vi <ファイル名>

  • ファイル名に存在しないファイルを指定した場合、新規作成する。
  • ファイル名に既存のファイルを指定したら、既存ファイルを編集する。
  • viエディタの操作
    • :wq ⇒保存して終了
    • :q! ⇒保存せずに強制終了
  • コマンドモードでの基本操作
    • i カーソルの位置から文字を入力
    • a カーソルの右側から文字を入力
    • o カーソルの一行下に改行して文字を入力

シェルの概要

  • シェルとは、ユーザとカーネルの橋渡しとなるインタフェースプログラムのこと。ユーザが入力した命令を機械語に変換してカーネルに渡す。
  • 代表例としては、sh,bash,zshなど。Linux標準シェルはbash。

bashの基本機能

  • ヒストリ機能
    • history で出力した履歴番号の前に!を付けると、その履歴番号のついたコマンドを指定して再度実行することが出来る
  • メタキャラクタ(*, [文字]など)

パイプライン

  • 2つ以上の処理を同時に行う際に、あるプログラムの出力を別のプログラムの入力に渡す機能のこと。
    • 複数の処理を行う時に得られる中間ファイルが不要になることが多いため、それを防ぐ目的がある。
  • パイプラインの記号は |

エイリアス

  • よく使うコマンドを短い名前で実行可能。
    alias <別名> = <コマンド>

echoコマンド

echo [オプション] <文字列>
文字列を標準出力に表示する。

例えば。。
$ echo $DATE ⇒DATEという変数に格納されている値を確認出来る
$ echo 'DATE' ⇒DATEという文字列として解釈

フィルタコマンド

  • 標準入力から入力し、何らかの加工をした上で標準出力に出力するコマンド
  • パイプライン記号(|)によりデータを直接受け渡す
    • 主にgrepを使うケースが多い。
    • 例) $cat member | grep 'tokyo' で、memberファイルの内容を確認出来る。

プロセスの制御

  • プロセスとは、OSで動作するプログラムの最小単位です。端末からコマンドが実行されるとプロセスが生成され、一つ一つのプロセスはそれぞれ重複しないプロセスIDという番号が割り当てられ、カーネルによって管理される。

  • フォアグランド処理⇒ユーザが見えるところで動作する処理

  • バックグラウンド処理⇒ユーザが見えないところに動作する処理 (コマンドの末尾に&を付けるとバックグラウンド処理となる)

  • コマンド群

    • sleep 指定された時間だけ処理遅延
    • ps プロセスの一覧を表示する
    • kill プロセスに対してシグナルを送信し、意図的にプロセスを終了させる。
    • top Linuxのタスクを表示する

シェルスクリプトによる処理の自動化

chmodコマンド

chmod <モード> <ファイル>
ファイルやディレクトリに対するモードを変更する。オクタルモード(パーミッションを3ビットで表記)することも出来る。

  • <モード>の部分は3文字構成
    • ①誰に u:所有ユーザ, g:所有グループ, o:その他, a:全て(u,g,o)
    • ②どうする +許可, -禁止
    • ③どの権限を r,w,x

ユーザ管理

  • 管理ユーザ:root,スーパーユーザともいう。すべての権限を持つ。
  • 一般ユーザ:管理者ユーザ以外のすべてのユーザ。操作範囲は管理者ユーザによって制限される。
  • システムユーザ:一般ユーザのうち、ログインが許可されないユーザ

Discussion