初めてのシステムと日記

システムも日記も初めてです。

研修(コマンドを学ぶ)

svnコマンドをいきなりやったら壁にぶち当たってしまった。


てことで基礎的なところのコマンドから学んでいく。


以下、課題に沿った形で。

1.homeディレクトリの下にworkディレクトリを作成する

コマンド

$ mkdir work
$ ls -la
 合計 92
 drwxr-xr-x  6 sato sato 4096  5月 27 16:16 .
 drwxr-xr-x  9 root root 4096  5月 25 10:27 ..
 -rw-------  1 sato sato  668  5月 27 13:42 .bash_history
 -rw-r--r--  1 sato sato  304  5月 25 10:27 .bash_logout
 -rw-r--r--  1 sato sato  191  5月 25 10:27 .bash_profile
 -rw-r--r--  1 sato sato  124  5月 25 10:27 .bashrc
 -rw-r--r--  1 sato sato 5619  5月 25 10:27 .canna
 drwxrwxr-x  3 sato sato 4096  5月 26 18:52 .subversion
 drwxr-xr-x  2 sato sato 4096  5月 25 16:33 public_html
 drwxrwxr-x  3 sato sato 4096  5月 26 18:57 trunk
 drwxrwxr-x  2 sato sato 4096  5月 27 16:16 work

mkdir [作成するディレクトリの名前]でディレクトリ作成

※ディレクトリ=フォルダと認識

2.workディレクトリ内に移動する

コマンド

$ cd work
$

cd [移動するディレクトリ]で指定したディレクトリに移動

3.その中にhello.shを作成する

コマンド

$ mktemp hello.sh
hello.sh
$ ls -la
合計 20
drwxrwxr-x  2 sato sato 4096  5月 27 16:25 .
drwxr-xr-x  6 sato sato 4096  5月 27 16:16 ..
-rw-------  1 sato sato    0  5月 27 16:25 hello.sh

mktemp [作成するファイル名]でファイル作成

4.hello.shを「echo "hello world";」とエディタで編集

5.hello.shをコマンドで実行

コマンド

$ source hello.sh
hello world

source [ファイル名]でファイルを実行
編集したecho "hello world"が実行されている
hello worldはどの言語でも共通なんですね

6.パーミッションを変更して他ユーザーがhello.shを読み書き実行できないようにする

パーミッション=権限

コマンド

$ chmod o-r hello.sh
$ chmod o-w hello.sh
$ chmod o-x hello.sh
$ ls -la
合計 24
drwxrwxr-x  2 sato sato 4096  5月 27 16:25 .
drwxr-xr-x  6 sato sato 4096  5月 27 16:16 ..
-rwx------  1 sato sato   19  5月 27 16:27 hello.sh

chmod [数字or文字] [ファイル名]でファイルのパーティションを変更

※chmodの[数字or文字]が気になったんで追記
・数字形式と文字形式の違い
 ・数字形式は絶対変更
  →全てのパーミッションを一度に変更するのに有効
 ・文字形式は相対変更
  →パーミッションのある部分だけ変更したいのに有効

・文字形式の組み合わせ
ユーザーの種類      |選択             |パーミッション権限
-------------------------+-----------------------------+-------------------
u:ファイル所有者    |+:パーミッションの追加   |r:読み取り権限
g:ファイル所有グループ  |-:パーミッションの削除      |w:書き込み権限
o:その他のユーザー      |=:指定したパーミッションを  |x:実行権限
a:全てのユーザー        |  付加しそれ以外を削除      |

・数字形式の組み合わせ
r=4=読みだし可
w=2=書き込み可
x=1=実行可能

rwx=7 (4+2+1)=読み出し可+書き込み可+実行可能
rw-=6 (4+2)=読み出し可+書き込み可
r-x=5 (4+1)=読み出し可+実行可能
-wx=3 (2+1)=書き込み可+実行可能

例:
全員に読み取り権限を与える場合→数字が楽
[home work]$ chmod 444 test.txt
※444=r--r--r--

その他のユーザーから書き込み権限を削除する場合→一部分だから文字が楽
$ chmod o-w test.txt


・ファイルの権限を見る場合
$ ls -la
合計 24
drwxrwxr-x  2 user user 4096  5月 27 13:27 .
drwxr-xr-x  6 user user 4096  5月 27 13:20 ..
-rwx-w-rw-  1 user user   19  5月 27 14:35 hello.sh

左の-rwx-w-rw-に注目、順番に
1番目 d:なぞのまま・・・時間あるときに調べる
2番目 r
3番目 w
4番目 x:ファイル所有者uの読み取り、書き込み権限、実行権限、
5番目 r
6番目 w
7番目 x:ファイル所有グループgの読み取り、書き込み権限、実行権限、
8番目 r
9番目 w
10番目x:その他のユーザーoの読み取り、書き込み権限、実行権限、
文字ではなく-になってたらその権限がないということ

7.hello.shをhello_copy.shにコピーする

コマンド

$ cp hello.sh hello_copy.sh
$ ls -la
合計 32
drwxrwxr-x  2 sato sato 4096  5月 27 16:33 .
drwxr-xr-x  6 sato sato 4096  5月 27 16:16 ..
-rwx------  1 sato sato   19  5月 27 16:27 hello.sh
-rwx------  1 sato sato   19  5月 27 16:33 hello_copy.sh

cp [コピー元のファイル名] [コピーしたファイルの名前]でファイルをコピーする

8.hello.shをhello_move.shにリネームする

コマンド

$ mv hello.sh hello_move.sh
$ ls -la
合計 32
drwxrwxr-x  2 sato sato 4096  5月 27 16:40 .
drwxr-xr-x  6 sato sato 4096  5月 27 16:16 ..
-rwx------  1 sato sato   19  5月 27 16:33 hello_copy.sh
-rwx------  1 sato sato   19  5月 27 16:27 hello_move.sh

mv [変更するファイル名] [変更後のファイル名]でファイルの名前を変更する

9.hello_move.shを削除する

コマンド

$ rm hello_move.sh
$ ls -la
合計 24
drwxrwxr-x  2 sato sato 4096  5月 27 16:42 .
drwxr-xr-x  6 sato sato 4096  5月 27 16:16 ..
-rwx------  1 sato sato   19  5月 27 16:33 hello_copy.sh

rm [削除するファイル名] でファイルを削除

10.homeディレクトリに戻る

コマンド

$ cd ..
$

cd ..で1個上のディレクトリに移動(戻る)

11.workディレクトリをwork_copyにコピーする

コマンド

$ cp -r work work_copy
$ ls -la
合計 100
drwxr-xr-x  7 sato sato 4096  5月 27 16:43 .
drwxr-xr-x  9 root root 4096  5月 25 10:27 ..
-rw-------  1 sato sato  668  5月 27 13:42 .bash_history
-rw-r--r--  1 sato sato  304  5月 25 10:27 .bash_logout
-rw-r--r--  1 sato sato  191  5月 25 10:27 .bash_profile
-rw-r--r--  1 sato sato  124  5月 25 10:27 .bashrc
-rw-r--r--  1 sato sato 5619  5月 25 10:27 .canna
drwxrwxr-x  3 sato sato 4096  5月 26 18:52 .subversion
drwxr-xr-x  2 sato sato 4096  5月 25 16:33 public_html
drwxrwxr-x  3 sato sato 4096  5月 26 18:57 trunk
drwxrwxr-x  2 sato sato 4096  5月 27 16:42 work
drwxrwxr-x  2 sato sato 4096  5月 27 16:43 work_copy

cp -r [コピー元のディレクトリ名][コピー後のディレクトリ名]でディレクトリをコピー

※-r部分はオプション。他のオプションは以下のとおり。

  • a できるだけ属性や構造を保持する
  • b 同名ファイルはバックアップして保存する
  • d コピー元がリンクファイルの場合はリンクファイルをコピーする
  • f 同名ファイルを警告せずに上書きする
  • i 上書きするファイルは問い合わせる
  • p パーミッションやタイムスタンプを保持したままコピー
  • s コピー元へのリンクファイルを作成する
  • u 同名ファイルは最終更新日付を比較して古いときのみ上書きする
  • v コピー前にファイル名を表示する

12.work_copyディレクトリをwork_moveにリネームする

コマンド

$ mv work_copy work_move
$ ls -la
合計 100
drwxr-xr-x  7 sato sato 4096  5月 27 16:46 .
drwxr-xr-x  9 root root 4096  5月 25 10:27 ..
-rw-------  1 sato sato  668  5月 27 13:42 .bash_history
-rw-r--r--  1 sato sato  304  5月 25 10:27 .bash_logout
-rw-r--r--  1 sato sato  191  5月 25 10:27 .bash_profile
-rw-r--r--  1 sato sato  124  5月 25 10:27 .bashrc
-rw-r--r--  1 sato sato 5619  5月 25 10:27 .canna
drwxrwxr-x  3 sato sato 4096  5月 26 18:52 .subversion
drwxr-xr-x  2 sato sato 4096  5月 25 16:33 public_html
drwxrwxr-x  3 sato sato 4096  5月 26 18:57 trunk
drwxrwxr-x  2 sato sato 4096  5月 27 16:42 work
drwxrwxr-x  2 sato sato 4096  5月 27 16:43 work_move

mvはファイルと同様にディレクトリも名前変更可能

13.work_moveディレクトリを削除する

コマンド

$ rm -r work_move
$ ls -la
合計 92
drwxr-xr-x  6 sato sato 4096  5月 27 16:47 .
drwxr-xr-x  9 root root 4096  5月 25 10:27 ..
-rw-------  1 sato sato  668  5月 27 13:42 .bash_history
-rw-r--r--  1 sato sato  304  5月 25 10:27 .bash_logout
-rw-r--r--  1 sato sato  191  5月 25 10:27 .bash_profile
-rw-r--r--  1 sato sato  124  5月 25 10:27 .bashrc
-rw-r--r--  1 sato sato 5619  5月 25 10:27 .canna
drwxrwxr-x  3 sato sato 4096  5月 26 18:52 .subversion
drwxr-xr-x  2 sato sato 4096  5月 25 16:33 public_html
drwxrwxr-x  3 sato sato 4096  5月 26 18:57 trunk
drwxrwxr-x  2 sato sato 4096  5月 27 16:42 work

rm -r [削除するディレクトリ名]でディレクトリ削除

※この-rもオプション。他は以下を参照。

  • f 同名ファイルを警告せずに削除する
  • i ファイルの削除前に問い合わせる
  • r ディレクトリごと削除する
  • v 処理内容を表示する

14.今まで発行したコマンド履歴を確認

コマンド

$ history
    1  exit
    2  cd
    3  ll
    4  pwd
    5  exit
    6  svn st -u
    7  svn cat http://svn.fact/sato/trunk
    8  svn log
    9  svn checkout http://svn.fact/sato/trunk
   10  svn st -u
    ・
  ・
  ・
  以下略

history でコマンド履歴を全て表示

15.履歴からlsコマンドを使用した行だけを表示

コマンド

$ history | grep ls
   63  ls -la
   65  ls -la
   69  ls -la
   71  ls -la
   73  ls -la
    ・
  ・
  ・
  以下略

history | grep [検索する言葉]で用語検索

16.lsコマンドのヘルプを表示

コマンド

$ ls --help

[コマンド] --helpでコマンドのヘルプ表示


いつもマウスだけでやっている裏側がこうなっているとは。。。
裏側知るのって面白い。