2016-04-04 29 views
2

kilitli, artık geçerli klasöre erişmek (ve tabii ki bu komut dosyasını açın) kuramıyorum. Klasörü Konqueror'da gördüğünüzde, klasör simgesinde ek bir kilit var. Bana ne olduğunu anlatabilir ve nasıl geri alabilirim?Running Perl komut dosyası yanlışlıkla bu komut dosyasını çalıştırmadan sonra aşağıdaki kodu</p> <pre><code>#/usr/bin/perl use strict; use warnings; chmod -R 775,"path-to-current-folder"; </code></pre> <p>olan bir Perl script var bir klasör

Bu klasör iznini kontrol ettikten

, görünüşe göre d--------- olarak değiştirilmiştir. Bu sorunu, izinleri sıfırlayarak çözdüm, ancak bunun neden olduğunu herkesin anlayabilmesi harika olurdu. Teşekkürler.

+0

ol kökü ve geri değiştirin. Sonra dikkatle 'perldoc -f chmod' gözden geçirin. – xxfelixxx

+0

Sana 'yorumlamak modu olarak -R', yani '0' ve sonra adlandırılmış dosyaları '775' ve "yoluna-akım-klasörüne" uygulamak için denemek için chmod neden yoktu neyi şüpheli. – xxfelixxx

+2

@xxfelixxx neredeyse değil, oldukça. '-R', [dosya test operatörleri] nden biridir (http://perldoc.perl.org/functions/-X.html); '-R 775' testin sonucudur" RUID tarafından okunabilen "775" isimli dosyadır? muhtemelen yanlıştır, çünkü 775 adlı bir dosya yoktur. Sonra sahte olduğunu 0. – hobbs

cevap

1

Sana 'chmod' perl fonksiyonu ile 'chmod' kabuk komutu karıştırıyorsunuz. İkincisi, tek bir listeyi, ilk elemanı sekizlik olarak deneylenen sayısal kod olması gereken bir parametre olarak alır. perldoc -f chmod'dan;

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 ... 

eski - yani, kabuğu - bir -R anahtarı bulunmaktadır. Detaylar için bakınız man chmod.

+0

sayesinde, yinelemeli bir dizin altındaki tüm dosyaların izinlerini değiştirmek için bir Perl komut dosyası için bir yolu yoktur bu yüzden? – annena

+0

Bildiğim kadarıyla, hayır - doğrudan yerleşiklerle değil. Açıktır ki "chmod -R" ye bir "sistem" çağrısı yapardı ya da alternatif olarak, sahip olduğunuz tüm kriterleri karşılayan dosyaları bulmak için File :: Find modülünü kullanabilir ve chmod'u sözde & aranan işlev aracılığıyla uygulayabilirsiniz. – Marty