Tuj starigu konatajn dosiero-asociojn

Aŭtomatigitaj agordaj dosier-asocioj, tio estas, elektante programon, kiu malfermos dosieron de Esplorilo/Finder. Kaj mi dividas.

Problemoj unue. Dosieroj kun la bezonataj etendoj ofte ne estas malfermitaj per io ajn defaŭlte, kaj se ili estas malfermitaj, tiam de iuj iTunes. Sub Vindozo, la necesaj asocioj foje estas tute perditaj kiam oni instalas (aŭ eĉ malinstalas) programojn: foje oni malinstalas GIMP, kaj ico-dosieroj estas transprenitaj de la kutima dosierspektilo al la norma Fotogalerio. Kial? Por kio? Nekonata... Kio se mi trovus novan redaktilon aŭ, pro diversaj kialoj, freŝan instalaĵon? Kio se estas pli ol unu komputilo? Ĝenerale, klaki musojn en dialogoj estas tia distro.

Anstataŭe, mi konservis du dosierojn sur Dropbox kaj nun mi povas revenigi la komputilan mondon al normala preskaŭ tuj. Kaj kion vi atendis dum tiom da jaroj... Poste estas la recepto por Vindozo kaj macOS.

fenestroj

En la Vindoza konzolo cmd.exe ĉi tio estas farita en du etapoj:

ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt

Ŝanĝoj efektiviĝas tuj. Malgraŭ tio, ke la asocio estas registrita por specifa uzanto, ial ĉi tiuj komandoj devas esti rulitaj kiel administranto. Kaj ne forgesu duobligi la procentan simbolon (%%1) kiam vi kuras de bat-dosiero. La magia mondo de Windows 7 Ultimate 64-bit...

MacOS

En MacOS estas oportune agordi asociojn uzante la ilon duti. Ĝi estas instalita per brew install duti. Ekzemplo de uzo:

duti -s com.apple.TextEdit .txt "editor"

Ŝanĝoj efektiviĝas tuj, ne necesas sudo. Ĉi tie la argumento "com.apple.TextEdit" estas la tiel nomata "bundle id" de la programo, kiun ni bezonas. La argumento "redaktisto" estas la asocispeco: "redaktoro" por redaktado, "spektanto" por spektado, "ĉio" por ĉio.

Vi povas trovi la "pakaĵidentigilon" tiel: se ekzistas "/Applications/Sublime Text.app" de la tria versio, tiam ĝia pakaĵidentigilo estos "com.sublimetext.3", aŭ iu alia:

> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3

Provita sur macOS Sierra.

Fina skripto por Vindozo (.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

Fina skripto por 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

fonto: www.habr.com

Aldoni komenton