>100 Views
April 22, 26
スライド概要
はじめまして、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
LPIC Level 1 / 101 試験対策 問 26 〜問 30 まるごと解説 find / cut / gunzip / vi / ① この用語 ② 簡単に書くよ ③ 詳しく書くよ → 一言まとめ + 実機でやっていいの? + Ubuntu / RedHat の違い + うさうさラーメン店のたとえ 🍜🐰 新卒未経験・文系出身者向け / ALJ Education Plus 面白きなき世を面白く ── 石黒 友季子 split
この回で押さえる 5 問 Q26 find コマンド Q27 テキスト処理 Q28 アーカイブ・圧縮 Q29 vi エディタ Q30 テキスト処理 -mindepth ─ 最小ディレクトリ階層 → どこから下を探す? cut -d ':' -f 1,3 /etc/passwd → どの列を切り出す? gunzip data.tgz の結果 → .tgz = .tar.gz [ 回数 ][ コマンド ] 複数行処理 → 5l / 3yj / 4dd LPIC Level 1 / ALJ Education Plus / 石黒 友季子 split ─ ファイル分割 → -l 行数 / -b バイト 1 2 3 4 5 2 / 13
Q26 find コマンド -mindepth ─ どこから下を探すか決める ① 用語 ② かんたん解説 ※ 正確な表現ではございません 🐰 うさうさラーメン店の倉庫で… -mindepth N 「最低でも N 階層下から検索してね」 「 1 階の棚は見なくていいから、 2 階以降の棚だけ探してきて!」 find の検索範囲を“下限”で絞るオプション。 -maxdepth と組み合わせると範囲を限定できる。 = 新人バイトに「最低でもここから下」と指示する感覚。 ③ 図で原理原則 ─ 階層 (depth) の数え方 /etc depth 0 ( 起点 ) /etc/passwd depth 1 ← 除外 実機コマンド例 $ find /etc -mindepth 2 -name '*.conf' → /etc 直下の .conf は出ない /etc/nginx/ depth 1 /etc/nginx/a.conf LPIC Level 1 / ALJ Education Plus / 石黒 友季子 depth 2 ← 対象! → /etc/nginx/*.conf は出る 💡 -maxdepth と合わせて範囲限定 3 / 13 ── Q26 (1/2)
Q26 find コマンド まとめ・実機 OK ?・ディストリ差 🎯 一言でまとめるよ! -mindepth は「ここから下しか見ない」下限の指定。 -maxdepth は上限。 ✓ 実機でやって OK ? 🐧 Ubuntu / RedHat 差異 完全に OK 。 find は読むだけで壊れません。 両方 GNU findutils → 差なし。 $ find /etc -mindepth 2 -name '*.conf' $ find ~/kensyuu -mindepth 1 -type d • Ubuntu 24.04 / RHEL 9 共通仕様 • -mindepth / -maxdepth 同じ挙動 • macOS(BSD find) にも同名あり ⚠ -delete / -exec rm と組むときは 先に -print で対象確認! → 試験でも現場でもそのまま覚えて OK 🪤 試験で引っかけられた選択肢の整理 ✗ -dirmin ✗ -n ✗ -s ✗ -minlevels ◯ -mindepth → 存在しない。名前の雰囲気で選ばない → そんな find オプションは無い → BSD 系で「ソートして出力」。階層とは無関係 → 架空。英語っぽいが存在しない → これが正解。 depth = 階層の深さ LPIC Level 1 / ALJ Education Plus / 石黒 友季子 4 / 13 ── Q26 (2/2)
Q27 cut コマンド ─ 列 ( フィールド ) を切り出す テキスト処理 ① 用語 ② かんたん解説 ※ 正確な表現ではございません 🍜 うさうさラーメンの注文票から… cut -d ':' -f 1,3 /etc/passwd 「 : 区切りのメモから、 1 列目 ( お客様名 ) と 3 列目 ( 注文番号 ) だけ抜き出してちょうだい」 -d 区切り文字 (delimiter) を指定 -f 取り出すフィールド番号 (field) コロンで区切られた列のうち、 1 番目と 3 番目だけ抜き出す。 = エクセルの列コピペ感覚 🙌 ③ /etc/passwd は : 区切りの 7 フィールド 1 列目 2 列目 3 列目 4 列目 5 列目 6 列目 7 列目 ユーザー名 パスワード UID GID GECOS ホーム dir シェル yukiko x 1000 1000 Yukiko I. /home/yukiko /bin/bash $ cut -d ':' -f 1,3 /etc/passwd LPIC Level 1 / ALJ Education Plus / 石黒 友季子 → yukiko:1000 5 / 13 ── Q27 (1/2)
Q27 テキスト処理 まとめ・実機 OK ?・ディストリ差 🎯 一言でまとめるよ! cut = -d で区切り文字、 -f で列番号。数えるのは「 1 から」。 ✓ 実機でやって OK ? 🐧 Ubuntu / RedHat 差異 完全に OK 。読み取り専用で副作用ゼロ。 両方 GNU coreutils → 差なし。 $ cut -d ':' -f 1,3 /etc/passwd | head $ cut -d ',' -f 2 data.csv • /etc/passwd のフォーマットも共通 • RHEL でも Ubuntu でも 7 フィールド 💡(cut TAB 区切りなら -d は省略 OK のデフォルト区切りが TAB) ⚠ BSD/macOS は -d に空白を渡すと挙動 が違うので本番は GNU 環境推奨。 🪤 選択肢の罠 ─ 雰囲気で選ばない! ✗ sort -t : -k1,3 → 「並び替え」。列切り出しじゃない ✗ colrm 1,3 → 1 〜 3 文字目を「削除」する ( 残す方じゃない ) ✗ chop -c 1,3 → 架空のコマンド ✗ column -s : 1,3 → 整形表示コマンド。列抽出はしない ◯ cut -d ':' -f 1,3 → これが正解! LPIC Level 1 / ALJ Education Plus / 石黒 友季子 6 / 13 ── Q27 (2/2)
Q28 アーカイブ・圧縮 gunzip は「圧縮だけ」解く ─ 展開はしない ① 用語 ② かんたん解説 ※ 正確な表現ではございません 🍜 うさうさラーメンのお土産で… gunzip data.tgz 真空パック (.gz) に包まれた 詰め合わせ箱 (.tar) が入っている。 .tgz = .tar.gz のエイリアス gunzip は gzip 圧縮を「展開」するコマンド。 tar のアーカイブ解除はしない ( 別コマンドが必要 ) 。 gunzip = 真空パックだけ破く。 箱はまだ閉まったまま! → gunzip は 1 段階目 ( 圧縮解除 ) だけを担当。 ③ .tgz は 2 段階の包み ─ gunzip は外側だけ data.tgz gunzip → 圧縮 + アーカイブ readme.txt config.ini ( 中身 = 圧縮済 ) data.tar アーカイブのみ readme.txt config.ini ( まだ 1 ファイル ) tar xf → readme.txt 個別ファイルに config.ini ⚠ gunzip data.tgz 後、 data.tgz は消え data.tar が残る。アーカイブ展開は tar xf data.tar が必要! LPIC Level 1 / ALJ Education Plus / 石黒 友季子 7 / 13 ── Q28 (1/2)
Q28 アーカイブ・圧縮 まとめ・実機 OK ?・ディストリ差 🎯 一言でまとめるよ! gunzip = 圧縮解除「のみ」。 .tgz → .tar に変わるだけ。中身は展開しない。 🐧 Ubuntu / RedHat 差異 ✓ 実機でやって OK ? OK 。ただし 元の .tgz は消える点に注意。 $ gunzip data.tgz $ gunzip -k data.tgz $ tar xzf data.tgz → data.tar に変化 → 元ファイル残す → 一発で全展開 💡 普段は tar xzf が楽。 👍 両方同じ gzip/gunzip → 差なし。 • .tar.gz / .tgz の扱い共通 • tar コマンドも共通 (GNU tar) • bzip2 → .tar.bz2(bunzip2) • xz → .tar.xz (unxz) → 拡張子ごとに展開コマンドが違う 🪤 選択肢の罠 ─ 「中身が展開される」ワナ ✗ readme.txt, config.ini, data.tgz のみ → tgz は消える ✗ data.tar と data.tgz のみ → tgz は消える ✗ readme.txt.gz と config.ini.gz のみ → 個別に圧縮されてない ✗ readme.txt と config.ini のみ → tar 展開が別途必要 ◯ data.tar のみ → 正解! LPIC Level 1 / ALJ Education Plus / 石黒 友季子 8 / 13 ── Q28 (2/2)
Q29 vi エディタ [ 回数 ][ コマンド ] で一気にまとめて実行 ① 用語 ② かんたん解説 ※ 正確な表現ではございません 🍜 うさうさラーメンの厨房で… [ 回数 ][ コマンド ] 「餃子を 5 個 ください」と言うとき、 まず「 5 」と「餃子」を続けて言う。 コマンドの直前に数字を打つと、 その数字の回数ぶん繰り返し実行。 vi も同じ。「 5 」→「 l 」で右に 5 マス。 回数が先、動作があと。 これは vi の 最も基本的な原理。 ほぼすべての移動 / 編集コマンドに使える。 ③ 原理原則 ─ 数字 → コマンド の順! 5l 10k 右に 5 文字移動 l = 右 1 文字 10 行 上に移動 k = 上1行 LPIC Level 1 / ALJ Education Plus / 石黒 友季子 3yj 2w 3 行下までヤンク ( コピー ) yj = 下 1 行コピー 2 単語 先に移動 w = 次の単語 4dd 7p 4 行まとめて削除 dd = 1 行削除 7 回 ペースト p = 1 回ペースト 9 / 13 ── Q29 (1/2)
Q29 vi エディタ まとめ・実機 OK ?・ディストリ差 🎯 一言でまとめるよ! vi は「数字 → コマンド」。後ろに数字は NG(l5 / yj3 は動かない ) 。 ✓ 実機でやって OK ? 🐧 Ubuntu / RedHat 差異 OK 。練習用ファイルで試そう。 vi コマンド仕様は共通。 $ cp /etc/passwd ~/vi_practice.txt $ vi ~/vi_practice.txt → 5l / 3yj / 4dd を自由に試す • Ubuntu: vi → vim-tiny • RHEL 9: vi → vim-minimal → 両方とも軽量版 vim が呼ばれる ⚠ /etc/passwd 本体の直接編集は NG 。 必ずコピーに対して練習する。 💡 フル機能は vim パッケージを追加 (apt / dnf install vim) 🪤 選択肢の罠 ✗ :repeat に続けて番号 → そんなコマンドない ✗ シフト + カーソルで行選択 → Visual モードの話で「複数行に適用」の本質ではない ✗ :set repeat=5 → 架空の設定 ✗ l5 / yj3 ( コマンド後に数字 )→ 順序が逆! 動作しない ◯ 5l / 3yj ( 数字→コマンド ) → これが正解 LPIC Level 1 / ALJ Education Plus / 石黒 友季子 10 / 13 ── Q29 (2/2)
Q30 テキスト処理 split ─ 大きいファイルを分割する ① 用語 ② かんたん解説 split [-l 行数 | -b サイズ ] 入力 出力接頭辞 ※ 正確な表現ではございません 🍜 うさうさラーメン業務で… 大袋の業務用麺 (1000 食分 ) を 「 100 食ずつの小袋」に詰め替える感じ。 -l N N 行ごとに分割 -b N N バイトごとに分割 • -l 100 = 100 食ごとに袋分け • -b 2M = 2kg ごとに袋分け 出力は接頭辞 + aa, ab, ac… の連番。 例 : output_aa / output_ab / output_ac ③ 原理原則 ─ 大 → 小 へ分ける、中身は変えない big.log 1500 行 split -l 500 ( 巨大なログ ) out_ out_aa out_ab out_ac 1 〜 500 行 501 〜 1000 行 1001 〜 1500 行 500 行 500 行 500 行 💡 サフィックスは aa→ab→ac… zz まで 26×26=676 個作れる。 -d オプションで数字連番 (00,01…) にもできる。 LPIC Level 1 / ALJ Education Plus / 石黒 友季子 11 / 13 ── Q30 (1/2)
Q30 テキスト処理 まとめ・実機 OK ?・ディストリ差 🎯 一言でまとめるよ! split は「ファイルを 行数 or バイト で小分け」。中身の内容は変えない。 ✓ 実機でやって OK ? 🐧 Ubuntu / RedHat 差異 OK 。元ファイルは変更されない。 両方 GNU coreutils → 差なし。 $ split -l 500 big.log out_ $ split -b 2M big.iso part_ $ cat out_* > restored.log • -l / -b / -d 全て共通 • Ubuntu 24.04 / RHEL 9 同挙動 ⚠ 分割ファイルが増えるので作業ディレクトリ を用意してから実行しよう。 ⚠ macOS の split は -b の単位指定 書式が一部違う (2m / 2M など ) 。 → 試験対策は GNU 仕様で OK 🪤 選択肢の罠 ✗ ar ✗ cat ✗ divide ✗ parted ◯ split → → → → → アーカイブ作成 (.a 静的ライブラリ用 ) 。分割ではない ファイル結合・表示。分割ではない ( 逆の動作! ) 架空のコマンド パーティション操作コマンド。ファイル分割ではない これが正解! LPIC Level 1 / ALJ Education Plus / 石黒 友季子 12 / 13 ── Q30 (2/2)
📝 Q26-30 総まとめ 1 コマンド = 1 行で思い出せるようにしておこう。 Q26 find -mindepth N → N 階層より下だけ検索 ( 下限 ) Q27 cut -d ':' -f 1,3 → : 区切りの 1 列目と 3 列目を切り出す Q28 gunzip data.tgz → 圧縮解除だけ → data.tar が残る Q29 5l / 3yj / 4dd → vi は 数字 → コマンド の順 Q30 split -l 500 big.log out_ → 500 行ごとに out_aa, out_ab… と分割 お疲れさまでした ─ 面白きなき世を面白く 🍩