今回は、Linux の基本コマンド 18 個の使い方をまとめてみました。
cd
cd(change directory)は、現在いるディレクトリを変更できるコマンドです。移動先のディレクトリを指定します。
cd [ディレクトリ名]
/tmp
ディレクトリに移動
cd /tmp
何も指定しなければホームディレクトリに移動
cd
pwd
/Users/macbookpro
pwd(print working directory)は、自分が現在どの位置にいるのかを表示します。
pwd
/Users/macbookpro/Desktop
現在、/Users/macbookpro/Desktop
ディレクトリにいることがわかります。
ls
ls(list)は、ファイル名やディレクトリを指定して情報を取得できるコマンドです。
ディレクトリを指定した場合はそのディレクトリの中にあるファイル・ディレクトリ一覧を表示します。
ls [オプション] [ファイル名 or ディレクトリ]
カレントディレクトリの全てのファイル・ディレクトリを表示
ls
bye-world.js hate.txt hello world-hello.ts
ha.py hatena.md hello-world.js
test1 ディレクトリの一覧を表示
ls test1
hello.txt
ファイル名を指定すると、その指定した名前のファイルのみを表示できます。
これを使うと、ワイルドカード(*や?)で特定の文字列や拡張子を含むファイルのみを表示することもできます。
ファイル名にhello
の文字列が含まれるファイルのみを表示
ls *hello*
hello hello-world.js world-hello.ts
拡張子が.js
のファイルのみを表示
ls *.js
bye-world.js hello-world.js
オプション |
説明 |
-a |
隠しファイルも含めて全て表示 |
-l |
ファイルの詳細(ファイルタイプ、パーミッションなど)も表示 |
-r |
逆順に並び替えて表示 |
-t |
更新時間順に並び替えて表示 |
mkdir
mkdir(make directory)は、ディレクトリを作成するコマンドです。
mkdir ディレクトリ名
カレントディレクトリに test1 ディレクトリを作成
mkdir test1
test1/test2/test3
など下位のディレクトリを一度に作成したい場合、-p
オプションが必要です。(ディレクトリを作る際はその上位層ができていないと作成できない制約があるため)
mkdir -p test1/test2/test3
rmdir
rmdir(remove directory)は、ディレクトリを削除するコマンドです。
中身が空である時のみ、ディレクトリを削除できます。
rm ディレクトリ名
test1 ディレクトリを削除
rmdir test1
-p
をつけると、指定した階層までのディレクトリを一括削除できます。
rmdir test1/test2
中にファイルなど存在している場合にそのディレクトリごと削除したい場合、rm -r
を使います。
rm -r test2
cat
cat は、ファイルの内容を表示するコマンドです。
cat ファイル名
hello.txt の中身を表示
cat hello.txt
hello world!!!
less
less は、ファイルの内容を表示するコマンドです。
cat コマンドの場合、ファイルの中身が一度に全て表示されるため、ファイルの行数がたくさんあると表示が流れてしまいます(上にスクロールすると見れますが)。
less はファイルの中身の一部を表示して、残りはスペースを押して確認できます。
less hello.txt
【ページ操作】
操作 |
説明 |
スペース |
次のページへ進む |
b |
前の一画面に戻る |
f |
次の一画面に進む |
/単語 |
単語を検索(n キーで検索結果をジャンプ) |
q |
表示を終了 |
行数が多いファイルや、ファイルの上の方だけ確認したい場合は less の方が便利かもしれません。
tail
tail はファイルの終わり部分のみを表示するコマンドです。オプションで「末尾から n 行」を指定できますが、指定しない場合は 10 行を表示します。
tail [オプション] ファイル名
末尾から 5 行を表示
tail -n 5 text.txt
オプション |
説明 |
-n 行 |
末尾から指定した行を表示 |
-c バイト |
末尾から指定したバイト分を表示 |
touch
touch は空のファイルを新規作成するコマンドです。
touch new-hello.js
すでに存在しているファイル名を指定した場合、そのファイルの最終更新時間が変更されます。
ls -l hello.txt
-rw-r--r-- 1 macbookpro staff 15B Dec 21 13:04 hello.txt
touch touch hello.txt
ls -l hello.txt
-rw-r--r-- 1 macbookpro staff 15B Dec 21 16:31 hello.txt
rm
rm(remove)はファイルを削除するコマンドです。ディレクトリを削除したい場合はオプション-r
が必要です。
rm [オプション] ファイル名
hello.txt を削除
rm hello.txt
複数ファイルを指定して削除できます。
rm hello.txt world-hello.ts
test1 ディレクトリを削除(ディレクトリ内の全てのファイル・ディレクトリが削除される)
rm -r test1/
オプション |
説明 |
-i |
実行前に確認する |
-f |
強制的に処理を実行 |
-r |
ディレクトリを削除 |
mv
mv(move)はファイル・ディレクトリを移動させるコマンドです。移動先を存在しない名前に指定した場合、ファイル名(ディレクトリ名)を変更できます。
mv [オプション] 移動元ファイル 移動先ファイル
hello.txt を test1 ディレクトリに移動
mv hello.txt test1
hello.txt のファイル名を hello2.txt に変更
mv hello.txt hello2.txt
オプション |
説明 |
-i |
実行前に確認する |
-r |
強制的に処理を実行 |
cp
cp(copy)はファイル・ディレクトリを複製するコマンドです。
コピー元のファイルとコピー先(新しいファイル名)を指定します。
cp [オプション] コピー元 コピー先
hello.txt を複製した new-hello.txt を作成
cp hello.txt new-hello.txt
コピー先のファイル名がすでに存在する場合、コピー先のファイルが上書きされるので注意が必要です。
hello.txt を bye ディレクトリに複製
cp hello.txt bye/
ls bye/
hello.txt
ディレクトリを複製する場合はオプション-r
をつけます。
ディレクトリの中にあるファイル・ディレクトリ全てが複製されます。
cp -r test1/ test2/
オプション |
説明 |
-i |
処理を実行する前に確認する |
-r |
ディレクトリをコピーする |
-p |
元ファイルの情報を保持したままコピー |
ln
ln(link)は、ファイルやディレクトリのリンクを作成できる機能で、リンク元ファイルとリンク先ファイルを指定します。
リンク先を削除しても元のファイルには影響ありません。
ln 元ファイル名 リンク先
リンクにはハードリンクとシンボリックリンクがあります。
- ハードリンク:ファイルの実体を共有する。元のファイルが削除されてもアクセスできる。
- シンボリックリンク:リンク元の場所を示すもので、元のファイルが削除されるとリンクが機能しなくなる(ショートカットのようなもの)。
シンボリックリンクを作成する場合、オプションに-s
をつけます。
ハードリンクを作成
ln test.txt test-link.txt
シンボリックリンクを作成
ln -s test.txt test-link.txt
find
find は、ファイルがどのディレクトリに存在するかを検索するコマンドです。
find 検索場所 [オプション] 検索対象
カレントディレクトリにある hello から始まる名前のファイルを探す
find ./ -name hello.*
ファイルの拡張子が.json のファイルを探す
find ./*.json -type f
※ファイルタイプ
今日アクセスした、拡張子が.json のファイルを探す
find ./*.json -atime 0
0 が今日、1 が昨日、2 が一昨日…というように、数値が「n 日前」になります。
また、「-1」などマイナスをつけると「n 日以内」、「+2」など+をつけると「n 日前以前(2 日前より前)になります。
昨日更新した拡張子が.json のファイルを探す
find ./*.json -mtime 1
拡張子が.json で中身が空のファイルを探す
find ./*.json -empty
オプション |
説明 |
-name |
ファイル名(ディレクトリ名)を指定して検索。大文字と小文字を区別する |
-iname |
大文字・小文字を区別しない |
-type |
ファイルタイプを指定 |
-atime |
ファイルにアクセスした日 |
-mtime |
ファイルの更新日 |
-empty |
空のファイル・ディレクトリ |
chmod
chmod(change mode)は、ファイルの権限を変更できるコマンドです。
ファイル所有者、ファイル所有グループ、その他ユーザーごとに読み・書き・実行権限を指定できます。
実行権限の指定方法は、
- モードの変更をカンマ区切りで指定
- 3 桁で各ユーザーの権限を指定
の 2 種類あります。
1. モードの変更をカンマ区切りで指定
chmod 変更対象 変更方法 変更内容 対象ファイル
変更対象、変更方法、変更内容はそれぞれ以下の中から指定します。
【変更対象】
変更対象 |
意味 |
u |
所有ユーザー |
g |
所有グループ |
o |
その他のユーザー |
a |
全て |
【変更方法】
変更方法 |
意味 |
= |
その内容に設定 |
+ |
追加 |
- |
取り消し |
【変更内容】
変更内容 |
意味 |
r |
読み取り |
w |
書き込み |
x |
実行 |
例えば、「所有ユーザーに実行権限を付与」は次のようになります。
chmod u+x test.txt
複数指定ももちろん可能です。カンマ区切りで指定します。
chmod u+rw-x,go+r-wx test.txt
2. 3 桁で各ユーザーの権限を指定
権限を数値 3 桁で指定する場合、所有ユーザー、所有グループ、その他ユーザーの順で次の表の合計値を指定します。
chmod 755 test.txt
chmod 644 test.txt
chmod 400 test.txt
chown
chown (change owner)は、ファイルの所有者を変するコマンドです。
ユーザーとグループを変更するには、root ユーザーである必要があります。
chown [オプション] ユーザーorグループ 変更対象
test.txt もユーザー所有権を root に変更
chown root test.txt
test.txt のユーザー・グループ所有権を root に変更
chown root:root test.txt
ディレクトリを変更対象とする場合は、オプション-R
をつけます。
chown -R root test1/
ps
ps は、現在実行されているプロセス一覧を表示するコマンドです。プロセス ID、端末、CPU 時間、コマンド名などが表示されます。
ps [オプション]
プロセスとは、OS 上で実行中のプログラムのことです。プログラムは CPU やメモリのコンピューターリソースを消費して動いています。安定動作時(アイドリング状態)のプロセス数がどれくらいなのかを把握するのは管理上重要です。
実行中のプロセスをリスト形式で表示
ps aux
オプション |
意味 |
-A, -e |
全てのプロセスを選択 |
a |
端末を持つ全てのプロセスを表示 |
x |
端末を持たない全てのプロセスを表示 |
r |
実行中のプロセスのみを表示 |
-p |
プロセス ID を指定して表示 |
u |
見やすいフォーマットで表示 |
-l |
長いフォーマットで表示 |
e |
コマンド名の後に環境を表示 |
kill
kill は、実行中のプロセスを終了させるコマンドです。異常な動作をしていたり、PC に負荷をかけているプロセスを止める際に使用します。
kill [オプション] プロセスID
最後に
今まで何度か Linux コマンドを使っていましたが、改めて勉強すると知らない使い方や便利なオプションをたくさん知れて、非常に勉強になりました。
Linux は一度身につければずっと使える知識なので、今後も便利な使い方などを積極的に学んでいきたいです。
ご覧いただきありがとうございました!