เชเชเซเชฎเซเชเซเชก เชธเซเชเชฟเชเช เชซเชพเชเชฒ เชเชธเซเชธเชฟเชเชถเชจเซเชธ, เชเชเชฒเซ เชเซ, เชเช เชชเซเชฐเซเชเซเชฐเชพเชฎ เชชเชธเชเชฆ เชเชฐเชตเซ เชเซ เชเชเซเชธเชชเซเชฒเซเชฐเชฐ/เชซเชพเชเชจเซเชกเชฐเชฎเชพเชเชฅเซ เชซเชพเชเชฒ เชเซเชฒเชถเซ. เช เชจเซ เชนเซเช เชถเซเชฐ เชเชฐเซเช เชเซเช.
เชชเซเชฐเชฅเชฎ เชธเชฎเชธเซเชฏเชพเช. เชเชฐเซเชฐเซ เชเชเซเชธเซเชเซเชเชถเชจเชตเชพเชณเซ เชซเชพเชเชฒเซ เชเชฃเซเชตเชพเชฐ เชกเชฟเชซเซเชฒเซเช เชฐเซเชชเซ เชเชเชเชชเชฃ เชฆเซเชตเชพเชฐเชพ เชเซเชฒเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ, เช เชจเซ เชเซ เชคเซ เชเซเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซ เชชเชเซ เชเซเชเชฒเชพเช 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