お金をかけずにサーバーの勉強をしよう

黒い画面でその次にはこれを(rmコマンドなど)

2023年10月15日

メニューへ戻る

黒い画面でファイル操作をしましょう。

Windowsではエクスプローラーがあって、Linuxのどのディストリビューションでも何かしらのファイル操作ツール(「ファイラー」とか呼ばれています)があって、ファイルの作成・コピー・削除・移動の作業は GUIでやってきたと思います。

それを GUIのない黒い画面でどうやるかのお話です。

Linuxには以下のコマンドがありますので、それを使います。

touch0バイトのファイル作成
mvファイルの移動・ファイル名の変更
rmファイル削除
mkdirディレクトリ作成
rmdirディレクトリ削除

1つずつやってみます。
環境は Lubuntu Server 22.04.3ですが、他の Linuxでも同じでしょう。

ちょっとその前に treeコマンドがインストールされていると便利なのでご紹介します。
Linuxのファイルとディレクトリが、木構造で管理されているのは Windowsと同じなので皆さんご存知と思います。

treeコマンドは、それを文字で綺麗に表示してくれます。
確か Ubuntuのデフォルトインストールでは入っていなかったと思うので、入れておくと良いでしょう。

snap/aptともにパッケージがありましたが、2023年10月15日時点では、aptの方が若干バージョンが高いので、aptのパッケージにしました。

subro@UubuntuServer2204-1:~$ sudo apt install -y tree

特筆することもなく普通にインストールできました。

実際に実行してみるとこんな感じです。

subro@UubuntuServer2204-1:~$ tree
.
├── jdk-21_linux-x64_bin.deb
├── selenium-server-4.13.0.jar
├── snap
│   └── firefox
│       ├── 3206
│       │   ├── ダウンロード
│       │   ├── テンプレート
│       │   ├── デスクトップ
│       │   ├── ドキュメント
│       │   ├── ビデオ
│       │   ├── ピクチャ
│       │   ├── ミュージック
│       │   └── 公開
│       ├── common
│       └── current -> 3206
└── tmp

14 directories, 2 files

デフォルト動作(オプションなし)では、ファイルはカレントディレクトリのものだけ(但しファイル名が [.] で始まるものは除く)を、サブディレクトリは全部を表示って動作になっているようです。

[-a]オプションをつけてやると、サブディレクトリの全ファイル表示になりますが、すごい行数になってしまうのでここでは割愛しますが、自分の環境では是非やってみて下さい。


mkdirコマンドで [work]サブディレクトリを作ります。

subro@UubuntuServer2204-1:~$ mkdir work

subro@UubuntuServer2204-1:~$ tree
.
├── jdk-21_linux-x64_bin.deb
├── selenium-server-4.13.0.jar
├── snap
│   └── firefox
│       ├── 3206
│       │   ├── ダウンロード
│       │   ├── テンプレート
│       │   ├── デスクトップ
│       │   ├── ドキュメント
│       │   ├── ビデオ
│       │   ├── ピクチャ
│       │   ├── ミュージック
│       │   └── 公開
│       ├── common
│       └── current -> 3206
├── tmp
└── work

できました。

以降の作業のため、カレントディレクトリ(ワーキングディレクトリ)を [work]ディレクトリにします。
作業場所を移動するというイメージですね。

subro@UubuntuServer2204-1:~$ cd work

subro@UubuntuServer2204-1:~/work$

移りました。


touchコマンドで 0バイトのファイルを作ります。

でも「0バイトのファイルを作る」という作業自体は余り発生はしませんね。
何か新規ファイルを作るシチュエーションでは、他のツールからのアウトプットであることがほとんどだからです。

subro@UubuntuServer2204-1:~/work$ touch aaa.txt

subro@UubuntuServer2204-1:~/work$ ls -l
合計 0
-rw-rw-r-- 1 subro subro 0 10月 15 09:23 aaa.txt

できました。

※どのようなケースで 0バイトのファイルを必要とするかですが、シェルスクリプトのテストではよく使います。
①ファイル有無のチェック
②ファイルが 0バイトかのチェック
シェルスクリプトにはこの 2つのチェック機能があるので、テストデータ(ファイル)を作るのに使えるんですね。

mvコマンドで [aaa.txt]ファイルを [bbb.txt]ファイルにリネームします。

subro@UubuntuServer2204-1:~/work$ mv aaa.txt bbb.txt

subro@UubuntuServer2204-1:~/work$ ls -l
合計 0
-rw-rw-r-- 1 subro subro 0 10月 15 09:23 bbb.txt

リネームできました。

ファイルの移動のテストをするため、[test]サブディレクトリを作りました。

subro@UubuntuServer2204-1:~/work$ mkdir test

subro@UubuntuServer2204-1:~/work$ tree
.
├── bbb.txt
└── test

1 directory, 1 file

mvコマンドで [bbb.txt]ファイルを [test]ディレクトリの下に移動します。
コピー先の指定に相対パスを使っています。

subro@UubuntuServer2204-1:~/work$ mv bbb.txt ./test

subro@UubuntuServer2204-1:~/work$ tree
.
└── test
    └── bbb.txt

1 directory, 1 file

移動できました。

rmコマンドで [bbb.txt]ファイルを削除します。
削除対象ファイル名の指定に相対パスを使っています。

subro@UubuntuServer2204-1:~/work$ rm ./test/bbb.txt

subro@UubuntuServer2204-1:~/work$ tree
.
└── test

1 directory, 0 files

削除できました。

rmdirコマンドで [test]ディレクトリを削除します。
削除対象ディレクトリ名の指定に相対パスを使っています。

subro@UubuntuServer2204-1:~/work$ rmdir ./test

subro@UubuntuServer2204-1:~/work$ tree
.

0 directories, 0 files

削除できました。


これで上で挙げたコマンドを一通り使ってみました。


==========
「GUIのファイラーに比べてなんて手間がかかるのか」って思いますよね。

だけど、そう思うのは最初だけです。

片手で数えるくらいの数を操作しているだけなら GUIの方が分かりやすくて楽なんですが、サーバー運用業務となると 1,000個とか普通にありますから GUIじゃやっれおれません。

逆に「何で黒い画面のコマンドだとやっておれるのか?」と言えば、コマンドでは「正規表現」と呼ばれる強力で強烈な機能を使えるからです。

正規表現についてはそれだけでオライリーの本が 1冊出てしまう程のものですし、とてもこのホームページで説明し切れるものではありません。

正規表現を扱っている特定サイトへのリンクは貼りませんけど、検索しれみればいくらでも出てくるはずです。

非常に乱暴に例を挙げますと、ワイルドカードと呼ばれている「*」(1文字以上の文字列)という書き方なんかはその一部です。


書籍は一杯出ていますので、UNIX/Linuxを使う人は 1冊は手元に置いておきたいものです。
そんなに変わるものではないのですが、まぁ新し目のものを入手しておくのが良いでしょう