黒い画面を初めて立ち上げたら、最初は 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文字目の [/] がルートディレクトリを表しますので、
- ルートディレクリの下の
- [bin]ディレクトリにある
- [date]ファイル
ってことです。
このようにいま居るディレクトリ(ホームディレクトリ)から遠く離れたファイルも、絶対パスを使って参照/変更/削除/実行することができます。
subro@Lubuntu2204:~$ /usr/bin/date
2023年 10月 10日 火曜日 10:44:12 JST
実行できました。
今度は dateコマンドを相対パスで指定して実行してみます。
相対パスで見るには、まずは自分がいま居る場所がどのディレクトリなのか(以降は「カレントディレクトリ」と書きます)を意識しないといけません。
いま私は自分のホームディレクトリ [/home/subro] に居ますので、相対パス表記では dateコマンドの実体である [/usr/bin/date]ファイルの場所をこう書きます。
- 親ディレクトリ([/home]ディレクトリ)の
- 親ディレクトリ([/]ディレクトリ)の
- 下に有る [usr]ディレクトリの
- 下に有る [bin]ディレクトリの
- 下に有る [date]ファイル
コマンドラインでの具体的な書き方はこう。
subro@Lubuntu2204:~$ ../../usr/bin/date
2023年 10月 10日 火曜日 10:53:09 JST
実行できました。
次はカレントディレクトリを指す [.] を使ってみます。
どういうときに使うかというと、以下の場合です。
- カレントディレクトリにあるものを指す
- カレントディレクトリより下層にあるものを指す
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」とか入れてみてください)