roy > naoya > UNIX主要コマンド

UNIX主要コマンド

ls:ディレクトリの中身の表示

カレントディレクトリ内にあるファイルやディレクトリを表示する

sime{c11xxxx}% ls[Return]
Mail/      maildir/    public_html/
Windows/   msmail/     script/

lsの後ろにはオプションを指定することができる。表示方法を変化させる場合や、隠しファイルを表示させる場合に指定する。複数のオプションを組み合わせて指定することもできる。

-l 詳細表記(ロングフォーマット)で表示
-a .(ドット)で始まる通常では見えない設定ファイルも含めて表示する
-t 更新時刻の新しい順に表示する
-R 指定したディレクトリ以下全てのファイルを表示する

オプションとして-lを指定した場合。アクセス権やファイルの最終更新日が表示される。

sime{c11xxxx}% ls -l[Return]
drwx------  10 c101234  st2007  1024 Feb  8 12:34 Mail/
drwxr-xr-x   8 c101234  st2007  1024 Feb  2 12:34 Windows/
drwx------   5 c101234  st2007   512 May  1 12:34 maildir/
drwxr-xr-x   2 c101234  st2007   512 Nov 20 10:17 public_html/
drwxr-xr-x   5 c101234  st2007   512 Apr  9 10:17 script/

オプションとして-laを指定した場合。アクセス権やファイルの最終更新日が表示され(-l)、先頭に.(ドット)のついた設定ファイルが表示される(-a)。

sime{c11xxxx}% ls -la[Return]
-rw-------   1 c101234  st2007    30 Jul 20  2007 .apop
-rw-r--r--   1 c101234  st2007  2129 Apr 16  2002 .canna
-r--r--r--   1 c101234  st2007   671 Apr  9  2002 .cshrc
drwxr-xr-x   9 c101234  st2007   512 Apr  9  2002 .dt/
-rwxr-xr-x   1 c101234  st2007  5111 Apr  9  2002 .dtprofile*
drwx------  10 c101234  st2007  1024 Feb  8 12:34 Mail/
drwxr-xr-x   8 c101234  st2007  1024 Feb  2 12:34 Windows/
drwx------   5 c101234  st2007   512 May  1 12:34 maildir/
drwxr-xr-x   2 c101234  st2007   512 Nov 20 10:17 public_html/
drwxr-xr-x   5 c101234  st2007   512 Apr  9 10:17 script/

cd:ディレクトリの移動

cd ディレクトリ名で指定したディレクトリに移動する。1つ上のディレクトリに移動する場合はcd ..となる。

cdの後ろにrubyを指定することで、rubyディレクトリに移動する。

sime{c11xxxx}% cd ruby/[Return]         [~]
sime{c11xxxx}%                  [~/ruby]

rubyディレクトリでcd ..することで、もとのディレクトリに戻る。

sime{c11xxxx}% cd ..[Return]          [~/ruby]
sime{c11xxxx}%                  [~]

cd ../../とすることで、2つ上のディレクトリに一度に移動することができる。

cdの後ろに移動先のディレクトリを指定せず、cd[Return]でホームディレクトリに戻る

cat、less:ファイル内容の表示

cat ファイル名もしくはless ファイル名でファイルの中身が表示される。ファイル内の記載内容が多い場合、catコマンドでは上部がスクロールして消えてしまうので、lessコマンドを使用する。lessコマンドは手動での行送りが可能であり、[Return]キーを押すと1行下が表示される。lessコマンドを使用した場合は、qを押して終了しないと次のコマンドを入力することができない。

sime{c11xxxx}% cat hello.txt[Return]
こんにちは
 #=>ファイルの中身が表示される

mkdir:ディレクトリの作成

新規にディレクトリを作成する。

sime{c11xxxx}% ls[Return]
sime{c11xxxx}% #=>最初は何もないが
sime{c11xxxx}% mkdir ruby[Return]
sime{c11xxxx}% ls[Return]
ruby/ 
#=>mkdirコマンドを使うとディレクトリが作成されている

rmdir:ディレクトリの削除

中が空なディレクトリを削除する。空でない場合は削除することができない。

sime{c11xxxx}% ls[Return]
ruby/#=>最初はruby/ディレクトリがあるが
sime{c11xxxx}% rmdir ruby[Return]
sime{c11xxxx}% ls[Return]
sime{c11xxxx}%
#=>rmdirコマンドを使うとディレクトリがなくなっている

中が空でないディレクトリを削除しようとした場合は下記のようなメッセージが表示される。

sime{c11xxxx}% rmdir ruby[Return]
rmdir: ディレクトリ"ruby": ディレクトリが空ではありません

cp:ファイルのコピー

ファイルの複製を作る。書式はcp コピーするファイル名 コピー先となる。コピー先の指定方法により異なる動作が行われる。

コピー先がディレクトリの場合は、ファイルの複製が作られる。

sime{c11xxxx}% cp memo.txt ruby[Return]
 #=>コピー先が既存のディレクトリの場合
sime{c11xxxx}% ls[Return]
memo.txt
 #=>コピー元のファイルはなくならない
sime{c11xxxx}% cd ruby[Return]
sime{c11xxxx}% ls[Return]
memo.txt
 #=>rubyディレクトリ内にも同一ファイルがコピーされる

コピー先が既存のファイル名の場合は上書きされる。

sime{c11xxxx}% cat message.txt[Return]
こんにちは
 #=>message.txtという既存のファイルがあったとする
sime{c11xxxx}% cp memo.txt message.txt[Return]
 #=>コピー先が既存のファイルの場合
sime{c11xxxx}% cat message.txt[Return]
Hello  #=>ファイルが上書きされている。コピー元のファイルはなくならない

コピー先が存在しないファイル名の場合は複製が作られる。

sime{c11xxxx}% cp memo.txt report.txt[Return]
 #=>report.txtが存在しないファイルの場合
sime{c11xxxx}% cat memo.txt[Return]
Hello
sime{c11xxxx}% cat report.txt[Return]
Hello  #=>同一内容のファイルの複製が作られる

よく使用するオプションとして次が挙げられる。

-i コピー先のファイルが存在する場合に、上書きしてよいか確認する
-r コピー元がディレクトリの場合に、そのディレクトリをコピー先ディレクトリにまるまるコピーする

mv:ファイルの移動およびファイル名の変更

書式はmv 元のファイル名 移動先となる。移動先の指定方法により、ファイルの移動、ファイルの名称変更、ファイル名を変更して移動などの働きをもつ。

移動先がディレクトリの場合は、そのディレクトリにファイルを移動する。

sime{c11xxxx}% mv memo.txt ruby[Return]
 #=>移動先が既存のディレクトリの場合
sime{c11xxxx}% ls[Return]
sime{c11xxxx}% #=>元のファイルはなくなっている
sime{c11xxxx}% cd ruby[Return]
sime{c11xxxx}% ls[Return]
memo.txt #=>rubyディレクトリ内にmemo.txtが移動している

移動先が存在しないファイル名の場合は、そのファイル名に名称を変更する。

sime{c11xxxx}% mv memo.txt report.txt[Return]
 #=>report.txtは存在しないファイル
sime{c11xxxx}% cat memo.txt[Return]
memo.txt: No such file or dirctory 
 #=>元のファイルはなくなっている
sime{c11xxxx}% cat report.txt[Return] 
Hello #=>ファイル名が変更されている

移動先が存在するファイル名の場合は、ファイル内容が上書きされる。

sime{c11xxxx}% cat message.txt[Return]
こんにちは
 #=>message.txtという既存のファイルがあったとする
sime{c11xxxx}% mv memo.txt message.txt[Return]
 #=>移動先が既存のファイルの場合
sime{c11xxxx}% cat message.txt[Return]
Hello #=>ファイルが上書きされている
sime{c11xxxx}% cat memo.txt[Return]
memo.txt: No such file or dirctory
 #=>元のファイルは削除されている

移動先をディレクトリ/ファイル名にした場合、指定したディレクトリ内に指定した名称でファイルを移動する。

sime{c11xxxx}% mv memo.txt ruby/message.txt[Return]
 #=>移動先が既存のディレクトリの場合
sime{c11xxxx}% ls[Return]
sime{c11xxxx}% #=>元のファイルはなくなっている
sime{c11xxxx}% cd ruby[Return]
sime{c11xxxx}% ls[Return]
message.txt #=>rubyディレクトリ内に名称変更して移動している

よく使用するオプションとして次が挙げられる。

-i 移動先のファイルが存在する場合に、上書きしてよいか確認する
-r 移動元がディレクトリの場合に、そのディレクトリを移動先ディレクトリにまるまる移動する

rm:ファイルの削除

書式はrm 削除するファイル名となる。一度削除したファイルは元に戻すことはできないので削除する前によく確認すること。

sime{c11xxxx}% ls[Return]
memo.txt
sime{c11xxxx}% rm memo.txt[Return]
sime{c11xxxx}% ls[Return]
sime{c11xxxx}% #=>memo.txtは削除されている

chmod:アクセス権の変更

ファイルやディレクトリにはアクセス権があり、オーナーが自由に設定することができる。lsコマンドにオプション-lをつけls -l[Return]とすると以下のように詳細表示がなされる。このうち左端のrwx------の部分がアクセス権の表示である。

sime{c11xxxx}% ls -l[Return]
drwx------  10 c101234  st2007  1024 Feb  8 12:34 Mail/
drwxr-xr-x   8 c101234  st2007  1024 Feb  2 12:34 Windows/
-rwx------   5 c101234  st2007   512 May  1 12:34 hoge.rb
drwxr-xr-x   2 c101234  st2007   512 Nov 20 10:17 public_html/
drwxr-xr-x   5 c101234  st2007   512 Apr  9 10:17 script/
  • 先頭はディレクトリとファイルの区分。dはディレクトリ、-はファイル
  • 次の3桁はUser(自分)に付加されたアクセス権
  • 次の3桁はGroup(同一グループの他のメンバー)に付加されたアクセス権
  • 最後の3桁はOther(その他の人)に付加されたアクセス権

*Group:学内では学年別にグループわけが行われている。

アクセス権はrとwとxの3種類がある。rやwと書かれていればその権利があることになり、-の場合は権利がないことになる。

  • r:Read−開いて中味を閲覧する権利
  • w:Write−書き込みや修正をする権利
  • x:eXecuteー実行する権利

例えば、[-rwxrw-r--]の場合、Userは読み書き実行、Groupは読み書き、Otherは読みが許可されていることになる。

アクセス権の変更を行うのがchmodコマンドである。実行方法は以下の2種類がある

英字で指定

sime{c11xxxx}% chmod +x hoge.rb[Return]
  #hoge.rbに対しUser、Group、Other全てに実行権を付加
sime{c11xxxx}% chmod -w hoge.rb[Return]
  #hoge.rbに対しUser、Group、Other全てから書込権を除去
sime{c11xxxx}% chmod o-r hoge.rb[Return]
  #hoge.rbに対しOtherの読取権を除去

数字で指定

rwxについて権利がある場合を1、ない場合を0とすると、アクセス権は000、001、・・・、111のいずれかで表現できる。これを3桁の2進数とすると、10進数では0〜7で表記できる。つまり

  • r:4
  • w:2
  • x:1

として、許可する権利に与えられた数字の足し算の結果を求めればよい。4と2と1の3種類の数字しかないので、5は4+1の組み合わせしかありえないし、3は2+1の組み合わせしかない。足し算後の数字を見れば、何が許可されているのか分かる。

これを、User、Group、Other別に指定し777や755、100のように3桁で指定する。サンプルをいくつか示す。

  • 755:rwxr-xr-x
  • 604:rw----r--
  • 777:rwxrwxrwx
sime{c11xxxx}% chmod 755 hoge.rb[Return]
  #hoge.rbのアクセス権をrwxr-xr-xに設定

nkf:ファイルの漢字コード変換

日本語を含むファイルを読み込み、指定した漢字コードに変換する。書式はnkf オプション 変更前ファイル名 > 変更後ファイル名となる。変更前と変更後のファイル名を同じにするとファイルの内容が空になるので注意すること。

sime{c11xxxx}% nkf -e hoge.rb > hogehoge.rb[Return]
-e EUCコードに変換する。
-j JISコードに変換する。
-s Shift JISコードに変換する。
-w8 UTF-8コードに変換する。
-Lu 改行コードをLF(UNIX)に変換する。
-Lm 改行コードをCR(Mac)に変換する。
-Lw 改行コードをCR/LF(Windows)に変換する。

変更後のファイルを作らずに、指定ファイルの文字コードや改行コードを変更する場合は、--overwriteオプションを指定する。

sime{c11xxxx}% nkf -e --overwrite hoge.rb[Return]