この授業では、Cプログラムのコンパイルと実行をLinuxサーバー上で行います。
そこで、Linuxについて復習しておきましょう。
やりたいこと、知りたいことがはっきりしている人は、[[コマンド逆引きレシピ>#o658e8b6]]からどうぞ。
コマンドの説明がわからない人は、最初から順番に読んでください。
#contents
*シェル [#mc73fd1b]
シェルは、OSを使うためのインターフェースをユーザーに提供するソフトウェアです。
Linuxにログインすると、シェル・プログラムが自動的に起動します。
総合情報センターのLinuxサーバーでは、最初、cshというシェルが起動するように設定されています。
Linux用のシェル・プログラムには、cshの他に、sh, bash, tcsh, zshなどがあります。
*コマンド・プロンプト [#tf548f16]
コマンド・プロンプトは、コマンド入力待ちの状態であることを表すために画面に表示される文字です。
総合情報センターのLinuxサーバーのcshでは、コマンド・プロンプトとして ''luna%'' と表示されます。
%の他に、$, #, >などがコマンド・プロンプトとして使われます。
以下のコマンド入力例にはコマンド・プロンプトも表示していますが、コマンド・プロンプトはユーザーが入力するものではありません。
*ディレクトリー [#m135a1eb]
コンピューターの中で、ファイルを整理するために作るグループのことをディレクトリーといいます。
Windows, OS X, iOS, Androidなどでは、フォルダーと呼ばれます。
Linuxでは、ディレクトリーの区切りをスラッシュ ''/'' で表します。
Windowsでは、フォルダーの区切りをバックスラッシュ ''\'' または円記号 ''¥'' で表します。
**作業ディレクトリー(カレント・ディレクトリー) [#uc3bfc86]
Linuxにログインして作業を行うときに、現在作業を行っているディレクトリーのことを作業ディレクトリーあるいはカレント・ディレクトリーといいます。
pwd コマンドで、作業ディレクトリーの絶対パスを表示します。
作業ディレクトリーの相対パスはドット ''.'' で表し、絶対パスは作業ディレクトリーによって異なります。
''例1'': 作業ディレクトリーを確認する
#geshi(sh){{
luna% pwd
luna7% pwd
}}
''例2'': 作業ディレクトリーにある hello.c を削除する
#geshi(sh){{
luna% rm ./hello.c
luna7% rm ./hello.c
}}
**親ディレクトリー [#h070eb5d]
親ディレクトリーは、ディレクトリーの階層構造において、作業ディレクトリーの1つ上のディレクトリーです。
親ディレクトリーの相対パスはドット2つ .. で表し、絶対パスは作業ディレクトリーによって異なります。
''例1'': 作業ディレクトリーを親ディレクトリー(1つ上のディレクトリー)に変更する
#geshi(sh){{
luna% cd ..
luna7% cd ..
}}
**ホーム・ディレクトリー [#x4757af4]
Linuxにログインしたときのディレクトリーをホーム・ディレクトリーといいます。
ホーム・ディレクトリーの相対パスはチルダ ''~'' で表し、絶対パスはユーザーごとに異なります。
''例1'': 作業ディレクトリーをホーム・ディレクトリーにあるディレクトリー basic_c に変更する
#geshi(sh){{
luna% cd ~/basic_c
luna7% cd ~/basic_c
}}
**ルート・ディレクトリー [#cb7ba520]
ルート・ディレクトリーは、ディレクトリーの階層構造における最上位のディレクトリー、つまり、すべてのファイルやディレクトリーを含むディレクトリーです。
ルート・ディレクトリーの絶対パスはスラッシュ ''/'' で表します。
''例1'': 作業ディレクトリーをルート・ディレクトリーに変更する
#geshi(sh){{
luna% cd /
luna7% cd /
}}
*パス [#y2d282d9]
ファイルまたはディレクトリーを指定するものをパスといい、''絶対パス''と''相対パス''の2種類があります。
**絶対パス [#pd593349]
絶対パスは、ルート・ディレクトリーを基準としてファイルまたはディレクトリーを指定するものです。
対象のファイルまたはディレクトリーが同じであれば、作業ディレクトリに関わらず絶対パスは同じになります。
ルート・ディレクトリーを表す''スラッシュ / で始まっているパス''は絶対パスです。
''例1'': 作業ディレクトリーを/usr/local/binに変更する
#geshi(sh){{
luna% cd /usr/local/bin
luna7% cd /usr/local/bin
}}
**相対パス [#s1283a3c]
相対パスは、作業ディレクトリーを基準としてファイルまたはディレクトリーを指定するものです。
対象のファイルまたはディレクトリーが同じであっても、作業ディレクトリーによって相対パスが異なります。
''スラッシュ / で始まっていないパス''は相対パスとみなされます。
''例1'': 作業ディレクトリーにあるディレクトリー basic_c の中にあるファイル hello.c を削除する
#geshi(sh){{
luna% rm basic_c/hello.c
luna7% rm basic_c/hello.c
}}
*コマンド [#y1284efe]
**cd (change directory) [#e3b9c0f5]
作業ディレクトリーを変更します。
引数として、変更後の作業ディレクトリーを指定します。
引数を指定しない場合は、変更後の作業ディレクトリーがホーム・ディレクトリーになります。
''例1'': 作業ディレクトリーを basic_c に変更する
#geshi(sh){{
luna% cd basic_c
luna7% cd basic_c
}}
''例2'': 作業ディレクトリーを一つ上のディレクトリーに変更する
#geshi(sh){{
luna% cd ..
luna7% cd ..
}}
''例3'': 作業ディレクトリーをホーム・ディレクトリーに変更する
#geshi(sh){{
luna% cd
luna7% cd
}}
**cp (copy) [#h216588c]
指定したファイルまたはディレクトリーを複製します。
第一引数として対象となるファイルまたはディレクトリーの名前、第二引数として複製のファイルまたはディレクトリーの名前指定します。
オプションをつけないときは、ファイルしか複製できません。
R オプションで、ディレクトリーを中身ごと複製します。
''例1'': ファイル test.c を複製して hello.c という名前にする
#geshi(sh){{
luna% cp test.c hello.c
luna7% cp test.c hello.c
}}
''例2'': ファイル test.c をディレクトリー basic_c に複製する(basic_c が存在する場合)
#geshi(sh){{
luna% cp test.c basic_c
luna7% cp test.c basic_c
}}
''例3'': ディレクトリー hello を丸ごとディレクトリー basic_c に複製する(basic_c が存在する場合)
#geshi(sh){{
luna% cp -R hello basic_c
luna7% cp -R hello basic_c
}}
''例4'': ディレクトリー basic_c を丸ごと複製して basic_c_bkup という名前にする(basic_c_bkup が存在しない場合)
#geshi(sh){{
luna% cp -R basic_c basic_c_bkup
luna7% cp -R basic_c basic_c_bkup
}}
**exit (exit) [#s7f452e8]
作業を終了して、シェル・プログラムを終了します。
''例1'': シェル・プログラムを終了する
#geshi(sh){{
luna% exit
luna7% exit
}}
**ls (list) [#b8960fc1]
指定したディレクトリーにあるファイルとディレクトリーのリストを表示します。
このときドット . で始まる名前のファイルは隠しファイル(ディレクトリー)として扱われます。
引数として対象となるディレクトリーを指定します。
引数を指定しない場合は、現在の作業ディレクトリーが対象になります。
a オプションで、名前が . で始まる隠しファイル(ディレクトリー)も全て表示します。
l オプションで、詳細を表示します。
F オプションで、ディレクトリーの名前の後ろにスラッシュ /、実行可能ファイルの名前の後ろにアスタリスク * を表示します。
''例1'': 現在の作業ディレクトリーにあるファイルとディレクトリーのリストを表示する(. で始まる名前のファイルは表示されない)
#geshi(sh){{
luna% ls
luna7% ls
}}
''例2'': 現在の作業ディレクトリーにあるすべてのファイルとディレクトリーのリストを表示する
#geshi(sh){{
luna% ls -a
luna7% ls -a
}}
''例3'': 現在のディレクトリーにあるファイルとディレクトリーのリストを詳細に表示する(. で始まる名前のファイルは表示されない)
#geshi(sh){{
luna% ls -l
luna7% ls -l
}}
''例4'': 現在のディレクトリーにあるすべてのファイルとディレクトリーのリストを詳細に表示する
#geshi(sh){{
luna% ls -al
luna7% ls -al
}}
''例5'': basic_cディレクトリーにあるファイルとディレクトリーのリストを表示する(. で始まる名前のファイルは表示されない)
#geshi(sh){{
luna% ls basic_c
luna7% ls basic_c
}}
''例6'': 現在のディレクトリーにあるファイルとディレクトリーのリストをファイルタイプを表す文字を付けて表示する(. で始まる名前のファイルは表示されない)
#geshi(sh){{
luna% ls -F
luna7% ls -F
}}
**mkdir (make directory) [#v8b72fce]
ディレクトリーを作成します。
引数として、新しく作成するディレクトリーの名前を指定します。
''例1'': ディレクトリー basic_c を新規に作成します。
#geshi(sh){{
luna% mkdir basic_c
luna7% mkdir basic_c
}}
**mv (move) [#n09382a8]
ファイルまたはディレクトリーを移動、または名前を変更します。
第一引数として対象となるファイルまたはディレクトリーの名前、第二引数として移動後のディレクトリーまたは変更後の名前を指定します。
第二引数が指定されたディレクトリーが存在する場合、第一引数で指定されたファイルまたはディレクトリーをそのディレクトリーの中に移動します。
第二引数で指定されたディレクトリーが存在しない場合、第一引数で指定されたファイルまたはディレクトリーをその名前に変更します。
''例1'': ファイル test.c の名前を hello.c に変更する(hello.c が存在しない場合)
#geshi(sh){{
luna% mv test.c hello.c
luna7% mv test.c hello.c
}}
''例2'': ファイル test.c をディレクトリー basic_c の中に移動する(basic_c が存在する場合)
#geshi(sh){{
luna% mv hello.c basic_c/
luna7% mv hello.c basic_c/
}}
**pwd (print working directory) [#pce7038b]
現在の作業ディレクトリーの絶対パスを表示します。
''例1'': 現在の作業ディレクトリーの絶対パスを表示する
#geshi(sh){{
luna% pwd
luna7% pwd
}}
**rm (remove) [#e3600f0f]
指定したファイルまたはディレクトリーを削除します。
オプションをつけないときは、ファイルしか削除できません。
r オプションで、ディレクトリーを中身ごと削除します。
''例1'': ファイル hello.c を削除する
#geshi(sh){{
luna% rm hello.c
luna7% rm hello.c
}}
''例2'': ディレクトリー basic_c を丸ごと削除する
#geshi(sh){{
luna% rm -r basic_c
luna7% rm -r basic_c
}}
**rmdir (remove directory) [#ce895df7]
指定した空ディレクトリーを削除します。
指定したディレクトリーの中に(名前がドット . で始まる隠しファイルも含めて)ファイルまたはフォルダーが含まれている場合は、削除できません。
''例1'': ディレクトリー basic_c を削除する
#geshi(sh){{
luna% rmdir basic_c
luna7% rmdir basic_c
}}
*コマンド逆引きレシピ [#o658e8b6]
-ディレクトリーを作成する [[mkdir>#v8b72fce]]
-ディレクトリーを削除する [[rmdir>#ce895df7]]
-ファイルを削除する [[rm>#e3600f0f]]
-ファイルまたはディレクトリをコピーする [[cp>#h216588c]]
-ファイルまたはディレクトリーを移動する [[mv>#n09382a8]]
-ファイルまたはディレクトリーの名前を変更する [[mv>#n09382a8]]
-作業ディレクトリーを表示する [[pwd>#pce7038b]]
-作業ディレクトリーを変更する [[cd>#e3b9c0f5]]
-作業ディレクトリーにあるファイルとディレクトリーのリストを表示する [[ls>#b8960fc1]]
-作業を終了する [[exit>#s7f452e8]]
*Tips [#x59b08f6]
**補完 [#za9a6d59]
コマンドやファイル名を入力している途中でtabキーを押すと、残りの部分を補完してくれます。
**ヒストリー [#rd74c4e5]
↑キーを押すと、その前に実行したコマンドが表示されます。
↓キーを押すと、その次に実行したコマンドが表示されます。
**ファイルタイプの色 [#u35bbacb]
総合情報センターのLinuxサーバーのcshでは、lsコマンドでリストを表示したときに、ファイルの種類によって色がつきます。
-黒: 通常のファイル
-青: ディレクトリー
-緑: 実行可能ファイル