作成日:2014-04-18
UNIX 入門
2014 年度春用
目次 1 歴史など ... 1 1.1 UNIX とは ... 1 1.2 Linux とは ... 1 2 TSUBAME へログイン と TSUBAME からログアウト ... 1 2.1 TSUBAME へログイン ... 1 2.2 TSUBAME からログアウト ... 5 3 コマンドの入力 と コマンドの実行 ... 6 4 man ... 6 5 ファイル操作 と ディレクトリ操作 ... 6 5.1 WinSCP ... 6 5.2 ファイル と ディレクトリ ... 13 5.3 階層構造 ... 13 5.4 ファイルの指定方法(絶対パス名 と 相対パス名) ... 14 5.5 ホームディレクトリ ... 18 5.6 メタキャラクタ ... 18 5.7 ls ... 18 5.8 pwd ... 19 5.9 cd ... 20 5.10 file ... 20 5.11 less ... 21 5.12 cat ... 21 5.13 mkdir ... 22 5.14 rmdir ... 22 5.15 cp ... 23 5.16 mv ... 31 5.17 rm ... 36 6 ファイルの作成と編集 ... 38 6.1 vi ... 38 6.2 emacs ... 38 7 プログラムの実行... 39 8 grep ... 43 9 リダイレクト ... 44 10 パイプライン ... 49 11 コマンドの順次処理 ... 49 12 エイリアス(別名) ... 50
12.1 alias ... 50 12.2 unalias ... 50 13 シェルスクリプト ... 52 14 アクセス権 ... 53 14.1 ファイルのアクセス権 ... 53 14.2 ディレクトリのアクセス権 ... 54 14.3 アクセス権の数値モードでの指定 ... 54 14.4 特殊なアクセス権(SUID,SGID,sticky ビットの指定) ... 59
14.4.1 SUID (Set User ID) ... 59
14.4.2 SGID (Set Group ID) ... 59
14.4.3 sticky ビット ... 59 14.5 chmod ... 60 14.6 chgrp ... 61 14.7 各アクセス権の意味の確認 ... 62 14.7.1 ディレクトリの r について ... 63 14.7.2 ディレクトリの x について ... 63 14.7.3 ファイルの r について ... 64 14.7.4 ファイルの x について ... 65 14.7.5 ファイルの w について ... 66 14.7.6 ディレクトリの w について ... 67 14.8 所有グループのユーザー(ただし、所有者は除く)のアクセス権 とその他のユ ーザー(=「所有者と所有グループのユーザー」以外のユーザー)のアクセス権 ... 69 15 t2sub ... 70 16 ジョブ と プロセス ... 72 16.1 カーネル と シェル ... 72 16.2 ジョブ ... 73 16.3 プロセス ... 73 16.4 フォアグラウンドジョブの実行 ... 73 16.5 バックグラウンドジョブの実行 ... 73 16.6 フォアグラウンドジョブの終了 ... 74 16.7 フォアグラウンドジョブの停止 ... 74 16.8 jobs ... 74 16.9 fg ... 75 16.10 bg ... 75 16.11 ps ... 76 16.12 kill ... 76
17 find ... 78 18 nkf ... 79
1 歴史など 1.1 UNIX とは
UNIX は AT&T(The American Telephone & Telegraph Company)社で開発 された OS です。ソースコードを配布したので、独自の拡張を施した UNIX が開 発されました。
UNIX の例:HP-UX, Solaris, AIX
1.2 Linux とは
Linux は Linus Torvalds 氏によって開発された、「UNIX 互換 OS」です。Li nux には様々なディストリビューションがあります。
Linux のディストリビューションの例:Red Hat Enterprise Linux, SUSE L inux Enterprise Server, Ubuntu
TSUBAME は SUSE Linux Enterprise Server 11 SP1 です。
2 TSUBAME へログイン と TSUBAME からログアウト 2.1 TSUBAME へログイン 以後、操作をお願いすることになりますが、操作に誤りがある場合や、資料や用意し たファイルに誤りがあると、ご自身のファイルを削除してしまう可能性もありますので、 よくご自身でも確認して、操作をお願いします。 <間違えそうな文字>
0:数字(数字の零)
O:英字(大文字のオー)
1:数字(数字の一)
l:英字(小文字のエル)
I:英字(大文字のアイ)
|:バーティカルバー
コメント [A1]: リーナス・トーバルズ氏 コメント [A2]: 左上に斜線があるのが数字 の一 コメント [A3]: 左上に横線があるのが小文 字のエル2
実際に操作をしてください。 <1>
スタート->すべてのプログラム->Cygwin->Cygwin Bash Shell の順でクリックして、C ygwin を起動
<2> startxwin
と入力し、Enter キーを押す
<3>
4 <4> ssh -Y login-t2.g.gsic.titech.ac.jp -l あなたのユーザー名 と入力1し、Enter キーを押す 例えば、"あなたのユーザー名"が 12B34567 の場合、 ssh -Y login-t2.g.gsic.titech.ac.jp -l 12B34567 と入力し、Enter キーを押す。
"The authenticity of host ***中略*** (yes/no)?" と表示された場合は、「RSA key fingerprint is」の後の文字列が、
TSUBAME2.5 利用の手引き(日本語) 4.2 ログイン
http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/usage.html#i d4
にある「RSA key fingerprint is」の後の文字列と一致していることを確認して、 yes 1 「-l」の「l」は小文字のアルファベットのエルです。バーティカルバー(|)ではありませ ん。 コメント [A4]: エルです コメント [A5]: 表示されない場合は、過去 にログインをした経験があると思います。
と入力し、Enter キーを押す <5> "あなたのユーザー名@login-t2.g.gsic.titech.ac.jp's password:"と表示された ら、 パスワードを入力し、Enter キーを押す (この際、パスワードを入力しても、画面に変化ありません(入力した文字などは表示さ れません)が、気にせずそのままパスワードを入力し、Enter キーを押す)2 <6> あなたのユーザー名@t2a******:~> と表示されるはずです。 2.2 TSUBAME からログアウト
2 "WARNING: Your password has expired. "と表示されたら、
6 実際に操作をしてください。 exit と入力し、Enter キーを押す 3 コマンドの入力 と コマンドの実行 コマンドの入力はキーボードなどから行います。コマンドは次のような形式で入力 します。(「引数」を指定しない場合もあります) コマンド名 引数 引数 … 引数 入力した後、Enter キーを押すことにより、コマンドが実行されます。 4 man マニュアルを見るためのコマンドです。 実際に操作をしてください。 man 1 man と入力して、Enter キーを押すと、man のマニュアルが表示されます。3 ↓キーを押すと下にスクロールします。↑キーを押すと上にスクロールします。Q キーを押 すと終了します。 5 ファイル操作 と ディレクトリ操作 5.1 WinSCP 実際に操作をしてください。 <1> スタート->すべてのプログラム->WinSCP->WinSCP の順でクリックして、WinSCP を起動
3 マニュアルにも情報がありますが、man 1 man の 1 は section number です。
コメント [A6]: スペースがありますので、 注意してください。
コメント [A7]: 数字の 1(いち)です。
コメント [A8]: WinSCP や dolphin も利用 してみると、理解しやすいかもしれない。
<2>
[詳細設定]をチェックして、 接続をクリックして、[接続の保持 null パケットを送信] にチェック
8 <3> [セッション]をクリックして、ホスト名に login-t2.g.gsic.titech.ac.jp と入力し、 [ユーザ名]にあなたのユーザー名を入力し、 [保存]->[OK]の順でクリック
<4> [ログイン]をクリックして、 [警告]が表示された場合は、「ssh-rsa 1024」 の後の文字列が TSUBAME2.5 利用の手引き(日本語) 4.2 ログイン http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/usage.html#i d4
にある「RSA key fingerprint is」の後の文字列と一致していることを確認して、[は い]をクリック
コメント [A9]: 表示されない場合は、過去 にログインした経験があると思います。
10 <5>
<6>
オプション -> リモートパネル -> ツリーの順でクリック
<7>
12 <8> [ディレクトリを開く]に /home/usr2/13OTlec0/lec を入力し、[共有ブックマーク]をクリックし、 [追加]をクリックし、 [開く]をクリック
5.2 ファイル と ディレクトリ ・ファイル:テキストファイル、画像ファイル など ・ディレクトリ:ファイルを格納するもの 5.3 階層構造 ファイルを階層構造で管理しています。 ・一番上の / を 「ルートディレクトリ」 といいます。
・ルートディレクトリにある file_a と directory_1 にある file_a は同じ 名前のファイルですが、別のファイルとして区別します。 / file_a file_a FILE_A directory_1 :ディレクトリ :ファイル
14
・大文字と小文字は区別するので、directory_1 にある file_a と FILE_A は 別のファイルとして区別します。 5.4 ファイルの指定方法(絶対パス名 と 相対パス名) ・カレントディレクトリ:現在いるディレクトリで、「.」(ピリオド 1 つ)で表 します。 ・親ディレクトリ:カレントディレクトリの一つ上のディレクトリで、「..」 (ピリオド 2 つ)で表します。(例:カレントディレクトリを「d2」とすると、 親ディレクトリは「d1」) ・「絶対パス名」での指定は [絶対パス名 1] ルートディレクトリの「/」 [絶対パス名 2] ルートディレクトリから対象のファイルまでの「各ディレク トリの名前」に「/」を付けた文字列 [絶対パス名 3] 「対象のファイル名」の文字列 を結合した文字列で表します。 <例> 下の図の FA の場合、 [絶対パス名 1] 「/」 [絶対パス名 2] 「home/usr2/13OTlec0/lec/d1/d2/」 [絶対パス名 3] 「FA」 を結合した文字列「/home/usr2/13OTlec0/lec/d1/d2/FA」で表します。 コメント [A10]: Windows では区別しない。 TSUBAME からファイルをダウンロード する際に上書きに注意。
d3 / fa FA d1 d2 d4 home usr2 13OTlec0 lec /home/usr2/13OTlec0/lec/d3 / /home/usr2/13OTlec0/lec/d1/d2/fa /home/usr2/13OTlec0/lec/d1/d2/FA /home/usr2/13OTlec0/lec/d1 /home/usr2/13OTlec0/lec/d1/d2 /home/usr2/13OTlec0/lec/d3/d4 /home /home/usr2 /home/usr2/13OTlec0 /home/usr2/13OTlec0/lec
16 ・「相対パス名」での指定は [相対パス名 1] カレントディレクトリを表す「.」(ピリオド 1 つ) [相対パス名 2]「/」 [相対パス名 3] カレントディレクトリから対象のファイルまでの「各ディレ クトリの名前(ただし、親ディレクトリの場合は「..」(ピリオド 2 つ))」に 「/」を付けた文字列 [相対パス名 4]「対象のファイル名」の文字列 を結合した文字列で表します。 <例>下の図の FA は、カレントディレクトリを「d4」とすると、 [相対パス名 1] 「.」 [相対パス名 2] 「/」 [相対パス名 3] 「../../d1/d2/」 [相対パス名 4] 「FA」 を結合した文字列「./../../d1/d2/FA」で表します。
d3 / fa FA d1 d2 d4 home usr2 13OTlec0 lec ./.. ./../.. ./../../d1/d2/fa ./../../d1/d2/FA ./../../d1 ./../../d1/d2 . ./../../. ./.. ./../../. ./../../. ./../../. ./../.. ./../../. .
18 5.5 ホームディレクトリ ホームディレクトリ:ログイン時のカレントディレクトリで、「~」(チルダ)で 表します。 TSUBAME の場合、「/home/usr[0-9]/ユーザー名」です。 ~ユーザー名 でそのユーザーのホームディレクトリを表します。 5.6 メタキャラクタ *:任意の 0 文字以上の文字列 ?:任意の 1 文字 [文字列]:[と]の間の文字列の間の任意の 1 文字 5.7 ls ディレクトリの中身をリスト表示する。 -a : 隠しファイル4も表示する -d : ディレクトリそのものの情報を表示する -l : 詳細表示する(最も左が d だとディレクトリ、-だとファイル) 実際に操作をしてください。 username@t2a006171:~>ls /home/usr2/13OTlec0/lec
Big_memory d1 d3 Hello Mode_test Scripts t2g-lecture-1 username@t2a006171:~>ls -l /home/usr2/13OTlec0/lec
total 224
drwxr-x--- 2 13OTlec0 users 32768 2013-10-28 17:10 Big_memory drwxr-x--- 3 13OTlec0 users 32768 2014-03-26 18:58 d1
drwxr-x--- 3 13OTlec0 users 32768 2014-03-26 18:59 d3 drwxr-x--- 2 13OTlec0 users 32768 2013-10-18 19:27 Hello drwxr-x--- 2 13OTlec0 users 32768 2013-11-11 18:16 Mode_test drwxr-x--- 2 13OTlec0 users 32768 2013-10-28 17:01 Scripts drwxr-x--- 2 13OTlec0 t2g-lecture-1 32768 2013-11-11 21:11 t2g-lecture-1 username@t2a006171:~>ls -a /home/usr2/13OTlec0/lec
. .. Big_memory d1 d3 Hello .kakushi_directory .kakushi_file Mode_test Scripts t2g-lecture-1 username@t2a006171:~>ls -l -a /home/usr2/13OTlec0/lec 4 名前が.で始まるファイルやディレクトリのことです。 コメント [A11]: スクエアブラケット コメント [A12]: 絶対パス名 コメント [A13]: WinSCP の表示と比較し てみてください。 コメント [A14]: lec ディレクトリ内のファ イルのブロック単位のファイルサイズの合 計(らしい) ls -s を実行すると…左にファイルサイズ が表示されます コメント [A15]: 最も左が d なのでディレ クトリ コメント [A16]: ディレクトリの場合はサ ブディレクトリの数(「.」と「..」の 2 つ 以上になるはず)
total 352
drwxr-x--- 10 13OTlec0 users 32768 2014-03-26 18:58 . drwx--x--- 6 13OTlec0 users 32768 2014-03-26 20:18 ..
drwxr-x--- 2 13OTlec0 users 32768 2013-10-28 17:10 Big_memory drwxr-x--- 3 13OTlec0 users 32768 2014-03-26 18:58 d1
drwxr-x--- 3 13OTlec0 users 32768 2014-03-26 18:59 d3 drwxr-x--- 2 13OTlec0 users 32768 2013-10-18 19:27 Hello
drwxr-x--- 2 13OTlec0 users 32768 2013-11-11 21:11 .kakushi_directory -rw-r--- 1 13OTlec0 users 24 2013-10-18 18:49 .kakushi_file drwxr-x--- 2 13OTlec0 users 32768 2013-11-11 18:16 Mode_test drwxr-x--- 2 13OTlec0 users 32768 2013-10-28 17:01 Scripts drwxr-x--- 2 13OTlec0 t2g-lecture-1 32768 2013-11-11 21:11 t2g-lecture-1 username@t2a006171:~>ls -la /home/usr2/13OTlec0/lec
total 352
drwxr-x--- 10 13OTlec0 users 32768 2014-03-26 18:58 . drwx--x--- 6 13OTlec0 users 32768 2014-03-26 20:18 ..
drwxr-x--- 2 13OTlec0 users 32768 2013-10-28 17:10 Big_memory drwxr-x--- 3 13OTlec0 users 32768 2014-03-26 18:58 d1
drwxr-x--- 3 13OTlec0 users 32768 2014-03-26 18:59 d3 drwxr-x--- 2 13OTlec0 users 32768 2013-10-18 19:27 Hello
drwxr-x--- 2 13OTlec0 users 32768 2013-11-11 21:11 .kakushi_directory -rw-r--- 1 13OTlec0 users 24 2013-10-18 18:49 .kakushi_file drwxr-x--- 2 13OTlec0 users 32768 2013-11-11 18:16 Mode_test drwxr-x--- 2 13OTlec0 users 32768 2013-10-28 17:01 Scripts drwxr-x--- 2 13OTlec0 t2g-lecture-1 32768 2013-11-11 21:11 t2g-lecture-1 username@t2a006171:~>ls -l /home/usr2/13OTlec0/lec/Hello/hello.c
-rw-r--- 1 13OTlec0 users 78 2013-10-18 16:06 /home/usr2/13OTlec0/lec/Hello/hello.c username@t2a006171:~>ls -ld /home/usr2/13OTlec0/lec
drwxr-x--- 10 13OTlec0 users 32768 2014-03-26 18:58 /home/usr2/13OTlec0/lec
5.8 pwd カレントディレクトリを表示する 実際に操作をしてください。 コメント [A17]: ファイルの場合はハード リンク数 コメント [A18]: -l -a でも –la でも同じ コメント [A19]: 最も左が-なので、ファイ ル
20 username@t2a006171:~>pwd
/home/usr6/username
username@t2a006171:~>ls ./../../usr2/13OTlec0/lec
Big_memory d1 d3 Hello Mode_test Scripts t2g-lecture-1 username@t2a006171:~>ls ./../../../home/usr2/13OTlec0/lec Big_memory d1 d3 Hello Mode_test Scripts t2g-lecture-1 username@t2a006171:~> 5.9 cd カレントディレクトリを変更する cd だけだと、カレントディレクトリをホームディレクトリへ変更する。 実際に操作をしてください。 username@t2a006171:~>cd ~13OTlec0 username@t2a006171:/home/usr2/13OTlec0>pwd /home/usr2/13OTlec0 username@t2a006171:/home/usr2/13OTlec0>cd lec username@t2a006171:/home/usr2/13OTlec0/lec>pwd /home/usr2/13OTlec0/lec username@t2a006171:/home/usr2/13OTlec0/lec>ls
Big_memory d1 d3 Hello Mode_test Scripts t2g-lecture-1 username@t2a006171:/home/usr2/13OTlec0/lec>ls .
Big_memory d1 d3 Hello Mode_test Scripts t2g-lecture-1 username@t2a006171:/home/usr2/13OTlec0/lec>cd username@t2a006171:~>pwd /home/usr6/username username@t2a006171:~> 5.10 file ファイルタイプを特定する 見てるだけでも大丈夫です。 username@t2a006171:~>cd ~13OTlec0/lec username@t2a006171:/home/usr2/13OTlec0/lec>pwd コメント [A20]: カレントディレクトリ がわかりました…絶対パス名で /home/usr2/13OTlec0/lec を相対パス 名ではどう表現するのか考えてみてく ださい。 コメント [A21]: 相対パス名 コメント [A22]: 一つ上の実行結果と同じ であることを確認してください。 コメント [A23]: ~ユーザー名はそのユー ザーのホームディレクトリ 画面の表示だと、資料の表示に比べ、~の 記号が上のほうに表示されるかもしれませ んが、気にしないでください。 コメント [A24]: ディレクトリを指定しな い場合はカレントディレクトリをリスト表 示 コメント [A25]: ls と ls . の結果が同じであることを確認してくださ い。 コメント [A26]: 「.」はカレントディレク トリです。 コメント [A27]: cd だけなので、カレント ディレクトリをホームディレクトリへ変更。 コメント [A28]: ここがあなたのユーザー 名になるはずです。
/home/usr2/13OTlec0/lec
username@t2a006171:/home/usr2/13OTlec0/lec>ls
Big_memory d1 d3 Hello Mode_test Scripts t2g-lecture-1 username@t2a006171:/home/usr2/13OTlec0/lec>file d1 d1: directory username@t2a006171:/home/usr2/13OTlec0/lec>file d? d1: directory d3: directory username@t2a006171:/home/usr2/13OTlec0/lec>file d[012] d1: directory username@t2a006171:/home/usr2/13OTlec0/lec>file d[3-9] d3: directory username@t2a006171:/home/usr2/13OTlec0/lec>file d1/d2/fa d1/d2/fa: ASCII text
username@t2a006171:/home/usr2/13OTlec0/lec>file d1/d2/* d1/d2/fa: ASCII text
d1/d2/FA: ASCII text
username@t2a006171:/home/usr2/13OTlec0/lec>cd ~ username@t2a006171:~>pwd /home/usr6/username username@t2a006171:~> 5.11 less ファイルの内容を 1 画面ずつ表示 実際に操作をしてください。 username@t2a006171:~>less /etc/services username@t2a006171:~> ↓キーを押すと下にスクロールします。↑キーを押すと上にスクロールします。Q キーを押すと終了します。 /キーを押して、文字列を入力後、Enter キーを押すと、検索できます。 5.12 cat コメント [A29]: メタキャラクタ ? コメント [A30]: メタキャラクタ [文字列] コメント [A31]: メタキャラクタ [文字列] コメント [A32]: メタキャラクタ *
22 ファイルの内容を表示 見てるだけでも大丈夫です。 username@t2a006171:~>cat ~13OTlec0/lec/d1/d2/fa This is fa. username@t2a006171:~>cat ~13OTlec0/lec/d1/d2/FA This is FA. username@t2a006171:~> 5.13 mkdir ディレクトリを作成する 実際に操作をしてください。 username@t2a006171:~>cd ~ username@t2a006171:~>mkdir mylec username@t2a006171:~>cd mylec username@t2a006171:~/mylec>ls -l total 0 username@t2a006171:~/mylec>mkdir testdir username@t2a006171:~/mylec>ls -l total 32
drwxr-xr-x 2 username users 32768 2014-04-03 20:14 testdir username@t2a006171:~/mylec> 5.14 rmdir ディレクトリを削除する 削除するためにはディレクトリが空である必要があります。 実際に操作をしてください。 username@t2a006171:~/mylec>ls -l total 32 コメント [A33]: 大文字と小文字は区別さ れます。 コメント [A34]: ホームディレクトリ
drwxr-xr-x 2 username users 32768 2014-04-03 20:14 testdir username@t2a006171:~/mylec>rmdir testdir username@t2a006171:~/mylec>ls -l total 0 username@t2a006171:~/mylec> 見てるだけでも大丈夫です。 username@t2a006171:~/mylec>ls -l total 0 username@t2a006171:~/mylec>mkdir d1 username@t2a006171:~/mylec>cd d1 username@t2a006171:~/mylec/d1>mkdir d2 username@t2a006171:~/mylec/d1>cd .. username@t2a006171:~/mylec>ls -l total 32 drwxr-xr-x 3 username users 32768 2014-04-03 20:25 d1 username@t2a006171:~/mylec>ls -l d1 total 32 drwxr-xr-x 2 username users 32768 2014-04-03 20:25 d2 username@t2a006171:~/mylec>rmdir d1
rmdir: failed to remove `d1': Directory not empty username@t2a006171:~/mylec>ls -l total 32 drwxr-xr-x 3 username users 32768 2014-04-03 20:25 d1 username@t2a006171:~/mylec>cd d1 username@t2a006171:~/mylec/d1>rmdir d2 username@t2a006171:~/mylec/d1>cd .. username@t2a006171:~/mylec>rmdir d1 username@t2a006171:~/mylec>ls -l total 0 username@t2a006171:~/mylec> 5.15 cp ファイルをコピーする コメント [A35]: d1 が空ではない(d2 があ る)ので削除できない コメント [A36]: 削除されていないことを 確認 コメント [A37]: d1 が空なので削除できる コメント [A38]: 削除されたことを確認
24 -r : ディレクトリとその配下のファイルをコピーする -i:上書きするか尋ねられます(y を入力して、Enter キーを押すと、上書きさ れます) 実際に操作をしてください。 username@t2a006161:~/mylec>ls -l ~13OTlec0/lec/d1/d2/fa
-rw-r--- 1 13OTlec0 users 13 2014-03-26 18:59 /home/usr2/13OTlec0/lec/d1/d2/fa username@t2a006161:~/mylec>cat ~13OTlec0/lec/d1/d2/fa This is fa. username@t2a006161:~/mylec>ls -ld . drwxr-xr-x 2 username users 32768 2014-04-04 16:41 . username@t2a006161:~/mylec>ls -l . total 0 username@t2a006161:~/mylec>cp ~13OTlec0/lec/d1/d2/fa . username@t2a006161:~/mylec>ls –l . total 32 -rw-r--- 1 username users 13 2014-04-04 16:50 fa username@t2a006161:~/mylec>cat fa This is fa. username@t2a006161:~/mylec>ls -l ~13OTlec0/lec/d1/d2/fa
-rw-r--- 1 13OTlec0 users 13 2014-03-26 18:59 /home/usr2/13OTlec0/lec/d1/d2/fa username@t2a006161:~/mylec>
実際に操作をしてください。 username@t2a006161:~/mylec>ls -ld ~13OTlec0/lec/d1/d2
drwxr-x--- 2 13OTlec0 users 32768 2014-03-26 18:59 /home/usr2/13OTlec0/lec/d1/d2 username@t2a006161:~/mylec>ls -l
total 32
-rw-r--- 1 username users 13 2014-04-04 16:50 fa username@t2a006161:~/mylec>cp ~13OTlec0/lec/d1/d2 . cp: omitting directory `/home/usr2/13OTlec0/lec/d1/d2' username@t2a006161:~/mylec>ls -l total 32 コメント [A39]: .はカレントディレクトリ です。 コメント [A40]: fa はありません。 コメント [A41]: fa をカレントディレクト リにコピー コメント [A42]: コピーされた fa があるこ とを確認 コメント [A43]: コピーなのでもとのファ イルはそのまま コメント [A44]: d2 はディレクトリです。 コメント [A45]: d2 はありません。
-rw-r--- 1 username users 13 2014-04-04 16:50 fa username@t2a006161:~/mylec>cp -r ~13OTlec0/lec/d1/d2 . username@t2a006161:~/mylec>ls -l total 64 drwxr-x--- 2 username users 32768 2014-04-04 17:42 d2 -rw-r--- 1 username users 13 2014-04-04 16:50 fa username@t2a006161:~/mylec> ls -ld ~13OTlec0/lec/d1/d2
drwxr-x--- 2 13OTlec0 users 32768 2014-03-26 18:59 /home/usr2/13OTlec0/lec/d1/d2
「cp ABC xyz」について、xyz が何か?によって、動作が異なります。 コメント [A46]: ファイルのコピーと同じ ようにしても…できない。 コメント [A47]: ディレクトリのコピーは-r が必要。 コメント [A48]: コピーなので、もとのフ ァイルはそのまま
26
xyz ディレクトリがあり、xyz ディレクトリに ABC ファイルがない場合、xyz ディレクトリに ABC を同名でコピー(上記の場合は ABC が~13OTlec0/lec/d1/d 2/fa で xyz が.(カレントディレクトリ)でした) カレントディレクトリ ファイル名:ABC ファイルの内容:ABC xyz カレントディレクトリ ファイル名:ABC ファイルの内容:ABC xyz ファイル名:ABC ファイルの内容:ABC cp ABC xyz
xyz ディレクトリがあり、xyz ディレクトリに ABC がある場合は(./xyz/ABC が ある場合は)、xyz ディレクトリにあった ABC(./xyz/ABC)は上書きされる) カレントディレクトリ ファイル名:ABC ファイルの内容:ABC xyz カレントディレクトリ ファイル名:ABC ファイルの内容:ABC xyz ファイル名:ABC ファイルの内容:ABC cp ABC xyz ファイル名:ABC ファイルの内容:あいう
28
xyz ディレクトリも xyz ファイルもない場合、ABC を xyz の名前でカレントデ ィレクトリ内にコピー カレントディレクトリ ファイル名:ABC ファイルの内容:ABC cp ABC xyz カレントディレクトリ ファイル名:ABC ファイルの内容:ABC ファイル名:xyz ファイルの内容:ABC
xyz ファイルがある場合、既にある xyz ファイルは ABC を xyz の名前でコピー したファイルで上書き カレントディレクトリ ファイル名:ABC ファイルの内容:ABC ファイル名:xyz ファイルの内容:xyz cp ABC xyz カレントディレクトリ ファイル名:ABC ファイルの内容:ABC ファイル名:xyz ファイルの内容:ABC
30 見てるだけでも大丈夫です。 username@t2a006161:~/mylec>cd d2 username@t2a006161:~/mylec/d2>ls –l total 64 -rw-r--- 1 username users 13 2014-04-04 17:42 fa -rw-r--- 1 username users 13 2014-04-04 17:42 FA username@t2a006161:~/mylec/d2>cat fa This is fa. username@t2a006161:~/mylec/d2>cat FA This is FA. username@t2a006161:~/mylec/d2>cp fa f1 username@t2a006161:~/mylec/d2>ls -l total 96 -rw-r--- 1 username users 13 2014-04-04 20:06 f1 -rw-r--- 1 username users 13 2014-04-04 17:42 fa -rw-r--- 1 username users 13 2014-04-04 17:42 FA username@t2a006161:~/mylec/d2>cat f1 This is fa. username@t2a006161:~/mylec/d2>cp FA f1 username@t2a006161:~/mylec/d2>ls -l total 96 -rw-r--- 1 username users 13 2014-04-04 20:07 f1 -rw-r--- 1 username users 13 2014-04-04 17:42 fa -rw-r--- 1 username users 13 2014-04-04 17:42 FA username@t2a006161:~/mylec/d2>cat f1 This is FA. username@t2a006161:~/mylec/d2>cp -i fa f1 cp: overwrite `f1'? n username@t2a006161:~/mylec/d2>cat f1 This is FA. コメント [A49]: f1 ディレクトリもファイ ルもない。fa を f1 の名前でカレントディ レクトリ内にコピー コメント [A50]: cat fa と同じ実行結果であることを確認 コメント [A51]: f1 ファイルがある。既に あるf1 ファイルは FA を f1 の名前でコピ ーしたファイルで上書き コメント [A52]: cat FA と同じ実行結果で あることを確認 コメント [A53]: n と入力し、Enter キー を押す。 コメント [A54]: 上書きされていないこと を確認
username@t2a006161:~/mylec/d2>cp -i fa f1 cp: overwrite `f1'? username@t2a006161:~/mylec/d2>cat f1 This is FA. username@t2a006161:~/mylec/d2>cp -i fa f1 cp: overwrite `f1'? y username@t2a006161:~/mylec/d2>cat f1 This is fa. username@t2a006161:~/mylec/d2> 5.16 mv ファイルを移動する -i:上書きするか尋ねられます(y を入力して、Enter キーを押すと、上書きさ れます) 「mv ABC xyz」について、xyz が何か?によって、動作が異なります。 コメント [A55]: 何も入力せずに、Enter キーを押す。 コメント [A56]: 上書きされていないこと を確認 コメント [A57]: y と入力し、Enter キー を押す。 コメント [A58]: 上書きされた
32
xyz ディレクトリがある場合、xyz ディレクトリに ABC を移動(xyz ディレクト リに ABC がある場合は(./xyz/ABC がある場合は)、xyz ディレクトリにあった ABC(./xyz/ABC)は上書きされる) カレントディレクトリ ファイル名:ABC ファイルの内容:ABC xyz カレントディレクトリ xyz ファイル名:ABC ファイルの内容:ABC mv ABC xyz
xyz ディレクトリも xyz ファイルもない場合、ABC を xyz の名前に変更して移 動 カレントディレクトリ ファイル名:ABC ファイルの内容:ABC mv ABC xyz カレントディレクトリ ファイル名:xyz ファイルの内容:ABC
34
xyz ファイルがある場合、既にある xyz ファイルは ABC を xyz の名前に変更し たファイルで上書き カレントディレクトリ ファイル名:ABC ファイルの内容:ABC ファイル名:xyz ファイルの内容:xyz mv ABC xyz カレントディレクトリ ファイル名:xyz ファイルの内容:ABC
見てるだけでも大丈夫です。 username@t2a006163:~/mylec>cd .. username@t2a006163:~/mylec>ls -l total 64 drwxr-x--- 2 username users 32768 2014-04-07 19:41 d2 -rw-r--- 1 username users 13 2014-04-04 18:04 fa username@t2a006163:~/mylec>ls -l d2 total 96 -rw-r--- 1 username users 13 2014-04-04 20:10 f1 -rw-r--- 1 username users 13 2014-04-04 17:42 fa -rw-r--- 1 username users 13 2014-04-04 17:42 FA username@t2a006163:~/mylec>cat d2/FA This is FA. username@t2a006163:~/mylec>mv d2/FA . username@t2a006163:~/mylec>ls -l total 96 drwxr-x--- 2 username users 32768 2014-04-07 19:42 d2 -rw-r--- 1 username users 13 2014-04-04 18:04 fa -rw-r--- 1 username users 13 2014-04-04 17:42 FA username@t2a006163:~/mylec>ls -l d2 total 64 -rw-r--- 1 username users 13 2014-04-04 20:10 f1 -rw-r--- 1 username users 13 2014-04-04 17:42 fa username@t2a006163:~/mylec>cat FA This is FA. username@t2a006163:~/mylec>mv FA FX username@t2a006163:~/mylec>ls -l total 96 drwxr-x--- 2 username users 32768 2014-04-07 19:42 d2 -rw-r--- 1 username users 13 2014-04-04 18:04 fa -rw-r--- 1 username users 13 2014-04-04 17:42 FX username@t2a006163:~/mylec>cat FX コメント [A59]: FA をカレントディレクト リに移動 コメント [A60]: FA がカレントディレクト リにある コメント [A61]: FA がなくなっていること を確認(cp とは違います) コメント [A62]: ファイル名を変更
36 This is FA. username@t2a006163:~/mylec>cat fa This is fa. username@t2a006163:~/mylec>mv FX fa username@t2a006163:~/mylec>ls -l total 64 drwxr-x--- 2 username users 32768 2014-04-07 20:15 d2 -rw-r--- 1 username users 13 2014-04-07 20:10 fa username@t2a006163:~/mylec>cat fa This is FA. username@t2a006163:~/mylec> mv -i は省略(cp とほぼ同じです) 5.17 rm ファイルを削除する -i:削除するか尋ねられます(y を入力して、Enter キーを押すと、削除されま す) -r:ディレクトリとその配下のファイルを削除する 見てるだけでも大丈夫です。 username@t2a006163:~/mylec>ls -l total 64 drwxr-x--- 2 username users 32768 2014-04-07 20:15 d2 -rw-r--- 1 username users 13 2014-04-07 20:10 fa username@t2a006163:~/mylec>rm fa username@t2a006163:~/mylec>ls -l total 32 drwxr-x--- 2 username users 32768 2014-04-07 20:15 d2 username@t2a006163:~/mylec>ls -l d2 total 64 コメント [A63]: fa は上書きされる コメント [A64]: fa がなくなっていること を確認。(Windows のようにゴミ箱に移動 されているわけではない)
-rw-r--- 1 username users 13 2014-04-07 20:12 f1 -rw-r--- 1 username users 13 2014-04-07 20:10 fa username@t2a006163:~/mylec>rm -i d2/f1
rm: remove regular file `d2/f1'? n username@t2a006163:~/mylec>ls -l d2 total 64
-rw-r--- 1 username users 13 2014-04-07 20:12 f1 -rw-r--- 1 username users 13 2014-04-07 20:10 fa username@t2a006163:~/mylec>rm -i d2/f1
rm: remove regular file `d2/f1'? username@t2a006163:~/mylec>ls -l d2 total 64
-rw-r--- 1 username users 13 2014-04-07 20:12 f1 -rw-r--- 1 username users 13 2014-04-07 20:10 fa username@t2a006163:~/mylec>rm -i d2/f1
rm: remove regular file `d2/f1'? y username@t2a006163:~/mylec>ls -l d2 total 32 -rw-r--- 1 username users 13 2014-04-07 20:10 fa username@t2a006163:~/mylec>ls -l total 32 drwxr-x--- 2 username users 32768 2014-04-07 20:19 d2 username@t2a006163:~/mylec>rm d2
rm: cannot remove `d2': Is a directory username@t2a006163:~/mylec>ls -l total 32
drwxr-x--- 2 username users 32768 2014-04-07 20:19 d2 username@t2a006163:~/mylec>rmdir d2
rmdir: failed to remove `d2': Directory not empty username@t2a006163:~/mylec>ls -l total 32 drwxr-x--- 2 username users 32768 2014-04-07 20:19 d2 username@t2a006163:~/mylec>rm -r d2 username@t2a006163:~/mylec>ls -l total 0 username@t2a006163:~/mylec> コメント [A65]: n と入力して Enter キー を押す。 コメント [A66]: 削除されていない コメント [A67]: 何も入力せずに、Enter キーを押す。 コメント [A68]: 削除されていない コメント [A69]: y と入力して、Enter キ ーを押す。 コメント [A70]: 削除される。 コメント [A71]: -r なしでは、ディレクト リは削除できない コメント [A72]: rmdir はディレクトリが 空でないと削除できない コメント [A73]: ディレクトリとその配下 のファイルを削除するのは -r
38 6 ファイルの作成と編集 6.1 vi i:入力モードになる ←↓↑→:その方向にカーソルを移動 Esc:コマンドモードになる コマンドモードで:wq:ファイルを保存して終了 コマンドモードで:q!:ファイルを保存しないで終了 見てるだけでも大丈夫です。 username@t2a006163:~/mylec>ls -l total 0 username@t2a006163:~/mylec>vi vitest.txt username@t2a006163:~/mylec>ls -l total 32
-rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006163:~/mylec>cat vitest.txt aaa bbb ccc username@t2a006163:~/mylec>vi vitest.txt username@t2a006163:~/mylec>ls -l total 32
-rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006163:~/mylec>cat vitest.txt aaa bbb ccc username@t2a006163:~/mylec> 6.2 emacs コメント [A74]: :q!のテスト
Ctrl キーを押しながら╲5 更に japanese と入力し Enter キーを押す:日本語 入力
見てるだけでも大丈夫です。 username@t2a006163:~/mylec>ls -l
total 32
-rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006163:~/mylec>emacs emacstest.txt
username@t2a006163:~/mylec>ls –l total 64
-rw-r--r-- 1 username users 12 2014-04-07 20:46 emacstest.txt -rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006163:~/mylec>cat emacstest.txt aaa bbb ccc username@t2a006163:~/mylec>emacs emacstest.txt username@t2a006163:~/mylec>ls -l total 96
-rw-r--r-- 1 username users 42 2014-04-07 20:47 emacstest.txt -rw-r--r-- 1 username users 12 2014-04-07 20:46 emacstest.txt~ -rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006163:~/mylec>cat emacstest.txt aaa bbb ccc username@t2a006163:~/mylec> 7 プログラムの実行 /home/usr2/13OTlec0/lec/Hello/hello.c
40 と同じファイルを作成して gcc ファイル名 でコンパイル。 ./a.out で実行。 username@t2a006163:~/mylec>cat ~13OTlec0/lec/Hello/hello.c #include<stdio.h> int main(void){ printf("Hello World!!\n"); return 0; } username@t2a006163:~/mylec>emacs hello.c username@t2a006163:~/mylec>ls -l total 128
-rw-r--r-- 1 username users 42 2014-04-07 20:47 emacstest.txt -rw-r--r-- 1 username users 12 2014-04-07 20:46 emacstest.txt~ -rw-r--r-- 1 username users 78 2014-04-07 20:59 hello.c -rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006163:~/mylec>cat hello.c #include<stdio.h> int main(void){ printf("Hello World!!\n"); return 0; } username@t2a006163:~/mylec>gcc hello.c username@t2a006163:~/mylec>ls -l total 160
-rwxr-xr-x 1 username users 11782 2014-04-07 20:59 a.out
-rw-r--r-- 1 username users 42 2014-04-07 20:47 emacstest.txt -rw-r--r-- 1 username users 12 2014-04-07 20:46 emacstest.txt~ -rw-r--r-- 1 username users 78 2014-04-07 20:59 hello.c -rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt
username@t2a006163:~/mylec>./a.out Hello World!! 実際に操作をしてください。 username@t2a006180:~/mylec>mkdir modetest username@t2a006180:~/mylec>cd modetest/ username@t2a006180:~/mylec/modetest>cp -i ~13OTlec0/lec/Mode_test/make_sh_mode_test.c . username@t2a006180:~/mylec/modetest>less make_sh_mode_test.c username@t2a006180:~/mylec/modetest>gcc make_sh_mode_test.c username@t2a006180:~/mylec/modetest>ls -l total 64
-rwxr-xr-x 1 username users 11934 2014-04-08 21:00 a.out
-rw-r--- 1 username users 2304 2014-04-08 20:59 make_sh_mode_test.c username@t2a006180:~/mylec/modetest>./a.out 実際に操作をしてください。 username@t2a006180:~/mylec/modetest>cd .. username@t2a006180:~/mylec>mkdir bigmem username@t2a006180:~/mylec>cd bigmem username@t2a006180:~/mylec/bigmem>cp -i ~13OTlec0/lec/Big_memory/big_memory.c . username@t2a006180:~/mylec/bigmem>cat big_memory.c #include <stdio.h> #define ROW_SIZE 1000*1000*1000 #define COLUMN_SIZE 8 int main(void){ char str[ROW_SIZE][COLUMN_SIZE]; unsigned long i_r,i_c;
for( i_r=0 ; i_r<ROW_SIZE ; i_r++ ){ for( i_c=0 ; i_c<COLUMN_SIZE ; i_c++ ){ if( i_c==0 ){ str[i_r][i_c]='H'; コメント [A75]: あとは C 言語を勉強すれ ば、ここまででTSUBAME で C 言語のプ ログラムを作成して、実行できるようにな りました。…が…1 行の実行結果だし、ス ーパーコンピューターじゃなくても… コメント [A76]: 結果が長い …ファイルに 保存したい… コメント [A77]: たくさんメモリが必要な プログラム
42 }else if( i_c==1 ){
str[i_r][i_c]='e'; }else if( i_c==2 ){ str[i_r][i_c]='l'; }else if( i_c==3 ){ str[i_r][i_c]='l'; }else if( i_c==4 ){ str[i_r][i_c]='o'; }else if( i_c>=5 ){ str[i_r][i_c]='!'; } if( i_c==COLUMN_SIZE-1 ){ str[i_r][i_c]='\0'; } } } printf("str[0]:%s\n",str[0]);
printf("str[%lu]:%s\n",ROW_SIZE/(unsigned long)2,str[ROW_SIZE/(unsigned long)2]); printf("str[%lu]:%s\n",(unsigned long)ROW_SIZE-1,str[(unsigned long)ROW_SIZE-1]); return 0; } username@t2a006180:~/mylec/bigmem>gcc big_memory.c username@t2a006180:~/mylec/bigmem>ls -l total 64
-rwxr-xr-x 1 username users 11789 2014-04-08 21:04 a.out -rw-r--- 1 username users 807 2014-04-08 21:03 big_memory.c username@t2a006180:~/mylec/bigmem>./a.out Segmentation fault username@t2a006180:~/mylec/bigmem> TSUBAME2.5 利用の手引き 3.1.2 インタラクティブノードでの制限 http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/resources. html#id4 コメント [A78]: 実行できない。 これを実行するためには...シェルスクリプ トとt2sub
…メモリの使用量に制限があり、メモリ不足のため「Segmentation fault」となり、 実行できない。 TSUBAME2.5 利用の手引き 3.1.3 バッチノード http://tsubame.gsic.titech.ac.jp/docs/guides/tsubame2/html/resources. html#resources-batch 8 grep grep パターン ファイル パターンに一致する行を出力する。 たぶん時間がないので紹介だけ username@t2a006174:~>less /etc/services username@t2a006174:~>grep smtp /etc/services smtp 25/tcp # Simple Mail Transfer smtp 25/udp # Simple Mail Transfer
# Boris B. Maiden <Boris_Maiden&smtp.microcom.com> rsmtp 2390/tcp # RSMTP
44 9 リダイレクト デフォルトの標準入力はキーボードです。 デフォルトの標準出力はディスプレイです。 デフォルトの標準エラー出力はディスプレイです。 コマンド > ファイル:標準出力をファイルにします。 コマンド 1> ファイル:標準出力をファイルにします。(上と同じ) コマンド >> ファイル:標準出力をファイルにします。(追加書き込み) 見てるだけでも大丈夫です。 username@t2a006168:~/mylec>vi aaa.txt username@t2a006168:~/mylec>cat aaa.txt aaa username@t2a006168:~/mylec>vi bbb.txt username@t2a006168:~/mylec>cat bbb.txt bbb コマンド 標準出力 標準エラー出力 標準入力 コマンド 標準出力 標準エラー出力 標準入力
username@t2a006168:~/mylec>cat aaa.txt bbb.txt aaa bbb username@t2a006168:~/mylec>cat bbb.txt aaa.txt bbb aaa username@t2a006168:~/mylec>cat aaa.txt bbb.txt > 0.txt username@t2a006168:~/mylec>cat 0.txt aaa bbb username@t2a006168:~/mylec>cat aaa.txt bbb.txt 1> 1.txt username@t2a006168:~/mylec>cat 1.txt aaa bbb username@t2a006168:~/mylec>cat aaa.txt bbb.txt >> 0.txt username@t2a006168:~/mylec>cat 0.txt aaa bbb aaa bbb username@t2a006168:~/mylec>cat bbb.txt aaa.txt > 0.txt username@t2a006168:~/mylec>cat 0.txt bbb コメント [A79]: こうすると、aaa.txt と bbb.txt を順番に表示します。
46 aaa username@t2a006168:~/mylec> コマンド 2> ファイル:標準エラー出力をファイルにします。 コマンド 2>> ファイル:標準エラー出力をファイルにします。(追加書き込み) 見てるだけでも大丈夫です。 username@t2a006168:~/mylec>ls -l total 352 -rw-r--r-- 1 username users 10 2014-04-09 18:02 0.txt -rw-r--r-- 1 username users 10 2014-04-09 18:01 1.txt -rw-r--r-- 1 username users 5 2014-04-09 17:31 aaa.txt -rwxr-xr-x 1 username users 11782 2014-04-07 20:59 a.out -rw-r--r-- 1 username users 5 2014-04-09 17:31 bbb.txt drwxr-xr-x 2 username users 32768 2014-04-08 21:04 bigmem -rw-r--r-- 1 username users 42 2014-04-07 20:47 emacstest.txt -rw-r--r-- 1 username users 12 2014-04-07 20:46 emacstest.txt~ -rw-r--r-- 1 username users 78 2014-04-07 20:59 hello.c drwxr-xr-x 2 username users 32768 2014-04-08 21:00 modetest -rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006168:~/mylec>cat ccc.txt
cat: ccc.txt: No such file or directory
username@t2a006168:~/mylec>cat ccc.txt > stdout.txt cat: ccc.txt: No such file or directory
username@t2a006168:~/mylec>ls -l total 352 コマンド 標準出力 標準エラー出力 標準入力 コメント [A80]: 上書きされてしまう。 コメント [A81]: これが標準エラー出力
-rw-r--r-- 1 username users 10 2014-04-09 18:02 0.txt -rw-r--r-- 1 username users 10 2014-04-09 18:01 1.txt -rw-r--r-- 1 username users 5 2014-04-09 17:31 aaa.txt -rwxr-xr-x 1 username users 11782 2014-04-07 20:59 a.out -rw-r--r-- 1 username users 5 2014-04-09 17:31 bbb.txt drwxr-xr-x 2 username users 32768 2014-04-08 21:04 bigmem -rw-r--r-- 1 username users 42 2014-04-07 20:47 emacstest.txt -rw-r--r-- 1 username users 12 2014-04-07 20:46 emacstest.txt~ -rw-r--r-- 1 username users 78 2014-04-07 20:59 hello.c drwxr-xr-x 2 username users 32768 2014-04-08 21:00 modetest -rw-r--r-- 1 username users 0 2014-04-09 18:06 stdout.txt -rw-r--r-- 1 username users 13 2014-04-07 20:44 vitest.txt username@t2a006168:~/mylec>cat stdout.txt
username@t2a006168:~/mylec>cat ccc.txt 2> stderr.txt username@t2a006168:~/mylec>cat stderr.txt
cat: ccc.txt: No such file or directory
username@t2a006168:~/mylec>cat ddd.txt 2>> stderr.txt username@t2a006168:~/mylec>cat stderr.txt
cat: ccc.txt: No such file or directory cat: ddd.txt: No such file or directory username@t2a006168:~/mylec> コマンド 1> ファイル 2>&1:標準出力をファイルにして、標準エラー出力を標準出 力(=ファイル)にします。 見てるだけでも大丈夫です。 コマンド 標準出力 標準入力 標準エラー出力 コメント [A82]: ファイルはできる コメント [A83]: 何も表示されない
48 username@t2a006168:~/mylec>cat aaa.txt ccc.txt aaa
cat: ccc.txt: No such file or directory
username@t2a006168:~/mylec>cat aaa.txt ccc.txt 1> stdouterr.txt 2>&1 username@t2a006168:~/mylec>cat stdouterr.txt
aaa
cat: ccc.txt: No such file or directory
コマンド < ファイル:標準入力をファイルにします。
見てるだけでも大丈夫です。 username@t2a006168:~/mylec>sort
suzuki watanabe
sato ←”sato” Enter Ctrl D
sato suzuki watanabe username@t2a006168:~/mylec>emacs meibo.txt username@t2a006168:~/mylec>cat meibo.txt suzuki watanabe sato username@t2a006168:~/mylec>sort < meibo.txt sato コマンド 標準出力 標準エラー出力 標準入力 コメント [A84]: 標準出力の部分 コメント [A85]: 標準エラー出力の部分
suzuki watanabe username@t2a006168:~/mylec> 10 パイプライン コマンド1 | コマンド2:コマンド1の標準出力をコマンド2の標準入力にしま す。 見てるだけでも大丈夫です。 username@t2a006168:~/mylec>cat ~13OTlec0/lec/Hello/hello.c #include<stdio.h> int main(void){ printf("Hello World!!\n"); return 0; }
username@t2a006168:~/mylec>cat ~13OTlec0/lec/Hello/hello.c | sort
} #include<stdio.h> int main(void){ printf("Hello World!!\n"); return 0; username@t2a006168:~/mylec> 11 コマンドの順次処理 コマンド 1 ; コマンド 2 :コマンド 1 を実行し、コマンド 2 を実行します。 たぶん時間がないので紹介だけ username@t2a006168:~/mylec>cd ~13OTlec0/lec/ username@t2a006168:/home/usr2/13OTlec0/lec>ls
Big_memory directory_1 directory_3 Hello Mode_test Scripts t2g-lecture-1
コメント [A86]: バーティカルバー
50 username@t2a006168:/home/usr2/13OTlec0/lec>pwd /home/usr2/13OTlec0/lec
username@t2a006168:/home/usr2/13OTlec0/lec>ls ; pwd
Big_memory directory_1 directory_3 Hello Mode_test Scripts t2g-lecture-1 /home/usr2/13OTlec0/lec username@t2a006168:/home/usr2/13OTlec0/lec> 12 エイリアス(別名) 12.1 alias alias 別名=’文字列’ : 文字列のコマンド たぶん時間がないので紹介だけ username@t2a006168:/home/usr2/13OTlec0/lec>date Fri Nov 8 18:22:29 JST 2013 username@t2a006168:/home/usr2/13OTlec0/lect>pwd /home/usr2/13OTlec0/lec username@t2a006168:/home/usr2/13OTlec0/lec>myalias
If 'myalias' is not a typo you can run the following command to lookup the package t hat contains the binary:
command-not-found myalias -bash: myalias: command not found
username@t2a006168:/home/usr2/13OTlec0/lec>alias myalias='date ; pwd' username@t2a006168:/home/usr2/13OTlec0/lec>date ; pwd Fri Nov 8 18:23:28 JST 2013 /home/usr2/13OTlec0/lec username@t2a006168:/home/usr2/13OTlec0/lec>myalias Fri Nov 8 18:23:32 JST 2013 /home/usr2/13OTlec0/lec username@t2a006168:/home/usr2/13OTlec0/lec> 12.2 unalias unalias 別名:alias で行った設定を解除 コメント [A88]: date コマンドは日時を表 示するコマンド コメント [A89]: Shift キー押しながら 7 キ ー
たぶん時間がないので紹介だけ username@t2a006168:/home/usr2/13OTlec0/lec>alias alias +='pushd .' alias -='popd' alias ..='cd ..' alias ...='cd ../..'
alias beep='echo -en "\007"' alias cd..='cd ..'
alias dir='ls -l' alias l='ls -alF' alias la='ls -la' alias ll='ls -l' alias ls='ls $LS_OPTIONS' alias ls-l='ls -l' alias md='mkdir -p' alias myalias='date ; pwd' alias o='less' alias rd='rmdir' alias rehash='hash -r' alias sl='/usr/apps/isv/gaussian/gaussian09.C01/g09/tests/searchlog.csh' alias unmount='echo "Error: Try the command: umount" 1>&2; false'
alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbi n/yast2 online_update" ; fi'
username@t2a006168:/home/usr2/13OTlec0/lec>unalias myalias username@t2a006168:/home/usr2/13OTlec0/lec>alias alias +='pushd .' alias -='popd' alias ..='cd ..' alias ...='cd ../..'
alias beep='echo -en "\007"' alias cd..='cd ..'
alias dir='ls -l' alias l='ls -alF' alias la='ls -la' alias ll='ls -l' alias ls='ls $LS_OPTIONS' コメント [A90]: 今まで使ってきた ls はエ イリアスです。(ディレクトリの場合に色 がつくのはこのため) コメント [A91]: myalias がなくなってい ることを確認
52 alias ls-l='ls -l' alias md='mkdir -p' alias o='less' alias rd='rmdir' alias rehash='hash -r' alias sl='/usr/apps/isv/gaussian/gaussian09.C01/g09/tests/searchlog.csh' alias unmount='echo "Error: Try the command: umount" 1>&2; false'
alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbi n/yast2 online_update" ; fi'
username@t2a006168:/home/usr2/13OTlec0/lec>myalias
If 'myalias' is not a typo you can run the following command to lookup the package t hat contains the binary:
command-not-found myalias -bash: myalias: command not found
username@t2a006168:/home/usr2/13OTlec0/lec> 13 シェルスクリプト コマンドを記述したファイル(スクリプトファイル)のプログラム 見てるだけでも大丈夫です。 username@t2a006168:~>cd ~13OTlec0/lec/Scripts/ username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>ls -l total 32
-rwxr-x--- 1 13OTlec0 users 22 2013-10-22 12:02 script_test.sh
username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>cat script_test.sh #! /bin/sh ls -l pwd username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>sh script_test.sh total 32
-rwxr-x--- 1 13OTlec0 users 22 2013-10-22 12:02 script_test.sh /home/usr2/13OTlec0/lec/Scripts
username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>source script_test.sh total 32
-rwxr-x--- 1 13OTlec0 users 22 2013-10-22 12:02 script_test.sh /home/usr2/13OTlec0/lec/Scripts
username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>. script_test.sh total 32
-rwxr-x--- 1 13OTlec0 users 22 2013-10-22 12:02 script_test.sh /home/usr2/13OTlec0/lec/Scripts
username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>./script_test.sh total 32
-rwxr-x--- 1 13OTlec0 users 22 2013-10-22 12:02 script_test.sh /home/usr2/13OTlec0/lec/Scripts
username@t2a006168:/home/usr2/13OTlec0/lec/Scripts>
14 アクセス権
14.1 ファイルのアクセス権
次は ls –l の実行結果の一部です。
-rwxr-xr-x 1 13OTlec0 users 4 2013-10-18 21:28 file
「rwxr-xr-x」がアクセス権の情報です。 最初の 3 文字が所有者のアクセス権(と SUID) 中央の 3 文字が所有グループのユーザー(ただし、所有者は除く)のアクセス 権(と SGID) 最後の 3 文字がその他のユーザー(=「所有者と所有グループのユーザー」以 外のユーザー)のアクセス権(と sticky ビット) 最初の 3 文字、中央の 3 文字、最後の 3 文字について、 1 文字目が r:読みだしの権利がある 1 文字目が-:読みだしの権利がない 2 文字目が w:書き込みの権利がある 2 文字目が-:書き込みの権利がない 3 文字目が x(または s または t):実行の権利がある 3 文字目が-(または S または T):実行の権利がない の意味です。 「13OTlec0」が所有者です。 コメント [A92]: 注意。 コメント [A93]: 実行権がある場合は、こ の方法で実行できる。 コメント [A94]: ファイルなのでハードリ ンク数 コメント [A95]: [ここが重要です]t2sub コ マンドを使うにはここが重要。
54 「users」が所有グループです。
14.2 ディレクトリのアクセス権
次は ls –l の実行結果の一部です。
drwxrwxr-x 2 13OTlec0 users 32768 2013-10-18 21:23 directory
「rwxrwxr-x」がアクセス権の情報です。 最初の 3 文字が所有者のアクセス権(と SUID) 中央の 3 文字が所有グループのユーザー(ただし、所有者は除く)のアクセス 権(と SGID) 最後の 3 文字がその他のユーザー(=「所有者と所有グループのユーザー」以 外のユーザー)のアクセス権(と sticky ビット) 最初の 3 文字、中央の 3 文字、最後の 3 文字について、 1 文字目が r:ディレクトリの中身をリスト表示する権利がある 1 文字目が-:ディレクトリの中身をリスト表示する権利がない 2 文字目が w:ディレクトリ内にファイルを作成できる権利があり、ディレク トリ内のファイルを削除できる権利がある 2 文字目が-:ディレクトリ内にファイルを作成できる権利がなく、ディレク トリ内のファイルを削除できる権利がない 3 文字目が x(または s または t):カレントディレクトリにする権利がある デ ィレクトリ内のファイルを利用する権利がある 3 文字目が-(または S または T): カレントディレクトリにする権利がない ディレクトリ内のファイルを利用する権利がない の意味です。 「13OTlec0」が所有者です。 「users」が所有グループです。 14.3 アクセス権の数値モードでの指定 アクセス権は 4 桁の 8 進数で指定することができます。 8 進数の各桁は 1 桁目:SUID,SGID,sticky ビットの指定 2 桁目:所有者のアクセス権 3 桁目:所有グループのユーザーのアクセス権 4 桁目:その他のユーザーのアクセス権 コメント [A96]: サブディレクトリの数 コメント [A97]: ファイルのアクセス権と 違う
です。
8 進数の各桁を 3 桁の 2 進数にした際の各値(1 または 0)で権利の有無(や SUID, SGID,sticky ビットの指定)と対応します。
56 所有者のアクセス権(と SUID) 1 文字目 1 文字目 で決まる 2 進数の値 2 文字目 2 文字目 で決まる 2 進数の値 3 文字 目 3 文字目 で決まる 2 進数の値 r 4 桁目が 1 w 5 桁目が 1 x 1 桁目が 0 6 桁目が 1 - 1 桁目が 0 6 桁目が 0 - 4 桁目が 0 - 5 桁目が 0 s 1 桁目が 1 6 桁目が 1 S 1 桁目が 1 6 桁目が 0 所有グループのユーザーのアクセス権(と SGID) 4 文字目 4 文字目 で決まる 2 進数の値 5 文字目 5 文字目 で決まる 2 進数の値 6 文字 目 6 文字目 で決まる 2 進数の値 r 7 桁目が 1 w 8 桁目が 1 x 2 桁目が 0 9 桁目が 1 - 2 桁目が 0 9 桁目が 0 - 7 桁目が 0 - 8 桁目が 0 s 2 桁目が 1 9 桁目が 1 S 2 桁目が 1 9 桁目が 0 その他のユーザーのアクセス権(と sticky ビット) 7 文字目 7 文字目 で決まる 2 進数の値 8 文字目 8 文字目 で決まる 2 進数の値 9 文字 目 9 文字目 で決まる 2 進数の値 r 10 桁目が 1 w 11 桁目が 1 x 3 桁目が 0 12 桁目が 1 - 3 桁目が 0 12 桁目が 0 - 10 桁目が 0 - 11 桁目が 0 t 3 桁目が 1 12 桁目が 1 T 3 桁目が 1 12 桁目が 0
例えば、rwxr-s--x は rwxr-s--x の 1 文字目は r なので、これは 2 進数の 4 桁目が 1 となります。 rwxr-s--x の 2 文字目は w なので、これは 2 進数の 5 桁目が 1 となります。 rwxr-s--x の 3 文字目は x なので、これは 2 進数の 1 桁目が 0、6 桁目が 1 と なります。 rwxr-s--x の 4 文字目は r なので、これは 2 進数の 7 桁目が 1 となります。 rwxr-s--x の 5 文字目は-なので、これは 2 進数の 8 桁目が 0 となります。 rwxr-s--x の 6 文字目は s なので、これは 2 進数の 2 桁目が 1、9 桁目が 1 と なります。 rwxr-s--x の 7 文字目は-なので、これは 2 進数の 10 桁目が 0 となります。 rwxr-s--x の 8 文字目は-なので、これは 2 進数の 11 桁目が 0 となります。 rwxr-s--x の 9 文字目は x なので、これは 2 進数の 3 桁目が 0、12 桁目が 1 と なります。 よって、 010 111 101 001 です。(見やすいように 3 桁ごとにスペースを入れています) 数値モードでは 8 進数 4 桁で 22× 0 + 21× 1 + 20× 0 = 2 22× 1 + 21× 1 + 20× 1 = 7 22× 1 + 21× 0 + 20× 1 = 5 22× 0 + 21× 0 + 20× 1 = 1 で 2751 です。
58 r w x r - s - - x 0 1 0 1 1 1 1 0 1 0 0 1 22× 0 + 21× 1 + 20× 0 2 22× 1 + 21× 1 + 20× 1 7 22× 1 + 21× 0 + 20× 1 5 22× 0 + 21× 0 + 20× 1 1
14.4 特殊なアクセス権(SUID,SGID,sticky ビットの指定) 14.4.1 SUID (Set User ID)
SUID が指定されたファイルを実行すると、実行したユーザーにかかわらず、 所有者の権限で実行されます。 たぶん時間がないので紹介だけ username@t2a006168:~>which chage /usr/bin/chage username@t2a006168:~>ls -l /usr/bin/chage
-rwsr-xr-x 1 root shadow 86200 2010-05-08 18:36 /usr/bin/chage username@t2a006168:~>chage -l Password: Minimum: 0 Maximum: 168 Warning: 7 Inactive: -1
Last Change: Sep 09, 2013 Password Expires: Feb 24, 2014 Password Inactive: Never Account Expires: Never username@t2a006168:~>
14.4.2 SGID (Set Group ID)
SGID が指定されたディレクトリでファイルを作成すると、そのファイルの 所有グループはそのディレクトリの所有グループになります。 14.4.3 sticky ビット sticky ビットが指定されたディレクトリのファイルは、ファイルを削除で きるのがそのディレクトリの所有者と、そのファイルの所有者になります。 たぶん時間がないので紹介だけ username@t2a006179:~>ls -ld /tmp lrwxrwxrwx 1 root root 8 2014-03-31 14:44 /tmp -> /scr/tmp
コメント [A98]: chage コマンドは root ユ ーザーの権限で実行されます。
コメント [A99]: パスワードの有効期限切 れがいつか調べられる
60 username@t2a006179:~>ls -ld /scr/tmp
drwxrwxrwt 49 root root 94208 2014-04-18 19:45 /scr/tmp username@t2a006179:~>ls -l /scr/tmp | grep root | less username@t2a006179:~>ls -l /scr/tmp/random-seed.9Sf5Ovv35k
-rw--- 1 root root 512 2014-03-31 14:52 /scr/tmp/random-seed.9Sf5Ovv35k username@t2a006179:~>rm /scr/tmp/random-seed.9Sf5Ovv35k
rm: remove write-protected regular file `/scr/tmp/random-seed.9Sf5Ovv35k'? y rm: cannot remove `/scr/tmp/random-seed.9Sf5Ovv35k': Operation not permitted username@t2a006179:~> 14.5 chmod アクセス権を設定する [方法 1 シンボル指定]chmod シンボル指定 対象のファイル シンボル指定は u:所有者 g:所有グループのユーザー o:その他のユーザー a:全てのユーザー に続けて、 +:権利を許可 -:権利を削除(禁止) =:設定 さらに、r,w,x,s,t のいずれかを指定します。 見てるだけでも大丈夫です。 username@t2a006168:~/mylec>emacs newfile.txt username@t2a006168:~/mylec>cat newfile.txt newfile username@t2a006168:~/mylec>ls -l newfile.txt
-rw-r--r-- 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec>chmod u+x newfile.txt
username@t2a006168:~/mylec>ls -l newfile.txt
-rwxr--r-- 1 username users 8 2014-04-09 20:10 newfile.txt
コメント [A100]: その他のユーザー(=「所 有者と所有グループのユーザー」以外のユ ーザー) が ディレクトリ内のファイルを削除できる権 利がある(はずなのに) コメント [A101]: sticky ビット コメント [A102]: sticky ビットが指定さ れたディレクトリのファイルは、ファイル を削除できるのがそのディレクトリの所有 者と、そのファイルの所有者なので、消せ ない。 コメント [A103]: x がついた
username@t2a006168:~/mylec>chmod g-r newfile.txt username@t2a006168:~/mylec>ls -l newfile.txt
-rwx---r-- 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec>chmod o+x newfile.txt
username@t2a006168:~/mylec>ls -l newfile.txt
-rwx---r-x 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec>chmod a=rx newfile.txt
username@t2a006168:~/mylec>ls -l newfile.txt
-r-xr-xr-x 1 username users 8 2014-04-09 20:10 newfile.txt
[方法 2 数値モードでの指定] chmod 数値モードでの指定 対象のファイル
見てるだけでも大丈夫です。 username@t2a006168:~/mylec>ls -l newfile.txt
-r-xr-xr-x 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec>chmod 644 newfile.txt
username@t2a006168:~/mylec>ls -l newfile.txt
-rw-r--r-- 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec>chmod 0600 newfile.txt
username@t2a006168:~/mylec>ls -l newfile.txt
-rw--- 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec>chmod 744 newfile.txt
username@t2a006168:~/mylec>ls -l newfile.txt
-rwxr--r-- 1 username users 8 2014-04-09 20:10 newfile.txt username@t2a006168:~/mylec> 14.6 chgrp 所有グループの変更 見てるだけでも大丈夫です。 username@t2a006169:~>cd ~/mylec username@t2a006169:~/mylec>groups
users visitor restrict_apps t2g-lecture-1
コメント [A104]: r がなくなった コメント [A105]: x がついた コメント [A106]: 全てのユーザーが r-x に なった。 コメント [A107]: 最初の 1 桁が 0 なら省 略できます。 つまり chmod 0644 newfile.txt でも同じ結果になります。
62 username@t2a006169:~/mylec>mkdir SGIDtestdir username@t2a006169:~/mylec>ls -ld SGIDtestdir
drwxr-xr-x 2 username users 32768 2014-04-10 09:29 SGIDtestdir username@t2a006169:~/mylec>cd SGIDtestdir username@t2a006169:~/mylec/SGIDtestdir>emacs before.txt username@t2a006169:~/mylec/SGIDtestdir>cat before.txt before username@t2a006169:~/mylec/SGIDtestdir>chgrp t2g-lecture-1 . username@t2a006169:~/mylec/SGIDtestdir>ls -ld . drwxr-xr-x 2 username t2g-lecture-1 32768 2014-04-10 09:30 . username@t2a006169:~/mylec/SGIDtestdir>chmod g+s . username@t2a006169:~/mylec/SGIDtestdir>ls -ld . drwxr-sr-x 2 username t2g-lecture-1 32768 2014-04-10 09:30 . username@t2a006169:~/mylec/SGIDtestdir>emacs after.txt username@t2a006169:~/mylec/SGIDtestdir>cat after.txt after username@t2a006169:~/mylec/SGIDtestdir>ls -l total 64
-rw-r--r-- 1 username t2g-lecture-1 6 2014-04-10 09:32 after.txt -rw-r--r-- 1 username users 7 2014-04-10 09:30 before.txt username@t2a006169:~/mylec/SGIDtestdir> 14.7 各アクセス権の意味の確認 見てるだけでも大丈夫です。 username@t2a006168:~>cd ~/mylec/modetest/ username@t2a006168:~/mylec/modetest>ls -l total 64
-rwxr-xr-x 1 username users 11934 2014-04-08 21:00 a.out
-rw-r--- 1 username users 2304 2014-04-08 20:59 make_sh_mode_test.c username@t2a006168:~/mylec/modetest>./a.out | less username@t2a006168:~/mylec/modetest>./a.out > modetest.sh username@t2a006168:~/mylec/modetest>less modetest.sh username@t2a006168:~/mylec/modetest>ls -l コメント [A108]: SGID コメント [A109]: SGID が指定されたディ レクトリでファイルを作成すると、そのフ ァイルの所有グループはそのディレクトリ の所有グループになります。 コメント [A110]: パイプライン コメント [A111]: リダイレクト コメント [A112]: シェルスクリプトの内容 を確認。
total 96
-rwxr-xr-x 1 username users 11934 2014-04-08 21:00 a.out
-rw-r--- 1 username users 2304 2014-04-08 20:59 make_sh_mode_test.c -rw-r--r-- 1 username users 9476 2014-04-09 20:04 modetest.sh
username@t2a006168:~/mylec/modetest>source modetest.sh username@t2a006168:~/mylec/modetest>ls -ld dir*
d--- 2 username users 32768 2014-04-09 20:05 dir_0000_--- d--x--- 2 username users 32768 2014-04-09 20:05 dir_0100_--x--- d-w--- 2 username users 32768 2014-04-09 20:05 dir_0200_-w--- d-wx--- 2 username users 32768 2014-04-09 20:05 dir_0300_-wx--- dr--- 2 username users 32768 2014-04-09 20:05 dir_0400_r--- dr-x--- 2 username users 32768 2014-04-09 20:05 dir_0500_r-x--- drw--- 2 username users 32768 2014-04-09 20:05 dir_0600_rw--- drwx--- 2 username users 32768 2014-04-09 20:05 dir_0700_rwx---
14.7.1 ディレクトリの r について
たぶん時間がないので紹介だけ username@t2a006179:~/mylec/modetest>\ls dir_0000_---/ ls: cannot open directory dir_0000_---/: Permission denied username@t2a006179:~/mylec/modetest>\ls dir_0300_-wx---/ ls: cannot open directory dir_0300_-wx---/: Permission denied username@t2a006179:~/mylec/modetest>\ls dir_0400_r---/
file_0000_--- file_0100_--x--- file_0200_-w--- file_0300_-wx--- f ile_0400_r--- file_0500_r-x--- file_0600_rw--- file_0700_rwx--- username@t2a006179:~/mylec/modetest>\ls dir_0700_rwx---/
file_0000_--- file_0100_--x--- file_0200_-w--- file_0300_-wx--- f ile_0400_r--- file_0500_r-x--- file_0600_rw--- file_0700_rwx--- username@t2a006179:~/mylec/modetest> 14.7.2 ディレクトリの x について たぶん時間がないので紹介だけ username@t2a006179:~/mylec/modetest>cd dir_0000_---/ コメント [A113]: 新しくディレクトリがで きます。ディレクトリの中にファイルも作 られています。 コメント [A114]: alias を使わないように するため。 コメント [A115]: 1 文字目が-:ディレクト リの中身をリスト表示する権利がない コメント [A116]: 1 文字目が-:ディレクト リの中身をリスト表示する権利がない コメント [A117]: 1 文字目が r:ディレクト リの中身をリスト表示する権利がある コメント [A118]: 1 文字目が r:ディレクト リの中身をリスト表示する権利がある