12-LPIC「level1」

LPIC|level 1【メタキャラクタ】

目標

  • メタキャラクタについて理解する
  • tee コマンドと xargs コマンドについて理解する

メタキャラクタ

メタキャラクタは、シェルが解釈する特殊な意味を持つ文字です。これらはシェルやコマンドラインで操作を制御したり、コマンドの挙動を変えるために使用されます。例えば、リダイレクト(>、>>)やバックグラウンド実行(&)、パイプ(|)などがメタキャラクタに該当します。

補足資料として「ストリーム」「標準入力」「標準出力」「標準エラー出力」「パイプ」「リダイレクト」は次の記事を参考にしてください。

Virtual Box & Linux(Part.9)| Linux テキスト処理(1)| 現役エンジニア&プログラミングスクール講師Linuxのテキスト処理について記事にしています。「標準入力」「標準出力」「標準エラー出力」「パイプ」「リダイレクト(リダイレクション)」について操作方法を含めて扱っています。...

1.ワイルドカード系

  1. *(アスタリスク):
    • 任意の文字列(0文字以上)にマッチします。
    • 例: *.txt → .txtで終わるすべてのファイル。
  2. ?(クエスチョンマーク):
    • 任意の1文字にマッチします。
    • 例: file?.txt → file1.txt、fileA.txtなど。
  3. [](角括弧):
    • 括弧内のいずれか1文字にマッチします。範囲指定も可能。
    • 例: file[123].txt → file1.txt、file2.txt、file3.txtなど。
  4. [^ ](否定の角括弧):
    • 括弧内に指定した文字以外の文字にマッチします。
    • 例: file[^1].txt → file2.txt、fileA.txt(file1.txt以外)。

2.リダイレクト系

  1. >(リダイレクト):
    • コマンドの標準出力をファイルに書き込む。
    • 例: echo “Hello” > hello.txt → hello.txtに書き込む。
  2. >>(追記リダイレクト):
    • 標準出力をファイルの末尾に追記する。
    • 例: echo “Hello” >> hello.txt → 既存のhello.txtの末尾に追加。
  3. <(入力リダイレクト):
    • コマンドの標準入力をファイルから取る。
    • 例: sort < file.txt → file.txtの内容を入力としてソート。
  4. 2>(エラーメッセージのリダイレクト):
    • 標準エラー出力を指定したファイルにリダイレクト。
    • 例: command 2> error.log → エラーメッセージをerror.logに書き込む。

3.パイプとコマンドの制御

  1. |(パイプ):
    • 前のコマンドの標準出力を次のコマンドの標準入力として渡す。
    • 例: ls | grep “txt” → lsの出力をgrepに渡してtxtを含むファイルを検索。
  2. &(アンパサンド):
    • コマンドをバックグラウンドで実行する。
    • 例: sleep 10 & → sleep 10をバックグラウンドで実行。
  3. &&(AND条件):
    • 前のコマンドが成功した場合に、次のコマンドを実行する。
    • 例: mkdir newdir && cd newdir → mkdirが成功したらcdを実行。
  4. ||(OR条件):
    • 前のコマンドが失敗した場合に、次のコマンドを実行する。
    • 例: mkdir newdir || echo “Failed” → mkdirが失敗したらエラーメッセージを表示。

4.コマンドのグループ化とサブシェル

  1. ()(サブシェル):
    • 括弧内のコマンドをサブシェルで実行する。サブシェル内での変数や設定変更は親シェルに影響しない。
    • 例: (cd /tmp && ls) → /tmpに一時的に移動してリスト表示。
  2. {}(グループ化):
    • コマンドをグループ化し、同じシェル環境内で実行する。
    • 例: { echo “Hello”; echo “World”; } → 並行して実行するが、同じシェル環境で行われる。

5.セッションやシェルの制御

  1. ;(セミコロン):
    • 複数のコマンドを1行で順番に実行する。
    • 例: echo “Hello”; echo “World” → 2つのechoコマンドを順番に実行。
  2. !(コマンド履歴の反転):
    • 前のコマンドの逆の結果を返す(多くの場合論理否定で使う)。
    • 例: ! ls → lsが成功した場合、失敗に反転。

6.文字列展開・パラメータ展開

  1. $(変数展開):
    • シェル変数を展開する。
    • 例: echo $HOME → $HOMEに格納されたパスを表示。
  2. ${}(変数展開の拡張):
    • より複雑な変数展開を行う。
    • 例: echo ${USER} → USER環境変数の内容を表示。

7.引用符・エスケープ

  1. ‘(シングルクオート):
    • 文字列の中の特殊文字をそのまま文字列として扱う。展開を抑制します。
    • 例: echo ‘$HOME’ → $HOMEを文字列として出力。
  2. “(ダブルクオート):
    • 文字列の中で変数やコマンドの展開を許可する。
    • 例: echo “$HOME” → $HOMEの値(ユーザーディレクトリ)を表示。
  3. \(バックスラッシュ):
    • 特殊文字のエスケープ処理を行う。
    • 例: echo “This is a \”quoted\” word” → quotedをクオートとして表示。

tee コマンドと xargs コマンド

tee コマンドと xargs コマンドは、Linux/Unix のシェルでよく使われる強力なツールです。

tee コマンドの利用方法

基本構文:command | tee [ファイル名]
概要:tee は、標準出力を画面に表示しつつ、ファイルにも書き込むためのコマンドです。

利用例

ls -l | tee filelist.txt

ls -l の結果が画面にも表示され、同時に filelist.txt にも書き込まれます。

オプション:-a(append): 既存ファイルに追記する

利用例

echo "ログ追加" | tee -a log.txt

xargs コマンドの利用方法


基本構文:command | xargs [コマンド]
概要:xargs は、標準入力を引数として他のコマンドに渡すためのツールです。主にパイプで前段の出力を受け取り、コマンドに引数として供給します。

利用例

ls *.txt | xargs -r rm

*.txt ファイルをリストアップして、それらを rm コマンドの引数として削除します。

.txt ファイルが存在しない場合に rm に何も渡されず、思わぬ動作をする可能性があります。安全のためには、-r(空入力時はコマンドを実行しない)を付けています。

よく使うオプション:-n N : 一度に渡す引数の数を制限

利用例

echo "1 2 3 4 5" | xargs -n 2 echo

出力結果

1 2
3 4
5

よく使うオプション:-I {} : プレースホルダを使う

利用例

echo "file1 file2" | xargs -I {} mv {} backup/

tee と xargs の組み合わせ例

find . -name "*.log" | tee log_files.txt | xargs rm

.log ファイルを探して一覧を log_files.txt に保存し、同時にそのファイルを削除します。

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST