2016-04-04 11 views
2

をロックし、私はもう現在のフォルダにアクセスする(そしてもちろん、このスクリプトを開く)ことができません。 Konquerorでフォルダを見ると、フォルダアイコンに追加のロックがあります。誰が何が起こったのか、どうすれば元に戻すことができますか?実行するPerlスクリプトが誤って私はこのスクリプトを実行する際に、次のコード</p> <pre><code>#/usr/bin/perl use strict; use warnings; chmod -R 775,"path-to-current-folder"; </code></pre> <p>を持っているPerlスクリプトを持っているフォルダ

このフォルダのアクセス許可を確認しましたが、明らかにd---------に変更されています。私は許可をリセットすることでこの問題を解決しましたが、なぜ誰がこれが起こったのか説明できれば素晴らしいと思います。ありがとう。

+0

ルートになり、元に戻します。次に 'perldoc -f chmod'を慎重に見直してください。 – xxfelixxx

+0

私はchmodが '-R'をモード、すなわち' 0'と解釈して、それを '775'と "path-to-current-folder"という名前のファイルに適用しようとしたと思います。 – xxfelixxx

+2

@xxfelixxxほぼそうではありません。 '-R'は[ファイルテスト演算子](http://perldoc.perl.org/functions/-X.html)の1つです。 '-R 775'はテストの結果です" RUIDが読み取れる '775'というファイルがありますか?" '775'という名前のファイルがないのでおそらく偽です。それでfalseは0になります。 – hobbs

答えて

1

あなたは 'chmod'シェルコマンドを 'chmod' perl関数と混同していると思います。後者は、最初の要素が8進数で表現された数値コードでなければならないパラメータとして単一のリストを取ります。 perldoc -f chmodから;

chmod LIST 
      Changes the permissions of a list of files. The first element 
      of the list must be the numeric mode, which should probably be 
      an octal number, and which definitely should not be a string of 
      octal digits: 0644 is okay, but "0644" is not. Returns the 
      number of files successfully changed. See also "oct" if all 
      you have is a string. 

       $cnt = chmod 0755, "foo", "bar"; 
       chmod 0755, @executables; 
      ... etc ... 

前者、つまりシェルは、スイッチ-Rを持っています。詳細は、man chmodを参照してください。

+0

ありがとうございます。そのため、Perlスクリプトがディレクトリ下のすべてのファイルのパーミッションを再帰的に変更する方法はありませんか? – annena

+0

私が知る限り、いいえ - 直接組み込みを介してではありません。明らかに "chmod -R"を呼び出す "system"呼び出しがそれを行うか、File :: Findモジュールを使用して、あなたが持っている基準を満たすファイルを見つけて、いわゆる&wanted関数でchmodを適用することができます。 – Marty

関連する問題