ツクラボ
Linux & Docker

Linuxコマンド 基本20選|初心者が覚える操作

更新: 2026-03-19 18:20:13佐々木 まい

Linuxコマンドは、ターミナルに文字で命令を打ち込んでOSを動かすための基本操作ですが、最初から数を追うより、まずは安全に覚えるべき20個に絞ったほうが手が止まりません。
この記事では、Raspberry PiやUbuntuでそのまま試せる形で、用途別の一覧から実践へ進み、rm・sudo・chmod/chownで事故を避ける考え方まで含めて整理します。

筆者は自宅のラズパイ運用や業務Linuxで新人トレーニングを担当してきましたが、最初にTab補完とmanの引き方を身につけてもらうと、その後の吸収が目に見えて速くなります。
Ubuntuの初心者向けチュートリアルとRed Hatの20コマンド整理が示す通り、全部を暗記する必要はなく、基本を押さえて必要な場面で調べながら使うのがいちばん堅実です。

さらに一歩先として、findとxargsの連携、パイプとtee、manと--helpの使い分けまで押さえます。
実際にラズパイでログ探索を教える場面では、find -print0 | xargs -0 grep を最初からセットで伝えるようにしており、スペース入りファイル名が原因の取りこぼしや誤操作がそこでぐっと減りました。

関連記事Linux入門|初心者向けのインストールと基本操作Linux入門。WSL・仮想環境・実機の選び方を比較し、Ubuntu 24.04 LTSの安全な導入手順と初期設定、基本コマンド10選、権限/sudo、トラブル対処まで1本で網羅。Windows利用者のWSL要件やバックアップ必須ポイントも整理します。

linuxコマンドの基本を始める前に知っておきたいこと">Linuxコマンドの基本を始める前に知っておきたいこと

ターミナル/シェル/プロンプトとは

Linuxコマンドを学び始めると、まず「ターミナル」「シェル」「プロンプト」が一緒くたに見えがちです。
ここを最初に分けておくと、説明を読んだときの引っかかりが減ります。

ターミナルは、文字で操作するための端末アプリです。
Ubuntuの端末アプリやGNOME Terminalのように、画面上で黒いウィンドウを開いて文字を入力する場所だと思えば十分です。
LinuxそのものがGUIではない、という理解は正確ではなく、実際にはGUIもCLIも使えます。
そのうえで、サーバー運用や開発ではCLIが強い場面が多い、という捉え方が現実に合います。

シェルは、そこで入力したコマンドを解釈してOSに渡すコマンド解釈系です。
代表例は bash で、ほかにも zsh などがあります。
たとえば ls と打ったとき、何を実行するか判断して結果を返しているのがシェルです。

プロンプトは、コマンド入力を待っていることを示す表示そのものです。$#、ユーザー名やホスト名、現在のディレクトリが出ている行を見たことがあるはずです。
そこにカーソルがあって、次のコマンドを待っている状態です。

初心者のうちは「ターミナルを開いて、シェルにコマンドを入れ、プロンプトが結果のあとにまた出てくる」という流れで理解しておけば十分です。
筆者も新人に最初に伝えるときは、この3つを厳密に暗記させるより、役割だけつかんでもらうようにしています。

コマンドの基本形とオプション

Linuxコマンドの基本形は、コマンド [オプション] [引数] です。
たとえば ls -l /home なら、ls がコマンド、-l がオプション、/home が引数です。

オプションはコマンドの動きを変える指定で、短い形と長い形があります。
短縮形は -l のようにハイフン1つと1文字、ロングオプションは --help--long のようにハイフン2つと意味のある単語です。
入門段階では「1文字の短縮形と、意味が読める長い形がある」と覚えておけば十分です。

引数は「どこに対して実行するか」「何を対象にするか」を渡す部分です。cd /var/log/var/logcat file.txtfile.txt がそれにあたります。
ここでつまずきやすいのが、オプションと引数の区別が曖昧なままコマンドを眺めてしまうことです。
表示系の pwd ls cd を触るときから、何がコマンド本体で、何が動きを変え、何が対象なのかを意識すると、その後に cpmv を覚えるときも頭が混乱しません。

安全面では、最初の順番も意識しておくと事故が減ります。
筆者は、まず見る・移動する操作として pwd ls cd を触り、その次に作る・コピーする操作へ進み、削除系は最後に回す教え方をしています。sudo も常用するものではなく、必要な場面だけに限定したほうが、何を権限昇格しているのかを意識できます。

Ctrl+Alt+T と基本ショートカット

Ubuntu系では、Ctrl+Alt+T でターミナルを開けます。
Ubuntuの初心者向けチュートリアルでも案内されている定番のショートカットで、作業の起点として覚える価値があります。

筆者はこのキー操作を、考えるより先に指が動くレベルまで身体で覚えてもらうようにしています。
ファイルをGUIで見て、設定を1つ変えて、また端末に戻る、という往復を繰り返しているうちは流れが切れます。Ctrl+Alt+T が無意識に出るようになると、GUIに戻らず連続して確認、修正、再実行まで進めるので、学習のテンポが落ちません。

ターミナルを閉じるときは、ウィンドウ右上の閉じる操作だけでなく、シェルを終了する感覚も持っておくと役に立ちます。
方法は exit と入力するか、Ctrl+D を押します。
どちらも現在のシェルを終了する操作です。
SSH接続先や作業用シェルを閉じる場面では、画面を閉じるより「今のシェルセッションを終える」意識のほうが後で効いてきます。

覚えておくと便利な基本操作として、画面を見やすくしたいときの clear もあります。
出力が積み上がって読みにくくなったらいったん画面を整えてから次へ進むだけでも、入力ミスに気づきやすくなります。
なお、端末エミュレータやシェルの設定によりスクロールバッファの扱いが異なり、期待どおりに過去の出力が消えない(スクロールで遡れる)場合がある点には注意してください。

Tab補完は、初心者が最初に覚えるべき機能のひとつです。
コマンド名にもパスにも使えます。
たとえば cd Doc まで打って Tab を押すと、Documents に補完されることがありますし、sys まで打って Tab を押せば systemctl のようなコマンド候補が埋まることもあります。

これが役立つ理由は、入力が速くなるからだけではありません。綴り間違いを減らせるのが大きいです。
Linuxコマンドは1文字違うだけで別物になるので、毎回フルタイプするより補完に任せたほうが手堅く進められます。

候補が1つに決まらないときは、Tab を二度押しすると候補一覧が表示されます。
ここで「あ、同じ接頭辞のコマンドが複数あるのか」と気づけるので、コマンド名を覚える助けにもなります。
筆者が新人トレーニングでTab補完を先に教えるのはこのためです。
検索してコピペする前に、まず端末自身が持っている補完機能を使えるようになると、コマンドラインへの抵抗感が一段下がります。

ファイル名やディレクトリ名に空白が含まれるときは、クォートも意識したいところです。
たとえば "My Documents" のようにダブルクォートで囲む形です。
Tab補完を使うと空白部分を自動でエスケープしたり補正してくれることが多く、扱いが楽になります。
ただし補完の細かい挙動はシェル(bash, zsh など)や補完の設定に依存するため、ご自身の環境でどのように補完されるか一度確認しておくと安心です。

TIP

多くのシェル(bash, zsh など)では Tab 補完が空白を含むファイル名を扱いやすい形に補正することがあります。
ただし補完の細かい挙動はシェルや補完設定に依存するため、ご自身の環境でどのように補完されるか一度確認しておくと安心です。

man と --help の使い分け

コマンドを全部暗記する必要はありません。必要になったとき、まず何を見ればいいかを知っていれば十分です。そこで基本になるのが man--help です。

--help は、その場で手早く構文を確認したいときに向いています。
たとえば ls --helpmkdir --help と打つと、主なオプションや書式がすぐ見えます。
今このコマンドの引数順だけ知りたい、という場面ではこちらが速いです。

一方の man は、体系立てて詳しく読みたいときに向いています。man ls とすれば、説明、オプション、関連情報までまとまって読めます。
英語のマニュアルで身構える人は多いのですが、全部を上から読む必要はありません。
筆者は man を教えるとき、まず / で検索する操作から伝えます。
英語が得意でなくても、必要な単語だけで該当箇所へ飛べるようになると、“必要箇所だけ拾う”感覚が身につきます。

man 画面の基本操作も、最初に数個だけ覚えれば十分です。/ で検索語を入れ、n で次、p で前、q で終了です。
これは less の操作に近いので、長いログや設定ファイルを見るときにもそのまま活きます。
侍エンジニアブログの入門記事でも man を参照しながら覚える流れが紹介されていますし、Ubuntu: The Linux command line for beginnersThe Linux command line for beginnersの考え方とも相性がいい学び方です)。

The Linux command line for beginners | Ubuntuubuntu.com

history の基礎

history は、過去に打ったコマンドの履歴を表示する仕組みです。
初心者のうちは「同じコマンドをもう一度打つのが面倒」という場面で便利ですが、慣れてくると操作の再現性を高める道具として効いてきます。

history と打つと、これまで実行したコマンドが番号付きで並びます。
その番号を使って !番号 と入力すると、そのコマンドを再実行できます。
たとえば少し前に長い findgrep を実行していて、もう一度試したいときに役立ちます。

もうひとつ覚えておくと便利なのが Ctrl+r です。
これは履歴の検索です。
押したあとに一部を入力すると、それを含む過去コマンドを逆方向にたどれます。sshdocker など、よく使う長いコマンドを呼び戻すときに強力です。
筆者の現場でも、履歴を見返せるようになると「前に通った手順を再現できる」感覚が生まれ、単なる丸暗記から一歩進みます。

ただし、履歴に残ったコマンドはそのまま再実行されます。
内容を見ずに !番号 を叩く癖がつくと、意図しない場所で同じ処理を走らせることがあります。
とくに削除や権限変更のようなコマンドは、履歴から呼び戻したあと、対象が今のディレクトリやファイル名と合っているかを見てから実行する、という順番が崩れないほうが安全です。

まず覚えるべきLinuxコマンド基本20選一覧

ここで挙げる実行例は、Raspberry Pi OSとUbuntuのどちらでもそのまま試せる内容に絞っています。
危険度は「誤操作したときの影響」の目安、安全に試せる度は「ホームディレクトリ内などで気軽に練習できるか」の目安です。
権限変更や削除系は、意味を理解してから触ると事故が減ります。

コマンド用途1行基本構文実行例分類危険度安全に試せる度
pwd今いる場所を表示するpwdpwd移動・確認
lsファイルやディレクトリの一覧を見るls [対象]ls -la移動・確認
cdディレクトリを移動するcd パスcd ~/Documents移動・確認
whoami現在の有効ユーザー名を確認するwhoamiwhoami移動・確認
history実行したコマンド履歴を表示するhistoryhistory移動・確認
clear端末画面の表示を整理するclearclear移動・確認
mkdirディレクトリを作成するmkdir 名前mkdir workファイル操作
touch空ファイル作成や時刻更新を行うtouch ファイル名touch memo.txtファイル操作
cpファイルやディレクトリをコピーするcp 元 先cp memo.txt memo_backup.txtファイル操作
mvファイル移動や名前変更を行うmv 元 先mv memo.txt note.txtファイル操作
rmファイルやディレクトリを削除するrm [オプション] 対象rm -i note.txtファイル操作⚠ 高
catファイル内容をそのまま表示するcat ファイル名cat note.txtファイル操作
less長いファイルを1画面ずつ読むless ファイル名less /var/log/syslogファイル操作
grep文字列を検索して絞り込むgrep パターン 対象grep "error" app.log検索・絞り込み
find名前や条件でファイルを探すfind パス 条件find . -name "*.txt"検索・絞り込み
xargs前の結果を次のコマンド引数に渡す`コマンドxargs 次コマンド``find . -name "*.txt"xargs grep "TODO"`検索・絞り込み
tee画面に出しつつファイルへ保存する`コマンドtee ファイル``ls -latee list.txt`検索・絞り込み
|コマンドの出力を次へ渡すコマンド1 | コマンド2ls -la | less検索・絞り込み
chmod権限を変更するchmod モード 対象chmod 644 note.txt権限・管理⚠ 高
chown所有者を変更するchown 所有者[:グループ] 対象sudo chown $USER:$USER note.txt権限・管理⚠ 高
sudo管理者権限でコマンドを実行するsudo コマンドsudo apt update権限・管理⚠ 高

表を見ると、最初に固めたいのは「移動して確認する」「作って読んで消す」「探してつなぐ」「権限を触る」の4レイヤーだと分かります。
Red Hat: 20 essential Linux commandsのような定番記事でも、初心者向けの導入はこのまとまりで整理されることが多いです。
筆者の研修でも、1日目は pwd ls cd、2日目は mkdir touch cp mv、3日目に grep find |、その後に chmod sudo へ進めると、手が止まりにくくなります。

移動・確認

pwd ls cd は、Linuxの現在地を把握するための基本3点セットです。
たとえば pwd で今いるディレクトリを確認し、ls -la で中身を一覧し、cd で目的の場所へ移動する。
この流れが自然にできるようになると、ファイル操作の失敗が一気に減ります。
逆に、この3つが曖昧なまま rmchmod を触ると、対象を取り違えやすくなります。

whoami は地味ですが、sudo を使い始める前に覚えると効きます。
今の操作主体が自分なのか、権限昇格後のユーザーなのかを切り分けられるからです。history は前のセクションで触れた通り、長いコマンドを打ち直さずに済ませるための土台になります。clear も軽く見られがちですが、画面が流れて把握しづらくなったときに一度リセットすると、どこまで確認したかを見失いません。
新人研修でも、画面が情報で埋まって混乱した人ほど clear を挟んだあとに落ち着いて次の一手を選べるんですよね。

この分類は、どれも「状態を変える」より「状況を把握する」側のコマンドです。
練習用ディレクトリを1つ作って、その中で pwdlscd ..whoamihistory と順番に打ってみるだけでも、ターミナルとの距離が縮まります。

ファイル操作

ファイル操作では、mkdir touch cp mv rm cat less の7個を先に押さえると、日常作業の骨格が見えてきます。mkdir で作業場所を作り、touch で空ファイルを用意し、catless で中身を確認し、必要に応じて cpmv で整理する流れです。

touch は「空ファイルを作るコマンド」と覚えておけばまず困りません。
実際に touch memo.txt を打つと、中身が空のファイルができ、作成直後はサイズ0のままです。
こういう小さなファイルをその場で用意できるので、練習環境づくりにも向いています。
筆者も最初の演習では mkdir practice && cd practice && touch a.txt b.txt のように、すぐ壊しても困らない箱庭を作ってから始めます。

注意したいのは rm です。
これは削除なので、一覧表でも危険度を高めにしています。
最初は rm -i ファイル名 で確認プロンプトを出す形に寄せると、Enter連打の事故を避けやすくなります。cpmv も対象を取り違えると意図しない上書きや改名につながるので、実行前に ls で場所と名前を見てから進める流れが安定します。

rm を練習するときは、作業用ディレクトリの中で touch delete_me.txt を作ってから rm -i delete_me.txt と打つと、削除確認の感覚を安全に掴めます。

検索・絞り込み

検索系の入口は grepfind です。grep はファイルの中身から文字列を探し、find は名前や条件でファイルそのものを探します。
たとえば grep "error" app.log ならログの中の error を探し、find . -name "*.txt" ならカレントディレクトリ以下から .txt ファイルを探せます。
この2つが区別できると、「中身を探したいのか」「ファイルを探したいのか」で迷わなくなります。

その次に覚えたいのが |xargs、そして tee です。| は前のコマンドの出力を次へ渡す演算子で、CLIの気持ちよさが出るポイントでもあります。
たとえば ls -la | less なら一覧をページ送りで読めますし、find . -name "*.txt" | xargs grep "TODO" なら、見つかった複数ファイルの中身をまとめて検索できます。
空白を含むファイル名まで丁寧に扱うなら find . -name "*.txt" -print0 | xargs -0 grep "TODO" の形が安定します。
ここまで来ると、単体コマンドを覚える段階から「組み合わせて使う」段階へ進んだ感覚が出てきます。

tee は画面表示とファイル保存を同時にしたい場面で便利です。ls -la | tee list.txt のように使うと、結果を見ながら記録も残せます。
設定ファイルへ権限付きで書き込む場面では、単純なリダイレクトより sudo tee のほうが素直に通ることがあります。
『Linuxize: tee command』でもその使い分けが整理されています。
最初はログや一覧の保存用として覚えるだけで十分ですが、あとで設定変更にもつながっていきます。

筆者の研修では、このカテゴリに入ったあたりで「検索に成功した体験」を作るようにしています。grep で目的の1行が見つかる、find で迷子のファイルを拾える、tee で出力を残せる。
ここで手応えが出ると、ターミナルが“黒い画面”ではなく“探せる道具”として見えてきます。

Linux Tee Command with Exampleslinuxize.com

権限・管理

chmod chown sudo は、Linuxらしさが濃い一方で、誤操作の影響も大きい領域です。
だからこそ、一覧表でも危険度を高くしています。chmod はファイルの権限変更、chown は所有者変更、sudo は管理者権限での実行です。
どれも便利ですが、意味を曖昧なままコピペすると、あとで「読めない」「書けない」「動かない」の原因になりがちです。

chmod 644 note.txt のような基本形は、所有者には読み書き、他ユーザーには読み取りのみ、というよくある設定です。
設定ファイルやスクリプトで権限を整えるときの入り口になります。chown は所有者を切り替えるコマンドで、たとえば sudo chown $USER:$USER note.txt のように使うと、自分のホーム外で作ったファイルの所有権を戻せます。
Raspberry Piで sudo 付き作業を続けたあと、編集できないファイルが残っていて気づく、というのは初学者が一度は通るところです。

sudo は一時的に他ユーザー、通常は root としてコマンドを実行します。
一度パスワードを通すと、その後しばらく再入力なしで通ることがありますが、管理作業の区切りでは sudo -k で認証状態を切っておくと、席を離れたあとも落ち着いて扱えます。
筆者も権限まわりの演習では、sudo を使った直後に「今どの権限で何をしたか」を言葉にしてもらいます。
ここを曖昧にすると、後から whoami や権限表示を見ても因果関係が追えなくなるからです。

この3つは、最初から応用操作まで広げなくて構いません。
入門段階では「読める・書ける・実行できる」「その対象が誰のものか」「管理者権限が必要か」の3点が判断できれば十分です。
削除系と同じく、実行前に対象を確認するという姿勢が、そのまま安全策になります。

関連記事Linuxファイル権限入門|chmod・chownの使い方Linuxの権限は、ls -l の10文字表示と 644・755・777 の意味がつながった瞬間に、一気に見通しがよくなります。この記事は、chmod と chown の違いがまだ曖昧な人や、

移動・確認で最初に使うコマンド

pwd と ls で状況把握

ターミナルを開いて最初に不安になるのは、「今どこにいるのか」と「ここに何があるのか」が見えないことです。
そこで最初に覚えると安心につながるのが pwdls です。
役割をひと言で整理すると、pwd今どこにいるかls何があるかを確認するコマンドです。
そこに cdどこへ行くかが加わると、移動まわりの基本が一気につながります。

pwd は現在のディレクトリをそのまま表示します。
たとえば pwd と打つだけで、/home/username のような現在地が1行で返ってきます。
GUIのファイルマネージャなら見えている場所も、ターミナルでは自分で確認しないと把握しづらいので、迷ったらまず pwd を打つ癖をつけると立て直しが早くなります。

ls は、その場所にあるファイルやディレクトリの一覧を表示します。
最初は ls だけでも十分ですが、少し情報量を増やしたいときは ls -l が便利です。
所有者、更新日時、サイズ、名前まで並ぶので、単なる名前一覧から一歩進んで「どんなものがあるのか」を読めます。
隠しファイルも含めて見たいなら ls -la、サイズをKBやMBのような感覚で読みたいなら -h を組み合わせて ls -lah とします。-h は人が見てすぐサイズ感をつかむためのオプションで、長い数値のまま読むより判断が速くなります。

たとえばホームディレクトリにいるときに pwd で現在地を出し、続けて ls -lah を打てば、「今はホームにいて、設定ファイルも通常ファイルも含めて、どんなものが並んでいるか」がすぐ見えます。
筆者は新人向けの説明でも、まずこの2つをセットで触ってもらいます。
場所の確認なしに移動や削除へ進むと、操作の意味が頭の中でつながりません。
反対に、pwdls が自然に出るようになると、ターミナル上の景色が急に立体的になります。

Ubuntuの初心者向けチュートリアルでも、コマンドラインの入口として「現在地」と「一覧」を把握する流れが整理されています。
最初は意味を暗記するより、pwdls -lah を続けて打って結果を眺めるだけでも十分です。

cd の移動パターン

cd はディレクトリを移動するコマンドです。pwd が現在地の確認、ls が中身の確認なら、cd は実際に場所を変える担当です。
この3つは別々に覚えるより、「今どこにいて、何があり、どこへ行くか」という流れでまとめると記憶に残ります。

基本形は cd /etc のように、行きたい場所をそのまま書く形です。
絶対パスで書けば、今いる場所に関係なくそのディレクトリへ移動できます。
一方で、ひとつ上の階層へ戻る cd .. も頻出です。
ディレクトリを掘っていって1段戻る、という操作は毎日のように出てきます。

覚えておくと作業のテンポが一気に良くなるのが cd ~cd - です。cd ~ はホームディレクトリへ戻る形で、作業場所が散らかったときの基準点になります。~ はホームを表す記号として扱われるので、cd ~/Documents のようにも書けます。
筆者はラズパイの設定やサーバー上の検証で複数ディレクトリを行き来するとき、この ~ を起点に頭の中を整理しています。

cd - は直前にいたディレクトリへ戻る小ワザです。
これが想像以上に効きます。
たとえば設定ファイルのある /etc と、作業メモを置いたホームディレクトリを行ったり来たりするとき、毎回フルパスを書かなくても cd - で往復できます。
筆者も運用作業でログ置き場と作業ディレクトリを切り替える場面ではこの形をよく使いますが、往復の手数が減るだけでなく、「今どこから来て、どこへ戻るのか」がはっきりするので、移動ミスも減ります。
ディレクトリを行き来する作業では、ここで体感の効率が跳ね上がります。

パス指定で初心者がつまずきやすいのは、空白と大文字小文字です。My Folder のように空白を含む名前は、そのまま打つと途中で区切られて別の引数として扱われます。
こういうときは cd "My Folder" のようにクォートで囲むか、cd My\ Folder のように空白の前へバックスラッシュを入れます。
加えて、Linuxでは Documentsdocuments は別物です。
見た目が近くても同じ名前ではないので、文字の大小まで含めて一致させる必要があります。

TIP

pwd で現在地を確認し、ls で候補を見て、cd で移動する。この3手順を1セットとして回すと、ターミナル上で迷子になりにくくなります。

whoami/history/clear の基礎

移動だけでなく、「今の自分が誰で、直前に何をして、画面をどう整えるか」まで含めて押さえると、ターミナルへの怖さが薄れます。
そこで役立つのが whoamihistoryclear です。

whoami は現在の有効ユーザー名を表示します。
引数なしで whoami と打つだけで、今の操作主体が1行で返ります。
とくに sudo を使う場面を学び始めると、「ログインした人」と「今その権限で動いている人」の感覚が混ざりやすいので、whoami でその場の状態を確認できるのは実務でも有効です。
筆者も、権限まわりの挙動を切り分けるときは、まず whoami を打って状況を固定します。

history は、これまで実行したコマンド履歴を表示します。
うろ覚えのコマンドを打ち直したいとき、同じ作業を再現したいときに頼りになります。history を打つと、履歴の先頭に番号が並んだ形で表示されます。
この番号は「何番目のコマンドか」を示していて、再利用の入口になります。
番号付きで履歴を見る癖がつくと、何をどう打って結果が出たのかを追いやすくなります。
コマンドライン学習では、失敗そのものより「さっき何を打ったか思い出せない」ことのほうが詰まりやすいので、履歴が見えるだけで安心感が出ます。

clear は端末画面の表示を整理したいときに使います。
大量の出力を流したあと、次の操作に集中したいときに clear と打つと、画面上はすっきりした状態に戻ります。
表示の見た目を整えるためのコマンドで、作業内容そのものを消すわけではありません。
長い ls -lah やログ表示のあとに画面が散らかったままだと、次に打つコマンドと結果の対応が見えにくくなるので、一区切りで clear を入れると操作のまとまりが保ちやすくなります。

DigitalOceanの基本コマンド解説でも、こうした確認系コマンドは「まず使う道具」として整理されています。
派手さはありませんが、どれも作業の見通しを保つためのコマンドです。

入力ミスを減らすTab補完

初心者が止まりやすい原因は、コマンドの難しさより入力ミスです。
パスを1文字違えて「そんなファイルはない」と返されると、自分の理解が間違っているのか、タイプミスなのか判別しにくくなります。
そこで最初から身につけたいのが Tab 補完です。

Tab 補完は、コマンド名やファイル名、ディレクトリ名の途中まで入力して Tab キーを押すと、候補を補ってくれる機能です。
たとえば cd Doc まで打って Tab を押せば、候補が一意なら Documents まで補完されます。
複数候補がある場合は、その候補を一覧で見せてくれるので、ls を挟まなくても存在する名前を確認できます。
筆者が新人トレーニングで早い段階から Tab 補完を強く勧めるのは、タイピング量が減るからではなく、存在する名前をそのまま拾えるからです。
大文字小文字の打ち間違い、長いディレクトリ名の抜け、空白を含む名前の処理漏れをまとめて減らせます。

よくある入力ミスは、だいたい次の4種類に集まります。
ひとつは空白を含むパスです。cd My Folder ではなく、cd "My Folder" または cd My\ Folder と書く必要があります。
もうひとつは大文字小文字の違いで、Downloadsdownloads は別名です。
さらに、~ をホームとして使う書き方に慣れていないと、ホームへ戻る操作を毎回フルパスで書こうとして長くなります。cd ~cd ~/work の形を覚えると、入力量も迷いも減ります。

Tab 補完は、これらをまとめて避ける実践的な手段です。
たとえば cd ~/Do まで打って Tab を押せば、正しい名前が存在する限り自動で補われます。
空白を含む名前でも補完後の形を見れば、どう扱われるかがその場でわかります。
記憶力で押し切るより、シェルの補助機能を使って正確に入力するほうが、学習の立ち上がりではずっと安定します。

筆者の感覚では、pwdlscd に Tab 補完が組み合わさった時点で、ターミナルは「暗記テスト」ではなく「現在地を見ながら移動する道具」に変わります。
コマンドをたくさん覚える前に、まずこの感覚をつかめると、その先の mkdirlessgrep に進んだときも手が止まりにくくなります。

ファイルとディレクトリを操作するコマンド

mkdir/touch の基本

ファイル操作の入口は、新しく作るところから始まります。
ディレクトリを作るのが mkdir、空ファイルを作るのが touch です。
役割がはっきり分かれているので、まずはこの2つを手で打って覚えると、その後の cpmv の意味もつながります。

mkdir はディレクトリ作成用のコマンドです。
たとえば mkdir work なら、今いる場所に work ディレクトリを作成します。
親ディレクトリもまとめて作りたいときは mkdir -p project/docs/images のように -p を付けます。
これを付けると、途中の階層がまだ無くても一括で作れます。
学習中は「まず作業用ディレクトリを作って、その中で試す」流れにすると、誤操作の範囲を狭く保てます。

touch は、存在しないファイル名を指定すると空ファイルを作ります。touch memo.txt と打てば、中身が空の memo.txt ができます。
すでに存在するファイルに対しては、更新時刻を変更する用途でも使われます。
つまり touch は「新規作成」と「時刻更新」の両方に関わるコマンドです。
作った直後のファイルは中身がないので、メモのひな形や設定ファイルの置き場所を先に用意したいときに便利です。

たとえば次のように打つと、練習用の場所をすぐ作れます。

mkdir -p ~/practice/linux-basics
cd ~/practice/linux-basics
touch memo.txt

この3行で、ホームディレクトリ配下に練習用フォルダを作り、その中に空の memo.txt を置けます。
Ubuntuのコマンドライン入門でも、初心者はこうした基本操作を小さな作業単位で試しながら覚える流れが紹介されています。
ファイルやディレクトリ操作は、頭で読むより実際に1つ作って名前を確認したほうが定着します。

cp/mv の安全な使い分け

次に覚えたいのが、コピーする cp と、移動または名前変更をする mv です。
見た目は似ていますが、結果がまったく違います。cp は元を残したまま複製し、mv は元の場所から別の場所へ移すか、同じ場所で名前を変えます。
初心者のうちは迷ったら先に cp を選ぶと、失敗したときの戻し先が残ります。

たとえば cp memo.txt memo_backup.txt は、元の memo.txt を残したまま memo_backup.txt を作ります。
ディレクトリごとコピーしたいなら cp -r src backup_src のように -r を付けます。
上書き前に確認したいなら -i が役立ちます。cp -i memo.txt memo_backup.txt としておけば、同名ファイルがあると確認が入るので、意図しない上書きを防げます。
属性も含めて保ちたい場面では -a を使います。
設定ファイル一式を複製するときなど、パーミッションや時刻もまとめて維持したいときに向いています。

mvmv memo.txt note.txt のように使うと、ファイル名の変更になります。mv note.txt docs/note.txt なら移動です。
コマンドは同じでも、移動先が別ディレクトリなら移動、同じ場所で名前だけ変わるなら改名と捉えると整理しやすくなります。
こちらも -i を付けると、上書き時に確認を入れられます。

この2つと rm の違いは、表で並べると一気に頭に入りやすくなります。

コマンド役割元データは残るかよく使うオプション典型例
cpコピー残る-r -i -acp -i memo.txt memo_backup.txt
mv移動 / 改名残らない-imv memo.txt archive/memo.txt
rm削除残らない-i -rrm -i memo.txt

筆者は業務でもラズパイでも、消す前にまず cp で退避してから触る流れをよく取ります。
ファイル操作に慣れないうちは、mv で整理するより cp で複製を作ってから試したほうが、何を変えたのか追いやすくなります。
削除は戻しにくい一方、コピーは元を残せるので、学習段階では安心材料になります。

rm の注意点と安全策

rm は削除コマンドです。
不要なファイルを片付けるには必要ですが、基本コマンドの中では扱いにいちばん注意が要ります。rm note.txt でファイル削除、ディレクトリごと消すなら rm -r old_dir のように -r を使います。
確認を入れたいなら rm -i note.txt が定番です。

ここで押さえたいのは、rm は「ゴミ箱に移す」操作ではないという点です。
打った瞬間に対象を消すので、パスを1文字間違えたときの被害がそのまま出ます。
とくにワイルドカードを使った rm *.txt は便利な反面、想定より多く一致すると一気に消えます。
カレントディレクトリを勘違いしたまま実行するのも典型的な事故です。
削除前に pwdls で場所と対象を見てから打つ流れが、ここで効いてきます。

WARNING

rm は確認付きの rm -i を習慣化すると誤削除を減らせます。
筆者は対話的な作業端末で alias rm='rm -i' を採用することがありますが、スクリプトや自動化タスクでは alias が効かない、あるいは意図しない停止(対話プロンプトで処理が止まる)を招くため使わない方針にしています。
スクリプト側では明示的な安全チェックやバックアップを入れる、運用ルールを分けるなどの対策を併用してください。
この慎重さは大げさではありません。
削除系の事故は、コマンドの知識不足より「急いでいて確認を飛ばした」場面で起きます。
筆者も、設定ファイルやログ退避の作業では rm を後回しにし、先に cp でコピーを残してから整理します。
消すのは作業の締めではなく、確認が済んだあとに置くほうが流れとして安定します。

そして、rm -rf / は絶対に実行してはいけません。-r は再帰的削除、-f は確認なしで強制実行です。/ はファイルシステムの起点なので、この組み合わせはシステム全体を壊す方向に向かいます。
対話的な作業端末では alias rm='rm -i' のように確認プロンプトを習慣化して誤削除を減らす運用もありますが、スクリプトや自動化環境では alias が効かない/望ましくない場合があるため、運用ごとに方針を分けるか、スクリプト側で明示的な安全チェックやバックアップを入れるなどの対策を併用してください。

ファイルの中身を見る場面では catless を使い分けます。
どちらも閲覧系ですが、向いているサイズが違います。
短いファイルをさっと確認するなら cat、長い文章やログを読むなら less です。

cat memo.txt は、ファイル内容をそのまま端末に出します。
数行の設定メモや、小さなテキストを確認するには十分です。
複数ファイルを続けて表示したり、cat -n memo.txt のように行番号付きで見る使い方もあります。
ただし行数が多いファイルを cat で開くと、画面が一気に流れてしまいます。
スクロール履歴を追って読めなくはありませんが、必要な箇所に留まりながら読むには向きません。

そこで less が出番になります。less /var/log/syslog のように開くと、1画面ずつ読み進められます。
矢印キーで上下移動、Space で次ページ、/キーワード で検索、q で終了という操作だけでも実用になります。
筆者はログ確認で cat を使うことはほぼなく、まず less で開いて /ERROR のように検索して前後を読む流れを取ります。
全体を先に吐き出さないので、長いファイルでも最初の反応が軽く、必要な場所へ意識を向けやすいからです。

DigitalOceanの基本コマンド整理でも、閲覧系は「表示する」だけでなく「どう読むか」で道具を分ける考え方が見えます。
実際に使ってみると、cat は一枚の紙を机に広げる感覚で、less は本をめくる感覚に近いです。
短文なら前者、長文なら後者と覚えると迷いません。

相対パスと絶対パス

ファイル操作でつまずきやすいのは、コマンドそのものよりパスの見方です。cprm が怖く感じる原因の多くは、「今いる場所から見た名前」と「システム全体の中での位置」が混ざることにあります。
そこで押さえたいのが、相対パスと絶対パスの違いです。

絶対パスは、ルートディレクトリ / から始まる書き方です。
たとえば /home/pi/work/memo.txt のように、どこから見ても同じ場所を指します。
相対パスは、今いるディレクトリを起点にした書き方です。memo.txt./memo.txt../memo.txt などがそれに当たります。. は今のディレクトリ、.. は1つ上のディレクトリ、~ はホームディレクトリです。

図にすると、見方の違いが整理できます。

/
└── home
    └── pi
        ├── work
        │   └── memo.txt
        └── docs

たとえば今いる場所が /home/pi/work なら、同じ memo.txt は次のように表せます。

書き方種類指す場所
/home/pi/work/memo.txt絶対パスルート / から見た完全な場所
memo.txt相対パス今いる /home/pi/work の中のファイル
./memo.txt相対パス今のディレクトリにあるファイル
../work/memo.txt相対パス1つ上に移動してから work をたどる
~/work/memo.txtホーム基準の書き方/home/pi/work/memo.txt

学習段階では、削除や上書きが絡む操作ほど絶対パスか ~/... を使うほうが事故が減ります。
相対パスは短く打てて便利ですが、今いる場所を見失うと別物になります。
逆に、現在地がはっきりしている作業用ディレクトリの中では相対パスが速いです。
筆者も、まず pwd で立ち位置を確認し、重要ファイルを触るときは絶対パス寄り、練習用ディレクトリでは相対パス寄り、と場面で切り替えています。
これができると、mkdircpmvrm がただの暗記ではなく「どこに対して何をするか」の操作としてつながってきます。

検索・絞り込みを効率化するコマンド

grep の基本

grep は、ファイルの中から特定の文字列を探すための定番コマンドです。lscat が「あるものを見る」道具だとすると、grep は「見たい行だけを抜き出す」道具です。
ログ、設定ファイル、ソースコードの確認で出番が多く、早い段階で手になじむとターミナル作業の密度が一気に上がります。

基本形は単純で、grep "error" app.log のように「探す文字列」と「対象ファイル」を指定します。
まず覚えたいのは、-n-i-r の3つです。-n は行番号を表示するので、後でその場所を開き直すときに便利です。-i は大文字小文字を無視するので、Errorerror が混在するログでも取りこぼしを減らせます。-r はディレクトリ以下を再帰的にたどるため、複数ファイルをまとめて検索したい場面で効きます。

grep "error" app.log
grep -n "error" app.log
grep -i "timeout" app.log
grep -r "TODO" ./src

たとえば grep -n "listen" /etc/ssh/sshd_config のように使うと、どの行に設定があるかまで分かります。grep -ri "warning" ./logs なら、logs 配下のファイルを横断して、表記ゆれも含めて拾えます。
筆者は設定変更の確認でも grep をよく使います。
ファイル全体を目で追うより、狙った単語を先に絞ったほうが、確認の精度が上がるからです。

Red Hatの20 essential Linux commandsでも、検索系コマンドは基本操作の中核として扱われています。
実際、初心者のうちは「まず全部開いて探す」になりがちですが、grep を覚えると「必要な行だけに絞る」という発想に切り替わります。

find の基本

find は、ファイルの中身ではなく、名前や種類、更新日時といった属性で対象を探すコマンドです。grep が内容検索、find が対象抽出と考えると整理しやすくなります。

基本形は find 検索開始位置 条件 です。
たとえば find . -name "*.log" は、現在のディレクトリ以下から .log ファイルを探します。-type f は通常ファイル、-type d はディレクトリに絞る指定です。-mtime は更新日時で絞り込むときに使い、最近更新されたログだけを見たい場面で役立ちます。

find . -name "*.log"
find . -type f -name "*.conf"
find . -type d -name "backup"
find . -type f -mtime -1

find /var/log -type f -name "*.log" とすればログファイルだけを列挙できますし、find . -type f -mtime -1 なら直近で更新されたファイルの洗い出しに向きます。
障害調査では「昨日から更新された設定ファイルだけ見たい」「特定拡張子だけ拾いたい」ということが多く、find を先に挟むだけで対象が一気に狭まります。

ここでのポイントは、find 自体は検索結果を一覧表示するところまでが役割だということです。
実務では、この結果をそのまま眺めて終わるより、次のコマンドにつないで処理することが増えます。
そこで登場するのが xargs です。

find -print0 と xargs -0

xargs は、前のコマンドの出力を受け取り、次のコマンドの引数に組み立てるための道具です。find と組み合わせると、見つかった複数ファイルに対して一括で grep をかけられます。

まず形だけ見ると、次のようになります。

find . -type f -name "*.log" | xargs grep -n "error"

この流れは、find で対象ファイルを集め、xargs で引数に変換し、grep で中身を調べる、という3段構成です。
大量のログをまたいで調査するときに、この並びはそのまま定番パターンになります。
筆者の現場でも、大規模ログを一つずつ開いて目視で探していた作業を find + xargs + grep に置き換えたことがあります。
新人がその場で試したとき、探し終わるまでの時間差に驚いていて、その後はチーム内の標準手順として定着しました。
人の目で順番にたどる作業と、対象抽出から内容検索までをコマンドで流す作業では、調査の進み方がまるで違います。

ただし、この書き方には一つ落とし穴があります。
ファイル名に空白が入っていると、区切りが崩れて別の引数として解釈されることです。
そこで使うのが find -print0xargs -0 です。-print0 は結果を NUL 区切りで出力し、-0 はその NUL 区切りを正しく受け取ります。
空白入りファイル名を含んでいても安全につなげられます。

find . -type f -print0 | xargs -0 grep -n "error"
find . -type f -name "*.log" -print0 | xargs -0 grep -ni "timeout"

この形は実務でそのまま使えます。
特に共有ディレクトリや人手で作られたファイル群では、空白入りファイル名は珍しくありません。find . -type f -print0 | xargs -0 grep -n "error" を最初から型として覚えておくと、後で事故を踏みにくくなります。

TIP

find で対象を絞り、xargs で引数化し、grep で中身を探す、という順番で考えると、長いワンライナーも読み解きやすくなります。

パイプと tee の実例

パイプ(|)は、あるコマンドの標準出力を次のコマンドの標準入力へ渡す仕組みです。
コマンドを単品で覚えるだけでなく、結果を次へ流せるようになると、ターミナル操作が「点」ではなく「流れ」になります。cat file | grep "error" のような単純な形でも、前段で出した結果を後段で絞るという考え方が見えてきます。

たとえば、ログから ERROR を抜き出して画面に出すだけなら次で十分です。

grep -n "ERROR" app.log | less

ここでは grep の結果を less に渡して、長い検索結果をページ単位で読めるようにしています。
大量出力をそのまま流して終わりにせず、次のコマンドで読みやすい形に整えるのがパイプの価値です。

tee は、その出力を画面に表示しながら、同時にファイルにも保存したいときに使います。> だとファイルに書き込むだけで画面には出ませんが、tee ならその場で確認しつつ記録も残せます。

grep -n "ERROR" app.log | tee error_lines.txt
find . -type f -name "*.log" -print0 | xargs -0 grep -n "timeout" | tee result.txt

障害調査中は、まず画面で結果を見て、そのまま調査メモとして残したいことが多いので、tee は地味に効きます。
ターミナル上で確認した内容を別途コピーし直さなくて済むからです。

もう一つ知っておくと便利なのが、sudo tee の形です。sudo echo "line" > /etc/xxx.conf と書いても、リダイレクトの > は現在のシェル側で処理されるため、権限不足になることがあります。
そういう場面では、tee に書き込みを担当させます。

echo 'line' | sudo tee /etc/xxx.conf

設定ファイルへ1行追加して挙動を確認したいときなどに、この形はよく使われます。権限付きの書き込みだけを tee に任せるので、意図がはっきりした書き方です。

現場で使う組み合わせパターン

実務で頻出なのは、find で対象を絞り、xargs で引数化し、grep で内容を検索する流れです。
ファイル数が多いほど、この分担が効きます。
全部のファイルを開くのではなく、まず候補だけを抽出してから中身を見るので、調査の筋道がぶれません。

設定ファイルに特定の記述があるかを横断確認するなら、次の形が扱いやすいです。

find /etc -type f -name "*.conf" -print0 | xargs -0 grep -n "listen"

ログ群からエラー行だけを抜き出して保存するなら、tee までつなげると手元に結果が残ります。

find ./logs -type f -name "*.log" -print0 | xargs -0 grep -ni "error" | tee errors.txt

ソースコード内の TODOFIXME を探すなら、再帰検索の grep -r を単体で使う手もあります。

grep -rn "TODO" ./src

一方で、拡張子や更新日時まで細かく絞りたいなら、find を前段に置いたほうが狙い通りの結果になります。

find ./src -type f -name "*.py" -print0 | xargs -0 grep -n "TODO"
find ./logs -type f -mtime -1 -print0 | xargs -0 grep -n "WARN"

まくまく Linux/Shell ノートの find と grep の作例でも、この組み合わせは実践的な型として整理されています。
筆者も、調査対象が少ないときは grep -r、条件が増えてきたら find → xargs → grep に切り替えます。
コマンドをたくさん覚えるというより、対象抽出と内容検索を分けると考えたほうが、現場の操作にそのまま乗ります。

権限と管理で最低限覚えたいコマンド

権限の読み方

ls -l を実行すると、先頭に -rw-r--r--drwxr-xr-x のような文字列が出ます。
ここが権限の見取り図です。
先頭の1文字は種類で、- は通常ファイル、d はディレクトリを表します。
その後ろの9文字は、3文字ずつ「所有者」「グループ」「その他」に分かれています。 r は読み取り、w は書き込み、x は実行です。
たとえば rwxr-xr-x なら、所有者は読み取り・書き込み・実行ができ、グループとその他は読み取りと実行だけが許可されています。rw-r--r-- なら、所有者は読み取りと書き込み、グループとその他は読み取りだけです。

この文字列表記は、3桁の数値でも表せます。r=4w=2x=1 と考えて足し算します。rwx4+2+1 で 7、rw-4+2 で 6、r-x4+1 で 5、r-- は 4 です。
これを所有者・グループ・その他の順に並べたものが 755644 です。755rwxr-xr-x644rw-r--r-- と読めます。

初心者のうちは、644755 をまず身体で覚えると混乱が減ります。
筆者はワークショップで「設定ファイルは基本644、実行スクリプトは755」と何度も口にしていますが、この2つを軸にすると判断がぶれません。
設定ファイルは中身を読めて書ければ足りる場面が多く、誰でも実行できる必要はありません。
一方、シェルスクリプトや起動用ファイルは、実行権がないとそのまま起動できません。

ここで見落としやすいのが、ディレクトリにおける x の意味です。
ファイルでは「実行する」ですが、ディレクトリでは「その中に入れる、たどれる」という意味になります。
つまりディレクトリに x がないと、名前が見えても中へ進めません。755 がディレクトリでよく使われるのは、この「入れる」権限を所有者以外にも渡しているからです。

chmod の実例

chmod は権限を変えるコマンドです。数値表記でも記号表記でも書けます。まず数値表記から見ると、ファイルを 644 にしたいなら次の形です。

chmod 644 config.txt

これで config.txt は所有者が読み書きでき、グループとその他は読み取りだけになります。
設定ファイルやメモのように「実行しないファイル」でよく見る形です。

ディレクトリを 755 にするなら次のようにします。

chmod 755 scripts

755rwxr-xr-x なので、所有者は作成・編集・中への移動ができ、他のユーザーも中に入って内容を参照できます。
ディレクトリに x があると入れる、という感覚はここで覚えると定着します。
逆に、ディレクトリへ 644 を付けると「読めるのに入れない」という状態になり、初心者が詰まりやすいところです。

記号表記は、誰に何を足すか・外すかをそのまま書けるので、部分変更に向いています。u は所有者、g はグループ、o はその他、a は全員です。
たとえば所有者に読み取りと実行を追加するなら、次のように書けます。

chmod u+rx run.sh

グループから書き込み権限を外すなら、次の形です。

chmod g-w shared.txt

数値表記は完成形をまとめて指定する方法、記号表記は今の状態から差分で変える方法と考えると頭の中が整理できます。
筆者は最初の練習では、ファイルに chmod 644、ディレクトリに chmod 755 を入れてから ls -l で見比べてもらいます。
文字列の rw-r--r--drwxr-xr-x が目で確認できると、数字と記号が一気につながります。

TIP

chmodchown を打つ前に ls -l 対象 で現在の所有者と権限を見ておくと、変更後の差分が追えます。-R を付ける再帰変更は便利ですが、対象ディレクトリを1つ見誤ると配下がまとめて変わります。

chown の基本

chown は所有者を変えるコマンドです。
権限そのものを変える chmod とは役割が違います。
基本形は user:group で、所有者とグループをまとめて指定できます。

sudo chown mai:mai app.conf

この例では app.conf の所有者を mai、グループも mai に変更しています。
グループだけを変えたい場面では chgrp もありますが、最初は chown user:group 対象 の形を覚えておけば十分です。

ここで必ず押さえたいのが、所有者変更には権限が必要だという点です。
自分の一般ユーザー権限のまま、好きなファイルを自由に別ユーザー名へ変更できるわけではありません。
実際には sudo を付けて実行することが多く、システム配下の設定ファイルやサービス用ディレクトリではその前提で考えたほうが自然です。

実務でも、権限エラーの原因が chmod ではなく chown 側にあることは珍しくありません。
ファイルの中身は正しくても、所有者が想定と違うせいでアプリケーションが読めない、書けないというケースです。
そういうときも、いきなり変更するのではなく ls -l で現状を確認してから直すほうが事故を抑えられます。sudo chown -R user:group ディレクトリ は一見便利ですが、配下全部の所有者を変えるので、サービスの動作条件まで巻き込むことがあります。

sudo の安全な使い方

sudo は、一時的に管理者権限でコマンドを実行するための仕組みです。
たとえばパッケージ更新やシステム設定の変更など、一般ユーザーでは触れない操作に使います。
基本は単純で、実行したいコマンドの前に sudo を付けます。

sudo apt update
sudo chown root:root /etc/sample.conf

実行時には通常、現在のユーザーのパスワード入力が求められます。
一度認証するとしばらくは再入力なしで続けて使えるので、管理作業の途中で何度も止まりません。
席を離れる前や、作業を区切りたいときに sudo -k を打つと、その認証状態を無効化でき、次回の sudo 実行時に再びパスワード入力が必要になります。

便利だからといって、普段のコマンドを何でも sudo 付きで実行する流れは避けたいところです。
権限不足の理由を考えないまま昇格すると、誤操作の影響範囲が一気に広がります。
とくに sudo rm -rf は、削除対象を見誤った瞬間に取り返しがつきません。rm だけでも注意が必要なのに、管理者権限が付くとシステム側まで消せてしまうからです。

Red Hatの Linux コマンド入門でも、初心者がまず押さえるコマンド群は絞って整理されていますが、権限系は「打てる」だけでは足りません。
どの操作に管理者権限が必要で、どこから先がシステム全体へ影響するのかを分けて考えることが、ターミナルに慣れる近道です。
筆者も、自宅のラズパイや検証環境で sudo を使うときは、対象パスを pwdls -l で見てから実行する流れを崩しません。

man/--help/history の役割整理

権限系コマンドはオプションが少し増えるだけで意味が変わるので、man--helphistory の使い分けもここで結び付けておくと実践で効きます。man は詳細マニュアル、--help はその場で読む簡易ヘルプ、history は自分が前に打ったコマンドの再利用です。

chmod の記号表記を忘れたときは、まず chmod --help でざっと確認すると速く進められます。
書式の背景まで知りたいなら man chmod のほうが向いています。chownsudo も同じで、今すぐ必要な構文だけなら --help、落ち着いて意味まで追うなら man です。

一方で history は、知識を読むためというより、過去にうまくいったコマンドを引っぱり出す用途です。
以前に sudo chown user:group file を打って解決したなら、その履歴を見て再実行したほうが速く、タイプミスも減らせます。
Ubuntuの初心者向けチュートリアルでもコマンドラインの基本操作が段階的に整理されていますが、学習の早い人ほど「調べる道具」と「再利用する道具」を分けて使っています。

このセクションで触れた内容は、実際に chmod 644 sample.txtchmod 755 sample_dir を試し、直後に ls -l で表示を見比べると腹落ちします。
ファイルとディレクトリで x の意味が違うこと、644755 の見え方、sudo が必要になる場面の境界が、文字の説明だけよりずっと鮮明になります。

まずはこの順で試す練習メニュー

準備

ここでは、Ubuntu か Raspberry Pi のホームディレクトリから始めます。
失敗しても困らない練習用の作業場を自分の配下に切っておくと、rmmv を触る段階でも手が止まりません。
Ubuntuの初心者向け解説でも、最初はホーム配下でコマンドラインに慣れる流れが整理されています。

まずは作業ディレクトリを作り、今いる場所を確認します。

mkdir -p ~/cli-practice/logs
cd ~/cli-practice
pwd

mkdir -p は途中の logs までまとめて用意するための指定です。cd ~/cli-practice で移動したあとに pwd を打つのは、操作対象を目で確定させるためです。
筆者は研修でも、この「いまどこにいるかを見てから進む」流れを最初に固めます。
見て、探して、直して、消す順序を繰り返すと、削除や上書きの事故が目に見えて減るからです。

作成と閲覧

作業場ができたら、空ファイルとログファイルを1つずつ作ります。
ここで touchechoteels -l をまとめて触っておくと、その後の検索やコピーにつながります。

touch note.txt
echo 'error line' | tee logs/app.log
ls -l

touch note.txtnote.txt を作ると、空のファイルができます。touch はもともと時刻更新のコマンドですが、存在しないファイルを指定すると空ファイルを新規作成します。
作った直後は中身がないので、まずは「ファイルという箱だけできた」状態です。

echo 'error line' | tee logs/app.log は、文字列を画面に出しながら logs/app.log に保存する練習です。> で書くより少し回り道に見えますが、標準出力とファイル保存を同時に意識できるので、パイプの感覚を掴むには向いています。
Linuxizeの tee 解説でも、この「表示しつつ保存する」動きが基本形として整理されています。

続けて中身を見ます。

cat note.txt
less logs/app.log

cat note.txt は何も表示されません。
空ファイルなので当然ですが、この無表示も立派な確認結果です。
一方で less logs/app.log では error line が1行見えるはずです。less を開いたら /error と入力して Enter を押すと、その文字列を検索できます。
検索結果が複数あるファイルでは n で次の一致箇所へ進めます。cat は全体をそのまま吐き出すので、行数が増えると端末の流れが速すぎます。less を早めに覚えると、ログ確認の手つきが一段落ち着きます。

検索と絞り込み

閲覧の次は検索です。
1ファイルの中身を探す grep と、複数ファイルを横断する find の組み合わせを続けて触ると、役割の違いが残りやすくなります。
Red Hatの 20 個の基本コマンド整理でも、初心者が早めに押さえる対象として検索系が入っています。

まずは単体のログから検索します。

grep -n 'error' logs/app.log

-n を付けると行番号付きで表示されるので、どこにヒットしたかをすぐ追えます。設定ファイルやログを直す場面では、行番号が出るだけで次の操作が速くなります。

続いて、findxargs でログファイル全体を対象にします。

find . -type f -name "*.log" -print0 | xargs -0 grep -n "error"

この1行では、まず find がカレントディレクトリ配下の .log ファイルを探し、その結果を xargs が受け取って grep に渡しています。-print0xargs -0 を組み合わせているのは、ファイル名に空白が入っても安全に受け渡すためです。
今の練習用ファイル名では差が見えませんが、実務ではこの形を覚えておくと検索の取りこぼしを防げます。
まくまく Linux/Shell ノートの findgrep の実例も、この連携の感覚を掴むのに役立ちます。

コピーと移動

検索で対象を見つけたら、次はバックアップと改名です。
ここで cpmv を1回ずつ打っておくと、「元を残す操作」と「名前や場所を変える操作」が手で分かれてきます。

cp logs/app.log logs/app.bak
mv note.txt memo.txt

cp logs/app.log logs/app.bak は、元のログを残したまま複製を作る操作です。
設定ファイルを触る前に .bak を作る流れは、短いコマンドでも事故の吸収力があります。mv note.txt memo.txt は移動コマンドですが、同じディレクトリ内なら実質的にファイル名の変更です。

この段階で ls -l をもう一度見ると、note.txt が消えて memo.txt になり、logs の中には app.logapp.bak の2つがあるはずです。
筆者は新人研修でここを急がせません。
見て、探して、直して、消す順序を守る人ほど、次の削除でも対象を取り違えなくなります。

権限の設定

ファイル操作がひと通り終わったら、権限の基本形を当てます。ここでは一般ユーザーの練習範囲で完結する chmod だけを実行します。

chmod 644 memo.txt
chmod 755 logs
ls -ld logs
ls -l memo.txt

memo.txt644 にすると、所有者は読み書き、その他は読み取りだけになります。logs755 にすると、所有者は読み書き実行、その他は読み取り実行になります。
ディレクトリに対する x は「入れる、たどれる」という意味なので、ファイルの実行権とは見え方が違います。
直前のセクションで触れたとおり、数値だけ覚えるより ls -l の表示と結び付けたほうが頭に残ります。

所有者変更の例として sudo chown root:root memo.txt を見かけることがありますが、この練習では実行しません。
自分の作業用ファイルを root 所有に変えると、その後の編集や削除で余計な詰まり方をするからです。chown は便利ですが、練習の最初は「見て意味を知る」段階に留めるほうが流れを崩しません。

TIP

権限変更の直後に ls -lls -ld を挟むと、数字と表示がつながります。chmod を打って終わりにせず、表示の変化まで見ると定着が速まります。

安全な削除

削除は、練習メニューの中でも順番を守る価値が最も大きい操作です。コピーして退避し、一覧で確認し、対話的に消す流れなら、誤削除の芽を潰せます。

まずはバックアップファイルを対話付きで削除します。

rm -i logs/app.bak

-i を付けると確認を挟んでくれるので、消す対象名をもう一度目で追えます。
続いてディレクトリ削除も試せますが、こちらは中身ごと消すので対話付きでも慎重に扱います。

rm -ri logs

-r は再帰削除で、ディレクトリの中までたどって消します。-i が付いていても、対象確認を飛ばして Enter を押すとそのまま進むので、表示されるパスを読むことが前提です。
筆者の研修でも、削除は必ずこの位置に置きます。
見て、探して、直してから消す順序にすると、手元の判断が安定します。

片付けまで含めるなら、作業ディレクトリ全体も最後に消せます。

cd ~
rm -ri ~/cli-practice

ここでいったん cd ~ を挟むのは、削除対象の外へ出るためです。いま自分がいる場所と消す場所が重ならない状態にしておくと、表示も判断も素直になります。

履歴と振り返り

練習を1周したら、その日のコマンドを履歴で見返します。

history

history を眺めると、mkdir から rm までの流れがそのまま残っています。
うまくいった手順を後から再利用できるのが利点で、打ち直すたびにタイプミスの機会も減ります。
学習の初期は、知識を増やすことより「再現できた並び」を持つほうが強い場面が多いです。

あわせて man で3つだけ復習すると、次の練習が楽になります。

man ls
man grep
man find

ls では一覧表示の見方、grep では行番号や検索条件、find では名前指定や型指定を追うだけで十分です。
コマンド入門では 20 個前後を基本セットとして挙げる例が多いですが、読むだけで増やすより、今触ったものを man で掘るほうが身につきます。
この練習メニューは短い一周の中に、testディレクトリ作成に相当する作業場の用意、ファイル作成、内容確認、検索、コピー、移動、権限、削除までを詰め込んでいます。
読むだけで終わらせず、手元で順番どおりになぞると、次に別名のファイルや別のログを相手にしても手が動きます。

Linuxコマンド初心者のよくある疑問

暗記は必要?

20個の基本コマンドが並ぶと、「全部覚えないと先に進めないのでは」と感じがちです。
ただ、結論から言うと全部暗記する必要はありません。
初心者向けの入門記事でも、基本セットとして20個前後を挙げる例が定番ですが、それは最初に触れる範囲を絞るための目安であって、試験の単語帳のように丸暗記するための一覧ではないからです。

実務でも、筆者は全部暗記している人より、man--help を辞書のように引ける人のほうが伸びる場面を何度も見てきました。
現場の作業は、ls で確認し、迷ったら history で直前の成功例を見返し、コマンド名の途中まで打って Tab 補完で候補を出し、細かい構文は --help で確かめる、という流れの繰り返しです。
毎回すべてを頭の中から取り出すより、その場で正確に確認できるほうが事故も減ります。

たとえば grep のオプション名を忘れても、grep --help で構文の骨格はすぐ確認できます。
詳しい説明が必要なら man grep に進めば足ります。findxargs のように書式が長くなりやすいコマンドほど、この確認の癖が効きます。
覚える優先順位は、まず pwdlscdmkdirtouchcpmvrm のような日常的に触るものからで十分です。

NOTE

暗記の代わりに「調べる順番」を固定すると、手が止まりません。
筆者はまず Tab 補完、次に --help、それでも足りなければ man、直前の成功例を見たいときは history という順で使い分けています。

sudo の使いどころ

sudo は、システム領域の変更や特権操作が必要なその瞬間だけ使うコマンドです。
普段のファイル閲覧、作業用ディレクトリでの編集、ホームディレクトリ内の整理には不要です。
Red Hatのドキュメントでも、sudo は一時的に他ユーザー、通常は root としてコマンドを実行するための仕組みとして説明されています。
権限が必要な操作だけを切り分けるのが本来の使い方です。

具体例を挙げると、パッケージの更新やインストール、/etc 配下の設定変更、サービスの再起動は sudo の出番です。
一方で、自分のホームディレクトリにある memo.txtcat で読む、less でログのコピーを見る、mkdir work で作業フォルダを作る、といった操作に sudo はいりません。
ここで毎回 sudo を付けると、作成したファイルの所有者が root になり、その後の編集や削除で詰まりやすくなります。

リスクも見逃せません。sudo rm のように削除系コマンドと組み合わさると、一般ユーザー権限なら防げたはずの誤操作まで通ってしまいます。
さらに sudo は認証後しばらく再入力なしで使える仕組みがあり、席を外した直後の端末では意図せず強い権限のまま作業が続くことがあります。
そういう場面では sudo -k で認証キャッシュを無効化できる、という知識も運用上は役に立ちます。

迷ったときは、まず whoami で今の実行ユーザーを確認し、その操作が「自分の作業領域」なのか「システム全体の設定」なのかを切り分けると判断しやすくなります。sudo は常用する魔法の接頭辞ではなく、権限の壁を越える必要がある作業だけに付けるものです。

rm の取り消し可否

rm で削除したものは、基本的に戻せません。
デスクトップ環境のゴミ箱とは違い、rm はその場で削除を実行します。
だからこそ、削除はコマンド知識より運用のほうが大切です。

初心者のうちは、rm を打つ前に ls で対象名を確認し、実行時は rm -i を付ける流れを固定したほうが安全です。-i を付けると確認が入るので、ファイル名やパスをもう一度目で追えます。
たとえば note.txt を消すつもりなら、先に ls でそのファイルが本当にその場所にあるか見てから、rm -i note.txt と打つだけでも誤削除の確率は下がります。

とくに危険なのは、ディレクトリをまとめて消す rm -r と、権限を上げた sudo rm の組み合わせです。
再帰削除は中身をたどって消すので、対象ディレクトリを取り違えると被害の範囲が一気に広がります。
筆者も業務では、削除前に一覧確認、必要なら退避コピー、削除は対話付きという順序を崩しません。
派手なテクニックではありませんが、この手順を守る人のほうが安定して作業を進められます。

削除前の確認を機械的に繰り返すために、pwd で現在地を見てから ls、そのあと rm -i という並びにしておくと、どこで何を消すのかが視界に入ります。rm の怖さはコマンド自体より、急いで打つことにあります。

man を読み切るコツ

man が英語で長く、最初の画面で閉じたくなるのは自然です。
全文を上から順に読む必要はありません。
必要な場所だけ拾う読み方に切り替えると、man は急に役に立つ道具になります。

まず使いたいのが、less と同じ / 検索です。man grep を開いたら /EXAMPLES/pattern/recursive のように気になる単語へ飛べます。
全部を精読するより、今やりたい操作に関係する箇所だけ先に読むほうが速いです。
ページャとしての less は必要な部分だけを追いかけられるので、大きいマニュアルでも最初から最後まで順番に読む前提ではありません。

英語が負担になるときは、EXAMPLES セクションを探すのも有効です。
構文説明だけではイメージしにくいコマンドでも、実例があると一気に理解できます。findgrep のようにオプションが多いものは、例を見てから説明文に戻ると入りやすくなります。
もっと入口を浅くしたいなら、先に --help を使って構文だけ把握し、そのあと man で必要な部分を補う流れが現実的です。

たとえば sudo の細かい挙動を調べたいなら、いきなり長いマニュアルへ飛び込むより、sudo --help で使える形を見て、必要になった段階で man sudo を開くほうが頭に残ります。
筆者も現場で初見のコマンドに当たったときは、この順番をよく使います。
短いヘルプで地図を見てから、man で必要な章だけ読むほうが迷いません。

ディストリ差分の扱い

Linux はUbuntu系でもRed Hat系でも、今回の記事で扱ってきた pwdlscdmkdirtouchcatlessgrepfindrm といった基本コマンドは共通して考えて大丈夫です。
移動、確認、作成、検索、削除といった日常操作は、多くの環境でそのまま通用します。

差が出やすいのは、主にパッケージ管理や管理系コマンドの流儀です。
Ubuntu系では apt を使う場面が多く、Red Hat系では dnf を使います。
記事や書籍で sudo apt install を見かけたのに自分の環境では動かない、という戸惑いはこの違いから起きます。
ここで「Linux のコマンドが違う」と考えるより、「基本操作は共通で、管理まわりに系統差がある」と整理したほうが理解が進みます。

初心者のうちは、まず共通部分を固めるのが得策です。
ファイルを一覧する、内容を見る、検索する、権限を意識する、といった土台ができていれば、あとから aptdnf の違いに触れても吸収しやすくなります。
逆に、管理コマンドの違いばかり先に追うと、ターミナル全体が難しく見えてしまいます。

つまり、ディストリの違いを気にする場面はありますが、それは基本コマンドの学習を止める理由にはなりません。
まずは共通言語としてのコマンド操作に慣れ、その上でパッケージ管理やサービス操作の流儀を足していくほうが、手元の理解と実作業がつながります。

関連記事Ubuntuインストール方法 24.04 LTS対応Ubuntu 24.04 LTSを入れる作業は、ISOを選んでUSBメモリを作り、USBから起動してインストールし、更新と日本語入力まで整えれば一通り完了します。この記事では、その流れをWindowsとの共存も視野に入れながら、初めての人でも途中で止まらない順番で整理します。

まとめと次のステップ

この記事の要点

覚える順番は、数を増やすことより流れをつかむことです。
まずは pwd ls cd で現在地と移動を迷わなくし、次に cp mv rm でファイル操作、grep find xargs で検索、|tee で出力の受け渡し、chmod chown sudo で権限の考え方に触れると、ターミナル作業が一本につながります。
初心者向けの基本コマンド数はRed HatやLinuxTeckでも20個前後が定番で、最初はその範囲を反復する進め方が現実的です。

NOTE

次にやることは明確です。
記事内で使った練習用ディレクトリに戻り、20コマンドを順番にもう一度打ってください。
読んで理解したつもりでも、指が覚える段階に入らないと定着しません。
そのあと man ls man grep man find を開き、本文で触れたオプションを自分の目で確認すると、記憶が一段深くなります。
筆者は新人に、毎日1操作だけGUIからCLIへ置き換えるルールを勧めています。
ログ確認でも、ファイル整理でも構いません。
この積み重ねを続けると、1か月ほどでGUIより先にコマンドが浮かぶ場面が増えてきます。

TIP

迷った日は、新しいコマンドを増やすより、同じ操作をもう一度打つほうが身につきます。

発展への道筋

次の学習先として相性がいいのは、パイプ、リダイレクト、シェルスクリプト入門です。
本記事で触れた |tee は入口にすぎず、出力をつなぐ発想が身につくと、単発のコマンド操作が作業手順として組み上がります。
GNU系ツールの考え方に慣れてくると、検索、抽出、保存をひと続きで扱えるようになり、CLIは暗記科目ではなく作業を組み立てる道具だと実感できるはずです。

この記事をシェア

佐々木 まい

IT企業でのシステムエンジニア経験を経て、スマートホーム導入のコンサルティングに転身。Home AssistantやESPHomeを使った自宅オートメーションを日々研究中。