เชคเชฐเชค เชœ เชชเชฐเชฟเชšเชฟเชค เชซเชพเช‡เชฒ เชเชธเซ‹เชธเชฟเชเชถเชจเซ‹ เชธเซ‡เชŸ เช•เชฐเซ‹

เช“เชŸเซ‹เชฎเซ‡เชŸเซ‡เชก เชธเซ‡เชŸเชฟเช‚เช— เชซเชพเช‡เชฒ เชเชธเซ‹เชธเชฟเชเชถเชจเซเชธ, เชเชŸเชฒเซ‡ เช•เซ‡, เชเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชชเชธเช‚เชฆ เช•เชฐเชตเซ‹ เชœเซ‡ เชเช•เซเชธเชชเซเชฒเซ‹เชฐเชฐ/เชซเชพเช‡เชจเซเชกเชฐเชฎเชพเช‚เชฅเซ€ เชซเชพเช‡เชฒ เช–เซ‹เชฒเชถเซ‡. เช…เชจเซ‡ เชนเซเช‚ เชถเซ‡เชฐ เช•เชฐเซเช‚ เช›เซเช‚.

เชชเซเชฐเชฅเชฎ เชธเชฎเชธเซเชฏเชพเช“. เชœเชฐเซ‚เชฐเซ€ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชตเชพเชณเซ€ เชซเชพเช‡เชฒเซ‹ เช˜เชฃเซ€เชตเชพเชฐ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช•เช‚เชˆเชชเชฃ เชฆเซเชตเชพเชฐเชพ เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€, เช…เชจเซ‡ เชœเซ‹ เชคเซ‡ เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เช•เซ‡เชŸเชฒเชพเช• iTunes เชฆเซเชตเชพเชฐเชพ. เชตเชฟเชจเซเชกเซ‹เช เชนเซ‡เช เชณ, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ (เช…เชฅเชตเชพ เช…เชจเช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชชเชฃ) เชœเชฐเซ‚เชฐเซ€ เชœเซ‹เชกเชพเชฃเซ‹ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เซ‹เชตเชพเชˆ เชœเชพเชฏ เช›เซ‡: เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเซ‡ GIMP เชจเซ‡ เช…เชจเช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ เช›เซ‹, เช…เชจเซ‡ ico เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชซเชพเช‡เชฒ เชตเซเชฏเซ‚เช…เชฐเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชซเซ‹เชŸเซ‹ เช—เซ‡เชฒเซ‡เชฐเซ€เชฎเชพเช‚ เชฒเชˆ เชœเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชถเชพ เชฎเชพเชŸเซ‡? เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡? เช…เชœเซเชžเชพเชค... เชœเซ‹ เชฎเชจเซ‡ เชจเชตเซ‹ เชธเช‚เชชเชพเชฆเช• เชฎเชณเซ‡ เช…เชฅเชตเชพ, เชตเชฟเชตเชฟเชง เช•เชพเชฐเชฃเซ‹เชธเชฐ, เชจเชตเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเชณเซ‡ เชคเซ‹ เชถเซเช‚? เชœเซ‹ เชเช• เช•เชฐเชคเชพเช‚ เชตเชงเซ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชนเซ‹เชฏ เชคเซ‹ เชถเซเช‚? เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชธเช‚เชตเชพเชฆเซ‹เชฎเชพเช‚ เช‰เช‚เชฆเชฐเชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเชตเซเช‚ เช เช†เชตเชพ เชฎเชจเซ‹เชฐเช‚เชœเชจ เช›เซ‡.

เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡, เชฎเซ‡เช‚ เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธ เชชเชฐ เชฌเซ‡ เชซเชพเช‡เชฒเซ‹ เชธเชพเชšเชตเซ€ เช›เซ‡ เช…เชจเซ‡ เชนเชตเซ‡ เชนเซเช‚ เชฒเช—เชญเช— เชคเชฐเชค เชœ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฒเชพเชตเซ€ เชถเช•เซเช‚ เช›เซเช‚. เช…เชจเซ‡ เชคเชฎเซ‡ เช†เชŸเชฒเชพ เชตเชฐเซเชทเซ‹เชฅเซ€ เชถเซ‡เชจเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ‹... เช†เช—เชณ Windows เช…เชจเซ‡ macOS เชฎเชพเชŸเซ‡เชจเซ€ เชฐเซ‡เชธเซ€เชชเซ€ เช›เซ‡.

เชตเชฟเชจเซเชกเซ‹เช

เชตเชฟเชจเซเชกเซ‹เช เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ cmd.exe เช† เชฌเซ‡ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

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

เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชคเชฐเชค เชœ เช…เชฎเชฒเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช เชนเช•เซ€เช•เชค เชนเซ‹เชตเชพ เช›เชคเชพเช‚ เช•เซ‡ เชเชธเซ‹เชธเชฟเชเชถเชจ เชšเซ‹เช•เซเช•เชธ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒ เช›เซ‡, เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ เช† เช†เชฆเซ‡เชถเซ‹เชจเซ‡ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฌเซ‡เชŸ เชซเชพเชˆเชฒเชฎเชพเช‚เชฅเซ€ เชฆเซ‹เชกเชคเชพ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชŸเช•เชพ เชชเซเชฐเชคเซ€เช• (%%1)เชจเซ‡ เชฌเชฎเชฃเซเช‚ เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚. เชตเชฟเชจเซเชกเซ‹เช 7 เช…เชฒเซเชŸเซ€เชฎเซ‡เชŸ 64-เชฌเซ€เชŸเชจเซ€ เชœเชพเชฆเซเชˆ เชฆเซเชจเชฟเชฏเชพโ€ฆ

MacOS

MacOS เชฎเชพเช‚ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเชธเซ‹เชธเชฟเชเชถเชจเซ‹ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เช…เชจเซเช•เซ‚เชณ เช›เซ‡ เชซเชฐเชœ. เชคเซ‡ เชฎเชพเชฐเชซเชคเซ‡ เชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡ brew install duti. เช‰เชชเชฏเซ‹เช—เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ:

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

เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชคเชฐเชค เชœ เชชเซเชฐเชญเชพเชตเซ€ เชฅเชพเชฏ เช›เซ‡, เชธเซเชกเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เช…เชนเซ€เช‚ เชฆเชฒเซ€เชฒ โ€œcom.apple.TextEditโ€ เช เช†เชชเชฃเชจเซ‡ เชœเซ‹เชˆเชคเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซเช‚ เช•เชนเซ‡เชตเชพเชคเชพ โ€œเชฌเช‚เชกเชฒ เช†เชˆเชกเซ€โ€ เช›เซ‡. "เชธเช‚เชชเชพเชฆเช•" เชฆเชฒเซ€เชฒ เช เชเชธเซ‹เชธเชฟเชเชถเชจ เชชเซเชฐเช•เชพเชฐ เช›เซ‡: เชธเช‚เชชเชพเชฆเชจ เชฎเชพเชŸเซ‡ "เชธเช‚เชชเชพเชฆเช•", เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ "เชฆเชฐเซเชถเช•", เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เชฎเชพเชŸเซ‡ "เชฌเชงเชพ".

เชคเชฎเซ‡ เช† เชฐเซ€เชคเซ‡ โ€œเชฌเช‚เชกเชฒ เช†เชˆเชกเซ€โ€ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹: เชœเซ‹ เชคเซเชฐเซ€เชœเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซเช‚ โ€œ/Applications/Sublime Text.appโ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซเช‚ เชฌเช‚เชกเชฒ ID โ€œcom.sublimetext.3โ€ เช…เชฅเชตเชพ เชฌเซ€เชœเซเช‚ เช•เซ‹เชˆ เชนเชถเซ‡:

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

macOS เชธเชฟเชเชฐเชพ เชชเชฐ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚.

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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹