【Linux】ファイル・ディレクトリ操作コマンド集
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
ファイル操作コマンド集
こんにちは、AIX技術者の和田です。
今回は、ファイルとディレクトリの操作で使用するコマンドを解説していきます。
今回解説するコマンドは作業で頻繁に使うコマンドなので、頑張って覚えていきましょう!
mkdirコマンド
mkdir [オプション] <作成するディレクトリ名>
このコマンドは、ディレクトリを作成するコマンドです。
まずは練習用のworkディレクトリを作ってみましょう。
ディレクトリが作成できたかlsコマンドで確認してみましょう。
ディレクトリ作成の際に、既に同名のファイルが存在する場合は同名のディレクトリを作ることができません。
理由としては、Linuxの内部では、ディレクトリはファイルの一種として扱われているからです。
次に何層もある深いディレクトリを作成してみましょう。
この際、指定したパスの途中のディレクトリが存在しない場合、mkdirコマンドはエラーになります。
深いディレクトリを一気に作成する時は、-pオプションを指定します。
これは存在しない親ディレクトリも含めてディレクトリを作成する際に使います。
touchコマンド
touch <新しいファイル名1> <新しいファイル名2>
このコマンドは、中身が何も書かれていない空のファイルを作成するコマンドです。
実際にファイルを作成し、作成したファイルをlsコマンドで確認してみましょう。
本来、touchコマンドは、ファイルのタイムスタンプ(日時)を更新するためのコマンドです。
ですが、対象のファイルが存在しない場合には新しいファイルを作成する動きをするため、
空ファイル作成に利用されます。
touchコマンドでのファイル作成は、間違って既存のファイル名をしても内容が上書きされたり、
削除されたりしないため安全です。
rmコマンド、rmdirコマンド
rm [オプション] <削除するファイル名1> <削除するファイル名2> ..
このコマンドは、ファイルを削除するコマンドです。
先程touchコマンドで作成したファイルを削除してみましょう。
複数ファイル削除
rmコマンドでは、複数のファイル名を指定して一度に削除することができます。
ディレクトリ削除
rmでディレクトリを削除しようとすると、以下のエラーが出ます。
rmでディレクトリを削除する際は-rオプションを指定します。
この場合、削除対象ディレクトリの中のファイルやディレクトリをまとめて削除するため注意してください。
-iオプションを使った削除前確認
WindowsやMacOSは、削除したファイルは一旦ゴミ箱に行き、ゴミ箱から元に戻すことができます。
ですが、Linuxのrmコマンドにはこのような機能はありません。rmコマンドを使うとファイルは完全に削除されます。
多くのLinuxのコマンドは命令をそのまま実行するので、システムを壊すコマンドであってもそのまま実行されます。
-iオプションを使うことにより、事前確認ができるようになります。
ここでyを入力し、Enterを押すとファイルが削除されます。
rmdir <ディレクトリ名>
このコマンドは空のディレクトリを削除するコマンドです。
実際にディレクトリを削除してみましょう。
中にファイルが存在しているディレクトリを削除しようとするとエラーが出ます。
隠しファイルが残っているディレクトリも削除できません。
先頭が.(ドット)で始まるファイルは隠しファイルとして扱われるため、lsコマンドに-aオプションをつけないと表示されません。
catコマンド
cat [オプション] <ファイル名>
このコマンドは、ファイルの内容を表示するコマンドです。
touchコマンドで作成したファイルの中身を見てみましょう。
touchコマンドで作成した直後なので、ファイルは空なので何も表示されません。
なので、中身があるファイルを表示してみましょう。
今回は、/etc/crontabを表示してみましょう。
ファイルを連結して表示
catコマンドでは、複数のファイルを一度に指定し連結して出力することができます。
この際、ファイルごとの区切りはなく、順番に出力されます。
行番号を表示
catコマンドで-nオプションを使用すると、行番号を付けて内容を表示します。
なにかのリストを表示する時に役立ちます。
ファイル指定なしの場合
catコマンドでファイルを指定しない場合、カーソルが止まりプロンプトが表示されなくなります。
文字を入力すると、そのまま表示されます。
このようにcatコマンドは引数にファイルを指定しないときは、キーボードからの入力を待つようになります。
この状態だと、catコマンドは終了できません。
Ctrl+dを押してキーボードからの入力終了を指示させます。
catコマンドだけではなく、Linuxのコマンドは入力ファイルをしてしないとキーボードからの入力を受け付けます。
cpコマンド
cp [オプション] <コピー元> ... <コピー先>
このコマンドは指定したファイルをコピーするコマンドです。
ファイルをコピーしてみましょう。
コピー先にディレクトリを指定した場合には、コピー元のファイルをそのディレクトリ内に同じファイル名でコピーします。
ディレクトリ内にコピーする際は、複数のファイルを指定することができます。
-iオプションで上書き確認
cpコマンドはコピー先のファイルが既に存在しても、確認せずにそのまま上書きします。
なのでコピーする前にlsコマンドで確認しなければなりません。
上書き確認をして欲しい場合は、rmコマンド同様に-iオプションを使用してください。
確認後にyを入力し,、Enterを押せば上書きができます。
ディレクトリのコピー
cpコマンドで、ディレクトリをコピーしようとすると以下のエラーが出ます。
ディレクトリをコピーする際は、-rオプションを指定する必要があります。
この場合、ディレクトリ3が存在していなければ、dir2をdir3という名前でコピーします。
一方、dir3というディレクトリが既にある場合はコピー先にディレクトリを指定されたとみなされ、dir2をdir3の中に名前を変えずにコピーします。
-rオプションでディレクトリをコピーすると、コピー元にあったファイルやディレクトリもすべて含めたままコピーされます。
mvコマンド
mv [オプション] <移動元> ... <移動先>
このコマンドは、ファイルを移動するコマンドです。
mvコマンドは先程のcpコマンドと使い方が似ています。
ファイル名変更
移動元、移動先の両方にファイル名を指定した場合、ファイル名の変更と同じことになります。
以下の例はfile1というファイルをfile2という名前にして移動します。
元のfile1というファイルは存在しなくなります。
移動元にファイル名、移動先にディレクトリ名を指定した場合は、移動先の中に移動元を移動します。
複数ファイルの移動
移動先がディレクトリの場合にはcpコマンドと同じように複数のファイルを一度に移動させることができます。
-iオプションで上書き前確認
移動元からファイルは存在しなくなる点に注意してください。
移動先のファイルが既に存在する場合、確認なしに上書きされてしまいます。
-iオプションを付けつと、上書き前に確認ができます
移動元にディレクトリを指定
ディレクトリ移動させる場合には、cpコマンドと違って-rオプションを指定する必要はありません。
移動元としてディレクトリを指定するだけで、そのディレクトリの下にあるファイルをまとめて移動することができます。
lnコマンド
ln [オプション] <リンク元ファイル名> <リンク名>
このコマンドは、リンクを張るコマンドです。
その前にリンクについて解説します。
リンクとは
Linuxのいファイルシステムではファイルに別名をつけることがデキます。
この機能をリンクと呼び、別名をつけることを「リンクを張る」と表現します。
リンクには、「ハードリンク」と「シンボリックリンク」んお2種類があります。
現在はシンボリックリンクが使われることが多く、ハードリンクは限定的な場面でしか使われません。
シンボリックリンクは、WindowsのショートカットやMacOS Xのエイリアスに似た機能を提供します。
ハードリンクとは
以下では/etc/crontabをコピーしたfile1に対して、file2という名前でハードリンクを作成します。
これにより別のコマンドでfile2を指定すると、元のfile1にアクセスできるようになります。
上のcatコマンドではfile2を指定しているが、file1の内容が表示されます。file1を指定してもfile1の内容が表示されます。
ハードリンクとは、1つのファイルの実体に複数の名前を付けることです。
ハードリンクを作成したファイルを削除すると、指定したファイル名だけ取り除かれ、ファイルの実体は残ったままです。
ハードリンクを持つファイルの実体は、すべてのハードリンクがなくなった時に削除されます。
シンボリックリンクとは
ハードリンクは、ディレクトリに対して作成できなかったり、異なるディレクトリ間をまたぐことができない制限があります。
シンボリックリンクには、そのような制限は受けません。
lnコマンドに-sオプションをつけるとシンボリックリンクを作成できます。
先程と同じように/etc/crontabを使ってシンボリックリンクを作成しましょう。
その後、lsで確認してみましょう。どのファイルを指しているかが矢印で表示されます。
コマンドでファイル名の代わりにシンボリックリンクを指定するとそのリンク先のファイルにアクセスできます。
シンボリックリンクとは、リンク先のパス名が書かれた小さな特殊ファイルです。
ハードリンクとは違い、リンク先がファイルの実体であり本物のファイルです。
シンボリックリンクを削除する場合は、rmコマンドを使用します。リンクファイルを削除しても元のファイルには影響はありません。
シンボリックリンクを残したまま、リンク先の実体ファイルを削除することもできます。
この場合は、シンボリックリンクはリンク先がなくなり、リンクが壊れた状態になります。
findコマンド
find <検索開始ディレクトリ> <検索条件> <アクション>
このコマンドはファイルを探すコマンドです。
findコマンドは、引数で指定した検索開始ディレクトリを起点として、検索条件を満たすファイルを検索し、
アクションを実行します。
検索条件に何も指定しなかった場合にはすべてのファイルとディレクトリが対象となります。
以下の例ですと、.(カレントディレクトリ)を起点として、file1.txtファイルを探してそのパスを表示します。
アクションには、-printを指定します。これは、パス名を表示するアクションでfindコマンドではよく使われる基本的なアクションです。
アクションが指定されていない時は、-printが指定されたとみなされるため。省略しても大丈夫です。
findコマンドは、指定したディレクトリの直下のファイルだけでなく、ディレクトリツリーを順に下りながら検索条件に一致するファイルを全て表示します。
ファイル名で探す
findコマンドでファイル名を指定してファイルを探す場合は、検索条件に-name、-inameを指定します。
-nameはファイル名の大文字小文字を区別しますが、-inameは区別しません。区別以外は同じ動きをします。
ファイル名の指定には、ワイルドカードとして"、?を利用できます。*は任意の文字列、?は任意の1文字に一致します。
-nameで*や?を使う場合は、"(シングルクォート)を必ず付けてください。この理由は、*などの記号がbashのパス名展開と解釈されないようにするためです。
以下はクォートしなかったコマンドの例です。
これを防ぐために*、?を'(シングルクォート)、"(ダブルクォート)で囲みます。
以下が'(シングルクォート)で囲んでコマンドを実行した結果です。
'や"で囲んだ内部の文字列には、bashのパス名展開が行われないため、.txtという文字列をそのままfindコマンドに渡すことができます。
findコマンドに限らず、*などのシェルが解釈する文字をコマンドに渡したい時は、どこまでシェルが展開してどのように文字列でコマンドが実行されるかということを意識する必要があります。
ファイルの種類で探す
findコマンドでファイルの種別を指定して探す場合は、検索条件に-typeを指定します。
指定できるファイルタイプは多くありますが、以下の3種類を覚えとけば大丈夫です。
-type f 通常ファイル
-type d ディレクトリ
-type l シンボリックリンク
以下の例ですと、-type dを指定しているのでディレクトリだけが表示されます。
複数の検索条件の指定
findコマンドでファイルを探す時、検索条件を-aで区切って並べることで複数の検索条件を同時に指定するAND検索できます。
以下の例は、通常ファイルでファイル名が.txtで終わるファイルのみが表示されます。
-aは省略可能です。検索条件を並べて書いてもAND検索になります。
まとめ
今回の記事では、ファイルとディレクトリの作成から削除、コピー、検索等を解説いたしました。
この記事で解説したコマンドの基本的な使い方を覚えれば、作業や学習がスムーズになります。
作業で使う機会がどのコマンドも多いので頑張って覚えましょう!
【著者】
AIXからSEとしてキャリアスタート 同じOSというジャンルでありながら、現在Linuxに苦戦中(笑) 初心者やOS経験者でもつまずかないようにこれからもためになる情報を発信していきます!!
正社員/フリーランスの方でこのようなお悩みありませんか?
- 自分に合う案件を定期的に紹介してもらいたい
- 週2、リモートワークなど自由な働き方をしてみたい
- 面倒な案件探し・契約周りは任せて仕事に集中したい
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート