
Linuxの基本コマンドとディレクトリ構造をマスターしよう
1. はじめに
皆さんはLinuxを使っていて、「コマンドがたくさんあって混乱する」「ディレクトリ構造がよくわからない……」と思ったことはありませんか? Linuxのコマンドライン(シェル) には便利な機能が豊富にありますが、はじめは何から学べばいいのか戸惑う方も多いです。
一方で、コマンドラインに慣れると、GUI(グラフィカルユーザーインターフェース)だけではできない高度な管理や自動化が簡単に行えるようになります。つまり、「コマンドラインを使いこなす」 ことはLinuxの世界で大きな武器になるのです。
本記事では、Linuxの基本コマンドとディレクトリ構造を、初心者の方にもわかりやすく解説します。読み終わるころには、ファイル操作・プロセス管理・権限設定など、さまざまなタスクをコマンドラインでスムーズに実行できるようになるはずです。
ワンメッセージ
「Linuxのコマンドラインは、正しく理解すれば作業効率を劇的に高める魔法の道具になる」
2. シェルの世界へようこそ
2.1 Bourne Shell (/bin/sh) とは?
Linuxを含むUnix系システムには、多種多様なシェルがあります。なかでもBourne Shell (/bin/sh) は、初期のUnixから続く標準的なシェルです。Linuxでは通常、bash (Bourne-again Shell) が /bin/sh へのリンクとして動作し、Bourne Shell互換の機能を拡張しています。
なぜシェルが重要なのでしょう? それは、シェルが「ユーザーからのコマンドを受け取り、OS(カーネル)へ伝える窓口」だからです。シェルの種類は豊富ですが、bash さえしっかり理解しておけば、ほとんどのタスクをこなせるようになります。
2.2 シェルの使い方
ログイン後に端末(ターミナル)を開くと、シェルが起動しています。プロンプトが表示されるので、例えば次のように入力してみてください。
$ echo "Hello, Linux!"
echo "Hello, Linux!" は、与えた文字列をそのまま表示するコマンドです。
$ はシェルのプロンプトを表しています(入力時には $ を含めない)。
シェルでは標準入力(stdin)・標準出力(stdout) を意識することが大切です。端末では、キーボード入力が stdin、画面への表示が stdout に対応します。これを組み合わせて、さまざまなコマンドをつなげたり、リダイレクトしたりすることで、柔軟な処理が可能になるのです(後述)。
3. Linuxの基本コマンド
3.1 ファイル閲覧・操作コマンド
ls
# カレントディレクトリの中身を一覧表示
$ ls
# 詳細表示 -l オプション
$ ls -l
# ファイルタイプを表示 -F オプション
$ ls -F
ls -l はパーミッションやファイルの所有者、ファイルサイズなどを一覧できる便利なオプションです。
cp, mv, rm
# ファイルのコピー
$ cp file1 file2
# ファイルの移動/リネーム
$ mv oldname newname
# ファイルの削除
$ rm filename
rm したファイルは基本的に復元不能 なので注意が必要です。
cat
# ファイル内容を連結(concatenate)して表示
$ cat file1 file2
引数を与えずに cat だけ実行すると、端末入力をそのまま出力する「エコー」状態になります。
入力を終了したいときは Ctrl + D を押してEOFを送ります。
touch
# 新規ファイルを空で作成(または既存ファイルの更新時刻を変更)
$ touch newfile
3.2 ディレクトリ操作コマンド
cd (Change Directory)
# 指定ディレクトリへ移動
$ cd /usr/local
# 引数なしでホームディレクトリへ戻る
$ cd
. は「現在のディレクトリ」、.. は「親ディレクトリ」を意味します。
mkdir と rmdir
# 新しいディレクトリを作成
$ mkdir mydir
# 空ディレクトリの削除
$ rmdir mydir
ディレクトリごと削除したいときは rm -r ディレクトリ を使いますが、誤操作時に重大な被害を出しやすい ため要注意です。
3.3 シェルのワイルドカード(グロブ)
# ワイルドカード * を使った例
$ ls *.txt
* は任意の文字列、? は任意の1文字にマッチします。
Windowsの *.* と違い、Unixで「すべてのファイル」を指定するときは * だけでOKです。
4. 便利な中級コマンド
4.1 grep
# /etc/passwd 内で 'root' を含む行を検索
$ grep root /etc/passwd
# -i (大文字・小文字無視), -v (一致行を除外) などのオプションが便利
$ grep -i root /etc/passwd
$ grep -v root /etc/passwd
正規表現を使ったパターンマッチが可能で、複数ファイル検索にも便利です。
たとえば grep root /etc/* で /etc ディレクトリ以下のファイルを一括検索できます(ただしファイル数が多いと出力が大量になります)。
4.2 less
# ファイルをページングしながら表示
$ less /usr/share/dict/words
# 検索は '/' または '?' で行い、 'n' で次のマッチに飛ぶ
q で終了。長いファイルやコマンド出力を閲覧するときに重宝します。
4.3 find と locate
# 指定ディレクトリ以下からファイルを検索
$ find /etc -name passwd -print
# インデックスを用いた高速検索
$ locate passwd
find はリアルタイム検索で柔軟ですがやや重い。locate は事前に作成されたデータベースを用いるため高速ですが、更新タイミングによっては最新ファイルがヒットしないこともあります。
4.4 head と tail
# 先頭10行だけ表示
$ head /etc/passwd
# 末尾10行だけ表示
$ tail /etc/passwd
-n オプションで表示行数を指定できます。ログファイルの一部だけ確認するときに便利です。
4.5 標準入出力のリダイレクト・パイプ
# 標準出力をファイルに上書き
$ command > output.txt
# 標準出力をファイルに追記
$ command >> output.txt
# コマンドの出力を別コマンドへパイプ
$ ls -l | grep "\.txt"
標準エラー(stderr)は 2> でリダイレクト可能。
例: ls /no/such/dir > out.txt 2> err.txt
5. エラーとプロセス管理
5.1 エラーを読めばトラブルシュートが楽になる
No such file or directory: 指定ファイルが存在しない
Permission denied: アクセス権限が不足
Operation not permitted: プロセスkillの権限など
Segmentation fault: プログラムのメモリアクセス不正
Question:なぜLinuxのエラーメッセージは役立つ?
→ 多くの場合、「どのコマンドが」「何のファイルに」「どんな失敗をしたか」が出力されるため、問題箇所を特定しやすいのです。
5.2 プロセスを探す (ps)、止める (kill)
# 自分のプロセス一覧を表示
$ ps
# 全プロセスを詳細表示 (BSDスタイルオプション)
$ ps aux
# 特定PIDのプロセスを終了する
$ kill <pid>
# 強制終了 (kill -9) は最終手段
$ kill -9 <pid>
ジョブ制御:Ctrl+Z で一時停止、fg でフォアグラウンド復帰、bg でバックグラウンドへ。
バックグラウンド実行:コマンド末尾に & を付けると、シェルに戻りつつ処理を継続できます。
6. ファイルのパーミッションとシンボリックリンク
6.1 パーミッションの仕組み
ls -l で表示される -rw-r--r-- などがパーミッションを示します。
この記事が気に入ったらチップで応援してみませんか?