เจคเฉเจฐเฉฐเจค เจœเจพเจฃเฉ‡-เจชเจ›เจพเจฃเฉ‡ เจซเจพเจˆเจฒ เจเจธเฉ‹เจธเฉ€เจเจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเฉ‹

เจธเจตเฉˆเจšเจฒเจฟเจค เจธเฉˆเจŸเจฟเฉฐเจ— เจซเจพเจˆเจฒ เจเจธเฉ‹เจธเจฟเจเจธเจผเจจ, เจญเจพเจต, เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจšเฉเจฃเจจเจพ เจœเฉ‹ เจเจ•เจธเจชเจฒเฉ‹เจฐเจฐ/เจซเจพเจˆเจ‚เจกเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจ–เฉ‹เจฒเฉเจนเฉ‡เจ—เจพเฅค เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจธเจพเจ‚เจเจพ เจ•เจฐเจฆเจพ เจนเจพเจ‚.

เจชเจนเจฟเจฒเจพเจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚. เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจ•เจธเจฐ เจกเจฟเจซเฉŒเจฒเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจฆเฉเจ†เจฐเจพ เจจเจนเฉ€เจ‚ เจ–เฉ‹เจฒเฉเจนเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจœเฉ‡ เจ‰เจน เจ–เฉ‹เจฒเฉเจนเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ•เฉเจ iTunes เจฆเฉเจ†เจฐเจพ. เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฆเฉ‡ เจคเจนเจฟเจค, เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ (เจœเจพเจ‚ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ…เจฃเจ‡เฉฐเจธเจŸเฉŒเจฒ) เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจเจธเฉ‹เจธเฉ€เจเจธเจผเจจเจพเจ‚ เจ•เจˆ เจตเจพเจฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ: เจ•เจˆ เจตเจพเจฐ เจคเฉเจธเฉ€เจ‚ เจœเฉˆเจฎเจช เจจเฉ‚เฉฐ เจ…เจฃเจ‡เฉฐเจธเจŸเฉŒเจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ†เจˆเจ•เฉ‹ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจฎ เจซเจพเจˆเจฒ เจฆเจฐเจธเจผเจ• เจคเฉ‹เจ‚ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจซเฉ‹เจŸเฉ‹ เจ—เฉˆเจฒเจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉˆ เจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚? เจ•เจพเจนเจฆเฉ‡ เจฒเจˆ? เจ…เจ—เจฟเจ†เจค... เจ•เฉ€ เจœเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เฉ‹เจˆ เจจเจตเจพเจ‚ เจธเฉฐเจชเจพเจฆเจ• เจœเจพเจ‚, เจ•เจˆ เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡, เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจธเจฅเจพเจชเจจเจพ เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ? เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจนเจจ เจคเจพเจ‚ เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ? เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเฉฐเจตเจพเจฆเจพเจ‚ เจตเจฟเฉฑเจš เจšเฉ‚เจนเฉ‡ เจจเฉ‚เฉฐ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐเจจเจพ เจ…เจœเจฟเจนเจพ เจฎเจจเฉ‹เจฐเฉฐเจœเจจ เจนเฉˆเฅค

เจ‡เจธ เจฆเฉ€ เจฌเจœเจพเจ, เจฎเฉˆเจ‚ เจกเฉเจฐเฉŒเจชเจฌเจพเจ•เจธ 'เจคเฉ‡ เจฆเฉ‹ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉเจฃ เจฎเฉˆเจ‚ เจฒเจ—เจญเจ— เจคเฉเจฐเฉฐเจค เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฆเฉ€ เจฆเฉเจจเฉ€เจ† เจจเฉ‚เฉฐ เจ†เจฎ เจตเจพเจ‚เจ— เจฒเจฟเจ† เจธเจ•เจฆเจพ เจนเจพเจ‚เฅค เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฐเจจเฉ‡ เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ•เจฟเจธ เจšเฉ€เจœเจผ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹... เจ…เฉฑเจ—เฉ‡ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ…เจคเฉ‡ เจฎเฉˆเจ•เฉ‹เจธ เจฒเจˆ เจฐเฉˆเจธเจฟเจชเฉ€ เจนเฉˆเฅค

Windows เจจเฉ‚เฉฐ

เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš 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

เจฎเฉˆเจ•เฉ‹เจธ เจธเฉ€เจเจฐเจพ 'เจคเฉ‡ เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ†เฅค

เจตเจฟเฉฐเจกเฉ‹เจœเจผ (.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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹