文字列を出力するコマンド
文字列を出力するコマンドについて解説します。
echoコマンド - 文字列を出力する
echoコマンドで文字列を出力できます。シングルクォートで囲った文字列の場合は、変数展開がされず、そのまま出力されます。
echo 'Hello $FOO \'
出力結果です。
Hello $FOO \
Perlとの違いで覚えておく必要があるのは「\」は、シェルではエスケープ記号ではないということです。
変数展開する
変数展開を行うには、ダブルクォート文字列を使用します。
echo "Hello $HOME";
出力結果のサンプルです。
Hello /home/kimoto
複数の文字列を出力する
複数の文字列を出力するには、文字列を並べます。文字列の間には、空白を含めることはできません。空白を含めると、空白が出力されます。
echo 'Hello''World'"Oh"
出力結果です。
HelloWorldOh
シングルクォートの中でシングルクォートは使えない
Perlと異なる一番の注意点は、シングルクォートの中で、シングルクォートを使う方法はないということです。
たとえば「I'd like you」と表示するためには、文字列を並べる方法を使って以下のように書きます。
echo 'I'"'"'d like you'
出力結果です。
I'd like you
カレントディレクトリを表示・変更するコマンド
カレントディレクトリを表示・変更するコマンドです。
カレントディレクトリのパスを表示する - pwdコマンド
カレントディレクトリのパスを表示するにはpwdコマンドを使用します。カレントディレクトリとは、現在作業をしているディレクトリのことです。パスとは、ファイルの場所を示す表現のことです。
# カレントディレクトリのパスを表示 pwd
出力結果のサンプルです。カレントディレクトリのパスが表示されます。
/home/kimoto
カレントディレクトリを変更する - cdコマンド
カレントディレクトリを変更するにはcdコマンドを使用します。
# カレントディレクトリをfooに変更 cd foo
カレントディレクトリが「/home/kimoto」だった場合は、上記のコマンドを実行すると、カレントディレクトリは「/home/kimoto/foo」に変わります。
「foo」のようなパスの表現を相対パスといいます。
cdコマンドの引数に絶対パスを指定することもできます。絶対パスは「/」で始まり、ルートディレクトリからのファイルの位置を表現します。
# カレントディレクトリを「/home/kimoto/foo」に変更 cd /home/kimoto/foo
Linuxのコマンドで、パスが引数になっているものは、相対パスと絶対パスの両方が受け取れるようになっています。
ホームディレクトリの表現
ホームディレクトリは「~」で表現できます。これは、シェルによって、ホームディレクトリに展開されます。ホームディレクトリへの移動は、次のように簡単に書けます。
# カレントディレクトリをホームディレクトリに変更 cd ~
ファイルやディレクトリを一覧するコマンド
ファイルやディレクトリを一覧するコマンドについて解説します。ディレクトリという言葉は、Windowsユーザーの方は聞きなれないと思います。ディレクトリは、Windowsのフォルダに該当します。
ファイルの一覧を表示する - lsコマンド
ファイルの一覧を表示するにはlsコマンドを使用します。
# ファイルの一覧を表示 ls
出力結果です。現在のディレクトリにあるファイルの一覧が表示されます。
convert_markdown.pl giblog.conf lib public README serve.pl templates
Linuxでは、ディレクトリのこともファイルと呼びます。Linuxでは、ディレクトリは、特別なファイルという扱いです。ですので、ファイル一覧と言ったときに、ディレクトリも含んでいるということに注意してください。
1行ずつファイルを表示する
「-1」オプション(数字の1)を使うとlsの出力結果を1行ずつにできます。
ls -1
出力結果です。1行ずつ表示しています。
convert_markdown.pl giblog.conf lib public README serve.pl templates
ファイル一覧の詳細表示
lsコマンドで「-l」オプションを使用すると、ファイルの一覧を詳細表示で見れます。
# ファイル一覧 - 詳細表示 ls -l
出力結果です。ファイルの一覧を詳細表示で見れます。
-rw-r--r-- 1 kimoto kimoto 1116 Aug 15 08:28 convert_markdown.pl -rw-r--r-- 1 kimoto kimoto 162 Sep 11 08:42 giblog.conf drwxrwxr-x 3 kimoto kimoto 4096 Aug 10 15:01 lib drwxrwxr-x 7 kimoto kimoto 4096 Aug 10 15:04 public -rw-r--r-- 1 kimoto kimoto 227 Aug 10 15:01 README -rw-r--r-- 1 kimoto kimoto 219 Aug 10 15:01 serve.pl drwxrwxr-x 5 kimoto kimoto 4096 Aug 10 15:01 templates
一覧表示で見れる情報です。
- ファイルパーミッション
- (説明省略)
- 所有者ユーザー
- 所有者グループ
- ファイルサイズ(単位はバイト)
- ファイルの更新月
- ファイルの更新日
- ファイルの更新時刻
- ファイル名
ファイルパーミッション、所有者ユーザー、所有者グループについては、この後に解説します。
ファイルサイズに単位をつける
ファイルサイズに単位をつけたい場合は「-h」オプションを加えます。
# ファイルサイズに単位をつける ls -l -h
Linxuコマンドでは、一文字のオプションは、たいていの場合、次のように合体させることもできるので覚えておきましょう。
ls -lh
出力結果です。ファイルサイズに単位がつきました。
-rw-r--r-- 1 kimoto kimoto 1.1K Aug 15 08:28 convert_markdown.pl -rw-r--r-- 1 kimoto kimoto 162 Sep 11 08:42 giblog.conf drwxrwxr-x 3 kimoto kimoto 4.0K Aug 10 15:01 lib drwxrwxr-x 7 kimoto kimoto 4.0K Aug 10 15:04 public -rw-r--r-- 1 kimoto kimoto 227 Aug 10 15:01 README -rw-r--r-- 1 kimoto kimoto 219 Aug 10 15:01 serve.pl drwxrwxr-x 5 kimoto kimoto 4.0K Aug 10 15:01 templates
隠しファイルを表示する
Linuxでは、先頭が「.」で始まる隠しファイルを隠しファイルと呼びます。隠しファイルも含めて表示するには「-a」オプションを使用します。
ls -la
出力結果です。先頭が「.」で始まる、隠しファイルが表示されました。
drwxrwxr-x 6 kimoto kimoto 4096 Aug 14 17:51 . drwxrwxr-x 40 kimoto kimoto 4096 Nov 9 10:08 .. -rw-r--r-- 1 kimoto kimoto 1116 Aug 15 08:28 convert_markdown.pl -rw-r--r-- 1 kimoto kimoto 162 Sep 11 08:42 giblog.conf drwxrwxr-x 8 kimoto kimoto 4096 Oct 12 19:52 .git -rw-r--r-- 1 kimoto kimoto 8 Aug 10 15:01 .gitignore drwxrwxr-x 3 kimoto kimoto 4096 Aug 10 15:01 lib drwxrwxr-x 7 kimoto kimoto 4096 Aug 10 15:04 public -rw-r--r-- 1 kimoto kimoto 227 Aug 10 15:01 README -rw-r--r-- 1 kimoto kimoto 219 Aug 10 15:01 serve.pl drwxrwxr-x 5 kimoto kimoto 4096 Aug 10 15:01 templates
Linuxでは、隠しファイルとは、単に、先頭が「.」で始まるファイルという意味です。ユーザーが、自分で作成することもできます。
「.」「..」は、特別なディレクトリです。「.」は、自分自身のディレクトリを意味し、「..」は一つ上の階層のディレクトリを意味します。
「.git」と「.gitignore」は、Gitで利用されている隠しファイルです。
サブディレクトリを含めたファイル一覧 - findコマンド
サブディレクトリをを含めたファイル一覧を取得するにはfindコマンドを使用します。
# サブディレクトリを含めたファイル一覧を取得 find /usr/local/lib
findコマンドの出力結果のサンプルです。サブディレクトリも含めたファイル一覧が表示されます。
/usr/local/lib /usr/local/lib/liblept.so.3.0.0 /usr/local/lib/liblept.so.3 /usr/local/lib/liblept.so /usr/local/lib/liblept.la /usr/local/lib/liblept.a /usr/local/lib/libtesseract.so.3.0.2 /usr/local/lib/libtesseract.so.3 /usr/local/lib/libtesseract.so /usr/local/lib/libtesseract.la /usr/local/lib/libtesseract.a /usr/local/lib/pkgconfig /usr/local/lib/pkgconfig/tesseract.pc
カレントディレクトリのファイル一覧を取得したい場合は、次のようにします。
# カレントディレクトリのファイル一覧を取得 find .
上記の方法だと、隠しファイルの表示されてしまうので、隠しファイルを除きたい場合は、ワイルドカード「*」を使います。
# 隠しファイルを除いたカレントディレクトリのファイル一覧を取得 find *
ワイルドカード
ワイルドカードは、ワイルドカードの表現にマッチした、隠しファイル以外のすべてのファイルを表現できるシェルの機能です。
たとえば、以下のように表現すると「*.txt」にマッチした、隠しファイル以外のファイルを意味します。
*.txt
ワイルドカードは、単体では、機能せずに、コマンドの引数として渡された場合に、ファイル名の一覧に展開されます。
# ワイルドカードはファイル名の一覧に展開される ls *.txt find *
ファイルやディレクトリを作成・削除するコマンド
ファイルやディレクトリを作成・削除するコマンドです。
ディレクトリを作成する - mkdirコマンド
ディレクトリを作成するにはmkdirコマンドを使用します。
# ディレクトリを作成 mkdir foo
「foo」ディレクトリが作成されます。
「ファイルの作成が成功しました」のようなメッセージは、Linuxでは表示されません。基本的には、Linuxのコマンドは、成功した場合に何も表示せず、エラーの場合に、エラーメッセージを表示するという動作をします。
サブディレクトリも作成 - 「-p」オプション
「-p」オプションを使用すると、サブディレクトリも作成できます。
# サブディレクトリも作成する mkdir -p foo/bar
ディレクトリを削除する - rmdirコマンド
ディレクトリを削除するにはrmdirコマンドを使用します。
# ディレクトリを削除 rmdir foo
fooディレクトリが削除されます。fooディレクトリが空でない場合は、失敗します。fooディレクトリが空でない場合に、ディレクトリを削除したい場合は、この後で紹介する「rm -r」を使います。
ファイルを作成する - touchコマンド
ファイルを作成するにはtouchコマンドを使用します。
# ファイルを作成する touch foo.txt
「foo.txt」という空のファイルが作成されます。
ファイルを削除する - rmコマンド
ファイルを削除するには、rmコマンドを使用します。
# ファイルを削除する rm foo.txt
ディレクトリを削除する
ディレクトリを削除するにはrmコマンドの「-r」オプションを指定します。「-r」の意味はrecursive、再帰的という意味です。
rm -r foo
上記のコマンドを実行すると、ファイルの削除確認が、ファイルのたびに行われます。
強制的に削除するには「-f」オプションを指定します。
rm -rf
このコマンドは、fooとfoo以下にあるすべてのファイルを削除するので、気をつけて使いましょう。この後で紹介するGitでファイル管理を行っておくと、間違って消した場合も、安心です。
ファイルやディレクトリを移動・コピーするコマンド
ファイルをコピーする - cpコマンド
ファイルをコピーするにはcpコマンドを使用します。
# ファイルをコピーする cp foo.txt bar.txt
「foo.txt」を「bar.txt」にコピーします。
ディレクトリをコピーする
ディレクトリをコピーするにはcopyコマンドの「-r」オプションを指定します。
cp -r foo bar
「foo」ディレクトリを「bar」ディレクトリにコピーします。
ファイルを移動する - mvコマンド
ファイルを移動するには、mvコマンドを使用します。
# ファイルの移動 mv foo.txt bar.txt
ディレクトリも一種のファイルなので、mvコマンドで移動できます。
# ディレクトリの移動 mv foo bar
また、Linuxでは、ファイルの移動と、名前の変更は、まったく同じ操作として扱うことを覚えておきましょう。
# ファイル名の変更もmvで行う mv foo.txt bar.txt
ファイルの内容を出力するコマンド
ファイルの内容を出力するコマンドを解説します。
ファイルの内容を出力する
ファイルの内容を出力するにはcatコマンドを使用します。
# ファイルの内容を出力 cat foo.txt
「foo.txt」に記述されている内容が出力されます。
Hello World!
ファイルの先頭の内容を出力する - headコマンド
ファイルの先頭の内容を出力するにはheadコマンドを使用します。大きなファイルの場合に先頭だけ表示したい場合に便利です。
# ファイルの先頭を表示する head foo.txt
表示する行数を指定するには「-20」のようにします。
# 表示する行数を指定 head -20 foo.txt
ファイルの末尾の内容を出力する - tailコマンド
ファイルの末尾の内容を出力するにはtailコマンドを使用します。大きなファイルの場合に末尾だけ表示したい場合に便利です。
# ファイルの末尾を表示する tail foo.txt
表示する行数を指定するには「-20」のようにします。
# 表示する行数を指定 tail -20 foo.txt
ファイル末尾への出力を監視する
tailコマンドの「-f」オプションを使うと、ファイル末尾への出力を監視できます。出力されるたびに、新しい行が表示されます。ログへの出力を見たい場合に便利です。
# ファイル末尾を監視 tail -f foo.txt
ファイルの差分を確認する - diffコマンド
ファイルの差分を確認するにはdiffコマンドを使用します。
diff fruits1.txt fruits2.txt
「fruits1.txt」は以下の内容。
Orange Banana Peach
「fruits2.txt」は以下の内容。
Orange Banana Melon
この場合は、次のような差分が表示されます。
3c3 < Peach --- > Melon
ファイルのアーカイブ化と圧縮を行うコマンド
ファイルのアーカイブ化と圧縮を行うコマンドを解説します。
ファイルのアーカイブ化 - tarコマンド
ファイルのアーカイブ化と展開を行うにはtarコマンドを使用します。アーカイブ化というのは、複数のファイルをひとつのファイルにする処理のことです。
ファイルをアーカイブ化する場合は「cf」オプションを使用します。「project」というディレクトリを「project.tar」という一つのファイルにアーカイブ化します。
# アーカイブ化 tar cf project.tar project
アーカイブ化されたファイルを展開するには「xf」オプションを使用します。「project.tar」を展開して「project」というディレクトリを作成します。
# 展開 tar xf project.tar
「z」オプションを使用すると、GZIP形式への圧縮・解凍も同時に行ってくれます。
# アーカイブ化と圧縮を同時に行う tar cfz project.tar.gz project # 解凍と展開を同時に行う tar xfz project.tar.gz
ファイルの圧縮 - gzipコマンド
GZIP形式のファイルへ圧縮するにはgzipコマンドを使用します。「foo」というファイルは「foo.gz」というファイル名で圧縮されます。
gzip foo
ファイルの解凍 - gunzipコマンド
GZIP形式のファイルの解凍を行うにはgunzipコマンドを使用します。「foo.gz」という圧縮されたファイルが解凍され「foo」になります。
gunzip foo.gz
ファイル内容の検索
ファイル内容を検索するコマンドの解説です。
ファイル内容を検索する - grepコマンド
grepコマンドを使用すると、ファイルの内容を検索して必要な行を取り出すことができます。
# books.txtからPerlが含まれる行を取り出す grep Perl books.txt
出力結果のサンプルです。
Perl Programming Perl Web Development Perl & Linux
検索対象のファイル名は、複数指定することができます。
# 検索対象のファイルはbooks.txtとbooks2.txt grep Perl books.txt books2.txt
大文字・小文字を区別しない検索
大文字・小文字を区別しないで検索するには「-i」オプションを使用します。
# perlが含まれる行を取り出す、大文字・小文字の区別なし grep -i perl books.txt
出力結果のサンプルです。
Perl Programming perl command Perl & Linux
Perlの正規表現を使う
Linuxのgrepコマンドでは「-P」オプションでPerlの正規表現を利用できます。
# grepコマンドでPerlの正規表現を使う grep -P '^(foo|bar)$' foo.txt
あるディレクトリに含まれるすべてのファイルから検索する
あるディレクトリに含まれるすべてのファイルを再帰的に検索するには「-r」オプションを使用します。
# fooディレクトリ以下にあるすべてのファイルから # Perlが含まれる行を取り出す grep -r Perl foo
出力結果のサンプルです。ファイル名とマッチした行の内容が出力されます。
foo/bar/a.txt:Perl Programming foo/b.txt: Perl Web Development foo/bar/baz/c.txt: Perl & Linux
「-l」オプションを指定するとファイル名だけを取り出すことができます。
# fooディレクトリ以下にあるすべてのファイルから # Perlが含まれるファイル一覧を取得 grep -rl Perl foo
ファイル名だけを取り出した場合の出力結果です。
foo/bar/a.txt foo/b.txt foo/bar/baz/c.txt
ファイル内容の置換
ファイル内容の置換を行うコマンドを解説します。ファイル内容を置換するにはsedコマンド、あるいは、perlコマンドを使用します。
置換の処理は、ファイル内容を意図しない内容に書き換えてしまう危険があるので、この後の章で解説するGitによるファイル管理を覚えてから実行することをお勧めします。
sedコマンド
sedコマンドを使って「foo.txt」に含まれるすべての「hello」を「bye」に置き換えてみます。
# sedコマンドですべてのhelloをbyeに置換 sed -e 's/hello/bye/g' foo.txt
perlコマンド
perlコマンドを使って「foo.txt」に含まれるすべての「hello」を「bye」に置き換えてみます。
# perlコマンドで複数のファイル名を指定 perl -pi -e 's/hello/bye/g' foo.txt
複数のファイル名を指定することも可能です。
# perlコマンドですべてのhelloをbyeに置換 perl -pi -e 's/hello/bye/g' foo.txt bar.txt
Perlは、プログラミング言語ですが、慣習的にワンライナーと呼ばれる機能を使って、Linuxコマンドのように、実行することができます。Perlワンライナーでは、Perlのすべてのテキスト処理・正規表現の機能が使えます。
Perlワンライナーについては、この後の章で詳しく解説します。
ファイル内容を編集する - テキストエディタ「vi」
viはCUIで利用できるテキストエディタです。viでは、マウスが使えないので、すべての操作をキーボードで行う必要があります。viエディタを使えるようになることは、Linuxを自由に扱えるようになるための難関のひとつです。最低限、viでテキストファイルを編集して、保存して、終了できるようになる方法を、ここでは紹介します。
viでテキストファイルを開く
テキストファイルを開くには次のようにします。存在しない場合は新規に作成されます。
vi テキストファイル名
foo.txtというファイルを開いてみましょう。
vi foo.txt
viが立ち上がります。
viエディタを終了する
ここで困るのは、viエディタを終了する方法がわからないということだと思うので、viエディタを終了する方法を覚えてしまいましょう。以下の手順になります。
Escを押す
Escを押すことでviはコマンドモードというモードに変わります。viには、文字を編集するための入力モードと、コマンドを実行するためのコマンドモードの二つのモードがあり、viエディタを終了するためには、まず最初にEscを押して、コマンドモードにする必要があります。
次に「:q」と入力しましょう。
:q
「:q」と入力してEnterを押してください。viエディタが終了します。qというエディタを終了させるコマンドを実行しています。コロン「:」はコマンドの前に必要になります。
保存しないで強制終了する
編集内容を保存しないで強制終了するためのコマンドも覚えておきましょう。viエディタでは、エディタの内容に変更がある場合は、qコマンドでは終了することができません。
保存しないで強制終了するにはq!コマンドを使います。Escを押してコマンドモードに変更してから以下のように入力してEnterを押します。
:q!
編集内容の保存
編集内容を保存するには「w」コマンドを使用します。Escを押して、コマンドモードにしてから「:w」と打ってEnterを押すと保存できます。
:w
編集内容を保存して終了
もうひとつ保存して終了も覚えておきましょう。wqコマンドを使用します。Escを押して、コマンドモードにしてから「:wq」と打って、Enterを押すと保存して終了できます。
:wq
三つの終了方法を覚えておけば、間違ってviを起動してしまっても、何とか大丈夫でしょう。
- q - 終了
- q! - 保存しないで終了
- wq - 保存して終了
入力モード
viエディタは最初は、コマンドモードで起動します。viではコマンドモードと入力モードという二つのモードがあります。最初はコマンドモードになっているので、文字を入力するには、入力モードにする必要があります。入力モードにするには、iを押します。
i
入力モードになると、文字を入力できます。abcなど、自由に文字を入力してみてください。iを押した後は、自由に編集できることがわかると思います。deleteキーで、文字を削除できます。
編集した内容を保存したいときは、コマンドモードになってからwコマンドを使います。コマンドモードになるにはまずEscキーを押すのでした。Escキーを押しましょう。次に、以下のように入力して、Enterを押すと、保存できます。
:w
編集するときはまたiを押して、入力モードに切り替えます。
保存して終了したいときは、以下のようにします。
:wq
テキストファイルを開いて、入力モードで編集して、保存できるようになりました。ここでは、紙面の都合上解説できませんでしたが、viには、他にも、さまざまな便利な機能があります。
パーミッションを変更するコマンド
パーミッションを変更するコマンドの解説です。
パーミッションを変更 - chmodコマンド
パーミッションを変更するにはchmodコマンドを使用します。
以下は、foo.txtのパーミッションを644に変更するサンプルです。
chmod 644 foo.txt
以下は、fooというディレクトリののパーミッションを755に変更するサンプルです。
chmod 755 foo
パーミッションとは?
パーミッションについて解説します。
3桁の数字は、左から順に「所有者ユーザーのパーミッション」「所有者グループのパーミッション」「ゲストのパーミッション」を8進数で表現したものです。
8進数のパーミッションは、二進数に変換すると、意味を理解しやすいです。
8進数の6は、2進数で「110」(4 + 2 + 0)です。
8進数の4は、2進数で「100」(4 + 0 + 0)です。
8進数の7は、2進数で「111」(4 + 2 + 1)です。
8進数の5は、2進数で「101」(4 + 0 + 1)です。
2進数したときの3桁は、左から「読込権限」「書込権限」「実行権限」を意味します。
実行権限というのは、ファイルを実行ファイルとして実行できるようにするための権限です。また、ディレクトリを読み書きするためには、ディレクトリに実行権限が必要です。実行権限は、実行ファイルとディレクトリにつけると覚えておきましょう。
例として、644というパーミッションは「所有者ユーザー(u)は読込権限(r)と書込権限(w)」「所有者グループ(g)は読込権限(r)」「ゲスト(o)は読込権限(r)」を持つことを意味します。
# 8進数 644 # 2進数 u g o r w x r w x r w x 1 1 0 1 0 0 1 0 0
例として、755というパーミッションは「所有者ユーザー(u)は読込権限(r)と書込権限(w)と実行権限(x)」「所有者グループ(g)は読込権限(r)と実行権限(x)」「ゲスト(o)は読込権限(r)と実行権限(x)」を持つことを意味します。
# 8進数 755 # 2進数 u g o r w x r w x r w x 1 1 1 1 0 1 1 0 1
所有者ユーザーを変更する - chownコマンド
所有者ユーザーを変更するには、chownコマンドを使用します。
chown kimoto foo.txt
「所有者ユーザー」と「所有者グループ」を変更するには次のように書きます。
# 所有者ユーザーと所有者グループを変更 chown kimoto:webapp foo.txt
所有者グループを変更する - chgrpコマンド
所有者グループを変更するには、chgrpコマンドを使用します。
# 所有者グループを変更する chgrp webapp foo.txt
シンボリックリンクを作成するコマンド
シンボリックリンクの作成について解説します。
シンボリックリンクを作成する - lnコマンド
シンボリックリンクを作成するにはlnコマンドを使用します。シンボリックリンクは、対象のファイル名に別名をつけることができる機能です。
# /usr/binをmybinでアクセスできるようにする ln -s /usr/bin mybin
ディスク容量の確認
ディスク容量を確認する - dfコマンド
ディスク容量を確認するにはdfコマンドを使用します。サイズの単位はバイトです。
# ディスク容量の確認 df
dfコマンドの出力サンプルです。
Filesystem 1K-blocks Used Available Use% Mounted on udev 998332 0 998332 0% /dev tmpfs 204096 648 203448 1% /run /dev/vda3 202226664 8160052 183774432 5% /
「-h」オプションで、ファイルサイズに単位をつけて表示できます。
# ディスク容量に単位をつける df -h
出力結果です。単位がついています。
Filesystem Size Used Avail Use% Mounted on udev 975M 0 975M 0% /dev tmpfs 200M 648K 199M 1% /run /dev/vda3 193G 7.8G 176G 5% /
ディレクトリ容量を確認する - duコマンド
ディレクトリ容量を確認するにはduコマンドを使用します。サイズの単位はバイトです。
du .
duコマンドの出力結果のサンプルです。
5000 ./templates/blog 24 ./templates/common 20 ./templates/static/css 192 ./templates/static/js/google-code-prettify 288 ./templates/static/js 984 ./templates/static/examples/pdf 988 ./templates/static/examples 20 ./templates/static/images/ad 40 ./templates/static/images/book 64 ./templates/static/images/bottom 32 ./templates/static/images/perlbanjo 184 ./templates/static/images/strawberry_perl 32 ./templates/static/images/commandprompt 96 ./templates/static/images/active_perl 752 ./templates/static/images 2164 ./templates/static 7212 ./templates
容量の大きい順に並べ替えるにはsortコマンドとheadコマンドをパイプでつなげます。sortコマンドの「-n」オプションは、数値の大きさで並べ替え、「-r」オプションは、降順を意味しています。
# 容量の多い順に並べ替えて30位まで表示 du . | sort -nr | head -30
出力結果のサンプルです。
129096 . 96944 ./public 84172 ./public/.git 83896 ./public/.git/objects 46048 ./public/.git/objects/pack 24856 ./.git 24392 ./.git/objects 10432 ./public/blog 7376 ./.git/objects/pack 7212 ./templates
シェルスクリプトの実行方法
シェルスクリプトの実行方法を簡単に解説します。ここでは、bashと呼ばれる種類のシェルスクリプトについて解説します。シェルスクリプトを記述すると複数のコマンドを、一度に実行できます。
シェルスクリプトでは、条件分岐や繰り返しなどの文法を記述することができますが、この書籍で扱うのは、シェルスクリプトの実行方法、シェバンを記述して実行ファイルとして実行する方法です。
シェルスクリプトの実行
シェルスクリプトを記述してみます。ファイル名は「echo3.bash」です。echoコマンドを三回実行しています。
echo "Hi" echo "Hello" echo "World!"
シェルスクリプトを「bash」コマンドを実行してみます。
bash echo3.bash
出力結果です。echoコマンドが三回実行されています。
Hi Hello World!
シェルスクリプトを実行ファイルとして実行
bashコマンドなしで、プログラムを実行できるようにしてみましょう。この方法を覚えると、Linuxコマンドを実装できます。
シェバンの記述
方法は、1行目にシェバンと呼ばれる1行を追加するだけです。bashコマンドで実行する場合は、ソースコードの改行コードを気にする必要はありませんでしたが、シェバンを使って、コマンドとしてプログラムを実行する場合は、ソースコードの改行コードはLFになっている必要があるので注意しましょう。
シェバンは「#!」で1行目から始まります。
その後に、bashコマンドを記述します。「/usr/bin/env」コマンドは、その環境における指定したコマンドを実行してくれます。「/usr/bin/env bash」と書くことで、その環境におけるbashを実行してくれます。
bashコマンドなしで実行できる「echo3」です。コマンドらしくみせるために、拡張子もなくしてみました。
#!/usr/bin/env bash echo "Hi" echo "Hello" echo "World!"
実行権限の追加
次に、chmodコマンドを使って、プログラムに実行権限を追加します。実行権限があれば単独のコマンドとして実行できます。
chmod +x echo3
lsコマンドで、パーミッションを確認してみましょう。
-rwxrwxr-x 1 kimoto kimoto 148 Oct 1 17:17 echo3
「x」という実行権限が追加されています。
コマンドの実行
コマンドを実行してみましょう。コマンドを実行するためには、PATH環境変数で指定されているディレクトリにコマンドが存在するか、「/」が含まれている必要があります。絶対パスで指定する場合は、問題ないのですが、カレントディレクトリのコマンドを実行するには、以下のように記述します。
# コマンドを実行 ./echo3
出力結果です。bashコマンドの指定なしで、コマンドが実行できました。
Hi Hello World!
環境変数
環境変数と環境変数を表示・設定するコマンドについて解説します。
環境変数とは
環境変数とは、簡単に書くと、OSが持っている変数のことです。Linuxでは、環境変数は、ユーザー単位で設定することができます。また、プログラムを実行する場合に、一時的に変更することもできます。
環境変数を表示する - envコマンド
# 環境変数を表示する env
環境変数の出力結果のサンプルです。環境変数は「変数名=値」という形で記録されています。
PERLBREW_SHELLRC_VERSION=0.88 MANPATH=/home/kimoto/perl5/perlbrew/perls/perl-5.28.0/man:/usr/kerberos/man:/usr/local/share/man:/usr/share/man/en:/usr/share/man PERLBREW_VERSION=0.88 HOSTNAME=www7402u.sakura.ne.jp PERLBREW_PERL=perl-5.28.0 TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=119.243.98.202 48719 22 OLDPWD=/home/kimoto/labo SSH_TTY=/dev/pts/0 USER=kimoto LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35: PERLBREW_ROOT=/home/kimoto/perl5/perlbrew MAIL=/var/spool/mail/kimoto PATH=/home/kimoto/perl5/perlbrew/bin:/home/kimoto/perl5/perlbrew/perls/perl-5.28.0/bin:/usr/lib/oracle/11.2/client64/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/kimoto/bin:/sbin:/usr/sbin:/usr/local/sbin C_INCLUDE_PATH=/usr/include/oracle/11.2/client64 INPUTRC=/etc/inputrc PWD=/home/kimoto/labo/perlzemilinux LANG=en_US.UTF-8 PERLBREW_HOME=/home/kimoto/.perlbrew SHLVL=1 HOME=/home/kimoto PERLBREW_MANPATH=/home/kimoto/perl5/perlbrew/perls/perl-5.28.0/man PERLBREW_PATH=/home/kimoto/perl5/perlbrew/bin:/home/kimoto/perl5/perlbrew/perls/perl-5.28.0/bin LOGNAME=kimoto CVS_RSH=ssh SSH_CONNECTION=119.243.98.202 48719 59.106.185.196 22 SPVM_TEST_ENABLE_WARNINGS=1 LESSOPEN=|/usr/bin/lesspipe.sh %s ORACLE_HOME=/usr/lib/oracle/11.2/client64 G_BROKEN_FILENAMES=1 _=/bin/env
環境変数を設定する
環境変数を設定する場合は、Bシェル系(sh, bash, ksh)呼ばれるシェルと、Cシェル系(csh)と呼ばれるシェルで設定方法に違いがあります。Linuxの場合は、Bシェル系であると考えましょう。UNIXのひとつである、FreeBSDはCシェル系(csh)です。環境変数名は、大文字で記述するのが、慣習となっています。
Bシェル系
# Bシェル系 export FOO=3
Cシェル系
# Cシェル系 setenv FOO 3