The Sixwish project

Linux - Education

このエントリーをはてなブックマークに追加

ls、touch、mkdir、cd、pwd

なんでもかんでも、GUIで処理できるというのが今日の風潮。
それでもCUIでカタカタ操作する事も出来て欲しい……というわけで基本コマンドの一回目です。

それでは、ログインしてください。

ls、touch

もっとも基本的で、おそらく最も使うコマンド。lsからです。

何をするものかというと、ディレクトリの中身をリスト表示するコマンドで、LiStの略らしいです。
では、入力して実行してみましょう。

[maya@sixwish ~]$ ls
[maya@sixwish ~]$

ファイルが一つもないので何も表示されません。
このままではどうしようもないので、touchを実行してファイルを作成します。

[maya@sixwish ~]$ touch file_0.txt
[maya@sixwish ~]$ ls
file_0.txt
[maya@sixwish ~]$

これでファイルが作成されました。
ちなみにtouchは、本来ファイルのタイムスタンプを変更するためのコマンドなのですが、存在しないファイル名を指定すると空のファイルを作成することができます。
滅多なことでは使用しませんが、空ファイルを作成して権限を変更しておく……などという時には使うかもしません。

ではlsの説明に戻ります。

[maya@sixwish ~]$ ls -l
合計 4
-rw-rw-r--  1 maya maya 0  4月  1 10:32 file_0.txt
[maya@sixwish maya]$ ls -al
合計 44
drwx------  2 maya maya 4096  4月  1 10:32 .
drwxr-xr-x  6 root root 4096  4月  1 10:31 ..
-rw-r--r--  1 maya maya  304  4月  1 10:31 .bash_logout
-rw-r--r--  1 maya maya  191  4月  1 10:31 .bash_profile
-rw-r--r--  1 maya maya  124  4月  1 10:31 .bashrc
-rw-rw-r--  1 maya maya    0  4月  1 10:32 file_0.txt
[maya@sixwish ~]$

まずは、lsのコマンドラインオプションで、最も使用頻度の高いものから説明します。
表示されている情報は、Windowsのエクスプローラで言うところの、詳細表示に近いものです。
左から、パーミッションリンク数所有者名グループ名サイズタイムスタンプファイル名となります。
それぞれの用語については、別のセクションで説明します。

本題に戻りますが……オプションlaについてです。
それぞれ以下のような意味になります。

-l
長い(少しだけ詳細な)形式でリスト表示します
-a
.で始まる名前のファイルを隠さずに、全てのファイルをリスト表示します

ここでは実行していませんが、オプションは別々に指定して実行することが出来ます。
今回はまとめてls -alとしていますが、ls -a -lでも同じ結果になります。

また、説明に書いた通り、ファイル名の最初に.をつけると隠し属性になります。
ちなみに、.bash~ってファイルは設定関係のファイルだから隠し属性になります。
もっとも、この場合の使い方は用意に削除できないようにする。という意味合いの方が強いかもしれません。

なお、なんの設定ファイルかというと、現在使っているシェルに関する設定です。
詳しい説明は、シェルのセクションまでお待ちください。

mkdir

このままでは面白みがないので、ディレクトリを作成します。
ディレクトリとは、最近のWindowsで言うところのフォルダのことです。

「フォルダ」と「ディレクトリ」

同じようなものと説明していますが、厳密には異なります。
Microsoftのサイトを見ても、同じ意味としてではなく、別のものであるという感じで表現されていると思います。

なお、ここではあくまでもディレクトリという言葉で統一していきます。

それでは、ディレクトリを作成してみましょう。
作成するためのコマンドはmkdirを使用します。

なお、どうでもいいようなネタですが、makemkと略されることが多いので、これは憶えておくとよいでしょう。

[maya@sixwish ~]$ mkdir base
[maya@sixwish ~]$ ls
base  file_0.txt
[maya@sixwish ~]$ ls -l
合計 12
drwxrwxr-x  2 maya maya 4096  4月  1 11:08 base
-rw-rw-r--  1 maya maya    0  4月  1 10:32 file_0.txt
[maya@sixwish ~]$

この説明上では真っ白ですが、恐らくディレクトリは青で表示されていると思います。
ディレクトリかどうかの判断は、色またはパーミッション表示の先頭がdになっている事でできます。

ただ作るだけでは面白くないので、オプションを使っていろいろやってみます。

[maya@sixwish ~]$ mkdir -p base/dir1/dir2 --verbose
mkdir: created directory `base/dir1'
mkdir: created directory `base/dir1/dir2'
[maya@sixwish ~]$

オプションは以下の通り。

-p、--parents
存在しない親ディレクトリもまとめて作成します
--verbose
詳細表示
このコマンドの場合は作成したディレクトリごとに、メッセージを表示します

では、まとめて作成されたかを確認してみます。

[maya@sixwish ~]$ ls -alR
.:
合計 52
drwx------  3 maya maya 4096  4月  7 11:08 .
drwxr-xr-x  6 root root 4096  4月  7 10:31 ..
-rw-r--r--  1 maya maya  304  4月  7 10:31 .bash_logout
-rw-r--r--  1 maya maya  191  4月  7 10:31 .bash_profile
-rw-r--r--  1 maya maya  124  4月  7 10:31 .bashrc
drwxrwxr-x  3 maya maya 4096  4月  7 11:13 base
-rw-rw-r--  1 maya maya    0  4月  7 10:32 file_0.txt

./base:
合計 24
drwxrwxr-x  3 maya maya 4096  4月  7 11:13 .
drwx------  3 maya maya 4096  4月  7 11:08 ..
drwxrwxr-x  3 maya maya 4096  4月  7 11:13 dir1

./base/dir1:
合計 24
drwxrwxr-x  3 maya maya 4096  4月  7 11:13 .
drwxrwxr-x  3 maya maya 4096  4月  7 11:13 ..
drwxrwxr-x  2 maya maya 4096  4月  7 11:13 dir2

./base/dir1/dir2:
合計 16
drwxrwxr-x  2 maya maya 4096  4月  7 11:13 .
drwxrwxr-x  3 maya maya 4096  4月  7 11:13 ..

[maya@sixwish ~]$

lsのオプション-Rは再帰的にリスト表示します。
本当はtreeがあればわかりやすいのですが、入っていないので今回はパスです。

treeコマンド

ディレクトリの構造をtree表示するためのコマンドです。
実行するとこうなります。

[maya@sixwish maya]$ tree
.
|-- base
|   `-- dir1
|       `-- dir2
`-- file_0.txt

3 directories, 1 file
[maya@sixwish maya]$ 
  

Red Hat Linux release 7.2 (Enigma)で実行した結果です。
RHEL系のどのRPMに入っているかわからないので、便利そうだなと思ったら管理者におねだりすると良いでしょう。

また、ディレクトリを下りる、上がるという表現を使っていますが、この図を見ればどうしてそういうのかがわかると思います。

cd、pwd

さて、ディレクトリを作成しましたので、そのディレクトリに移動するコマンドを使ってみましょう。

ディレクトリの移動にはcdを使用します。
チェンジ・ディレクトリの略ともカレント・ディレクトリの略とも言われています。

では「base」というディレクトリに移動してみましょう。

[maya@sixwish ~]$ cd bas
-bash: cd: bas: そのようなファイルやディレクトリはありません
[maya@sixwish ~]$ cd base
[maya@sixwish base]$ ls
dir1
[maya@sixwish base]$

一回目はわざと間違えています。
失敗するとエラーが表示される事を憶えておいてください。

次に一気にディレクトリを下りてみましょう。
dir1の下にdir2を作成したので、そこまで下りてみます。

[maya@sixwish base]$ cd dir1/dir2/
[maya@sixwish dir2]$ ls
[maya@sixwish dir2]$

途中にあるディレクトリ全てを指定すれば、一気に移動することができます。

さて、いま現在はディレクトリのかなり中まで入ってきています。
頭の中にディレクトリ構造が入っていれば、迷子にはならないかもしれませんが、場所を確認したいこともあるでしょう。
その時は、pwdというコマンドで自分の居る場所を表示できます。

[maya@sixwish dir2]$ pwd
/home/maya/base/dir1/dir2
[maya@sixwish dir2]$

表示は絶対パスで表示されています。
また、pwdは、Print the current Working Directoryの略らしいです。

あとは、基本的なディレクトリ移動方法として、絶対パス指定相対パス指定があります。
絶対パス指定とは、一番上からすべて指定するということ。まぁ、ディレクトリの一番上を基準にした方法とも言います。
一方、相対パス指定は、自分が作業しているディレクトリを基準にして、指定するということになります。

では、相対パス指定でbaseというディレクトリに上がってみます。

[maya@sixwish dir2]$ cd ../../
[maya@sixwish base]$

..は、親ディレクトリなどと呼ばれますが、一つ上のディレクトリと思ってください。
ちなみに.は、カレントディレクトリを意味します。

次に、絶対パス指定で、dir2へ移動します。

[maya@sixwish base]$ pwd
/home/maya/base
[maya@sixwish base]$ cd /home/maya/base/dir1/dir2
[maya@sixwish dir2]$

pwdの結果は絶対パス表示なので、そこから移動先まで記述します。

あとは、特殊な書き方ですが、~の使い方。

[maya@sixwish dir2]$ cd ~
[maya@sixwish ~]$ pwd
/home/maya
[maya@sixwish ~]$ 

~は、ログインユーザーのホームディレクトリを意味します。
ログイン直後のディレクトリに移動したい場合は重宝しますので憶えておいてください。