読者です 読者をやめる 読者になる 読者になる

UNIXの勉強まとめ

プログラミング

基本となるコマンドなどを調べたので備忘録としてまとめておく。

  • pwd
    • 現在のディレクトリ位置を返す。
    • 使用例:
      • $ pwd
  • cd
    • 指定したディレクトリに移動する。絶対パスまたは相対パスでの指定が可能。
    • 使用例:
      • $ cd /home/hoge/foo/
      • $ cd ../
  • ls
    • ファイルやディレクトリの情報を表示。
    • -alとつけると隠しファイルまで含めてすべての詳細を表示できる。
    • 使用例:
      • $ ls
      • $ ls -al
  • mv
    • ファイルやディレクトリを移動する。リネームもできる。
    • 使用例:
  • cp
    • ファイルやディレクトリをコピーする。
    • 使用例:
  • rm
    • ファイルを削除する。
    • 使用例:
      • $ rm target.php
  • touch
    • ファイルのアクセス時刻や更新日時を変更できる。
    • ファイルが存在しない場合は0バイトのファイルが作成される。
    • 使用例:
      • $ touch -a target.php //最終アクセス日時を現在時刻に変更。
      • $ touch -m target.php //最終更新日時を現在時刻に変更。
  • mkdir
  • rmdir
    • ディレクトリを削除する。
    • 使用例:
  • find
    • ファイルやディレクトリを検索する。
    • -exec オプションが便利。この中にrmやcp等を入れて、ファイルの一括コピーや一括削除ができる。対象ファイルのところに{}と入力すると、検索したファイル名が自動的に入る。
    • 使用例:
      • $ find . -name "*.php" //現在のディレクトリ以下の.phpのつくファイルを検索する。
  • grep
    • ファイル内を正規表現を用いて検索し、マッチする行を出力する。
    • 使用例:
      • $ grep 'ERROR' batch.log //batch.log内に'ERROR'が見つかった行を出力する。
  • sed
    • テキストを指定した条件に基づいて変更して出力する。
    • \( \)でくくるとその部分をキャプチャして\1、\2などで利用できる。
    • 使用例:
      • $ sed -e "s/777/Lucky/g" sample.csv //sample.csv内の'777'を'Lucky'に変換して出力する。
      • $ sed -e "s/\(777\)/Lucky\1/g" sample.csv //sample.csv内の'777'を切り出して'Lucky'の後につけて出力する。
  • man
    • コマンドのオンラインマニュアルを表示する。
    • 使用例:
      • $ man mv
  • apropos
    • コマンドの検索。指定したワードに関係するコマンドを一覧してくれる。
    • 使用例:
      • $ apropos copy //copyに関係するコマンド一覧を表示。
  • kill
    • プロセスを終了させる。
    • シグナルオプションで終了のシグナルを選択する。
    • 使用例:
      • $ kill -KILL 112 //プロセスID112のものを強制終了する
  • ps
    • プロセス一覧を表示する。
    • なお、詳細に現れる項目の意味は以下の通り。
      • UID:ユーザーID
      • PID:プロセスID
      • PPID:親プロセスID
      • PRI:プロセスの優先度
      • NI:プロセスの優先度のNice値
      • SZ:仮想分も含めたメモリ使用量
      • RSS実メモリの使用量
      • WCHAN:プロセスが休止状態にあるときにとまっている場所
      • STAT:プロセスの状態
      • TTY:端末名
      • TIME:コマンドの実行時間
      • COMMAND:コマンド名
    • 使用例:
      • $ps //コマンド実行ユーザーの実行中のプロセスを表示する。
      • $ps al //すべてのユーザーの実行中のプロセスを表示する。
  • top
    • リアルタイムに更新されるプロセスの状態一覧を表示する。
    • 使用例:
      • $ top
  • nice
    • プロセスの実行優先度を設して実行する。(高)-20 ~ 20(低)の間で設定可能。
    • 使用例:
      • $ nice -n 3 echo "hoge" //シェル自体の優先度に+3してechoを実行。
  • fg
    • バックグラウンドで動いているジョブをフォアグラウンドへ移動する。
    • 使用例:
      • $ fg ジョブ番号
  • bg
    • 現在、フォアグラウンドで動いているジョブをバックグラウンドへ移動する。
    • 使用例:
      • $ bg
  • jobs
    • 現在、動いているジョブ一覧を出力する。
    • 使用例:
      • $ jobs
  • at
    • 指定した時刻にジョブを実行する。
    • 使用例:
      • $ at -f ex.sh 0600 //ex.shを6時に自動で実行する。
  • id
    • 現在、ログインしているUIDやGIDなどを表示する。
    • 使用例:
      • $ id
  • umask
    • touchなどでファイルを作成する際に初期状態で設定されるパーミッションを設定する。
    • 初期状態のパーミッションは、ここで設定した数値を666から引いた数値で設定される。
      • たとえば022を設定すると666-022=644となる。
      • 数値を指定しない場合は、現在の設定値を表示する。
    • 使用例:
      • $ umask
      • $ umask


ここからはUNIXを使う上で必要になるキーワードのメモ。

  • SSH(セキュアシェル)
    • ネットワーク上からシェルにアクセスするときに使う。
    • すべて通信が暗号化されている。
    • 公開鍵認証で共通鍵を取得し、通信自体は共通鍵認証で行われる。
  • FHS(ファイル階層標準:Filesystem Hierarchy Standard)
    • LinuxUNIXのディレクトリ階層やファイル名に関しての標準となる仕様。
    • ファイルの用途によって設置するディレクトリ階層などが決められている。
    • 互換性の観点から、この仕様に沿うことが望ましい。
  • UID
    • ユーザーID(番号)
      • 番号だとわかりにくいので、ユーザー名という形で文字列を使用できる。
  • GID
    • グループID(番号)
      • 番号だとわかりにくいので、グループ名という形で文字列を使用できる。
    • なお、ユーザーが所属するグループは複数設定できるが、一次グループとしては1つのグループが設定される。
      • それ以外は補助グループに分類される。
      • 補助グループではグループの権限を得ることはできない。
  • 正規表現
    • UNIXの基本正規表現
      • *:.で始まる以外の文字列
      • .:何らかの1文字
      • [abc]:abcのうち1文字
      • ^:行の最初
      • $:行の終わり
      • etc..
    • POSIX
      • +:直前文字の1回以上の繰り返し
      • ?:直前文字の0回または1回の繰り返し
      • |:OR
    • Perl
      • より多くの表現、たとえば\dで数字、\sで空白文字などが追加されている。
      • 多くのプログラミング言語で利用可能。
  • inode
    • ファイルのデータ格納位置や更新日時などの管理情報のこと。
    • 同じファイルが複数ディレクトリや別名のファイルとして存在することがあっても、inodeは1つしか存在しない。
  • ハードリンク
    • 同じデバイス内やファイルシステム内のファイルへのリンク。
    • 実体ファイルと同じようにアクセスしたりできる。
    • ハードリンクは実体ファイルの削除操作が可能。
  • シンボリックリンク
    • ハードリンクと同様にファイルへのリンク。
    • ハードリンク違い、デバイスの内外問わない。
    • ただし、実体ファイルの削除操作はシンボリックリンクからはできない。
  • ファイルのモード
    • ファイルへアクセスできる権限(パーミッション)とファイル種別のこと。
    • パーミッションはユーザーおよびグループ、その他の3つに関して設定できる。
    • drwxrwxrwxという形式または777のような3桁の数字で表記する。
      • 先頭のd:ここはファイルの種別。一般ファイルは-、ディレクトリはdになる。
      • rwxまたは7:先頭から順にユーザー、グループ、その他の権限。
        • r(4):読み取り可能
        • w(2):書き込み可能
        • x(1):実行可能
  • シグナル
    • UNIX系OSにおいてプロセス間での非同期イベントを伝えるための機構。
    • ハードウェア例外やユーザーの操作等によって発生する。
  • プロセスとジョブ
    • シェルが管理するプログラムの単位がジョブ。
    • ジョブの中に複数のプロセスが存在する。(UNIXでは異なるコマンドを|でつなげて実行できるため)
広告を非表示にする