Linux の基礎知識

【Linuxの基礎知識】ファイル操作について!

2020年4月8日

Linuxサーバーを扱う場合、GUI操作を期待する現場はありません。サーバーの構築や設定、ファイルの取り扱いには、100%CUI操作が原則となります。

この記事では、コマンドでファイルを操作するための知識や方法等を解説します。

ファイルの閲覧「cat」

catコマンドは、本来ファイルを連結するためのコマンドですが、ファイルの内容を表示する際にもよく使われます。catコマンドで表示されたファイルは、上書きすることが出来ません。不必要な変更を避けるためにファイルの参照はcatコマンドで行うのが良いでしょう。

コマンドの書式

cat[オプション] ファイル1 ファイル2…

コマンドの主なオプション

  • -n(--number):行番号を付け加える
  • -b(--number-nonblank):行番号を付け加える。空白行には番号を付けない
  • -A(--show-all):全ての非表示文字を表示する

下記は、一度「echo」コマンドにより"abcdefg"文字列を「test-file1」へ書き込み「cat」コマンドでコンソールへ表示します。

$ cat test-file

ファイルの中身が表示されています。

下記は「cat」の本来の使いかたである「ファイル連結」です。「test-file2」を新たに作成して、「test-file1」と「test-file2」中身を連結します。

$ cat test-file1 test-file2

「test-file1」と「test-file2」の内容が、1つに連結(改行が入る為、追記に近い)されて表示されています。

ファイルの新規作成「touch」

touchコマンドはファイルの修整日付を現在の時刻に設定し直すものですが、touchコマンドに指定したファイルが存在しない場合には、サイズが0パイトのファイルが新規に作成されます。この特性を使い「touch」コマンドで手っ取り早く新規にファイルを作成することが出来ます。

コマンドの書式

touch[オプション]ファイル1 ファイル2……

コマンドの主なオプション

  • -d(--date):文字列で指定した日時に変更する
  • -r(--reference):指定したファイルのタイムスタンプと同じ日時にする
  • -m:最終更新日時のみ変更する

下記はtouchの実行例です。「test-file」が作成されています。

$ touch test-file
「$  : > test_file 」👈 と同じ意味です。

ファイルのコピー「cp」

「cp」コマンドは、コピーを行うコマンドです。GUI操作でのコピー&ペーストを行う場合には、まずコピー元のファイルを右クリックでコピー、あるいは「Ctrl + C」を押下後、再度右クリックでペースト、もしくは「Ctrl+V」を押下します。

CUI操作では「cp」コマンドを使用して、下記の様に記述します。

コマンドの書式

cp[オプション]コピー元][コピー先]

「$ cp ファイル1 ファイル2... ディレクトリ」の様に、複数ファイルを一括でコピーすることも可能です。

コマンドの主なオプション

  • -r(--recursive):再帰的にサブディレクトリも含めてコピーする
  • -t(--target-directory):「-t」で指定したディレクトリにコピーする

下記は「cp」の実行例です。「test-file」を「test-file.old」としてコピーします。

$ cp test-file test-file.old

「test-file」が「test-file.old」としてコピーされています。

同じファイル名でコピー&ペーストするケースは考えにくいので、ペーストする際には後に「_copy」や「_2」、「_old」など、わかりやすい名前をつけると便利でしょう。

ファイル名の変更「mv」

「mv」は、ファイルやディレクトリを移動したり、リネームしたりするコマンドです。異動先にファイル名を指定した場合は、「ファイルからファイルへの移動=リネーム」となります。既存のファイルを指定すると「上書き」となります。

コマンドの書式

mv[オプション][移動元][移動先]

ファイル1で指定されたファイルの名前を、ファイル2で指定された名前に変更します。

コマンドの主なオプション

  • -f(--force):移動先に同名ファイルがあっても確認せずに上書きする
  • -i(--interactive):上書き前に確認する
  • -n(--no-clobber):既存のファイルを上書きしない
  • -u(--update):移動先ファイルのタイムスタンプが同じ or 新しい場合は移動しない
  • -t(--target-directory):「-t」で指定したディレクトリに移動する
  • -v(--verbose):経過を表示する

下記は「mv」の実行例です。

$ mv test-file test-file.old

「cp」コマンドとは異なり、変更元のファイル「test-file」は削除されます。正しくは、変更名「test-file.old」で移動した。つまり変更名で上書きされます。

ファイルの削除「rm」

rmコマンドは「remove」の略で、削除コマンドです。ファイルやディレクトリを削除します。ファイルやディレクトリは複数指定できます。

コマンドの書式

rm[オプション]ファイル1)
rm -r ディレクトリ2)

1)指定されたファイルを削除します。
2)指定されたディレクトリを保存されているファイルこと削除します。

コマンドの主なオプション

  • -f(--force):存在しないファイルを無視する
  • -i(--interactive):削除前に確認する
  • -r(--recursive):ディレクトリを再帰的に削除する

下記は「rm」の実行例です。

$ rm -i test-file.old

思わぬトラブルを避けるために「-i」オプションを付けた状態で削除を行いましょう。

「test-file.old」が削除されています。
rm ./*」と指定すると、カレントディレクトリのファイルが全て削除されます。

万が一「rm /*」を実行してしまうと、「/(root)」配下すべてが対象になってしまうので注意してください!「.(ドット)」の有無で、まったく異なるパスとなります。

ファイルの検索「find」

「find」は、場所を指定してファイルを検索するコマンドです。ファイル名だけではなく、ファイルの種類や更新日時など、細かい条件を指定して検索することができます。

コマンドの書式

find[オプション][検索パス] [検索式]

findはファイルを検索するコマンドですが、「検索式」を使うことで複数の条件を組み合わせた検索が出来ます。

コマンドの主なオプション

  • -P:シンボリックリンクをたどらない
  • -L:全てのシンボリックリンクをたどる
  • -H:コマンドラインで指定したシンボリックリンクをたどる

検索式

  • -group:指定したグループ名のファイルを検索
  • -name:指定した文字列のファイル名を検索
  • -type:指定した「ファイル・タイプ」を検索
     「d」:ディレクトリ、「f」:通常ファイル、「l」:シンボリックリンク
  • -user:指定したユーザー名のファイルを検索

実行ユーザー「root」のホームディレクトリ内の「-type f(ファイル)」を表示します。

$ find ./ -type f

ホームディレクトリ下でファイルだけを検索する場合は、「find ~/ -type f」と指定します。「~/」は実行ユーザーのカレントディレクトリを表します。
「find」コマンドでの検索では「.(ドット)」から始まる隠しファイルも検索の対象となります。

まとめ

近年ではハードウェアも進化しており、サーバーでもGUI操作でオペレーションを行うことが可能な環境も多いものです。

しかしながら、コマンド操作は「そうしなければならないからする」のではなく、「コマンド操作のほうが早い」というケースがほとんどです。

コマンド操作によってファイルの閲覧やコピーペースト、ディレクトリなどの移動ができれば、まずはCUIでのファイル操作の第一歩といえるでしょう。

よく読まれている記事

1

目次1 Shellとは?1.1 代表的なシェルの種類2 シェルスクリプトの違いとは? Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロ ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Linux の基礎知識

Copyright© Beエンジニア , 2020 All Rights Reserved.