Bo2SS

Bo2SS

4 命令システム

コース内容#

シェル & ターミナル & コンソール#

  • shell:シェル、ソフトウェア、ユーザーにインターフェースを提供
  • console:コンソール、作業台
  • terminal:対話デバイス
    • 本質的にはファイル
    • 画像
    • stdin、stdout、stderr はそれぞれ 0、1、2 のファイルに対応
    • 0、1、2 はファイルディスクリプタで、どのプロセスを開いてもこの 3 つのファイルが開かれる
    • echo $0:出力 - zsh、入力元が zsh であることを示す
    • stdout、stderr の出力リダイレクト:1 > ファイル、2 > ファイル

console と terminal の概念はメインフレームに由来し、console は特別な terminal と見なすことができる。現在使われているのは一般的に拡張された意味で、通常は混用される。

Linux ヘルプシステム#

  • 2 つのオンライン文書:man (一般的)、info
  • man マニュアルモジュール

| コード | 意味 | 例 |
|:----|:----|:----|:----|:----|
|1 | シェルコマンドまたは実行可能ファイル | man 1 ls|
|2 | カーネルが提供する関数とツール | man 2 reboot|
|3 | ライブラリ関数 [ほとんどの C の関数ライブラリ、C++、Python は含まれない...]|man 3 readdir|
|4 | デバイスファイルの説明 [通常は /dev]|man 4 null|
|5 | 設定ファイルまたはファイル形式 [例:/etc/passwd]|man 5 interfaces|
|6 | ゲーム | man 6 lol|
|7 | 慣習とプロトコル [例:Linux ファイルシステム、ネットワークプロトコル]|man 7 tcp|
|8 | システム管理者コマンド [通常は root 用]|man 8 reboot|
|9 | カーネルルーチン [非標準ルーチン]| |
|o | 古い文書 | |
|n | 新しい文書 | |
|l | ローカル文書 | |

  • man マニュアルが提供する Example👉ベストプラクティスを学ぶ
  • ❗ 小技、コマンドが複数のモジュールに存在する可能性がある
    • キーワード検索:man -k reboot
    • 正確な検索:man -f reboot

zsh#

ワイルドカード#

  • ? 任意の 1 文字
  • * 任意の数の任意の文字
  • []、{}
ワイルドカード意味
[123]123 の中の任意の 1 文字にマッチ
[1-3]1-3 の中の任意の 1 文字にマッチ
[0-9a-zA-Z]すべての数字、大文字、小文字の中の任意の 1 文字にマッチ
[!(1-3)]1-3 以外の任意の 1 文字にマッチ、bash では括弧なしでも可能
{"a","ab",...}"a" または "ab"(またはそれ以上) のいずれかの文字列にマッチ、空白は不可、少なくとも 2 つの要素が必要

タスク管理#

  • & コマンドの後に付けることでバックグラウンドで実行
    • 終了するには?
      • ① fg→ctrl + c
      • ② kill タスク ID (実行中に見ることができる)
      • ③ pkill 名前でマッチ (注意:権限が高すぎると誤削除の可能性)
      • kill を入力すると、ターミナルの入力と出力が混在するが、実際には異なるファイルから来ている:#0、#1
  • ; コマンドの間に置くことで順次実行
  • && 論理 AND、ショートサーキット原則に注意
  • || 論理 OR、ロングサーキット原則に注意
  • ` ` コマンド置換子 (注意:このキーは esc の下にある)
    • その中のコマンドを優先的に実行し、結果を親コマンドに渡す
  • ctrl + z タスクを一時停止し、少なくとも CPU リソースを解放
    • メモリが解放されるかどうか:基盤がどう置換するかによるが、一般的にはメモリ不足の際にスワップ領域に置換される
    • sleep コマンドに似ている
  • bg、fg、jobs:詳細は『Linux 入門及び使用』ノートまとめ ——3.Linux 基礎知識 —— プロセス関連を参照

リダイレクト#

  • [コマンド] >/>> [ファイル]
    • 注意:>> は内容を追加し、> は内容を元のファイルに上書き
  • [コマンド] < [ファイル]
    • ファイルの内容をコマンドの入力として渡す
  • <<
    • 入力時にファイルの終わりを指定するために使用
      • 画像
      • ここで EOF と 000 は単なる文字列で、特別な意味はない

エスケープシーケンス#

  • ハードエスケープ
    • シングルクォートで囲む ' '
    • どんな文字でも、見たままの通り
    • 【注意】囲みの中にシングルクォートを含めることはできない
  • ソフトエスケープ
    • ダブルクォートで囲む " "
    • 特定のシェルメタキャラクター($ は変数値の置換、` はコマンド置換、\ は単一文字のエスケープ)を除き、他は見たままの通り
  • バックスラッシュ
    • エスケープ、直後に続くメタキャラクターやワイルドカードの特別な意味を取り除く

追加知識#

  • 変数呼び出し:$Var は ${Var} と等価
    • ただし後者の方が標準的で、$ の作用範囲を規定し、変数名に特殊文字が含まれることによる問題を回避できる

ヒント#

  • ls --time=[atime、ctime] -l は、デフォルトの変更時間ではなく、アクセス時間 atime または権限変更時間 ctime を表示することができる
    • 注意:-l と組み合わせて使用
  • 空白を含むファイル名に対して、zsh は誤解を招く可能性がある、以下のように:
    • 画像
    • ここでシングルクォートは空白を囲むためのもので、実際には存在しない!
    • 一括削除する場合は、sudo rm -i *\ *
      • ここで -i を使用して確認モードを有効にしている、なぜならこの * と \ は人を恐れさせるから

コース速記#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。