Skip to main content
Source Link

In order to have only one argument on the command line ($ hideextension ~/music/somesong.mp3), you can make your applescript become a shell script. It is possible to use osascript in the shebang (#!/usr/bin/osascript) like in the following code. To proceed :

  1. Test your applescript code in a .scpt file => toggle_hidden_extension.scpt

  2. When OK, add the shebang (#!/usr/bin/osascript) at the beginning of the file

  3. Export it with file format "text" => toggle_hidden_extension.applescript

  4. Change extension to .sh => toggle_hidden_extension.sh

  5. In Terminal, make it executable :

     chmod u+x toggle_hidden_extension.sh
    
  6. Now you can run it :

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

So, the code to illustrate:

#!/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