シス管系女子BEGINS 第0.2話

シス管系女子をシェア!

このエントリーをはてなブックマークに追加

1ページ目

(1ページ目)
第0.2話
ファイルの位置を相対パスで思い通りに指定したい

えーっと

ここでcpを実行して、
cdで「tmp」ディレクトリーに移動して

カタカタ……

またコマンドを実行して、
で、「cd ..」を実行してもっかいcp……

タンッ!

…って、あれ!?

ぱっ!

$ cp logs/error* tmp/
cp: `logs/error*' を stat できません: 
そのようなファイルやディレクトリはあり
ません
$ █

指示書どおりに入力してるのにエラーになっちゃう!?

やっぱりあたしにはコマンド操作は無理だったんだぁ~~っ!!

うわぁ~~ん!!

ちょっ……落ち着いて、みんとちゃん!

エラーメッセージが出てるなら、まずはそれをちゃんと読まないと!

慌てて焦っても問題は解決しないわよ?

2ページ目

(2ページ目)
そのようなファイルはありません、って出てますけど……

$ cp logs/error* tmp/
cp: `logs/error*' を stat できません: 
そのようなファイルやディレクトリはあり
ません
$ █

なんだ、文字通りの意味じゃない
cpに指定したコピー元ファイルがその位置に無いのね

でも、すぐ前の手順で同じコマンドを実行しましたよ?!
急にファイルがなくなるなんて変じゃないですか!!

ははーん

これは、ファイルの位置を相対パスで指定してるせいね

そ、早退パス……!?

いつでも帰ってよし!
認

そう、それがあれば定時どころかお昼過ぎにでも……

びしっ!

……って、字が違う!
早退じゃなくて相対!

ファイルの位置を表す文字列を「パス」と言うけど、パスの書き方には「絶対パス」と「相対パス」の2通りがあるの

/都 home区 mint町 tmp 1-5
⇒ /home/mint/tmp/1/5/

/都 home区 ohno町 reportsビル 3F 2号室
⇒ /home/ohno/reports/3/2/

絶対パスっていうのは、建物の場所を正式な住所で言うようなもの!
「/home/mint/...」っていうふうに「/」(ルート)から始まるのが絶対パスね

対する相対パスは、現在位置を基準としてその場所までの行き方を言うようなものよ
「/」から始まってないものはすべて相対パスなの

目の前のreportsビル
⇒reports/

shared商店の2階
⇒shared/2/

logsビルの3階の302号室
⇒logs/3/302

目の前のポスト
⇒post.sh

ファイル名やディレクトリー名だけを指定するのも相対パスよ!

知らなかった!
よくわかんないから言われるまま指定してました……

3ページ目

(3ページ目)
相対パスはカレントディレクトリーから※見た位置だから、現在位置に近い位置を手短に指定できて便利なんだけど……

※ コマンド操作やシェルスクリプトの場合。設定ファイルに書く相対パスては、どこからの相対パスなのかが変わることがある。

tools商店にあるnote.txtを取ってきて!

mv

tools/note.txt

その代わり、現在位置が想定と違うと目的の位置まで辿り着けないわ

toolsなんてお店この辺には無いよ~!

mv
mv

目の前に無いのでディレクトリー名(店名)だけでは見つけられない

相対パス指定で起こりがちなトラブルね

でも、なんでそんなことに……??
あたし、身に覚えなんて……

実行したコマンドを見てみると分かるかも……

……ああ、原因はこれね
ここ、「cd ..」じゃなくて「cd .」ってなってるでしょ?

$ cp logs/access* tmp/ 
$ cp logs/error* tmp/
$ cd tmp
$ /tools/report-monthly-accesses.sh
uploading...
done.
$ cd .
$ cp logs/error* tmp/
cp: `logs/error*' を stat できません: 
そのようなファイルやディレクトリはあり
ません
$ █

ココ!

これじゃあディレクトリーを移動できてないわよ

ええっ?!
cdコマンドを実行したのに移動しないなんてことがあるんですか!?

ピリオド(ドット)2個の「..」と1つだけの「.」は、ファイル名やディレクトリー名として書くと特別な意味になるの

「..」は1つ上位のディレクトリーの意味ね

$ cd ..

/
home
ohno
cd

$ cd ..

logs
01
02
03
04
tmp
cd

「cd ..」って実行すると、1つ上位のディレクトリー(親ディレクトリー)に移動することになるし……

これを相対パスの中で使えば、一気に何段階も上位のディレクトリーに移動したり

$ cd ../../

cd
/
home
tanimachi
ohno
mint
logs
tmp
,v

別のディレクトリーのファイルを一発で指定したりできるのよ

$ mv ../mint/logs/count.txt
       ../mint/tmp/

はええーっ!!
これってそういう意味だったんだ!

4ページ目

(4ページ目)
じゃあ「.」はどんな意味なんです!?
もっとすごい意味が?!

こっちは「そのディレクトリーそのもの」って意味ね

大抵はカレントディレクトリーかその配下のファイルやディレクトリーを指定するときに、パスの先頭に付けて使うわ

カレントディレクトリー内のresult.txtの内容を出力する

$ cat ./result.txt

cat

$ cd .

cd

カレントディレクトリーに移動する
=どこにも移動しない
=何も起こらない

カレントディレクトリーのcount.txtを、同じくカレントディレクトリー内のtmpにコピーする

cp

$ cp ./count.txt ./tmp/

……ふぇっ!?

ちょ、ちょっと!
そんなはっきり「何も起こらない」って……!
なんでそんな無意味な物があるんです!?
これでいいじゃないですか!!

$ cat result.txt

$ cp count.txt tmp/ 

ちゃんと使い道はあるんだけど……
まあ、必要になったらそのとき説明しましょ

とにかく今覚えておいて欲しいのはこういうことね!

はぐらかさないでくださいよ~~っ!!

今回のまとめ

●ファイルの位置の表し方(パス)には、
 「絶対パス」と「相対パス」の2種類がある
●パスの中でファイル名やディレクトリー名として
 「..」(ピリオド2つ)を書くと、
 1つ上位のディレクトリー(親ディレクトリー)を指す
●「..」と普通のファイル名やディレクトリー名を
 組み合わせると、カレントディレクトリー配下以外の
 位置にあるファイルも相対パスで示せる

コマンド操作では相対パスをよく使うわ
相対パスを見たら即座に現在位置との関係を想像できるくらいにはなっておきたいわね1

../../../data

あと、現在位置を見失ったらちゃんとpwdコマンドで確認しておくこと!

そのまま操作を続けたら、消すつもりのなかった
ファイルを間違って消しちゃうなんてこともあり得るわよ?

確かに……
それって、目隠ししたままカンで進むみたいなもんですもんねぇ

こっちかな……?

分かればよろしい1

な、なんか身に危険を感じる……?
……??

つづく。

第0.2話はここまで!

前の話へ

次の話へ

他のマンガを見る

拡散希望!

このエントリーをはてなブックマークに追加