เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเปƒเบ™เบ—เบฑเบ™เบ—เบต

เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบญเบฑเบ”โ€‹เบ•เบฐโ€‹เป‚เบ™โ€‹เบกเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹, เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เป€เบฅเบทเบญเบโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบตเบ”โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบˆเบฒเบ Explorer / Finderโ€‹. เปเบฅเบฐเบ‚เป‰เบญเบเปเบšเปˆเบ‡เบ›เบฑเบ™.

เบšเบฑเบ™เบซเบฒเบ—เปเบฒเบญเบดเบ”. เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบเบˆเบฐเบšเปเปˆเบ–เบทเบเป€เบ›เบตเบ”เป‚เบ”เบเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเบกเบฑเบ™เบ–เบทเบเป€เบ›เบตเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบฒเบ‡ iTunes. เบžเบฒเบเปƒเบ•เป‰ Windows, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปเบกเปˆเบ™เบชเบนเบ™เป€เบชเบเป„เบ›เบซเบกเบปเบ”เป€เบกเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡ (เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบเบฒเบ™เบ–เบญเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡) เป‚เบ›เบฅเปเบเบฅเบก: เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบ–เบญเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ GIMP, เปเบฅเบฐเป„เบŸเบฅเปŒ ico เบˆเบฐเบ–เบทเบเบ™เปเบฒเบกเบฒเบˆเบฒเบเบ•เบปเบงเป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเบ›เบปเบเบเบฐเบ•เบดเป„เบ›เบซเบฒเบ„เบฑเบ‡เบฎเบนเบšเบžเบฒเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡? เป€เบžเบทเปˆเบญโ€‹เบซเบเบฑเบ‡? เบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ... เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ‚เป‰เบญเบเบžเบปเบšเบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เปƒเบซเบกเปˆเบซเบผเบท, เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ•เปˆเบฒเบ‡เป†, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบซเบกเปˆ? เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบกเบตเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เป€เบ„เบทเปˆเบญเบ‡? เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบเบฒเบ™เบ„เบฅเบดเบเบซเบ™เบนเปƒเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบเบฒเบ™เบšเบฑเบ™เป€เบ—เบตเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบ‚เป‰เบญเบเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบชเบญเบ‡เป„เบŸเบฅเปŒเป„เบงเป‰เปƒเบ™ Dropbox เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบฅเบเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบเบฑเบšเบ„เบทเบ™เบชเบนเปˆเบชเบฐเบžเบฒเบšเบ›เบปเบเบเบฐเบ•เบดเป€เบเบทเบญเบšเบ—เบฑเบ™เบ—เบต. เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบฅเปเบ–เป‰เบฒเบกเบฒเบซเบผเบฒเบเบ›เบตเปเบฅเป‰เบง... เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบชเบนเบ”เบชเบณเบฅเบฑเบš Windows เปเบฅเบฐ macOS.

Windows

เปƒเบ™ Windows console cmd.exe เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เบชเบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™:

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

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบกเบตเบœเบปเบ™เบ—เบฑเบ™เบ—เบต. เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบชเบฐเบกเบฒเบ„เบปเบกเป„เบ”เป‰เบ–เบทเบเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐ, เบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบซเบ”เบœเบปเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™. เปเบฅเบฐเบขเปˆเบฒเบฅเบทเบกเปƒเบซเป‰เบชเบฑเบ™เบเบฒเบฅเบฑเบเป€เบ›เบตเป€เบŠเบฑเบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ (%%1) เป€เบกเบทเปˆเบญเปเบฅเปˆเบ™เบˆเบฒเบเป„เบŸเบฅเปŒ bat. เป‚เบฅเบเบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™เบ‚เบญเบ‡ Windows 7 Ultimate 64-bitโ€ฆ

MacOS

เปƒเบ™ MacOS เบกเบฑเบ™เบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเบกเบฒเบ„เบปเบกเป‚เบ”เบเปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ” Duti. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบœเปˆเบฒเบ™ brew install duti. เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹:

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

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบกเบตเบœเบปเบ™เบ—เบฑเบ™เบ—เบต, เบšเปเปˆเบˆเบณเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ sudo. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ โ€œcom.apple.TextEditโ€ เปเบกเปˆเบ™เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ โ€œbundle idโ€ เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ "เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™" เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบชเบฐเบกเบฒเบ„เบปเบก: "เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚, "เบœเบนเป‰เบŠเบปเบก" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡, "เบ—เบฑเบ‡เบซเบกเบปเบ”" เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒ โ€œbundle idโ€ เปเบšเบšเบ™เบตเป‰: เบ–เป‰เบฒเบกเบต โ€œ/Applications/Sublime Text.appโ€ เบ‚เบญเบ‡เบฅเบธเป‰เบ™เบ—เบต 3, ID เบกเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™ โ€œcom.sublimetext.XNUMXโ€, เบซเบผเบทเบšเบฒเบ‡เบญเบฑเบ™เบญเบทเปˆเบ™:

> 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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™