初めて Linux のコマンドを学ぶ時は、ググるキーワードがわからず、1つずつ調べるのが大変です
そのため、本記事では上からコピペして実行することで、Linux でよく利用するコマンドを網羅的に理解できるようにしました。
関連記事:Linux の基本 | |||||
---|---|---|---|---|---|
学習ロードマップ | |||||
---|---|---|---|---|---|
ファイル・ディレクトリの操作
使用 OS は Amazon Linux 2 です。
(一般的な Linux ディストリビューションなら動くと思います。)
touch ファイル作成
test.txt という名前のファイルを作ります。
ls ディレクトリの内容一覧
ディレクトリとはフォルダのことです。
test.txt
先程作成した test.txt ファイルが確認できます。
vi ファイル編集
test.txt の内容を編集します。
test.txt
キーボードから「a」を入力すると、「コマンドモード→入力モード」に変更します。
そのまま好きな文字を入力します。

キーボードから「Esc」を入力すると、「入力モード→コマンドモード」に変更します。

コマンドモードで「:wq」と入力し、Enter を押すと上書き保存され、vi が終了します。
cat ファイルの内容を出力
apple
先程 vi で編集した内容が確認できます。
echo テキストを表示
hoge
> リダイレクト (上書き)
hoge
「echo hoge」の出力が、「画面」から「ファイル (test.txt)」にリダイレクトされています。
>> リダイレクト (追記)
「>」では、リダイレクト先のファイルの内容が消え、新しく上書き保存されていました。
「>>」では、リダイレクト先のファイルの内容を残し、ファイルの最後に追記します。
hoge add
「hoge」を残しつつ、「add」が追記されていることが確認できます。
標準ストリーム
標準ストリームとは、デフォルトの入力/出力先です。
標準ストリーム | FD 番号 | デフォルト | 意味 |
---|---|---|---|
標準入力 (stdin) | 0 | キーボード | データ入力元 |
標準出力 (stdout) | 1 | 端末 (が表示されるディスプレイ) | データ出力先 |
標準エラー出力 (stderr) | 2 | 端末 (が表示されるディスプレイ) | エラー出力先 |

先ほど紹介したリダイレクトは標準出力を「ディスプレイ」から「ファイル」に変更しています。

なお、リダイレクトのデフォルトの FD 番号は 1(標準出力) です。
つまり、「echo hoge > test.txt」と「echo hoge 1> test.txt」は同じです。
標準入力のリダイレクトを変更
標準入力を変更したい場合は、 FD 番号 0 (標準入力) を指定します。
hoge add
つまり、「cat test.txt」と「cat 0< test.txt」は同じです。

なお、cat コマンドはファイルを指定しなかった場合、標準入力がキーボードになります。
この状態でキーボードから好きな文字を入力して Enter を押すと、入力した文字が出力されます。
aaa
Ctrl + C プロセスの中断
先程の cat コマンドによる標準入力の受付を終了するために、キーボードから「Ctrl + C」 を入力します。
grep 行のパターンマッチ検索
hoge
-A 後の行も表示
オプション -A をつけると、検索した行の後も表示します。
hoge
add
hoge の1行後の行も表示されました。
-B 前の行も表示
オプション -A をつけると、検索した行の前も表示します。
hoge
add
| パイプ (標準出力を標準入力に利用)
「左側のコマンドの標準出力 (結果) 」を、「右側のコマンドの標準入力」に利用します。
abcdefg
上記は abcdefg の中に、cd という文字列が含まれるか grep で検索しています。

今回:grep の標準入力を、echo の標準出力にする
mkdir ディレクトリを作成
drwxrwxr-x 2 ec2-user ec2-user 6 3月 16 21:46 newdir -rw-rw-r-- 1 ec2-user ec2-user 53 3月 16 21:43 test.txt
先頭に「d」とついているファイルがディレクトリ (フォルダ)です。
「newdir」ディレクトリを作成できたことが確認できました。
-p 再帰的にディレクトリを作成
drwxrwxr-x 2 ec2-user ec2-user 6 3月 16 21:50 newdir
recursive ディレクトリの中に newdir ディレクトリを作成できたことを確認できます。
pwd 現在のディレクトリを確認
/home/ec2-user
cd 現在のディレクトリを移動
/home/ec2-user/newdir
cp ファイルコピー
親ディレクトリ (/home/ec2-user/) から 現在のディレクトリ (/home/ec2-user/newdir) にファイルをコピーします。
なお、「../」は親ディレクトリ、「./」は現在のディレクトリを示します。
newdir recursive test.txt
test.txt
rm ファイルの削除
ls: ./test.txt にアクセスできません: No such file or directory
ファイルが削除されていることが確認できます。
mv ファイルの移動
newdir recursive
test.txt
親ディレクトリ (../) から test.txt が消え、現在のディレクトリ (./) に移動しています。
find ファイルを検索
./test.txt
「./」は現在のディレクトリ (カレントディレクトリ) を示します。
less ファイルをページ表示
マウスでスクロール、「G」でページの最後に移動、「q」で less コマンドを終了します。
cat の場合はファイルの全ての内容が表示され、今までのコマンドが上の方に流れてしまいます。
権限 (パーミッション)
パーミッションの検証準備
検証用に test.sh を作成します。
権限がない場合は、以下のように「Permission denied」が発生します。
-bash: ./test.sh: Permission denied
ls -l 権限の確認
-rw-rw-r-- 1 ec2-user ec2-user 13 3月 21 13:19 test.sh
「-rw-rw-r-- 1 root root」は以下の意味を持ちます。
値 | 意味 |
---|---|
1 文字目 - | ファイルの種類:レギュラーファイル ファイルの種類一覧はこちら |
2, 3, 4 文字目 rw- | 所有者の権限 r:読み取り w:書き込み x:実行 |
5, 6, 7 文字目 rw-- | 所有グループの権限 |
8, 9, 10 文字目 r--- | その他 |
1 | ハードリンクの数 |
ec2-user | 所有ユーザー |
ec2-user | 所有グループ |
- 所有ユーザー ec2-user は「読み取り」・「書き込み」権限があります
- 所有グループ ec2-user は「読み取り」・「書き込み」権限があります
- それ以外のユーザー or グループは「読み取り」権限があります
chmod 権限の設定
chmod <モード> ファイル
上記の例では、<モード> で、「所有ユーザー "u"」に「実行 "x"」権限を「付与 "+"」しています。
モードの詳細は以下のとおりです。
対象 | 意味 |
---|---|
u | ユーザー |
g | グループ |
o | その他 |
a | すべて |
操作 | 意味 |
---|---|
= | 指定した権限にする |
+ | 指定した権限を付与する |
- | 指定した権限を除去する |
権限 | 意味 |
---|---|
r | 読み取り |
w | 書き込み |
x | 実行 |
-rwxrw-r-- 1 ec2-user ec2-user 54 3月 21 08:56 test.txt
2, 3, 4 文字目が「rwx」となっているため、「所有ユーザー」に「実行」権限を「付与」できています。
success
test.sh が実行できるようになりました。
sudo スーパーユーザーで実行
sudo <コマンド> で、コマンドをスーパーユーザー (root ユーザー) として実行します。
/var/log/messages: Permission denied
Permission denied が発生しました。次のスーパーユーザーで less コマンドを実行します。
スーパーユーザーはすべての権限を持つため、less コマンドが実行できました。
なお、初めて sudo コマンドを実行する場合は、以下の表示がでますので、よく読んだ上でパスワードを入力してください。
あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] <ユーザー名> のパスワード:
chown ファイルの所有者を変更
chown <ユーザー[:グループ]> <ファイル>
-rwxrw-r-- 1 root root 13 3月 21 13:29 test.sh
所有ユーザーも所有グループも root になっていることが確認できます。
-bash: ./test.sh: Permission denied
実行ユーザーは root では無いので、実行を防いでくれています。
success
root ユーザー (スーパーユーザー) では、実行に成功します。
ユーザー・グループの操作
who ログインユーザーを表示
ec2-user pts/0 2022-03-19 11:37
useradd 新規ユーザーの作成
useradd <ユーザー名>
id ユーザーの確認 (ID の表示)
uid=1006(hoge) gid=1006(hoge) groups=1006(hoge)
ユーザー ID が 1006 で、ユーザー「hoge」が作成されていることが確認できます。
ユーザーはグループに所属できます。
ユーザー「hoge」はグループ ID 1006 の実効グループ「hoge」に所属します。
/etc/passwd ユーザーの一覧を確認
(中略) hoge:x:1006:1006::/home/hoge:/bin/bash
フィールドは「:」で区切られていて、それぞれの意味は以下のとおりです。
フィールド | 意味 |
---|---|
第1フィールド | ユーザ名 |
第2フィールド | パスワード (シャドウパスワード) セキュリティの都合で(☓)と表記 |
第3フィールド | ユーザID |
第4フィールド | グループID |
第5フィールド | コメント欄 |
第6フィールド | ホームディレクトリ |
第7フィールド | ログインシェル |
hoge:x:1006:1006::/home/hoge:/bin/bash
passwd パスワードの変更
新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
変更したいパスワードを2回パスワード入力します。
su 別のユーザーでログイン
パスワード:
パスワードを入力すると、「hoge@<ipアドレス>」の表示となる (設定による) ので、操作するユーザーが「hoge」であることがわかります。
exit ログアウト (シェルの終了)
su コマンドを実行する前のユーザーに戻っていることが確認できます。
groupadd 新規グループを作成
/etc/group グループの一覧を確認
hoge:x:1006:hoge tech:x:1007:
tech:x:1007:
gpasswd -a グループにユーザーを追加
uid=1006(hoge) gid=1006(hoge) groups=1006(hoge),1007(tech)
1007(tech) が実効グループに追加されていることがわかります。
gpasswd -d グループからユーザーを削除
uid=1006(hoge) gid=1006(hoge) groups=1006(hoge)
1007(tech) が実効グループから削除されていることがわかります。
groupdel グループを削除
グループ「tech」が削除できていることが確認できます。
userdel ユーザーの削除
ユーザー「hoge」が削除できていることが確認できます。
その他
history コマンド履歴
(中略) 1326 cat /etc/passwd|grep hoge 1327 history
man コマンドのマニュアル
man <コマンド> でコマンドのマニュアルが読めます。
英語だと読む気が失せるので日本語化します。
man 日本語化
ja_JP.utf8
「ja_JP.utf8」なら OK です。それ以外なら「export LANG=ja_JP.utf8」を実行します。
man のマニュアルが日本語になりました。
関連情報
学習ロードマップ | |||||
---|---|---|---|---|---|
関連記事:Linux の基本 | |||||
---|---|---|---|---|---|
Linux カーネルの機能 | |||
---|---|---|---|
ネットワークのコマンド | |||
---|---|---|---|
関連記事:サーバー | ||||
---|---|---|---|---|