OS X komut satırı aracılığıyla bir dosyanın uzantısını göster / gizle


18

Belirli bir dosyanın uzantısının Finder'da gösterilip gösterilmeyeceğini değiştirmek için terminal üzerinden bir yol arıyorum:

$ hideextension ~/music/somesong.mp3

Açmak zorunda kalmadan Bilgi almak ve çok sıkıcı olduğu için onay kutusunu değiştirin.

FastScripts kullanarak kısayol üzerinden çağıracağım bir betiğe eklemeyi planlıyorum. Bunu nasıl gerçekleştireceğine dair herhangi bir fikir memnuniyetle karşılansa da, GUI komut dosyasından uzak durmayı denemek istiyorum.


Herhangi bir fark yaratırsa, bunu Lion'da yapmaya çalışıyorum.
joshua.thomas.bird

Yanıtlar:


22

Bunu GUI ile değiştirmenin tek gerçek yolu tıklamaktır. Uzantıyı gizle Finder'da Bilgi penceresi. Bunu kontrol etmek com.apple.FinderInfo normalde düzenleyemediğiniz genişletilmiş özellik - en azından kolay değil. Ancak bunu bizim için yapmak için bir araç kullanabiliriz.

Aşağıdakilerin çalışması için açık bir şekilde Tüm dosya uzantılarını göster Finder'ın tercihlerinde işareti kaldırıldı.


AppleScript sayesinde

AppleScript bu işlevi aşağıdakilerle sunar: set extension hidden Komut. Açıkçası bir ihtiyacın var alias bir dosya nesnesine. Bunu örneğin bir diyalog olsa da alabiliriz. İşte sadece minimal bir çalışma örneği.

tell application "Finder"
    set some_file to (choose file)
    set extension hidden of some_file to true
end tell

Tersine çevirmek, sadece değiş tokuş etmek true ile false İşte. Tam çağrı o zaman, örneğin:

set extension hidden of alias "Macintosh HD:Users:werner:Desktop:file.png" to true

Bunu doğrudan bir komut dosyasından da çalıştırabilirsiniz (teşekkürler @DanielBeck Ekleme için):

on run argv
tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true
end run

Bunu olarak kaydet filename.scpt ve komut satırından şunu çalıştırın:

osascript filename.scpt targetfile

İle SetFile komuta

Not: Bu, Xcode 6'dan bu yana kullanımdan kaldırılmıştır.

Eğer Xcode kurulu ise, SetFile(1) tam olarak istediğinizi yapan (ve dosya özellikleriyle ilgili birkaç işlev daha sunan):

Uzantıyı gizle:

SetFile -a E <file>

Uzantıyı tekrar göster:

SetFile -a e <file>

Açıkçası, bu bir diğer ad, dosya değil. AppleScript'i komut satırından nasıl kullanacağınız: on run argv [newline] tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true [newline] end run, olarak kullanmak osascript filename.scpt targetfile.
Daniel Beck

1
Haklısın elbette. Tam AppleScript olayını ekledim. Gelecekte, sadece devam edin ve cevap için önemli bir şey ekleyin - her zaman beklerim.
slhck

1
Sadece aradığım ne .. Neyse ki yüklü Xcode var ve SetFile hile yaptı :-)
thandasoru

SetFile o zamandan beri kullanımdan kaldırıldı Xcode 6 . Ayrıca, manuel sayfaya olan bağlantının süresi doldu.
Franklin Yu

@ FranklinYu Bilgi için teşekkürler. Bir değişiklik biliyor musunuz?
slhck

4

Teşekkürler slhck Cevabınız için, istediğim şeyi yapmam için bana bir demet yardım etti.

Kısayollardan hoşlandığım için Automator olsa da bir "Çalıştırma Kabuk Betiği Çalıştır" Hizmeti yarattım.

for f in "$@"
do
    STATUS=`getFileInfo -ae "$f"`
    if [ $STATUS== 0 ];
    then
        SetFile -a E "$f"
    else
        SetFile -a e "$f"
    fi
done

Sonra Finder'a gittim - & gt; Servis Tercihleri ​​ve Servis için bir kısayol eklendi.

 "Command + Shift + H" didn't work for me,
 "Command + H" hides the application
 so i chose "Command + Shift + E"

Umarım yardımcı olur. =)


STATUS= çizginin sonunda arka tik işareti eksik. Ayrıca, Mac + XCode'umda komut GetFileInfo G sermayesi var
bjnord

0

Komut satırında sadece bir argüman olması için ( $ hideextension ~/music/somesong.mp3 ), el yazınızı bir kabuk betiği haline getirebilirsiniz. Shebang'da osascript kullanmak mümkündür. #!/usr/bin/osascript ) aşağıdaki koddaki gibi. Devam etmek için :

  1. El yazısı kodunuzu bir .scpt dosyasında test edin = & gt; toggle_hidden_extension.scpt
  2. Tamam olduğunda, shebang'ı ekleyin ( #!/usr/bin/osascript ) dosyanın başında
  3. Dosyayı "text" = & gt; toggle_hidden_extension.applescript
  4. Uzantıyı .sh = & gt; olarak değiştir toggle_hidden_extension.sh
  5. Terminal'de çalıştırılabilir hale getirin:

    chmod u+x toggle_hidden_extension.sh
    
  6. Şimdi çalıştırabilirsiniz:

    ./toggle_hidden_extension.sh /path/to/myfile.mp3
    

Yani, göstermek için kod:

#!/usr/bin/osascript

(*
usage: toggle_hidden_extension.sh file
*)

(*
Test 1 : ./toggle_hidden_extension.sh /Users/boissonnfive/Desktop/file.txt
Test 2 : ./toggle_hidden_extension.sh
Test 3 : ./toggle_hidden_extension.sh 0fdjksl/,3
*)

on run argv
    try
        processArgs(argv)
        toggleHiddenExtension(item 1 of argv)
    on error
        return usage()
    end try

    if result then
        return "Extension hidden for " & POSIX path of (item 1 of argv)
    else
        return "Extension revealed for " & (POSIX path of (item 1 of argv))
    end if

end run


on usage()

    return "usage: toggle_hidden_extension.sh file"

end usage

on processArgs(myArgs)

    set item 1 of myArgs to POSIX file (first item of myArgs) as alias

end processArgs

on toggleHiddenExtension(myFile)

    tell application "Finder" to set extension hidden of myFile to not (extension hidden of myFile)

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