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

黒い画面で最初はこれを(lsコマンド)

2023年10月10日

メニューへ戻る

黒い画面を初めて立ち上げたら、最初は lsコマンドからですよ。

こんにちは。

ページの番号が 1900(但し10おき)ともなると、いよいよネタ切れも激しく、新規ページを作る気力も萎えてくるのですが、初心に立ち返りこれからサーバーをやっていこうという人に役に立ちそうなものを書こうと思いました。

以前「Linuxの黒い画面で泳ぎ回る」を書いていますが、ちょっと重複しますがそれを補足する形になります。

ただ UNIX/Linuxに汎用的な知識であればある程、書籍の方が正確で分かり易いので、そちらをお勧めはいたしますけどね…。


Linuxのお勉強を開始するにあたり、Ubuntuをインストールしたまでは良かったけど、黒い画面(ターミナル)が苦手でサッパリ使えないよって人も多いでしょう。

黒い画面の使い方は徐々に覚えていけば良いのですが、「それにしたって何から始めれば?」と言えば、最初のコマンドは ls(list directory contents)でしょうね、やっぱり。


皆さんはもう Windowsは使っているのでしょうから、前提として以下の言葉を覚えていただきたい。

Windows用語Linux用語
フォルダディレクトリ

Linuxがファイルを管理する方法は、Windowsと同じ様に木構造の仕組みでやっています。

「木構造の仕組み」に関しては理解されていると思いますので、後は上の用語の違いだけ意識してもらえれば OKです。

以降は「ディレクトリ」と買いていきますので、そのつもりでお願いします。


でもって ls は、ディレクトリ内にあるファイルとサブフォルダを一覧してくれるコマンドです。

以降の例はすべて私の Lubuntu 22.04.3のものを使いますが、使い方はどの UNIX/Linuxでも同じです。


Linuxにログインすると、最初はホームディレクトリに「居る」ようになっていますので、ここで lsコマンドを実行してみます。

subro@Lubuntu2204:~$ ls
Desktop  NetBeansProjects  bin  snap  work  ダウンロード  テンプレート  ドキュメント  ビデオ  ピクチャ  ミュージック  公開

出てきたものは全部サブディレクトリで、ファイルは 1つもありませんでした。

lsコマンドだけでなく、各種コマンドには「オプション」という機能があり、それを使うことでちょっと違った動作をさせることができます。

lsコマンドのオプションで私が好きなのは -l です。
(オプションの前には [-] を付けるのが一般的です。)

 -l use a long listing format

-l オプションを使ってホームディレクトリ内を一覧してみます。

subro@Lubuntu2204:~$ ls -l
total 48
drwxrwxr-x  2 subro subro 4096 10月 10 09:50 Desktop
drwxrwxr-x  8 subro subro 4096  2月 25  2023 NetBeansProjects
drwxrwxr-x  2 subro subro 4096  6月 17 06:28 bin
drwx------  9 subro subro 4096 10月  2 17:08 snap
drwxr-xr-x 14 subro subro 4096 10月  2 17:38 work
drwxr-xr-x  2 subro subro 4096 10月  6 11:27 ダウンロード
drwxr-xr-x  2 subro subro 4096 10月 10  2022 テンプレート
drwxr-xr-x  2 subro subro 4096 10月  2 17:28 ドキュメント
drwxr-xr-x  2 subro subro 4096 10月 10  2022 ビデオ
drwxr-xr-x  2 subro subro 4096  2月 25  2023 ピクチャ
drwxr-xr-x  2 subro subro 4096 10月 10  2022 ミュージック
drwxr-xr-x  2 subro subro 4096 10月 10  2022 公開

縦表示になったのと、他にも修正(作成)時刻やデータのサイズなど有用な情報が得られるようになりました。
(個々の値の意味は割愛します)

それから -aオプションもよく使います。

 -a do not ignore entries starting with .

ファイル名が [.(ドット)]で始まるファイルは基本的に何かしらの設定ファイルであるのが UNIX/Linuxのお作法で、これはホームページに自動的に作られたりする事が多いです。
これらは隠しておいた方がユーザーに利があるって思想なんだと思われ、lsコマンドでは表示しないようにしています。

それを表示させるようにするのが -aオプションという訳です。

さっきの -lオプションと合わせてやってみます。

subro@Lubuntu2204:~$ ls -la
total 712
drwxr-x--- 27 subro subro   4096 10月 10 09:50 .
drwxr-xr-x  3 root  root    4096 10月 10  2022 ..
-rw-------  1 subro subro     56 10月 10 09:50 .Xauthority
drwxrwxr-x  2 subro subro   4096  4月 30 12:47 .aws
-rw-rw-r--  1 subro subro    247 10月  3 07:17 .bash_aliases
-rw-------  1 subro subro  37874 10月  6 15:11 .bash_history
-rw-r--r--  1 subro subro    220  1月  7  2022 .bash_logout
-rw-rw-r--  1 subro subro    126 10月  3 07:16 .bash_profile
-rw-r--r--  1 subro subro   3771  1月  7  2022 .bashrc
drwxrwxr-x  4 subro subro   4096 10月 10 10:20 .bluefish
drwx------ 25 subro subro   4096  9月 18 16:35 .cache
drwx------ 35 subro subro   4096 10月  3 11:34 .config
drwx------  3 subro subro   4096 10月 22  2022 .dbus
drwxrwxr-x  3 subro subro   4096 10月  6 11:33 .dotnet
-rw-rw-r--  1 subro subro     42 12月  7  2022 .gtk-bookmarks
drwxrwxr-x  4 subro subro   4096 12月  2  2022 .local
drwx------  5 subro subro   4096  9月 17 09:59 .pgadmin
drwx------  3 subro subro   4096 11月  8  2022 .pki
drwx------  2 subro subro   4096 10月 22  2022 .presage
-rw-r--r--  1 subro subro    807  1月  7  2022 .profile
drwxrwxr-x  3 subro subro   4096  6月 21 06:46 .shutter
drwx------  2 subro subro   4096 10月  6 11:13 .ssh
-rw-r--r--  1 subro subro      0 10月 11  2022 .sudo_as_admin_successful
-rw-------  1 subro subro  11859 10月  3 07:17 .viminfo
drwxrwxr-x  4 subro subro   4096  6月 19 17:31 .vscode
-rw-rw-r--  1 subro subro   9117  3月 30  2023 .xscreensaver
-rw-------  1 subro subro 520509 10月 10 10:07 .xsession-errors
drwxrwxr-x  2 subro subro   4096 10月 10 09:50 Desktop
drwxrwxr-x  8 subro subro   4096  2月 25  2023 NetBeansProjects
drwxrwxr-x  2 subro subro   4096  6月 17 06:28 bin
drwx------  9 subro subro   4096 10月  2 17:08 snap
drwxr-xr-x 14 subro subro   4096 10月  2 17:38 work
drwxr-xr-x  2 subro subro   4096 10月  6 11:27 ダウンロード
drwxr-xr-x  2 subro subro   4096 10月 10  2022 テンプレート
drwxr-xr-x  2 subro subro   4096 10月  2 17:28 ドキュメント
drwxr-xr-x  2 subro subro   4096 10月 10  2022 ビデオ
drwxr-xr-x  2 subro subro   4096  2月 25  2023 ピクチャ
drwxr-xr-x  2 subro subro   4096 10月 10  2022 ミュージック
drwxr-xr-x  2 subro subro   4096 10月 10  2022 公開

さっきは「ファイルが 1つも無い」って書きましたけど、実はドットで始まるファイル名のファイルは結構あったのでした。

上の方にあるこの 2行がちょっと特殊なものです。
(他のものはファイルかサブディレクトリです)

drwxr-x--- 27 subro subro   4096 10月 10 09:50 .
drwxr-xr-x  3 root  root    4096 10月 10  2022 ..

「ドット」と「ドットドット」とでも呼べば良いのか、具体的にはこういう意味です。

 . カレントディレクトリ
(いま居るディレクトリ)
 .. 親ディレクトリ
(木構造の中で、いま居るディレクトリの 1つ上のディレクトリ)

コイツ等は「相対パス」ってものでファイルやディレクトリを示す場合に使います。


UNIX/Linuxの OS下で、木構造で管理されているファイル/ディレクトリの場所を指定する方法は 2つあります。

絶対パス木構造の一番上(ルートディレクトリ)から全部書く
相対パスいま居るディレクトリからの位置を書く

「パス」は道のことです。
まめちしきな。


例えば、現在日時を表示する dateコマンド(print or set the system date and time)を実行したいな〜って思ったとします。

dateコマンドの実体は [/usr/bin/date]ファイルです。

[/usr/bin/date] は絶対パス表記ですね。
1文字目の [/] がルートディレクトリを表しますので、

ってことです。

このようにいま居るディレクトリ(ホームディレクトリ)から遠く離れたファイルも、絶対パスを使って参照/変更/削除/実行することができます。

subro@Lubuntu2204:~$ /usr/bin/date
2023年 10月 10日 火曜日 10:44:12 JST

実行できました。

今度は dateコマンドを相対パスで指定して実行してみます。

相対パスで見るには、まずは自分がいま居る場所がどのディレクトリなのか(以降は「カレントディレクトリ」と書きます)を意識しないといけません。

いま私は自分のホームディレクトリ [/home/subro] に居ますので、相対パス表記では dateコマンドの実体である [/usr/bin/date]ファイルの場所をこう書きます。

コマンドラインでの具体的な書き方はこう。

subro@Lubuntu2204:~$ ../../usr/bin/date
2023年 10月 10日 火曜日 10:53:09 JST

実行できました。

次はカレントディレクトリを指す [.] を使ってみます。
どういうときに使うかというと、以下の場合です。

  1. カレントディレクトリにあるものを指す
  2. カレントディレクトリより下層にあるものを指す

1については利用状況がいまいちピンと来ないかもしれませんが、確かに使うときがあります。

2の例としてカレントディレクトリ(私のホームディレクトリになっています)の [bin]ディレクトリの内容を lsコマンドで取得したいとします。

subro@Lubuntu2204:~$ ls -l ./bin
total 0
lrwxrwxrwx 1 subro subro 26  6月 17 06:28 deno -> /home/subro/.deno/bin/deno
lrwxrwxrwx 1 subro subro 28 10月 22  2022 java -> /usr/lib/jvm/jdk-19/bin/java

但し、カレントディレクトリを示す [./] は省略しても構わないので、こう書いても同じです。

subro@Lubuntu2204:~$ ls -l bin
total 0
lrwxrwxrwx 1 subro subro 26  6月 17 06:28 deno -> /home/subro/.deno/bin/deno
lrwxrwxrwx 1 subro subro 28 10月 22  2022 java -> /usr/lib/jvm/jdk-19/bin/java

下層のディレクトリでもう少し深い所を lsコマンドで見てみます。
(Denoの開発プロジェクトのディレクトリです)

subro@Lubuntu2204:~$ ls -l ./work/deno/fresh-project
total 40
-rw-rw-r-- 1 subro subro  363  6月 17 08:33 README.md
drwxrwxr-x 2 subro subro 4096  6月 17 08:33 components
-rw-rw-r-- 1 subro subro  767  6月 17 08:33 deno.json
-rwxrwxrwx 1 subro subro  130  6月 17 08:33 dev.ts
-rw-rw-r-- 1 subro subro  604  6月 17 08:42 fresh.gen.ts
drwxrwxr-x 2 subro subro 4096  6月 17 08:33 islands
-rw-rw-r-- 1 subro subro  454  6月 17 08:33 main.ts
drwxrwxr-x 3 subro subro 4096  6月 17 08:33 routes
drwxrwxr-x 2 subro subro 4096  6月 17 08:33 static
-rw-rw-r-- 1 subro subro  111  6月 17 08:33 twind.config.ts


カレントディレクトリから他のディレクトリに居場所を移すには cdコマンド(change directory)を使います。
(コイツはファイルとして独立したものではなく bashの機能です。)

コマンドの実行ファイルが一杯ある [/usr/bin]ディレクトリに移ってみます。

●絶対パスで行く。

subro@Lubuntu2204:~$ cd /usr/bin

●相対パスで行く。

subro@Lubuntu2204:~$ cd ../../usr/bin


カレントディレクトリを確認するのは pwdコマンド(print name of current/working directory)です。

subro@Lubuntu2204:/usr/bin$ pwd
/usr/bin


ホームディレクトリに戻るには cdコマンドだけ入れればOK。

subro@Lubuntu2204:/usr/bin$ cd

subro@Lubuntu2204:~$ pwd
/home/subro


とりあえずここに書いている事だけを駆使すれば、UNIX/Linuxの OS内を「自由に泳ぎ回れる」感覚になるはずで、黒い画面への苦手意識が随分と緩和されると思います。


後は [/usr/bin]ディレクトリにあるコマンド類を片っ端から実行してみたりして、OS環境をブチ壊すのも良い練習になると思います。

どうせ自分の環境でブチ壊してしまったって、またインストールすれば良いのですから。

これがクラウドではなく、お勉強環境を自宅に作っておくことによる最大のメリットだと思います。


こういう本を一つ用意しておくと良いです。
基本のキなので、古本でも全然問題ありません。


慣れてくるとこういうリファレンス本の方が使いやすいですね。


もっと慣れてくると manコマンド(an interface to the system reference manuals)になります。
(コマンドラインで「man date」とか入れてみてください)