Linuxゲリラ戦記

cdコマンドでディレクトリ移動。lsコマンドで一覧表示。

左を向いているペンギンみたいなキャラクター、ナックス

6.cdコマンドとlsコマンド

ナックス「今日からCUIを解説しまーす」

デビー君「ええー?CUIを使わなくてもLinuxは使えるって言ったじゃないかよー。ぶーぶー!」

ナックス「いや、まぁ確かにその通りなんですが『Linuxの全てのディストリビューションで共通に使える操作』と言えば、とりあえずCUIかなーなんて」

デビー君「あーあ。ナックスの『CUIを教えます』の一言で今、100人くらいこのサイトから人が去っていったなー」

ナックス「このサイトを見るのを止める人はごめんね!本当にごめんね!他の人のサイトを参考にLinuxを楽しんでね!Linuxを見捨てないで!」

ナックス「──さて!気を取り直して!CUIを教えるぞ!」

デビー君「しょうがないなー」

ナックス「というわけで、今回はCUIの基本『端末・コンソールの場所』と『cdコマンド、lsコマンド』を教えたいと思います」

デビー君「なんだか難しそうだなぁ……」

ナックス「大丈夫です!私がついています!」

ナックス「皆さんが使っているLinuxには、メニューのどこかに『端末』または『コンソール』等と言われているCUIを使える環境があるはずです(『仮想端末』または『仮想コンソール』と表記されている場合もあります)」

ナックス「GNOMEの場合には、上部のメニューの『アプリケーション』->『アクセサリ』->『端末』とメニューをたどってください。KDE3の場合にはデスクトップの何も無いところで右クリックすれば、右クリックメニューが開くので、その中に(仮想)コンソールというようなメニューがあると思いますので、それをクリックしてください。KDE4の場合は左下の『Kメニュー』から『アプリケーション』->『システム』->『ターミナル』を選んでください。Xfceの場合は(多分)メニューの中に、黒い四角(パソコン?)みたいなアイコンがないでしょうか?それをクリックしてみてください。他のデスクトップ環境を使っている人も、CUI環境を使える場所は必ずあります!探してみてください」

デビー君「おぉ。何か出た」

CUI環境

ナックス「俗に『コンソール画面』とか『端末画面』と言われる、文字だけでLinuxを操作する環境、すなわちCUI環境がここです。場合によっては『背景が白じゃなくて黒だよー』とか微妙にいろいろと環境が違うと思いますが、ようはこんな感じの画面がでれば、そこがCUI環境です」

ナックス「よく映画や漫画でハッカーが色々と難しい操作をしているのがここです。目指せハッカー!」

ナックス「とりあえず、今はどんな状態なのか見てみましょう。私の場合『user@debian:~$』の様になっています」

デビー君「僕の場合は『debby@linux:~$』ってなってるけど?」

ナックス「はい。それぞれ環境によって異なります。が、操作方法は一緒なので、あまり小さな事は気にしないでください」

user@debian:~$

ナックス「キーボードから『ls』と打って、Enterキーを押してみてください」

user@debian:~$ ls

lsコマンド

ナックス「コマンドを実行するのはEnterキーです。今回はlsコマンドというコマンドを実行してみました。何か良く分からないモノがズラッと表示された人や、Desktopという表示しか表示されない人。時には何も表示されない人もいるかもしれません」

ナックス「lsコマンドは、入れ物の中身を全て表示するコマンドです」

デビー君「入れ物?入れ物って何?」

ナックス「Windowsでいう『フォルダ』のことですが、Windowsを使ったことがある人でも『フォルダ』という言葉を聞いたことが無い人もいるでしょう。えーっと、まずはスクリーンショットでの説明を試みます。うりゃー!」

入れ物

ナックス「GUIで説明すると、つまり、こういう事なんですが……分かっていただけましたか?」

デビー君「あー。なんかWindowsでの『マイ フォルダ』とかいうやつ?」

ナックス「そうですそうです。『マイ フォルダ』です。lsコマンドはその『フォルダ』の中身を全て表示しているんです。GUIだとファイルやフォルダの名前と一緒にアイコンが表示されますが、CUIだと文字だけで全てを表現するのでファイル名やフォルダ名が表示されるというわけです」

ナックス「さて、中にはまだピンと来ていない人もいるでしょう。でも、次の cd コマンドとセットで考えれば何となく分かっていただけるはず」

ナックス「多くの方は、lsコマンドでDesktopというものが表示されたと思います。DesktopもDesktopという名前のフォルダです。そのフォルダに移動します(中には『Desktop』ではなく『desktop』や『デスクトップ』と表記されている方もいると思います。そう言う方は以下のコマンドの『Desktop』の部分をそれぞれ自分の『desktop』や『デスクトップ』に置き換えてコマンドを打ってください。もちろんCUIでは日本語を使うこともできます。また「そもそもデスクトップらしいモノが無い」って人はとりあえず説明だけ聞いてください)」

デビー君「え?フォルダに移動?どういう事?」

ナックス「まぁ、とりあえずコマンドを入力しましょう。cdとキーボードから入力し、スペースキーで一つスペースを空けた後、Desktopと入力し、Enterキーを押します」

user@debian:~$ cd Desktop

cdコマンド

ナックス「cdコマンドはフォルダを移動するコマンドです。これでDesktopという名前のフォルダの中に移動しました。lsコマンドでDesktopフォルダの中の一覧を表示してみましょう」

user@debian:Desktop$ ls

デスクトップでlsコマンド

ナックス「さて、気づいた人はいるでしょうか?なんと、デスクトップにあるファイルやフォルダの一覧が表示されるのです!!」

デビー君「……何も表示され無いけど?」

ナックス「え?……はっ!!しまったー!!みんなLinuxをインストールしたばかりだから特にデスクトップにファイルを置いていないー!!」

デビー君「…………」

ナックス「……あ!!でも『ゴミ箱』とか表示されない?」

デビー君「あぁ。そう言われれば『ゴミ箱』が」

ナックス「そうでしょー!?ディストリビューションの中にはデスクトップに置いてある『ゴミ箱』が表示されるやつもあるんだよー!!」

デビー君「あのさぁ。さっきからさらりと聞き流してたけど」

ナックス「はい?」

デビー君「『デスクトップ』ってそもそも何?」

ナックス「あ!そうか!そこから説明しないといけないのか!デスクトップっていうのはここです!パソコンを起動して最初に表示されるやつです!」

デスクトップとは

デビー君「えぇ?デスクトップがフォルダなわけないじゃん!デスクトップはデスクトップだよ!」

ナックス「いいえ!Linuxでは全てのものを入れ物の中に入れています!いわば、Linux自体が大きな入れ物で、その入れ物の中に、様々なファイルやフォルダがあると考えてください!」

デビー君「うーん……。納得が行かない……」

ナックス「デスクトップがフォルダで無いように見えるのは、むしろGUIの弊害です!CUIこそ真実の姿を見せてくれるのです!」

ナックス「あ。そうそう、コマンドを打つ画面の左側の表記が変わったことに気づいた方はいるでしょうか?(変わらないディストリビューションもあります)

user@debian:~$ 

みたいなのが

user@debian:Desktop$ 

みたいになっていますね。実は~とかDesktopとかいうのは、今どのフォルダにいるのかが表記されています」

デビー君「え?一番最初のフォルダの名前は~なの?変な名前だなぁ」

ナックス「はい。一番最初のフォルダは~で表現されます。が、詳しく説明する前に、今までの操作を分かりやすく絵で表現してみましょう」

cdコマンドで移動したよ

ナックス「どうでしょう。一番最初にいた『~と表現されるフォルダ』からcdコマンドで『Desktopフォルダ』に移動したのが何となくイメージ出来たでしょうか?」

ナックス「さて、次は『Desktopフォルダ』から出て、元の『~と表現されるフォルダ』に戻りたいと思います。今のフォルダから出る場合はcdと打った後、スペースキーでスペースを空け../と打ち、Enterキーを押します」

user@debian:Desktop$ cd ../

cdコマンドで外に出る

ナックス「絵で表すとこんな感じです」

フォルダから出たよ

ナックス「左側の表記が元に戻ったことが確認できるでしょうか。余裕があれば本当に元の『~と表現されるフォルダ』に戻ったかlsコマンドで中身を確認してみてください」

デビー君「うーん。なんだかフォルダから出るコマンドは難しいな」

ナックス「そうですね。今までLinuxを使ったことが無い人は.(ドット)とか/とかをそもそもあまり使いませんもんね。しかし!CUI環境ではバリバリ使います」

ナックス「さて、この~と表される変なフォルダは俗に『ホームディレクトリ』と言われます」

デビー君「『ホームディレクトリ』?」

ナックス「今まで入れ物を話の流れで『フォルダ』と表現してきましたが、実はそれはWindows流の呼び方。Linuxでは入れ物のことを『ディレクトリ』と呼びます」

デビー君「つまり、分かりやすく言えば『ホームの入れ物』っていうこと?ホームって『家』のこと?」

ナックス「まぁ、そんな感じです。『みんな、自分の家を始まりにして色々と移動する』と言えばイメージしやすいですかね」

ナックス「さて、次はホームディレクトリの外側に出てみましょう」

デビー君「えぇっ!?ホームディレクトリの外側!?ホームディレクトリって一番最初の入れ物でしょ?その外側なんてあるの?」

ナックス「はい。先ほども言ったとおりLinuxは大きな入れ物です。ホームディレクトリすら数あるディレクトリという入れ物の中の一つに過ぎません。早速cdコマンドで外側に出てみましょう」

user@debian:~$ cd ../

ホームディレクトリの外側

ナックス「左側の表記がまた変わっています。

user@debian:~$

だったのが

user@debian:home$

に変わりました(環境によって異なります)」

デビー君「まさか本当に出られるとは……」

ナックス「lsコマンドで確認してみてください」

user@debian:home$ ls

デビー君「ん?debbyっていうディレクトリが表示されてる!」

ナックス「そうですね。環境によって異なるかもしれませんが、基本的にはLinuxのユーザー名のディレクトリが表示されます」

デビー君「いや、でも一番最初にいたホームディレクトリの~ディレクトリが無いぞ?」

ナックス「そうです。実は~ディレクトリは実際にあるわけではありません。デビー君の場合はそのdebbyという名前のディレクトリが『ホームディレクトリ』つまり、今まで~と表現されていたディレクトリです」

デビー君「ん?なんだか混乱してきたぞ?」

ナックス「では、むちゃくちゃ混乱する前に絵でお教えします」

ホームフォルダは~で表現される

ナックス「デビー君のホームディレクトリは実際はdebbyという名前のディレクトリなんです。なので、ここからホームディレクトリに戻るときはデビー君の場合は

user@debian:home$ cd debby

とします」

ナックス「しかし、例えば世界のどこかの誰かさん、tarou君がホームディレクトリにいるときも、あの左側に表示される奴は

user@debian:~$

みたいになります」

デビー君「なんでそんなにややこしいことになってるの?」

ナックス「それは、例えあなたがどの奥底のディレクトリに入って道に迷ってしまっても、以下のコマンド一つで必ず自分のホームディレクトリへ戻れるようにするためです!」

cd ~

cd ~でホームディレクトリに戻れます

ナックス「そう!例えあなたがどんな名前のLinuxユーザーでも共通でこのコマンドが使えるわけです!」

デビー君「お?確かに自分のホームディレクトリに戻ったみたいだ」

ナックス「はいはい。自分のホームディレクトリに戻れることを確認したら、もう一回自分のホームディレクトリから出て」

user@debian:~$ cd ../

もう一回ホームディレクトリから出て

ナックス「さらに外側に出ます」

デビー君「さらに外側があるのか」

user@debian:home$ cd ../

ナックス「左側の表記が

user@debian:home$

から

user@debian:/$

に変わりました」

ナックス「さらに外側に出ます。もう一度cd ../コマンドを打ってください」

user@debian:/$ cd ../

:/$でさらにcd ../

デビー君「あれ?左側の表記が

user@debian:/$

のまま変わらない!」

ナックス「そうです!実はこの/で表されるディレクトリこそ一番外側!なので、これ以上外側に出ることは出来ません!この一番外側のディレクトリのことを『ルートディレクトリ(rootディレクトリ)』と言います」

デビー君「もしかして、どこの奥底のディレクトリに迷っても

cd /

でルートディレクトリに行けるとか?」

ナックス「さすがデビー君!その通りです。例えどこにいても

cd ~

と打てば自分のホームディレクトリに。

cd /

と打てばルートディレクトリに移動できます」

ナックス「というわけで、lsコマンドで見てみましょう」

rootディレクトリでlsコマンド

ナックス「rootディレクトリは私の場合は以下のようなものが入っていました(私と全く同じ環境で無くて構いません。Linuxはディストリビューションによって色々なrootディレクトリの環境があります。これはただの一例です)」

/
|--bin/
|--boot/
|--cdrom/
|--dev/
|--etc/
|--home/
|--lib/
|--lost+found/
|--media/
|--mnt/
|--opt/
|--proc/
|--root/
|--sbin/
|--selinux/
|--srv/
|--sys/
|--tmp/
|--usr/
|--var/

デビー君「うわ。なんだか変わった表記方法だね。rootディレクトリは/で表現されているわけか」

ナックス「そうです。ちなみに、ディレクトリは最後に/をつけて表現します。Linuxではディレクトリの構造を、この『階層』で表現することが多いです」

デビー君「『階層』?」

ナックス「そうです。デビー君の場合は今まで見てきた階層はこの様に表現できます」

/
|--bin/
|--boot/
|--cdrom/
|--dev/
|--etc/
|--home/
|    |--debby/
|     |--Desktop/
|--lib/
|--lost+found/
|--media/
|--mnt/
|--opt/
|--proc/
|--root/
|--sbin/
|--selinux/
|--srv/
|--sys/
|--tmp/
|--usr/
|--var/

デビー君「へー」

ナックス「今まで『ディレクトリの中に入る』とか『デイレクトリから出る』と表現してきましたが、階層的な考え方で『ディレクトリに下りる』とか『ディレクトリを上に上がる』みたいな表現も良くされます」

デビー君「ふむふむ。それにしてもrootディレクトリにはかなりたくさんのディレクトリがあるね」

ナックス「そうですね。ここには、間違って消すとLinuxが動かなくなってしまうような重要なディレクトリがたくさんあります」

デビー君「えぇっ!?こわいなぁ!」

ナックス「でも、cdコマンドで中に移動したり、lsコマンドで何があるか確認したりする限りには何の問題もありません。どこにどんなファイルやディレクトリがあるか、ぜひ色々見てみてください」

ナックス「さて、もちろんディレクトリの中には、中に移動できないモノ『ファイル』などがあります。ディレクトリとファイルを色で区別してくれているディストリビューションもありますが、中には色で区別してくれないディストリビューションもあるかもしれません。が、『まぁ試しにcdコマンドで中に入ろうとしたけど入れないからこれはディレクトリじゃないのかな』くらいな感じの気持ちで構いません。コマンドはかなり特殊なコマンドで無ければ、特に打ち間違っても問題ありません。試しに間違ったコマンドを打った結果のスクリーンショットを載せておきます」

コマンドのエラー

ナックス「存在しないディレクトリに移動しようとすると『bash: cd: desktop: そのようなファイルやディレクトリはありません』。間違ったコマンド、例えば『cdcdcd』を実行すると『bash: cdcdcd: command not found』英語で「そんなコマンドは無いよ」と言われます」

デビー君「なるほど。コマンドを打ち間違ってもそんなに慌てることはない、ってことだね」

ナックス「そうです。では、今回はここまで」

デビー君「ぶへー!!なんだかとっても疲れたよ。ディレクトリを移動するコマンドとディレクトリの中身を見るコマンドを知るだけでこんなに疲れるなんて。本当に僕にLinuxなんて使いこなせるのかなー」

ナックス「大丈夫です。初めての人はみんなそんなものです。それに、前から言っているようにCUIを使わなくても充分にLinuxを使いこなすことは出来ます。のんびり行きましょう」

デビー君「はーい」

ナックス「さて、CUI環境の終わり方ですが、普通に他のアプリケーションと同じように右上の×ボタンで閉じちゃって構いません。特にホームディレクトリに戻って終わる必要もありません。今回は本当にお疲れさまでした。次回は7.rootユーザー。全ての権力は我がままに。