teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

13

検証の追記

2018/11/20 00:02

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -101,4 +101,10 @@
101
101
  次に自分を含めて削除とすればどうか検証しましたが、
102
102
  やはりindex.phpだけが削除されずに残ってしまいました。
103
103
 
104
- また、zzzというディレクトリを作成したところ、index.phpと同様に削除されずに残ってしまうことを確認いたしました。
104
+ また、zzzというディレクトリを作成したところ、index.phpと同様に削除されずに残ってしまうことを確認いたしました。
105
+
106
+ ###検証で分かったこと(現状)
107
+ scriptディレクトリより後にindex.phpが削除されてしまうため、
108
+ 「/home/xxx/kensyou/script/../index.php」というパスはありませんよ と怒られてしまっている
109
+  ↓
110
+ scriptだけ最後に消したいが、うまくいかない

12

検証の追記

2018/11/20 00:02

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -78,4 +78,27 @@
78
78
   → 回答いただいた方の環境では削除がされたので違う
79
79
 
80
80
  ファイルのパーミッションの問題?
81
-  → chmod 777でフルアクセスにしてみたが、削除されない
81
+  → chmod 777でフルアクセスにしてみたが、削除されない
82
+
83
+
84
+ ```sh
85
+ #スクリプト自身の絶対パス取得
86
+ script_dir_path=$(dirname $(readlink -f $0))
87
+
88
+ #ディレクトリ名取得
89
+ script_dir=`echo ${script_dir_path} | awk -F "/" '{ print $NF }'`
90
+
91
+ #最初に自分自身のディレクトリの親ディレクトリから、
92
+ #自分自身のディレクトリ以外の配下ディレクトリを削除する
93
+ ls ${script_dir_path}/../ | grep -v -E ${script_dir} | xargs rm -rf
94
+
95
+ #最後に自分自身のディレクトリの親ディレクトリから、
96
+ #全ての配下ディレクトリを削除する
97
+ rm -rf ${script_dir_path}/../*
98
+ ```
99
+
100
+ 上記のような内容で、最初に自分のディレクトリ以外を削除
101
+ 次に自分を含めて削除とすればどうか検証しましたが、
102
+ やはりindex.phpだけが削除されずに残ってしまいました。
103
+
104
+ また、zzzというディレクトリを作成したところ、index.phpと同様に削除されずに残ってしまうことを確認いたしました。

11

検証の追記

2018/11/19 10:31

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -74,4 +74,8 @@
74
74
 
75
75
  ###推測
76
76
  index.phpより先にscriptディレクトリの中身が削除されてしまったため、
77
- index.phpの削除処理が走らなかった?(要検証)
77
+ index.phpの削除処理が走らなかった?(要検証)
78
+  → 回答いただいた方の環境では削除がされたので違う
79
+
80
+ ファイルのパーミッションの問題?
81
+  → chmod 777でフルアクセスにしてみたが、削除されない

10

追記

2018/11/19 09:48

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -65,7 +65,7 @@
65
65
  ```sh
66
66
  +++ readlink -f kensyou/script/delete.sh
67
67
  ++ dirname /home/xxx/kensyou/script/delete.sh
68
- + script_dir_path=/root/kensyou/script
68
+ + script_dir_path=/home/xxx/kensyou/script
69
69
  + rm -rf /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
70
70
  ```
71
71
 

9

追記

2018/11/19 09:35

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -57,7 +57,7 @@
57
57
 
58
58
  ```sh
59
59
  script_dir_path=$(dirname $(readlink -f $0))
60
- echo ${script_dir_path}/../*
60
+ rm -rf ${script_dir_path}/../*
61
61
  ```
62
62
 
63
63
  上記スクリプトのsh -xでの実行結果
@@ -66,8 +66,7 @@
66
66
  +++ readlink -f kensyou/script/delete.sh
67
67
  ++ dirname /home/xxx/kensyou/script/delete.sh
68
68
  + script_dir_path=/root/kensyou/script
69
- + echo /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
69
+ + rm -rf /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
70
- /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
71
70
  ```
72
71
 
73
72
  echoの内容としては、index.phpも含まれているため、

8

検証の追記

2018/11/19 09:34

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -71,4 +71,8 @@
71
71
  ```
72
72
 
73
73
  echoの内容としては、index.phpも含まれているため、
74
- rm -rfの対象になりそうなのですが、実際にはindex.phpのみ削除がなされないという結果となりました。
74
+ rm -rfの対象になりそうなのですが、実際にはindex.phpのみ削除がなされないという結果となりました。
75
+
76
+ ###推測
77
+ index.phpより先にscriptディレクトリの中身が削除されてしまったため、
78
+ index.phpの削除処理が走らなかった?(要検証)

7

検証の追記

2018/11/19 09:18

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -50,7 +50,7 @@
50
50
  上記スクリプトにより、「rm -rf /home/xxx/kensyou/script/../*」というコマンドが発行されるので、
51
51
  kensyouディレクトリ以下の全てが削除される筈だと思っていた
52
52
 
53
- ##検証
53
+ ##追加検証
54
54
  回答頂いた内容より、
55
55
  rm -rfのパス指定のクォーテーションを外すことでパスが正しく解釈され、削除が動くようになりました。
56
56
  しかし、[/home/xxx/kensyou/script/]の直下にファイル(仮にindex.phpなど)がある場合、index.phpの削除がなされないという動作になりました。
@@ -68,4 +68,7 @@
68
68
  + script_dir_path=/root/kensyou/script
69
69
  + echo /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
70
70
  /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
71
- ```
71
+ ```
72
+
73
+ echoの内容としては、index.phpも含まれているため、
74
+ rm -rfの対象になりそうなのですが、実際にはindex.phpのみ削除がなされないという結果となりました。

6

追記

2018/11/19 09:15

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -17,6 +17,9 @@
17
17
  →[/script]
18
18
  →→[/delete.sh]
19
19
 
20
+ 【追加検証分】
21
+ →[index.php]
22
+
20
23
  この[/home/xxx/kensyou/script/delete.sh]を実行した時、
21
24
  /home/xxx/kensyou/以下のディレクトリ、ファイルを全て削除したいと考えています。
22
25
 

5

追記

2018/11/19 09:12

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -52,10 +52,14 @@
52
52
  rm -rfのパス指定のクォーテーションを外すことでパスが正しく解釈され、削除が動くようになりました。
53
53
  しかし、[/home/xxx/kensyou/script/]の直下にファイル(仮にindex.phpなど)がある場合、index.phpの削除がなされないという動作になりました。
54
54
 
55
+ ```sh
56
+ script_dir_path=$(dirname $(readlink -f $0))
57
+ echo ${script_dir_path}/../*
58
+ ```
55
59
 
56
- sh -xでの実行結果
60
+ 上記スクリプトのsh -xでの実行結果
57
61
 
58
- ```html
62
+ ```sh
59
63
  +++ readlink -f kensyou/script/delete.sh
60
64
  ++ dirname /home/xxx/kensyou/script/delete.sh
61
65
  + script_dir_path=/root/kensyou/script

4

補足説明の追加

2018/11/19 09:11

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -50,4 +50,15 @@
50
50
  ##検証
51
51
  回答頂いた内容より、
52
52
  rm -rfのパス指定のクォーテーションを外すことでパスが正しく解釈され、削除が動くようになりました。
53
- しかし、[/home/xxx/kensyou/script/]の直下にファイル(仮にindex.phpなど)がある場合、index.phpの削除がなされないという動作になりました。
53
+ しかし、[/home/xxx/kensyou/script/]の直下にファイル(仮にindex.phpなど)がある場合、index.phpの削除がなされないという動作になりました。
54
+
55
+
56
+ sh -xでの実行結果
57
+
58
+ ```html
59
+ +++ readlink -f kensyou/script/delete.sh
60
+ ++ dirname /home/xxx/kensyou/script/delete.sh
61
+ + script_dir_path=/root/kensyou/script
62
+ + echo /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
63
+ /home/xxx/kensyou/script/../01 /home/xxx/kensyou/script/../02 /home/xxx/kensyou/script/../03 /home/xxx/kensyou/script/../script /home/xxx/kensyou/script/../index.php
64
+ ```

3

補足 追記

2018/11/19 09:10

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -45,4 +45,9 @@
45
45
 
46
46
  ##現在の想定
47
47
  上記スクリプトにより、「rm -rf /home/xxx/kensyou/script/../*」というコマンドが発行されるので、
48
- kensyouディレクトリ以下の全てが削除される筈だと思っていた
48
+ kensyouディレクトリ以下の全てが削除される筈だと思っていた
49
+
50
+ ##検証
51
+ 回答頂いた内容より、
52
+ rm -rfのパス指定のクォーテーションを外すことでパスが正しく解釈され、削除が動くようになりました。
53
+ しかし、[/home/xxx/kensyou/script/]の直下にファイル(仮にindex.phpなど)がある場合、index.phpの削除がなされないという動作になりました。

2

誤りの訂正

2018/11/19 09:07

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -27,14 +27,14 @@
27
27
  script_dir_path=$(dirname $(readlink -f $0))
28
28
 
29
29
  #自身のパスの1つ上 kensyouディレクトリ以下のディレクトリとファイルを全て削除
30
- rm -rf "${script_dir_path}/../../*"
30
+ rm -rf "${script_dir_path}/../*"
31
31
 
32
32
  ```
33
33
 
34
34
  kensyouディレクトリ以下の全てを削除することを期待して、
35
35
  上記のようなスクリプトを書きましたが、削除されたディレクトリ・ファイルはありませんでした。
36
36
 
37
- しかし、「"${script_dir_path}/../../*"」の部分をechoで見てみると、
37
+ しかし、「"${script_dir_path}/../*"」の部分をechoで見てみると、
38
38
  「/home/xxx/kensyou/script/../*」となる為、「rm -rf /home/xxx/kensyou/script/../*」コマンドになりそうなのに
39
39
  何故削除されないのかが分かりません。
40
40
 

1

追記

2018/11/19 08:25

投稿

shakevo
shakevo

スコア453

title CHANGED
File without changes
body CHANGED
@@ -41,4 +41,8 @@
41
41
  私が何を間違えているのか、
42
42
  お詳しい方がいらっしゃれば何卒ご教示頂けますと幸いです。
43
43
 
44
- お手数ですが、宜しくお願い致します。
44
+ お手数ですが、宜しくお願い致します。
45
+
46
+ ##現在の想定
47
+ 上記スクリプトにより、「rm -rf /home/xxx/kensyou/script/../*」というコマンドが発行されるので、
48
+ kensyouディレクトリ以下の全てが削除される筈だと思っていた