Linuxの基本コマンド – ファイル操作

Linuxを使うに当たって(特にサーバ運営する上では)コマンドを避けて通ることは出来ません。

本ブログではコマンドを用いる際にはコマンドとオプションについてはなるべく解説を入れるようにしています。

しかしファイルの移動やコピー、名前変更の全てに解説を入れてしまうと冗長になってしまいます。

そのため、ここでファイル操作について簡単に解説したいと思います。

この記事で行うこと

  1. Linuxのファイル構造について
    1. Windowsと比べたLinuxのファイル構造
    2. 相対パスと絶対パス
  2. ファイル操作コマンドの解説
    1. pwd
    2. ls
    3. cd
    4. mv
    5. cp
    6. rm

1. Linuxのファイル構造について

1-1. Windowsと比べたLinuxのファイル構造

Linuxのファイル構造は全て「/」(ルートと呼びます)から始まります。

とても乱暴にWindowsで例えて言うとCドライブしかないようなものです。(実際には全く違いますが、それはまた別の機会に)

さて、Windowsのユーザフォルダの在処を見ると(私のWindows10の場合です)

C:¥Users¥(ユーザ名)

となっています。(こちらで半角の「¥」を入力すると環境の問題から「\」と表示されてしまうので、全角で表記しています)

C:を起点にして、Usersフォルダの中にある(ユーザ名)フォルダにドキュメントやピクチャなどのユーザ固有のデータが入っている訳ですね。

ではLinuxはどうなるかと言うと(私のCentOS7の場合です)

/home/(ユーザ名)

となっています。

ルートを起点にして、homeディレクトリ※の中にある(ユーザ名)ディレクトリにユーザ固有のデータが入っている訳です。

※Linuxではフォルダのことをディレクトリと言います。厳密には違うのですがそう覚えて困ることはないです

1-2. 相対パスと絶対パス

これはWindowsにも存在する概念なのですが、おそらくあまり使うことは無いと思います。

例えば

/home/hoge/fizz/bazz/fizzbazz/centos/7/blog

とまあ、こんな感じの入り組んだディレクトリがあるとします。

これが絶対パスです。

そして、仮に今

/home/hoge/fizz/bazz/fizzbazz/centos

に居るとします。

ここから、先程の

/home/hoge/fizz/bazz/fizzbazz/centos/7/blog

に移りたい時に、「/home/hoge/fizz/bazz/fizzbazz/centos/7/blog」へ移動といちいち打ち込むのは面倒です。

なので「今の場所から7/blog」へ移動と打ち込むだけで済むようになっています。

ちなみに今の場所を表すのは「./」です。

なので先程のは「./7/blog」と表せます。

なお「../」は一階層上を表します。

この場合は「/home/hoge/fizz/bazz/fizzbazz」になります。

 

/home/hoge/fizz/bazz/fizzbazz/centos/7/blog」というのが絶対パス

./7/blog」というのが相対パスです。

絶対パスか相対パスかの区別はルート(/)から始まるか否かでつけることが出来ます。

どちらもファイル操作を行う上で利用しますので覚えておいてください。

3. ファイル操作コマンドの解説

ここで挙げる5種類のコマンドはLinuxを使う上で頻繁に使いますので覚えておいた方が良いです。

2-1. pwd

これはいま自分がいるディレクトリを表示するコマンドです。

print working directoryの略と言われます。

使い方は以下の通りです。

pwd [オプション]

一応オプションとは書きましたが実際にはオプションを使うことはないと言って良いです。

ブログなどで紹介される手順で見かけることは無いと思いますが、自分が作業しているディレクトリが合っているか心配になったときに使うと便利です。

2-2. ls

これはファイルの一覧を表示するコマンドです。

listの略と言われます。

使い方は以下の通りです。

ls [オプション] [表示したいディレクトリ]

見たいディレクトリを省略すると、自分が今居るディレクトリのファイルの一覧が表示されます。

また、よく使われるオプションは以下の通りです。

-l : 詳しい情報を表示(ファイルの所有者や権限など)

-a : 隠しファイルも含めて表示

ファイルが存在しているか、ファイルの権限が正しいかを確認する際によく使います。

2-3. cd

これはいま自分が居るディレクトリを移動するコマンドです。

使い方は以下の通りです。

cd [移動したいディレクトリ] [オプション]

 

こちらもオプションが使われることはあまりないです。

本ブログでは絶対パスを使うことが多いのでこのコマンドを使うことはあまり無いです。

ただ、ファイルの圧縮解凍など自分が居るディレクトリが関わるコマンドがあるのでその際にはこのコマンドで目的のディレクトリに移動してから作業します。

2-4. mv

ファイルを移動するコマンドです。

使い方は以下の通りです。

mv [オプション] [移動したいファイル] [移動先の場所(ファイル)]

このコマンドも頻繁にはオプションを使いません。

移動したいファイルにディレクトリを書き込んだ場合、ディレクトリを丸ごと移動できます。

また、移動先をファイル名で指定した場合はそのファイル名に変更できます。

例えば、

mv /home/yuto/file1 /home/file2

とした場合は、yutoディレクトリ内のfile1が消えて同じ内容のfile2がhomeディレクトリ内にできます。

このことを忘れると「ファイル名を変えるコマンドって無かったっけ?」と探す羽目になったりするので注意してください。

※renameというファイルの名前を変えるのにうってつけそうなコマンドがありますが、これは大量のファイルの名前を一括で変更する用途のコマンドです。これの存在で余計に混乱したりします。

2-5. cp

ファイルをコピーするコマンドです。

使い方は以下の通りです。

cp [オプション] [コピーしたいファイル] [コピー先の場所(ファイル)]

よく使うオプションとしては「-r」が挙げられます。

mvと違いcpでは単にディレクトリを指定してもディレクトリごとコピーはされません。

この際にオプションに「-r」を指定するとディレクトリごとコピーしてくれます。

また、コピーのファイル名を直接指定することで同じ内容の別のファイルを作ることが出来ます。

例えば、

cp /home/yuto/file1 /home/yuto/file1.backup

とした場合は、yutoディレクトリ内のfile1と同じ内容のfile1.backupというファイルが新たに出来ます。

ソフトウェアをインストールしてから、設定ファイルをいじる前には必ずこうしてバックアップを取るようにしてください。

何か問題があったら逆にfile1.backupをfile1にコピーして元に戻すことが出来るようになります。

2-6. rm

ファイルを削除するコマンドです。

使い方は以下の通りです。

rm [オプション] [削除したいファイル]

よく使うオプションとしては「-r」と「-f」が挙げられます。

rmでは単にディレクトリを選択してもディレクトリを削除できません。

先にディレクトリの中身をすべて消してから「rmdir」という別のコマンドでディレクトリを消します。

しかし、オプションに「-r」を指定するとディレクトリとその中身を一気に消すことができます。

また、rmでは基本的に削除前にファイル毎に削除するか確認されます。しかし、「-f」を指定するとこの確認がなくなります。これは大量のファイルが入ったディレクトリを消したいときに便利です。

しかし、これらのコマンドを使うときには非常に注意する必要があります。

Linuxにはゴミ箱はありません。削除したらそれっきりです。rmを使う際には慎重に行いましょう。

最悪重要なファイルをすべて失うことになりかねませんよ。

まとめ

Linuxのファイル構造と頻出のファイル操作コマンドについて簡単な説明をしました。

しかし、この記事はわかりやすさ優先でかなり内容を端折っていますので、興味があればそれぞれ調べてみてもらえればと思います。


2020/5/6 rmコマンドを追記

CentOS7のパッケージの更新を行う+自動更新の設定

インストールした直後のOSが最新であるとは限りません。というより最新でないことの方が多いです。

Windowsもインストール直後は何度も更新のための再起動と言って強制的に再起動されていたかと思います。

CentOS7ではWindowsのように勝手に更新をしだしたりしないため、自分で更新や自動更新の設定をする必要があります。

ここではパッケージの更新と自動更新の設定を行います。

この記事で行うこと

  1. パッケージの手動更新
    1. yum updateコマンド入力
  2. 自動更新の設定
    1. yum-cronのインストール
    2. yum-cronの設定
    3. yum-cronの起動・自動起動設定

1. パッケージの手動更新

1-1. yum updateコマンド入力

パッケージの更新用のコマンドはとても簡単です。

ただし、一般ユーザでは行えないので、rootで実行するようにしてください。

# yum update -y

yum :
パッケージ管理ソフト。Windowsで言うところの「プログラム(アプリ)と機能」

update :
yumのコマンドで、パッケージの更新を行う。引数にパッケージ名を指定するとそのパッケージのみ更新を行うことも可能。今回は全てのパッケージ更新を行うため指定しない

y :
全ての問い合わせにyesで答える。これを指定しない場合は更新するパッケージの一覧を表示した上で本当に更新を行うか確認が入るようになる。

2. 自動更新の設定

パッケージの自動更新設定を行います。

本稿ではすべてのパッケージを自動更新させる前提で記述しています。

この方法は更新を忘れてしまうリスクは下げますが、最新のパッケージと互換性がない為にシステムやアプリに不具合を生じるリスクがありますのでご注意ください。

2-1. yum-cronのインストール

直接cron(Linuxの自動タスク起動)にyum updateを書き込むという方法もありますが、今回はyum-cronというパッケージを使います。

その名の通りyumのcronを管理するパッケージです。

CentOS7をminimalインストールでインストールした場合、yum-cronは入ってきません。

このため、まずyum-cronをインストールする必要があります。

#yum install yum-cron -y

install :
yumのコマンドで、パッケージのインストールを行う。引数にインストールしたいパッケージ名(今回は”yum-cron”)を入力する。

ちなみに既にインストールされていた場合でも、エラーが出て何も起きないだけです。

2-2. yum-cronの設定

yum-cronの設定には
/etc/yum/yum-cron.conf
ファイルを修正します。

先に以下のようにバックアップを取ってください。

# cp /etc/yum/yum-cron.conf /etc/yum/yum-cron.conf.backup

cp : ファイルのコピーを行う。最初の引数にコピー元のファイル名、次の引数にコピー先のファイル名を入れる。

次にファイルを修正します。

/etc/yum/yum-cron.conf

apply_updates = no //パッケージの更新を行うか

↓

apply_updates = yes

ちなみに、更新の頻度についてはここから設定できません。

1日1回の更新になります。

2-3. yum-cronの起動・自動起動設定

以下のコマンドで起動します。

# systemctl start yum-cron

systemctl : サービスの起動・終了などの管理を行うコマンド

start :
systemctlのコマンド。サービスを起動する。引数に起動したいサービスの名称を入れる。ちなみに、終了は”stop”。

起動しただけだと再起動の際に止まってしまいます。このため、自動起動の設定も行います。(Windowsで言うところのスタートアップに登録)

# systemctl enable yum-cron

enable :
systemctlのコマンド。サービスの自動起動を設定する。引数に自動起動の設定をしたいサービスの名称を入れる。ちなみに、自動起動を止める時は”disable”。

まとめ

今回はパッケージの更新と自動更新の設定を行いました。

古いパッケージを使い続けるということは既に修正されている脆弱性にも晒され続けるという無用なリスクを負うことになるので、なるべく最新の状態で使っていきたいものです。

なお、このyum-cronはずっと起動したままにしているサーバで更新を行うものです。

もしクライアント用途だったり、サーバ用途でも必要な時にだけ付けるような頻繁に電源をon/offするような運用であれば、”yum-updateonboot”の方が適しています。

こちらについてはこのブログで触れる予定はないので別のサイト様を参考に利用してください。

 

CentOS7でWi-Fiネットワークに接続

CentOS7はインストール時にネットワークの設定もできます。

しかし、家にあるWi-FiネットワークがステルスSSIDだと設定できませんし、単に設定し忘れた方もいたかと思います。(私もステルスSSIDのため設定できなかった一人です)

接続するためのコマンド

$ nmcli d wifi connect [SSID] password [PASSWORD]

※大文字部分はそれぞれ利用しているWifiのSSIDとパスワード

コマンドの解説

nmcli : NetworkManagerに含まれるツール名。(NetworkManagerCLIentの略?)

d : 操作対象がデバイスであるという意味。(”device”でも動きます)

wifi connect : Wifiに接続するためのコマンド。これに続けて接続したいアクセスポイントのSSIDを入れる。

password : “wifi connect”の引数。この後に続けてパスワードを入れる。

まとめ

Wifi接続の方法についてまとめました。

私の場合はこれで問題なく接続できましたが、一部の方はこのコマンドでは動かないようです。

その場合は接続プロファイルを作成してからそれを有効にするという手順を踏んでいく必要がありますが、こちらでは割愛させていただきます。

また、コマンドの意味をそれぞれ解説しました。これはこれからも続ける予定です。

コマンドの意味を知らずに入力して、何が起きたかよく分からない状態になるということは避けたいという意図です。