これからよく使う基本的なLinuxコマンドについてまとめていこうと思います。
必須のコマンドを< >と表記して、任意のコマンドは[ ]と表記していきます。
それでは全18種類のLinuxコマンドを見ていきましょう。
1. cdコマンドについて
cdコマンドとは、change directoryの略で、ディレクトリを移動するコマンドです。 cdコマンドのみでも使えるのですが、 [オプション] [ディレクトリ]を付け加えることで一度の実行で目的の場所に移動することができます。cd [オプション] [ディレクトリ]
cd /home/dx
重要
ここでディレクトリとはどういうものなのか説明していきます。
ディレクトリにはそれぞれ名前があり、特別な指定方法があります。
そのディレクトリを4つ紹介していきます。
1つ目はカレントディレクトリです 現在自分がいるディレクトリことを指します。指定方法は「.」です。
2つ目は親ディレクトリです。1つ上の階層のディレクトリのことを指します。指定方法は 「..」です。
3つ目は、ホームディレクトリです。「/home/ユーザ名」ディレクトリのことを指します。ターミナルを立ち上げた時の最初にいる位置です。指定方法は「~」です。cdコマンドのみを使用してもここに移動します。
4つ目は、ルートディレクトリです。「/」ディレクトリのこと(一番上の階層)を指します。指定方法は「/」です。
2. pwdコマンドについて
pwdコマンドは、print name of working directoryの略で、カレントディレクトリを表示するコマンドです。今自分がどこで作業しているのか把握するために使います。pwd [オプション]
pwd
3. lsコマンドについて
lsコマンドとは、listの略したコマンドでファイルやディレクトリの一覧を表示するコマンドです。lsのみを打つとカレントディレクトリのファイルとディレクトリを表示します。ファイル名やディレクトリ名を加えるとその情報だけを取得できます。複数同時にディレクトリの指定も可能です。 次にlsでよく使う3つのオプションについて説明します。1つ目は、ls -l でこのコマンドを使うことで詳細情報を表示します。ファイルタイプ、ファイルモード、リンク数、所有者、所属グループ、サイズ、タイムスタンプ、ファイル・ディレクトリ名を表示します。
2つ目は、ls -a でこのコマンドを使うことで隠しファイルを含めたすべてのファイルを表示することができます。
隠しファイルとは 「.ファイル名」と表示されている先頭にコンマがついているファイルのことを言います。
3つ目は ls -F でこのコマンドを使うことでファイル種別を表示します。「/」がディレクトリ、「@」がシンボリックファイル、「*」実行ファイル、記号なしが通常ファイルを表しています。
ls [オプション] [ディレクトリ・ファイル名]
ls /home
重要
ここで複数ディレクトリの指定方法やオプションについて詳しく見ていきます。
他のコマンドでも使えるので使い方や意味を理解しましょう。
今回はlsコマンドを例に挙げて説明します。
パス名展開を使うことで複数のファイルを一度に指定できます。例えば、*を使えば、任意の文字列が指定してファイルの一覧表示することができます。 htmlのファイルの一覧を見たい時は、ls *.html と入力するとhtmlファイルの一覧を確認することができます。
また、?を使えば、一意の1文字を指定して対象のファイルを表示するをとができます。
zから始まる4文字のファイルを見たい時は、ls /bin/z??? と入力するとzから始まるファイルを確認することができます。
オプションとは、-に何かの記号を続けるとコマンドの動作を変えることができます。
その書き方を5つ紹介していきます
1つ目は、ls -a のようにコマンドの後ろにスペース区切りで指定します。
2つ目はオプションを2つ以上指定することができます。書き方は、ls -a -l と ls -al というように一つずつ指定する方法と複数指定する方法の二つがありますが、どちらも同じ意味です。
3つ目は、ls -al /home のようにオプションと引数を同時に指定することができます。
4つ目は、ls -w 10 というようにオプションに対して引数を取ることができます。
5つ目は、ls --version というようにロングオプションがあります。オプションに長い名前を指定する時に使います。
4.mkdirコマンドについて
mkdirコマンドとはmake directroyを略したコマンドで、ディレクトリを新規作成するときに使います。オプションで -pを使うことで深いディレクトリを一度に作成できます。例えば、mkdir -p test/2025/01 と入力するとtestディレクトリを作って、次に2025ディレクトリを作って、最後に01ディレクトリを作ることができます。一度のコマンドで3つのディレクトリを同時に作成することができます。-pを使わない場合は3回に分けて、mkdirコマンドを使う必要があります。
mkdir [オプション] <作成するディレクトリ名>
mkdir -p test/2025/01
5.rmdirコマンドについて
rmdirコマンドとは、remove directoryの略で空のディレクトリを削除することができます。ディレクトリー中にファイルが残っていると削除できません。、ディレクトリの中にファイルが残っていることに気づかずに消してしまうことを防ぐことができます。rmdir <ディレクトリ名>
rmdir home
6.catコマンドについて
catコマンドとは、concatenateの略でファイルの中身を表示するコマンドです。 オプションで、-nと書くとファイルの行番号を確認することができます。 また、複数のファイルをまとめて表示することができます。例えば、cat /home/go /home/do と書くことで /home/goファイルの内容と /home/doファイルの内容が順に表示されます。cat [オプション] <ファイル名>
cat -n /home/go
7.lessコマンドについて
コマンド | 内容 |
---|---|
スペース、f | 一画面下にスクロール |
b | 一画面上にスクロール |
j | 一行下にスクロール |
k | 一行上にスクロール |
q | lessコマンド終了 |
/ | 下方向に向かって検索 |
? | 上方向に向かって検索 |
n | 次の結果に移動 |
N | 前の結果に移動 |
lessコマンドとは、less -opposite of more の略でファイルの中身をスクロール表示することができます。コマンドの中身を確認、検索や終了することもできます。上記のコマンドを使うことで簡単に確認や検索ができます。
less [オプション] <ファイル名>
less /home/go
8.tailコマンドについて
tail コマンドはデータの終わり部分を標準出力します。オプションを指定しない場合は、末尾から 10 行を標準出力します。tail -5 fail とオプションを加えることで末尾から5行を表示することができます。-行数と書くことで末尾からの指定した行数分の内容を表示することができます。tail [オプション] [ファイル]
tail -5 fail
9.touchコマンドについて
touchコマンドは、touchの略で空のファイルを作成することができます。 ファイル名が存在していない時は空のファイルを作成して、同じファイル名が存在する時はタイムスタンプを更新します。間違って存在しているファイルが上書きされることを防ぐことができます。touch <ファイル名1> <ファイル名2>
touch program.md
10.rmコマンドについて
rmコマンドとは、removeの略でファイル、ディレクトリを削除することができます。 rmコマンドではよく使うオプションが3つあります。 1つ目は、rm -r <ディレクトリ名> でディレクトリとその中身のファイルを合わせて削除することができます。 2つ目は、rm -f <ファイル名> でファイルを削除する際に警告文を表示しません。 3つ目は、rm -i <ファイル名> でファイル削除前に確認します。 ディレクトリーを消す時には -rをつけることを覚えておきましょう。rm[オプション] <削除するファイル名1>
rm program.md
11.mvコマンドについて
mvコマンドとは、moveの略でファイル移動、ファイル名の変更をするコマンドです。 移動か変更は自動でシステムが判断します。mv file file1 のように移動元がファイルの場合はファイル名が変更されます。mv div/ home/ のように移動元と移動先がディレクトリだった場合はディレクトリ名を変更することができます。一方で、mv file div/ のように移動元がディレクトリ名だとファイルが移動します。 また、mv -i を使うと上書きする前に確認してくれます。mv [オプション] <移動元(変更前の名前)> <移動先(変更後の名前)>
mv file file1
mv file div/
12.cpコマンドについて
cpコマンドとは、copyの略でファイル・ディレクトリをコピーするコマンドです。 cp file new_file と書くとfileの中身を new_file にコピーできます。 cp file dir と書くとfileをdirにコピーできます。cpコマンドでよく使うオプションが2つあります。 1つ目は、cp -iコマンドで上書きする前に確認できます。例として、cp -i file new_file と書く fail の中身を new_file に上書きする前確認することができます。 2つ目は、cp -rコマンドを使うとディレクトリをコピーすることができます。例として、cp -r dir new_dir は dir の中身を new_dir にコピーすることができます。cp[オプション] <コピー元> <コピー先>
cp -I home new_home
13.lnコマンドについて
lnコマンドとは、linkを略したコマンドで、長いパス名を省略したい時や複数バージョンを共存させて最新を区別したい時に使います。例えば、ln file1 file2と書くとfile1にfile2の名前をつけたことになります。何もつけなければハードリンクとして処理されます。 一方で、シンボリックリンクを貼るにはln -sコマンドを使います。例えば、ln -s file1 file3 とすることで file1 に file3 というシンボリックリンクを作ることができます。ln [オプション] <リンク元ファイル> <リンク名>
ln file1 file2
補足
Linuxでは別名をつけることができます。それをリンクを貼るといいます。
Linuxにはリンクが2つあります。
1つ目はハードリンクで元のファイルを削除しても消えず、一つのファイルに複数の名前をつけることができるリンクのことです。すべてのハードリンクが消えた時に削除されます。
2つ目はシンボリックリンクで実態を削除したり、ファイルを移動したりすると参照できなくなります。リンク先のパス名が書かれた特殊なファイルでリンク先がファイルの実態になります。
そのリンクを貼るコマンドがlinkを略したlnコマンドになります
シンボリックリンクの方がハードリンクに比べて制限が少なく使いやすいのでシンボリックリンクがよく使われることが多いです。
14.findコマンドについて
findコマンドは、findの略で検索開始ディレクトリを起点に検索条件で指定されたファイルを探すことができるコマンドです。例えば、find .-name program.md -print と書くとカレントディレクトリを起点にして program.md が見つかったらそのパスを表示してという意味になります。-nameを使ってファイル名を指定して、-print を使ってパス名を表示することができます。-name は大文字と小文字を区別しますが、-iname は大文字と小文字を区別しません。また、ファイル名を指定するときに * や ? のようなワイルドカードも使えるのですが、' ' や " " で囲む必要があります。
find <検索開始ディレクトリ> <検索条件> <アクション>
find .-name program.md -print
15.chmodコマンドについて
chmodの使い方1
コマンド | 意味 |
---|---|
u | 所有者の権限 |
g | グループの権限 |
o | その他のユーザーの権限 |
a | 全ユーザの権限 |
+ | 権限の追加 |
ー | 権限の削除 |
= | 記述した権限にする |
r | 読み取り |
w | 書き込み |
x | 実行 |
chmodコマンドとは、change modeの略でファイルやディレクトリのパーミッションを設定するコマンドです。chmodコマンドはchmod[誰に対して][どうするか][何を]の順で書きます。例えば、グループがr-w-x権限を持っていて、wの権限を削除したいという時には、chmod g-w fail と書くことで削除できます。これは相対指定の書き方です。特定のユーザーの権限だけ変更したい時は相対指定を使います。
chmod [ugoa][+-=][rwx] <ファイル名>
chmod g-w fail
chmodの使い方2
- r(読み取り)→ 4
- w(書き込み)→ 2
- x(実行) → 1
chmod <8進数の数値> <ファイル名>
chmod 754 file
16.chownコマンドについて
chownコマンドとは、ファイルの所有者を変更するコマンドです。指定方法によって所有グループも変更することができます。ユーザとグループを変更するにはroot権限が必要です。sudoコマンドつけることで、root権限でコマンドを実行することができます。sudo chown user :group fail と書くと fail の所有者と所有グループを変更することができます。 また、オプションで -Rをつけると引数で指定したファイルやディレクトリの所有者を再度元に戻すことができます。chown [オプション] [ユーザー][:[グループ]] <ファイル>
chown taro fail
17.psコマンドについて
psコマンドとは、process statusの略で実行中のプロセスを表示するコマンドです。 psコマンドの出力結果のPIDはプロセスIDで、CMDは実行中のコマンドのことを指します。 複数行表示される場合は1行で1つのプロセスになっています。 よく使うオプションについて説明します。 ps auxと書くとすべてのユーザーの全プロセスを、詳細情報を合わせて表示します。それぞれ詳細を見ると、xはpsコマンドを実行したユーザすべてのプロセスを表示して、aはpsコマンドを実行していないすべてのユーザのプロセスを表示して、uは詳細情報を合わせて表示するという意味になります。ps [オプション]
ps aux
補足
ジョブはまとめて実行される集まりのことで、シェルごとに管理されます。
具体的には、ジョブとプロセスの違いは、プロセスはOS全体で統一して管理されるシステムが自動で実行しているプログラムや他のユーザーが実行しているコマンドを一括して管理して、ジョブはそのジョブを実行するシェルで管理されます。
例えば、ps aux | grep bash | less だったらプロセスは3つ、ジョブは1つ生成されることになります。
|コマンドで区切って一度に複数のコマンドを実行することができます。
18.killコマンドについて
killコマンドとは、kill processの略でジョブやプロセスを終了させるコマンドです。
バックグラウンドジョブはkillコマンドで終了して、フォアグラウンドのジョブは、ctrl+cで終了します。killコマンドはジョブやプロセスを終了するために、シグナルを送信します。
kill -<シグナル名> <プロセスID>という書き方もできます。kill 4328 と kill -TEAM 4328は同じ意味のコマンドです。デフォルトではTERMという終了を指示するシグナルを送信しているため、省略した形と省略していない形の2パターンで書くことができます。
また、まれにTERMを受け付けない時があります。その時に使うのがSIGKILLという強制終了のシグナルです。kill -SIGKILL 4328とkill -9 4328は同じ意味になります。シグナルは文字列とそれに対応する数値も割り当てられていて、数値で指定することができます。SIGKILLは、9の数値で表現することができるので同じ意味になります。
kill [オプション] %<ジョブID>
kill [オプション] <プロセスID>
kill %2
kill 4328
補足
フォアグラウンドとはシェルの画面内で実行することです。ユーザーの入力を受け付けることを指します。
パックグラウンドとはシェルの画面外でコマンドを実行することです。ユーザが対話的に操作できないことを指します。最初からバックグラウンドで処理するときはコマンドの後ろに&をつけます。
停止とは、コマンドの状態を一時停止している状態のことを指します。
この3つを行き来することで必要に応じてバックグラウンドやフォアグラウンド利用して一つのターミナルで複数のコマンドを同時に実行することができます。