āĻāĻŽāĻŋ āĻĢāĻžāĻāϞ āĻ ā§āϝāĻžāϏā§āϏāĻŋāϝāĻŧā§āĻļāύ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āĻāĻŋ, āĻ āϰā§āĻĨāĻžā§ āĻāĻā§āϏāĻĒā§āϞā§āϰāĻžāϰ/āĻĢāĻžāĻāύā§āĻĄāĻžāϰ āĻĨā§āĻā§ āĻā§āύ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻĻāĻŋāϝāĻŧā§ āĻĢāĻžāĻāϞāĻāĻŋ āĻā§āϞāĻž āĻšāĻŦā§ āϤāĻž āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻžāϰ āĻŦā§āϝāĻŦāϏā§āĻĨāĻž āĻāϰā§āĻāĻŋāĨ¤ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻāĻŋāĨ¤
āĻĒā§āϰāĻĨāĻŽā§, āϏāĻŽāϏā§āϝāĻžāĻāĻž āĻŦāϞāĻŋāĨ¤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻā§āϏāĻā§āύāĻļāύāϝā§āĻā§āϤ āĻĢāĻžāĻāϞāĻā§āϞ⧠āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āĻā§āϞ⧠āύāĻž, āĻāϰ āĻā§āϞāϞā§āĻ āĻāĻāĻāĻŋāĻāύāϏā§āϰ āĻŽāϤ⧠āĻā§āύ⧠āϏāĻĢāĻāĻāϝāĻŧā§āϝāĻžāϰ⧠āĻā§āϞā§āĨ¤ āĻāĻāύā§āĻĄā§āĻā§, āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻāύāϏā§āĻāϞ (āĻŦāĻž āĻāĻŽāύāĻāĻŋ āĻāύāĻāύāϏā§āĻāϞ) āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϏāĻāϝā§āĻāĻā§āϞ⧠āĻāĻāύāĻ āĻāĻāύāĻ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻšāĻžāϰāĻŋāϝāĻŧā§ āϝāĻžāϝāĻŧ: āϝā§āĻŽāύ, āĻāĻĒāύāĻŋ āĻšāϝāĻŧāϤ⧠GIMP āĻāύāĻāύāϏā§āĻāϞ āĻāϰāϞā§āύ, āĻāϰ .ico āĻĢāĻžāĻāϞāĻā§āϞ⧠āĻāĻĒāύāĻžāϰ āϏāĻžāϧāĻžāϰāĻŖ āĻĢāĻžāĻāϞ āĻāĻŋāĻāϝāĻŧāĻžāϰ āĻĨā§āĻā§ āĻĄāĻŋāĻĢāϞā§āĻ āĻĢāĻā§ āĻā§āϝāĻžāϞāĻžāϰāĻŋāϤ⧠āĻāϞ⧠āĻā§āϞāĨ¤ āĻā§āύ? āĻā§ āĻāύā§āϝ? āĻāĻāĻž āϏā§āĻĒāώā§āĻ āύāϝāĻŧ... āĻāĻŋāύā§āϤ⧠āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĄāĻŋāĻāϰ āĻā§āĻāĻā§ āĻĒāĻžāύ āĻŦāĻž āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻžāϰāĻŖā§ āύāϤā§āύ āĻāϰ⧠āĻāύāϏā§āĻāϞ āĻāϰā§āύ? āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻāĻžāϧāĻŋāĻ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰ āĻĨāĻžāĻā§? āĻŽā§āϞāϤ, āĻĄāĻžāϝāĻŧāĻžāϞāĻ āĻŦāĻā§āϏ⧠āĻā§āϞāĻŋāĻ āĻāϰāĻžāĻāĻž āĻŽā§āĻā§āĻ āĻŽāĻāĻžāϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ āύāϝāĻŧāĨ¤
ĐĐŧĐĩŅŅĐž ŅŅĐžĐŗĐž Ņ ŅĐžŅ ŅаĐŊиĐģ два ŅаКĐģиĐēа ĐŊа Dropbox и ŅĐĩĐŋĐĩŅŅ ĐŋŅивĐĩŅŅи ĐēĐžĐŧĐŋŅŅŅĐĩŅĐŊŅĐš ĐŧĐ¸Ņ Đē ĐŋŅивŅŅĐŊĐžĐŧŅ ŅĐžŅŅĐžŅĐŊĐ¸Ņ ĐŧĐžĐļĐŊĐž ĐŋĐžŅŅи ĐŧĐŗĐŊОвĐĩĐŊĐŊĐž. Đ ŅĐĩĐŗĐž ĐļдаĐģ ŅŅĐžĐģŅĐēĐž ĐģĐĩŅâĻ ĐаĐģĐĩĐĩ ŅĐĩŅĐĩĐŋŅ Đ´ĐģŅ Windows и macOS.
Windows
Đ ĐēĐžĐŊŅĐžĐģи Windows cmd.exe āĻāĻāĻŋ āĻĻā§āĻāĻŋ āĻĒāϰā§āϝāĻžāϝāĻŧā§ āĻāϰāĻž āĻšāϝāĻŧ:
ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txtĐСĐŧĐĩĐŊĐĩĐŊĐ¸Ņ Đ˛ŅŅŅĐŋаŅŅ Đ˛ ŅиĐģŅ ŅŅаСŅ. ĐĐĩŅĐŧĐžŅŅŅ ĐŊа ŅĐž, ŅŅĐž аŅŅĐžŅиаŅĐ¸Ņ ĐŋŅĐžĐŋиŅŅваĐĩŅŅŅ Đ´ĐģŅ ĐēĐžĐŊĐēŅĐĩŅĐŊĐžĐŗĐž ĐŋĐžĐģŅСОваŅĐĩĐģŅ, СаĐŋŅŅĐēаŅŅ ŅŅи ĐēĐžĐŧаĐŊĐ´Ņ ĐŊŅĐļĐŊĐž ĐŋĐžŅĐĩĐŧŅ-ŅĐž иС-ĐŋОд адĐŧиĐŊиŅŅŅаŅĐžŅа. Đ ĐŊĐĩ СайŅŅŅ ĐˇĐ°Đ´Đ˛ĐžĐ¸ŅŅ ŅиĐŧвОĐģ ĐŋŅĐžŅĐĩĐŊŅа (%%1) ĐŋŅи СаĐŋŅŅĐēĐĩ иС bat-ŅаКĐģа. ĐĐžĐģŅĐĩĐąĐŊŅĐš ĐŧĐ¸Ņ Windows 7 Ultimate 64-bitâĻ
macOS
MacOS-āĻ, āĻāĻāĻāĻŋāϞāĻŋāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĻāĻžāĻŦā§ āĻ
ā§āϝāĻžāϏā§āϏāĻŋāϝāĻŧā§āĻļāύ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāύāϏā§āĻāϞ āĻāϰāĻž āĻšāϝāĻŧ brew install dutiāĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ:
duti -s com.apple.TextEdit .txt "editor"āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āĻ āĻŦāĻŋāϞāĻŽā§āĻŦā§ āĻāĻžāϰā§āϝāĻāϰ āĻšāϝāĻŧ; sudo-āĻāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤ āĻāĻāĻžāύā§, 'com.apple.TextEdit' āĻāϰā§āĻā§āĻŽā§āύā§āĻāĻāĻŋ āĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋāϰ āϤāĻĨāĻžāĻāĻĨāĻŋāϤ "āĻŦāĻžāύā§āĻĄā§āϞ āĻāĻāĻĄāĻŋ"āĨ¤ "editor" āĻāϰā§āĻā§āĻŽā§āύā§āĻāĻāĻŋ āĻšāϞ⧠āĻ ā§āϝāĻžāϏā§āϏāĻŋāϝāĻŧā§āĻļāύ āĻāĻžāĻāĻĒ: āϏāĻŽā§āĻĒāĻžāĻĻāύāĻžāϰ āĻāύā§āϝ "editor", āĻĻā§āĻāĻžāϰ āĻāύā§āϝ "viewer", āĻāĻŦāĻ āϏāĻŦāĻāĻŋāĻā§āϰ āĻāύā§āϝ "all"āĨ¤
āĻāĻĒāύāĻŋ "āĻŦāĻžāύā§āĻĄā§āϞ āĻāĻāĻĄāĻŋ" āĻāĻāĻāĻžāĻŦā§ āĻā§āĻāĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ: āϝāĻĻāĻŋ āϤā§āϤā§āϝāĻŧ āϏāĻāϏā§āĻāϰāĻŖā§āϰ "/Applications/Sublime Text.app" āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāϰ āĻŦāĻžāύā§āĻĄā§āϞ āĻāĻāĻĄāĻŋ āĻšāĻŦā§ "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 "${1}"" || 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" ".${1}" "$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
