Hatena::ブログ(Diary)

crazyuplog このページをアンテナに追加 RSSフィード

2009-04-13

シェル vol.5

  • コピー、移動、削除コマンド
  • 総集編

cp・・・コピーコマンド

cp [オプション] [コピー元のディレクトリパス] [コピー先のディレクトリパス]
//例)ファイルのコピー
cp test.txt test2.txt
//例)ディレクトリのコピー
cp -r test test2
cp -r test/ test2 //test内のデータをtest2にコピーする。
//例)ファイルの上書きの確認
cp -i copy.txt test/copy.txt
overwrite test/copy.txt? (y/n [n]) n
not overwritten

オプション

-rディレクトリのコピー
-iファイル上書きの確認

mv・・・ファイルの移動/名前の変更

mv [オプション] [移動元ファイル] [移動先ファイル]
//例)ファイルの移動
mv copy.txt test2/
//例)ディレクトリの移動
mv test2/ test3/ //ディレクトリtest2をディレクトリtest3の下に移動。
//例)ファイル名の変更
mv copy.txt move.txt //copy.txtのファイル名をmove.txtに変更。

オプション

-iファイル上書きの確認

rm・・・ファイルの削除

rm [オプション] [パス]
例)ファイルの削除
rm copy.txt
例)ディレクトリの削除
rm -r test2

オプション

-rディレクトリの削除
-f削除の問い合わせをしない

課題1

  1. ホーム移動
  2. sample/grep/testディレクトリを作成後、testに移動。
  3. 4回で使用したディレクトリをtest以下に移動

cd ~

mkdir -p sample/grep/test

mv shell_training sample/grep/test/

tree shell_training

shell_training/

|-- books

| |-- bocchan.txt

| |-- gingatetsudono_yoru.txt

| `-- hashire_merosu.txt

|-- error.txt

|-- grep.txt

|-- output.txt

|-- test1

| |-- sample1.txt

| |-- sample2.txt

| `-- sample3.txt

`-- ?\202??\202??\202\231?\202??\203??\202??\202\231.txt

2 directories, 10 files

2009/4/14追記

間違えがあったようなのでやり直しました。

$ cd ~
$ mkdir -p sample/grep/test
$ cd sample/grep/test
$ mv ~/shell_training/ ./
$ ls -l
total 0
drwxr-xr-x  8 shota  staff  272  4 14 17:22 shell_training
$ tree shell_training
shell_training
|-- books
|   |-- bocchan.txt
|   |-- gingatetsudono_yoru.txt
|   `-- hashire_merosu.txt
|-- error.txt
|-- grep.txt
|-- output.txt
|-- test1
|   |-- sample1.txt
|   |-- sample2.txt
|   `-- sample3.txt
`-- ?\202??\202??\202\231?\202??\203??\202??\202\231.txt

課題2

  1. ホーム以下にlogs/ディレクトリを作成。
  2. 探索
    1. そのまま
    2. 出力を見やすい形に直してみる
    3. logs/検索内容毎のファイルに出力
    4. 追記の形で先ほどのファイルに出力
$ mkdir ~/logs/
$ grep -r aozora ./shell_training/books/
$ grep -nr aozora ./shell_training/books/ | less
$ grep -nr aozora ./shell_training/books > ~/logs/aozora.log
$ grep -nr 夏目 ./shell_training/books >> ~/logs/aozora.log

課題3

  1. ホーム移動
  2. sample/prems/testディレクトリを一度で作成
  3. prems/に移動
  4. testディレクトリの所有者をnobodyに変更後、リスト表示で確認
  5. cdでtestディレクトリに移動してみる
  6. testディレクトリを削除する。
$ cd ~
$ mkdir -p sample/prems/test
$ cd sample/prems/
$ sudo chown nobody test/
$ ls -l
$ cd test/
$ cd ..
$ rm -r test/

tail/head

tail・・・ファイルの末尾を表示する。

tail [ファイル名]

head・・・ファイルの最初の部分を表示する。

head [ファイル名]

参考

http://www.linux.or.jp/JM/html/gnumaniak/man1/

2009-04-08

シェル vol.4

ファイル内部の探索やパイプ、リダイレクトについて学びました。

grep・・・ファイル内部の探索

grep [オプション] [調べたい文字列] 調べたいパス or ファイル名

複数調べることもできる。

オプション
-n何行目にあるか表示する。
-i大文字小文字を区別しない。
-rディレクトリに検索を掛ける。
-lその文字列を含んだファイル名を表示する。

パイプ

cat XXXX.txt | more

|の前に書いてあるコマンドに対して作用する。

less/more

catを読みやすくする。

qQuit

リダイレクト

標準入力キーボードで叩いた結果
標準出力コマンドの実行結果をそのまま出す例)ディスプレイに表示
標準エラー出力コマンドのエラーを出す

標準出力を書き換えることによってディスプレイではなくファイルで保存することも可能。

コマンド > [出力先]

実際にやってみた。

ls -l > output.txt

lsの結果がoutput.txtで保存される。

ls -l 1>output.txt 2>error.txt
// 1>が標準出力
// 2>が標準エラー出力
$ ls -l >> output.txt
$ ls -al >> output.txt
// >> を使うとファイルに結果を追記していく。

history・・・今まで打ったコマンドの履歴がわかる。

history | less

2009-04-06

シェル vol.3

目標:パーミッションを理解すること。

パーミッションは許可属性。

読む、書く、実行の設定をするための仕組み。

昔は一台のコンピュータを共有していたためこのような仕組みが生まれた。

現代では、書き間違えを防いだりするのに必要なので理解する。

touch・・・新しいファイルを作る。

新しいファイルを作る。もうあるファイルの場合はタイムスタンプを更新する。

touch test

open・・・ファイルを開く

ファイルを開く

open test.txt
-rw-r--r--  1 shota  staff  0  4  6 11:24 memo.txt

パーミッションの指定

最初の一文字から先がパーミッション

3つづつ分類、u(所有者),g(グループ),o(その他)の順で書かれている。

r読めます4
w書き込める2
xプログラムとして実行できる1

数字は足し算なので・・・

-rw-r--r--644
rwxrwxr-x775

となる。

ファイルのパーミッション

chmod・・・パーミッションの変更

chmod g+w memo.txt

上の例はmemo.txtの属性をグループでも書き込めるように変更した。

chmod go-r important.txt

上の例はimportant.txtの属性をグループ、その他が読めないようにした。

-rw-------  1 shota  staff  0  4  6 11:34 important.txt
-rw-rw-r--  1 shota  staff  0  4  6 11:24 memo.txt

※ユーザーを指定しないとすべてから指定した権限が追加したり削除したりできる。

chmodは先ほどの数字でも指定ができる。
chmod 600 memo.txt

chown・・・所有者を変更する

chown nobody important.txt

important.txtの所有者をnobodyに変える。ただし、sudoを使わなければできない。

-r--------  1 nobody  staff  0  4  6 11:34 important.txt
-rw-rw-r--  1 shota   staff  0  4  6 11:24 memo.txt

catでimportant.txtを開いてみると

shota$ cat important.txt 
cat: important.txt: Permission denied

ただし、フォルダの権限がshotaになっているのでファイルの削除はできる。

cat・・・ファイルを見ることができるコマンド

cat memo.txt

ファイルを二つ指定すると連結して表示される。

cat memo.txt important.txt

sudo・・・管理者権限でコマンドを実行できる。

sudo 〜〜〜

cat /etc/group・・・グループの一覧が表示される。

cat /etc/group

groups・・・自分が所属しているグループの一覧が表示される。

groups

chgrp・・・ファイルの所属グループを変更する。

chgrp admin important.txt

結果

-r--------  1 nobody  admin  0  4  6 11:34 important.txt
-rw-rw-r--  1 shota   staff  0  4  6 11:24 memo.txt

ディレクトリパーミッション

rlsさせるかどうか。4
wtouchができるかどうか。つまりファイルが作れる/削除できるか否か。2
xcdができなくなる。通常は付けて使う。1

mkdirでディレクトリを作る。

drwxr-xr-x  2 shota   staff  68  4  6 12:04 abc
-r--------  1 nobody  admin   0  4  6 11:34 important.txt
-rw-------  1 shota   staff   0  4  6 11:24 memo.txt

abcにcdで移動して試しにchmodでreadを取ってみると

chmod -r .

そうすると

ls: .: Permission denied
Copyright © crazyup. All rights reserved.