【公開】LPIC101_redirect_create_B13

>100 Views

April 22, 26

スライド概要

profile-image

はじめまして、ALJ Education Plus 株式会社のyukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。 ◆IT研修講師をお探しの方は [email protected] にお気軽にお問い合わせください。 ※ALJ Education Plus 株式会社を通して、ご支援させていただきます。 ◆Zenn https://zenn.dev/yukiko_sapporo/articles/46c13e9f98b110

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

LPIC-101 v5.0 | 小豆 本対 応 > リダイレクトの挙動 ファイルが存在しない場合 / 存在する場合 新卒・文系・未経験のための IT 研修 noclobber でうっかり上書き事故を防ぐ うさうさラーメン店方式

2.

PROBLEM 今日のお題 ― B問題セット 問13 outputが存在しない場合、「ls > output」コマンドの結果として正しいものはどれですか。 1 ls の出力がターミナルに表示される 2 output が作成され、ls の出力が書き込まれる 3 エラーメッセージが表示され ls は実行されない 4 ls の出力を受け取って output コマンドが実行される 5 ls の出力は破棄される ※ 単一選択(正解は1つ) LPIC-101 | > リダイレクトとファイル作成 2 / 10

3.

① この用語 リダイレクトが作るファイル ルール うさうさラーメン店で例えると > はファイル作成力を持つ 箱がない → 新しい箱を出す 出力先のファイルが 存在しない → 新規作成 存在する → 中身を空にして上書き 既存ファイルは 警告なく消える。 箱がある → 中身捨てて入れ直す ↓ ls > output = output という新しい箱を作って ls の結果を詰め込む LPIC-101 | > リダイレクトとファイル作成 3 / 10

4.

② 簡単に ファイル存在の有無で挙動が変わる 存在しない cmd > file → 新規作成 既に存在 cmd > file → 中身消えて上書き 既に存在 cmd >> file → 末尾に追記(安全) 上書き事故の典型: echo hello > important.txt LPIC-101 | > リダイレクトとファイル作成 → important.txt の元データは永遠に失われる 4 / 10

5.

③ 詳しく① シェルが先に準備してからコマンドが走る ls コマンド自体はファイルを作らない。ファイル作成は bash の仕事。 1 3 コマンド解析 bash が ls > output を読む FD 差し替え stdout (fd=1) を output に向ける 2 4 ファイル準備 output を open (なければ作る) ls を実行 ls は普通に出力する(行き先が違う) だから「output が作成される」 ステップ2 で output が無ければシェルが新規作成する。 だから ls の結果を画面ではなく「output」ファイルに書き込むことになる。 LPIC-101 | > リダイレクトとファイル作成 5 / 10

6.

③ 詳しく② 上書き事故を防ぐ ― noclobber オプション デフォルト(noclobber OFF) ✓ set -o noclobber $ echo old > a.txt $ echo new > a.txt $ cat a.txt $ set -o noclobber $ echo new > a.txt new # 強制上書きしたい時は >| → old は警告なく消える $ echo new >| a.txt bash: a.txt: cannot overwrite → うっかり事故を防げる ★ 本番作業の前に set -o noclobber を .bashrc に書いておくと安心 LPIC-101 | > リダイレクトとファイル作成 6 / 10

7.

③ 詳しく③ 実機で確認(Ubuntu / RHEL 共通) bash の機能なのでディストリビューションに依存しない。安心して試せる。 Terminal ― 確認手順 # 1. output は存在しないことを確認 $ ls output ls: cannot access 'output': No such file or directory # 2. ls > output を実行 $ ls > output (画面には何も出ない) # 3. output が作成されたことを確認 $ ls -l output -rw-r--r-- 1 yuki yuki 127 Apr 22 10:15 output $ cat output Desktop Documents Downloads ... LPIC-101 | > リダイレクトとファイル作成 7 / 10

8.

APPLY 原理原則で5択を斬る # コマンド 判定 理由 1 ターミナルに表示される × 誤り > で fd=1 が output に向くので、画面には出ない 2 output が作成・書込 ○ 正解 存在しない場合は新規作成、lsの出力を書き込む 3 エラーで ls 未実行 × 誤り bash は出力先を先に open するが、無ければ作るだけ。エラーではない 4 output コマンドが動く × 誤り output はコマンド名ではなくファイル名。パイプ | と混同 5 出力が破棄される × 誤り 破棄したい時は /dev/null に飛ばす。> output は保存 → 正解は 2番。 LPIC-101 | > リダイレクトとファイル作成 8 / 10

9.

ANSWER 正解 ― ファイルは新規作成される 正解 ② output が作成され、ls の出力が書き込まれる > は「ファイルがなければ作る、あれば上書き」する演算子 覚えておく3つのパターン > で新規 > で上書き >> で追記 ファイルがない ファイルあり ファイルあり/なし 作成して書込 消してから書込(危険) 末尾に追加 or 新規 LPIC-101 | > リダイレクトとファイル作成 9 / 10

10.

④ 原理原則・一言でまとめ > リダイレクトは 「ファイルがなければ作る、あれば上書き」。 > >> >| 新規 or 上書き 追記(安全) noclobber無視 うっかり上書き事故を防ぐなら set -o noclobber 面白きなき世を面白く ─ 石黒 友季子