2023/08/26

linuxの基本的なコマンドを復習する

はじめに

前回の記事でLinuxの簡単な操作について復習しました。

今回はよく使うコマンドについてオプション等を含めて再確認しながら、知らない部分をキャッチアップしていきます。

ls

ファイルやディレクトリを一覧表示する

ls [ディレクトリまたはファイル]

のような形で指定します。

  • ディレクトリを引数にした場合はそのディレクトリの中に含まれるファイルやディレクトリを表示
  • ファイルを引数にした場合はそのファイルのパスを表示
  • 引数は複数指定することもでき、指定されたすべての引数に対して処理を行う
  • lsコマンドを実行した結果、ファイルやディレクトリが1つもない場合は何も表示せずに終了する
  • -lオプションで詳細情報を表示する
  • -aオプションで隠しファイルも表示する
  • ls -alのような形式で実行することが多い

-Fオプションを付けると、ファイル名の後ろにファイルの種類を表す記号を追加して表示

種類記号
通常ファイルなし
ディレクトリ/
実行可能ファイル*
シンボリックリンク@

オプションについて

Linuxのオプションは2つ以上指定する場合は別々にスペース区切りで書くか、まとめて書くこともできます。

ls -a -Fls -aF は同じ挙動となります。

オプションは-aのようにハイフンを付けて指定しますが、--...のようにハイフン2文字で始まるオプションもあります。
例えばls --quote-nameというコマンドでは、ファイル名にダブルクォーテーションをつけて表示します。
この形式はロングオプションと呼ばれます。
ロングオプションは他のオプションと重複せずに一意に特定できる範囲まで省略することができます。
例えば、「quote」という文字列で始まるオプションは他にはないので、ls --quoteというコマンドを実行すればls --quote-nameと同じ挙動となります。

pwd

現在のディレクトリを表示する

cd

カレントディレクトリを変更する

cdコマンドを使用することでカレントディレクトリを移動することができます。
ただし、コマンドを実行した結果、「カレントディレクトリを移動しました」のようなメッセージは一切表示することはありません。
これは、Linuxコマンドの多くにみられる一貫した設計です。
「沈黙の原則」とも呼ばれるUNIX哲学の一つで、エラーのみを標準出力に出力し、その他の重要でない情報は出力しないというものです。

ここまででディレクトリの中でのファイルの確認や移動ができるようになりました。

mkdir

ディレクトリを作成する

mkdir [オプション] <作成するディレクトリ名>

オプションとしてよく使用するのが-pオプションです。

このオプションを使用することで再帰的に深いディレクトリを作成することができます。

mkdir -p dir1/dir2/dir3

dir1,dir2といったフォルダが存在しない場合、オプションなしではエラーとなりますが、-pオプションを付けることで一緒に作成してくれます

touch

ファイルを作成する

touch <新しいファイル名1> <新しいファイル名2>...

中身のない空のファイルが作成されます。

touchコマンドがどうしてtouchという単語なのか知らなかったんですが、本来はファイルのタイムスタンプを更新するためのコマンドということでした。

なお、touchコマンドを使用してのファイル作成では、既存のファイル名を指定しても、内容が上書きされたり削除されたりしないため、安全にファイルを作成することができます。

rm

ファイルやディレクトリを削除する

rm [オプション] <削除するファイル名1> <削除するファイル名2>...

-rオプションを付けることでディレクトリを削除することができます。
この際、削除対象ディレクトリの中のファイルやディレクトリもまとめて削除されてしまうため注意が必要です。

rm -r dir1

似たコマンドとして、rmdirコマンドがあります。こちらは空のディレクトリを削除します。
中にファイルがあるディレクトリを削除しようとした場合はエラーとなります。

rmdir <削除するディレクトリ>

-fオプションを付けることで削除の確認を行わずに削除することができます。指定したファイルが存在しない場合でも警告を出力しません。

rm -rf dir1

空のディレクトリを削除する場合に、rmdirというコマンドも使用することができます。

-iオプションを付けることでファイルを削除する際に確認することができます。

rm -i file1

cat

ファイルの内容を表示する

cat [オプション] <ファイル名>

-nオプションを付けることで行番号を表示することができます。

cat -n file1

less

ファイルの内容を表示する

catコマンドは単にファイルの内容をそのまま表示しますが、表示したいファイルの行数が多い場合は1画面に収まりきらなくなります。
このような長いファイルを表示する場合はlessコマンドを使用します。
lessコマンドはファイルの内容を1画面ずつ表示し、スペースキーを押すことで次の画面を表示します。
bキーで前の画面を表示することもできます。 qキーでlessコマンドを終了します。

less [オプション] <ファイル名>

lessコマンドで開いているファイルから文字列を検索することもできます。

ファイルを表示中に/を押すと検索モードに入り、検索したい文字列を入力します。

検索中の操作は以下の通りです。

コマンド操作内容
/<文字列>下方向に向かって検索する
?<文字列>上方向に向かって検索する
n次の検索結果に移動する
N前の検索結果に移動する

cp

ファイルやディレクトリをコピーする

cp [オプション] <コピー元ファイル名> <コピー先ファイル名>

コピー先にディレクトリを指定した場合にはコピー元のファイルをそのディレクトリ内に同一ファイル名でコピーします。
ディレクトリ内にファイルをコピーする場合には複数のファイルをまとめて指定することができます。

cp file1 file2 file3 dir1

上記のようなコマンドでdir1内にfile1,file2,file3がコピーされます。

-rオプションを付けることでディレクトリをコピーすることができます。

cpコマンドを使用する場合はコピー先のファイルが既に存在している場合には上書きされてしまいます。

事前にlsコマンドなどで確認しましょう。

また、cpコマンドには-iオプションを付けることで上書きの確認を行うことができます。

mv

ファイルやディレクトリを移動する

mv [オプション] <移動元ファイル名> <移動先ファイル名>

cpコマンドと似た使い方ができますが、cpコマンドと違い移動元のファイルは削除されます。

-iオプションを付けることで移動先に同名のファイルが存在する場合には上書きの確認を行うことができます。

ln

ファイルやディレクトリのリンクを作成する

ln [オプション] <リンク元ファイル名> <リンク先ファイル名>

リンクとは

Linuxのファイルシステムでは、ファイルに別名を付けることができます。

  • ハードリンク … 1つのファイルに複数の名前を付ける
  • シンボリックリンク … -sオプションを指定して作成。リンク先のパス名が書かれた小さな特殊ファイルを作成する

ハードリンクはディレクトリに対して作成できない、異なるファイルシステムにまたがって作成できないといった制限があります。 シンボリックリンクはこのような制限がなく、現在はシンボリックリンクが主に利用されています。

ハードリンクをrmコマンドで削除する場合、リンクのみが削除され、ファイルに設定されているすべてのハードリンクが削除された場合にファイルが削除されます。

シンボリックリンクをrmコマンドで削除する場合、リンク先のファイルは削除されず、リンクのみが削除されます。

シンボリックリンクが残っている状態でファイルを削除した場合はリンクが壊れた状態でリンクのみが残ります。

find

ファイルを検索する

find <検索対象ディレクト> <検索条> <アクショ>

<検索対象ディレクトリ>を起点として、<検索条件>を満たすファイルを検索し、<アクション>を実行します。

find . -name file1.txt -print

例として、このようなコマンドを実行すると、「.」を起点として「file1.txt」というファイルを検索してそのパスを表示します。

findコマンドではディレクトリツリーの中を再帰的に検索するため、ディレクトリを指定するとそのディレクトリ以下のすべてのファイルを検索します。

検索条件としてよく使われるものには以下のようなものがあります。

検索条件説明
-nameファイル名を指定してファイルを検索(大文字小文字を区別する)
-inameファイル名を指定してファイルを検索(大文字小文字を区別しない)
-typeファイルの種類で検索(fで通常ファイル、dでディレクトリ、lでリンク)

また、複数の検索条件を同時に指定したい場合は-aオプション(AND)を利用することで検索できます。

さいごに

ここまで、コマンドの使い方を復習しましたが、Linux自体にも使い方の説明が用意されています。

多くのLinuxコマンドでは--helpオプションを使用することでコマンド自身のヘルプメッセージを表示します。

また、manコマンドというコマンドでマニュアルを表示することもできます。

man <調べたいコマンド>

コマンド名がわからない場合は-kオプションを利用してキーワード検索ができます。

man -k <キーワー>

ここまで復習して、知っているコマンドも多かったですが、知らないコマンドやオプションもありました。

よく使うコマンドなだけにオプション一つ覚えると業務ですぐに使えそうな知識が多かったです。manコマンドや—helpオプションをあまり利用したことがなかったので、検索する前にまずは使用してみたいと思います。

参考

新しいLinuxの教科書

プリンシプル オブ プログラミング