OS X'te “Kilitli” dosyaların kilidini açmak için komut


96

Windows sisteminden Mac bilgisayarıma birçok salt okunur dosya kopyaladım. "Bilgi Al" ı kullanarak her bir dosya için Bilgileri görüntülerken, Kilitli olduklarını görebilirim. Bazı dosyaların üzerine kopyalamak için bir bash betiği yazıyorum ve "İşleme izin verilmiyor" yazan bir hata alıyorum. İlk önce dosyaların kilidini açmam gerekiyor. Dosyaları sık sık Windows sisteminden çekeceğim için, komut dosyamın bu dosyaların kilidini açmasını istiyorum.

OSX'te "Kilitli" dosyaların kilidini açmak için kullanılan terminal komutu nedir?

Yanıtlar:


136

Dosya kilidini açmak için şunları kullanabilirsiniz:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = "kilitli" gibi dosya / klasörlerdeki bayrakları değiştir
  • -R = özyinelemeli veya her şey için ve belirtilen dizindeki dizinleri takip et
  • nouchg = dosyanın değiştirilebileceği
  • /PATH/= elbette değiştirmek istediğiniz dosyaların yoludur. Gibi bir şey: ~/Sites/mysite/directory/with/locked/files/aynı zamanda çalışır.

1
Anlaşılan yanıtı verdiğim gibi çözümü buldum. Ayrıca -R'nin özyinelemeli olduğunu öğrendim. Bu nedenle, geçerli dizindeki tüm dosyaların kilidini açmak için <br/> chflags nochg * <br/> kullanın ve sadece bir dosyayı değiştirin <br/> chflags nouchg onefile.txt Bkz: mehtanirav.com/2009/04/16/recursively -unlock-files-on-mac-os-x
Michael Prescott

3
Başka ilgili bayrak var schgsistem değişmez bayrağı (bkz olan developer.apple.com/library/mac/documentation/Darwin/Reference/... ) temizlemek için komut benzer:sudo chflags noschg PATH/TO/LOCKED/FILE
Andy Madge

1
/bin/ls -lO /path/to/fileMacOS'u flagsdosyalarda görüntülemek için kullanın . MacOS ' ls' komutunun tam yoluna dikkat edin . Yüklü GNU Coreutils varsa, bu gereklidir.
Tony Barganski

15

SetFile -a lAynı şeyi yapsa bile, kullanabilirsiniz chflags nouchg:

SetFile -a l file.ext

-a lkilitli özniteliğin bitini ayarlar. Komut Satırı Araçları paketini Xcode'un tercihlerinden veya developer.apple.com/downloads adresinden indirerek SetFile uygulamasını yükleyebilirsiniz .


Bu benim için macOS Sierra'da işe yarayan bir yöntemdi, bir Windows makinesinden kopyalanan birkaç dosya. Kullandım: SetFile -al ~ / Documents / Arduino / Samples / *
callisto

14

Bu, tüm bir dizini aramak ve tüm dosyaların kilidini açmak istiyorsanız faydalıdır.

cdDizine giden terminalde

Bu komut onların listesini bulur ve yazdırır .

$ find . -flags uchg

Bu komut onları açar .

$ find . -flags uchg -exec chflags nouchg {} \;

İkinci komutu çalıştırdıktan sonra tüm dosyaların kilidinin açıldığını tekrar kontrol etmek için ilk komutu kullanabilirsiniz, voilà!


1
Bu işe yaramasına rağmen, çok sayıda dosya için oldukça yavaş olabilir, çünkü her dosya için yeni bir işlem başlatır.
Richard Waite

0

Aslında bir dosyada ayarlanabilecek iki kilit bayrağı vardır: uchgve schg. uchgBayrak kümesine sahip bir dosya normal kullanıcılar tarafından değiştirilemez ancak sistem tarafından değiştirilebilir. schgBayrak kümesini içeren bir dosya herkes tarafından değiştirilemez. Her iki bayrak aynı anda ayarlanabilir.

Bir dosyada hangi bayrakların ayarlandığını görmek için

ls -lO FILE

Bu sıfır değil, büyük bir harf.

Bir dosyanın kesinlikle kilidini açmak için, yürütmeniz gerekir

chflags nouchg,noschg FILE

Her iki bayrak da ayarlanmış ve bunlardan yalnızca birini kaldırmışsınız gibi hala kilitlenecek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.