Αυτοματοποιημένη ρύθμιση συσχετίσεων αρχείων, δηλαδή επιλογή προγράμματος που θα ανοίξει ένα αρχείο από το Explorer/Finder. Και μοιράζομαι.
Πρώτα προβλήματα. Τα αρχεία με τις απαιτούμενες επεκτάσεις συχνά δεν ανοίγουν με τίποτα από προεπιλογή, και αν ανοίξουν, τότε από κάποιο iTunes. Στα Windows, οι απαραίτητες συσχετίσεις μερικές φορές χάνονται εντελώς κατά την εγκατάσταση (ή ακόμα και την απεγκατάσταση) προγραμμάτων: μερικές φορές απεγκαθιστάτε το GIMP και τα αρχεία ico μεταφέρονται από το συνηθισμένο πρόγραμμα προβολής αρχείων στην τυπική Συλλογή φωτογραφιών. Γιατί; Για τι? Άγνωστο... Τι θα γινόταν αν έβρισκα νέο πρόγραμμα επεξεργασίας ή, για διάφορους λόγους, μια νέα εγκατάσταση; Τι γίνεται αν υπάρχουν περισσότεροι από ένας υπολογιστές; Γενικά, το να κάνεις κλικ με ποντίκια στους διαλόγους είναι τέτοια ψυχαγωγία.
Αντίθετα, αποθήκευσα δύο αρχεία στο Dropbox και τώρα μπορώ να επαναφέρω τον κόσμο του υπολογιστή στο κανονικό σχεδόν αμέσως. Και τι περιμένατε τόσα χρόνια... Ακολουθεί η συνταγή για Windows και macOS.
Windows
Στην κονσόλα των Windows cmd.exe
αυτό γίνεται σε δύο στάδια:
ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt
Οι αλλαγές τίθενται σε ισχύ αμέσως. Παρά το γεγονός ότι η συσχέτιση είναι εγγεγραμμένη για έναν συγκεκριμένο χρήστη, για κάποιο λόγο αυτές οι εντολές πρέπει να εκτελούνται ως διαχειριστής. Και μην ξεχάσετε να διπλασιάσετε το σύμβολο τοις εκατό (%%1) όταν εκτελείτε από ένα αρχείο bat. Ο μαγικός κόσμος των Windows 7 Ultimate 64-bit…
macOS
Στο MacOS είναι βολικό να ορίσετε συσχετίσεις χρησιμοποιώντας το βοηθητικό πρόγραμμα brew install duti
. Παράδειγμα χρήσης:
duti -s com.apple.TextEdit .txt "editor"
Οι αλλαγές τίθενται σε ισχύ αμέσως, δεν απαιτείται sudo. Εδώ το όρισμα "com.apple.TextEdit" είναι το λεγόμενο "bundle id" του προγράμματος που χρειαζόμαστε. Το όρισμα "editor" είναι ο τύπος συσχέτισης: "editor" για επεξεργασία, "viewer" για προβολή, "all" για όλα.
Μπορείτε να βρείτε το "Bundle id" ως εξής: εάν υπάρχει το "/Applications/Sublime Text.app" της τρίτης έκδοσης, τότε το αναγνωριστικό του πακέτου θα είναι "com.sublimetext.3" ή κάποιο άλλο:
> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3
Δοκιμασμένο σε macOS Sierra.
Τελικό σενάριο για Windows (.bat)
@echo off
set XNVIEW=C:Program Files (x86)XnViewxnview.exe
set SUBLIME=C:Program FilesSublime Text 3sublime_text.exe
set FOOBAR=C:Program Files (x86)foobar2000foobar2000.exe
call :assoc_ext "%SUBLIME%" txt md js json css java sh yaml
call :assoc_ext "%XNVIEW%" png gif jpg jpeg tiff bmp ico
call :assoc_ext "%FOOBAR%" flac fla ape wav mp3 wma m4a ogg ac3
goto :eof
:assoc_ext
set EXE=%1
shift
:loop
if "%1" neq "" (
ftype my_file_%1=%EXE% "%%1"
assoc .%1=my_file_%1
shift
goto :loop
)
goto :eof
Τελικό σενάριο για macOS (.sh)
#!/bin/bash
# this allows us terminate the whole process from within a function
trap "exit 1" TERM
export TERM_PID=$$
# check `duti` installed
command -v duti >/dev/null 2>&1 ||
{ echo >&2 "duti required: brew install duti"; exit 1; }
get_bundle_id() {
osascript -e "id of app """ || kill -s TERM $TERM_PID;
}
assoc() {
bundle_id=$1; shift
role=$1; shift
while [ -n "$1" ]; do
echo "setting file assoc: $bundle_id .$1 $role"
duti -s "$bundle_id" "." "$role"
shift
done
}
SUBLIME=$(get_bundle_id "Sublime Text")
TEXT_EDIT=$(get_bundle_id "TextEdit")
MPLAYERX=$(get_bundle_id "MPlayerX")
assoc "$SUBLIME" "editor" txt md js jse json reg bat ps1 cfg sh bash yaml
assoc "$MPLAYERX" "viewer" mkv mp4 avi mov webm
assoc "$MPLAYERX" "viewer" flac fla ape wav mp3 wma m4a ogg ac3
Πηγή: www.habr.com