āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§āĻāĻŋāĻ āĻĢāĻžāĻāĻ˛ āĻ ā§āĻ¯āĻžāĻ¸ā§āĻ¸āĻŋāĻ¯āĻŧā§āĻļāĻ¨, āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž āĻ¯āĻž āĻāĻā§āĻ¸āĻĒā§āĻ˛ā§āĻ°āĻžāĻ°/āĻĢāĻžāĻāĻ¨ā§āĻĄāĻžāĻ° āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻā§āĻ˛āĻŦā§āĨ¤ āĻāĻ° āĻāĻŽāĻŋ āĻļā§āĻ¯āĻŧāĻžāĻ° āĻāĻ°āĻŋāĨ¤
āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĨ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻ¸āĻš āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻŋāĻā§ āĻĻā§āĻŦāĻžāĻ°āĻž āĻā§āĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻā§āĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻāĻŋāĻā§ āĻāĻāĻāĻŋāĻāĻ¨āĻ¸ āĻĻā§āĻŦāĻžāĻ°āĻžāĨ¤ āĻāĻāĻ¨ā§āĻĄā§āĻā§āĻ° āĻ āĻ§ā§āĻ¨ā§, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻā§āĻ˛āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ (āĻŦāĻž āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ¨āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ) āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻā§āĻ˛āĻŋ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ: āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻĒāĻ¨āĻŋ GIMP āĻāĻ¨āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ ico āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĢāĻžāĻāĻ˛ āĻāĻŋāĻāĻ¯āĻŧāĻžāĻ° āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĢāĻā§ āĻā§āĻ¯āĻžāĻ˛āĻžāĻ°āĻŋāĻ¤ā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻā§āĻ¨? āĻāĻŋ āĻāĻ¨ā§āĻ¯? āĻ āĻāĻžāĻ¨āĻž... āĻ¯āĻĻāĻŋ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻā§āĻāĻā§ āĻĒāĻžāĻ āĻŦāĻž, āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻ°āĻŖā§, āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻĒāĻžāĻ? āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ° āĻĨāĻžāĻāĻ˛ā§ āĻāĻŋ āĻšāĻŦā§? āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻ¸āĻāĻ˛āĻžāĻĒā§ āĻāĻāĻĻā§āĻ° āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻž āĻ¯ā§āĻŽāĻ¨ āĻŦāĻŋāĻ¨ā§āĻĻāĻ¨āĨ¤
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻŽāĻŋ āĻĄā§āĻ°āĻĒāĻŦāĻā§āĻ¸ā§ āĻĻā§āĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ° āĻāĻāĻ¤āĻā§ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻ¤ āĻŦāĻāĻ° āĻ§āĻ°ā§ āĻāĻŋāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻā§āĻ¨... āĻāĻ° āĻĒāĻ°ā§ āĻāĻāĻ¨ā§āĻĄā§āĻ āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ° āĻ°ā§āĻ¸āĻŋāĻĒāĻŋāĨ¤
āĻāĻāĻ¨ā§āĻĄā§āĻ
āĻāĻāĻ¨ā§āĻĄā§āĻ āĻāĻ¨āĻ¸ā§āĻ˛ā§ cmd.exe
āĻāĻāĻŋ āĻĻā§āĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
ftype my_file_txt="C:Windowsnotepad.exe" "%1"
assoc .txt=my_file_txt
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻšāĻ¯āĻŧā§ˇ āĻ ā§āĻ¯āĻžāĻ¸ā§āĻ¸āĻŋāĻ¯āĻŧā§āĻļāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻšāĻāĻ¯āĻŧāĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻāĻŋāĻā§ āĻāĻžāĻ°āĻŖā§ āĻāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻŦāĻ āĻŦā§āĻ¯āĻžāĻ āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻļāĻ¤āĻžāĻāĻļ āĻāĻŋāĻšā§āĻ¨ (%%1) āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ Windows 7 Ultimate 64-bit āĻāĻ° āĻāĻžāĻĻā§āĻāĻ°ā§ āĻāĻāĻ¤âĻ
MacOS
MacOS-āĻ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ
ā§āĻ¯āĻžāĻ¸ā§āĻ¸āĻŋāĻ¯āĻŧā§āĻļāĻ¨ āĻ¸ā§āĻ āĻāĻ°āĻž āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ brew install duti
. āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ:
duti -s com.apple.TextEdit .txt "editor"
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻšāĻ¯āĻŧ, āĻā§āĻ¨ sudo āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ "com.apple.TextEdit" āĻšāĻ˛ āĻ¤āĻĨāĻžāĻāĻĨāĻŋāĻ¤ "āĻŦāĻžāĻ¨ā§āĻĄā§āĻ˛ āĻāĻāĻĄāĻŋ" āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ°āĨ¤ "āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ" āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻšāĻ˛ āĻ ā§āĻ¯āĻžāĻ¸ā§āĻ¸āĻŋāĻ¯āĻŧā§āĻļāĻ¨ā§āĻ° āĻ§āĻ°āĻ¨: āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ "āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ", āĻĻā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ "āĻĻāĻ°ā§āĻļāĻ", āĻ¸āĻŦāĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ "āĻ¸āĻŦ"āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻžāĻŦā§ "āĻŦāĻžāĻ¨ā§āĻĄā§āĻ˛ āĻāĻāĻĄāĻŋ" āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨: āĻ¯āĻĻāĻŋ āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° "/Applications/Sublime Text.app" āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ° āĻŦāĻžāĻ¨ā§āĻĄā§āĻ˛ āĻāĻāĻĄāĻŋ āĻšāĻŦā§ "com.sublimetext.3", āĻŦāĻž āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨ā§:
> osascript -e 'id of app "Sublime Text"'
com.sublimetext.3
MacOS āĻ¸āĻŋāĻ¯āĻŧā§āĻ°āĻžāĻ¤ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻ¨ā§āĻĄā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ (.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